text:
[![Swift](https://github.com/MetalPetal/MetalPetal/workflows/Swift/badge.svg)](https://github.com/MetalPetal/MetalPetal/actions?query=workflow%3ASwift)

[![Platforms](https://img.shields.io/badge/Platforms-iOS%2011%2B%20%7C%20tvOS%2013%2B%20%7C%20macOS%2010.13%2B-blue.svg)](#)
[![Version](https://img.shields.io/github/v/release/MetalPetal/MetalPetal?label=Release)](https://github.com/MetalPetal/MetalPetal/releases)

[![Apple Silicon](https://img.shields.io/badge/Apple%20Silicon-%E2%80%8B%20%E2%9C%94-eee)](#)
[![Mac Catalyst](https://img.shields.io/badge/Mac%20Catalyst-%E2%80%8B%20%E2%9C%94-eee)](#)
[![Simulator](https://img.shields.io/badge/Simulator-%E2%80%8B%20%E2%9C%94-eee)](#)

[![CocoaPods](https://img.shields.io/static/v1?label=CocoaPods&message=%E2%80%8B%20%E2%9C%94&color=eee&logo=CocoaPods&logoColor=white)](#cocoapods)
[![Swift PM](https://img.shields.io/static/v1?label=Swift%20PM&message=%E2%80%8B%20%E2%9C%94&color=eee&logo=Swift&logoColor=white)](#swift-package-manager)

An image processing framework based on Metal.

- [Design Overview](#design-overview)
    - [Goals](#goals)
    - [Core Components](#core-components)
        - [MTIContext](#mticontext)
        - [MTIImage](#mtiimage)
        - [MTIFilter](#mtifilter)
        - [MTIKernel](#mtikernel)
    - [Optimizations](#optimizations)
    - [Concurrency Considerations](#concurrency-considerations)
    - [Advantages over Core Image](#advantages-over-core-image)
- [Builtin Filters](#builtin-filters)
- [Example Code](#example-code)
    - [Create a `MTIImage`](#create-a-mtiimage)
    - [Apply a Filter](#apply-a-filter)
    - [Render a `MTIImage`](#render-a-mtiimage)
    - [Display a `MTIImage`](#display-a-mtiimage)
    - [Connect Filters (Swift)](#connect-filters-swift)
    - [Process Video Files](#process-video-files)
    - [Process Live Video (with VideoIO)](#process-live-video-with-videoio)
- [Best Practices](#best-practices)
- [Build Custom Filter](#build-custom-filter)
    - [Shader Function Arguments Encoding](#shader-function-arguments-encoding)
    - [Simple Single Input / Output Filters](#simple-single-input--output-filters)
    - [Fully Custom Filters](#fully-custom-filters)
    - [Multiple Draw Calls in One Render Pass](#multiple-draw-calls-in-one-render-pass)
    - [Custom Vertex Data](#custom-vertex-data)
    - [Custom Processing Module](#custom-processing-module)
- [Alpha Types](#alpha-types)
    - [Alpha Handling of Built-in Filters](#alpha-handling-of-built-in-filters)
- [Color Spaces](#color-spaces)
    - [Color Spaces for Inputs](#color-spaces-for-inputs)
    - [Color Spaces for Outputs](#color-spaces-for-outputs)
    - [Color Spaces for `CVPixelBuffer`](#color-spaces-for-cvpixelbuffer)
    - [Color Space Conversions](#color-space-conversions)
- [Extensions](#extensions)
    - [Working with SceneKit](#working-with-scenekit)
    - [Working with SpriteKit](#working-with-spritekit)
    - [Working with Core Image](#working-with-core-image)
    - [Working with JavaScript](#working-with-javascript)
    - [Texture Loader](#texture-loader)
- [Install](#install)
    - [CocoaPods](#cocoapods)
        - [Sub-pod `Swift`](#sub-pod-swift)
        - [Sub-pod `AppleSilicon`](#sub-pod-applesilicon)
    - [Swift Package Manager](#swift-package-manager)
- [iOS Simulator Support](#ios-simulator-support)
- [Quick Look Debug Support](#quick-look-debug-support)
- [Trivia](#trivia)
- [Contribute](#contribute)
- [License](#license)

## Design Overview

MetalPetal is an image processing framework based on [Metal](https://developer.apple.com/metal/) designed to provide real-time processing for still image and video with easy to use programming interfaces.

This chapter covers the key concepts of MetalPetal, and will help you to get a better understanding of its design, implementation, performance implications and best practices.

### Goals

MetalPetal is designed with the following goals in mind.

- Easy to use API

    Provides convenience APIs and avoids common pitfalls.

- Performance

    Use CPU, GPU and memory efficiently.

- Extensibility

    Easy to create custom filters as well as plugin your custom image processing unit.

- Swifty

    Provides a fluid experience for Swift programmers.

### Core Components

Some of the core concepts of MetalPetal are very similar to those in Apple's Core Image framework.

#### MTIContext

Provides an evaluation context for rendering `MTIImage`s. It also stores a lot of caches and state information, so it's more efficient to reuse a context whenever possible.

#### MTIImage

 A `MTIImage` object is a representation of an image to be processed or produced. It does directly represent image bitmap data instead it has all the information necessary to produce an image or more precisely a `MTLTexture`. It consists of two parts, a recipe of how to produce the texture (`MTIImagePromise`) and other information such as how a context caches the image (`cachePolicy`), and how the texture should be sampled (`samplerDescriptor`).

#### MTIFilter

A `MTIFilter` represents an image processing effect and any parameters that control that effect. It produces a `MTIImage` object as output. To use a filter, you create a filter object, set its input images and parameters, and then access its output image. Typically, a filter class owns a static kernel (`MTIKernel`), when you access its `outputImage` property, it asks the kernel with the input images and parameters to produce an output `MTIImage`.

#### MTIKernel

A `MTIKernel` represents an image processing routine. `MTIKernel` is responsible for creating the corresponding render or compute pipeline state for the filter, as well as building the `MTIImagePromise` for a `MTIImage`.

### Optimizations

MetalPetal does a lot of optimizations for you under the hood.

It automatically caches functions, kernel states, sampler states, etc.

It utilizes Metal features like programmable blending, memoryless render targets, resource heaps and metal performance shaders to make the render fast and efficient. On macOS, MetalPetal can also take advantage of the TBDR architecture of Apple silicon.

Before rendering, MetalPetal can look into your image render graph and figure out the minimal number of intermediate textures needed to do the rendering, saving memory, energy and time.

It can also re-organize the image render graph if multiple "recipes" can be concatenated to eliminate redundant render passes. (`MTIContext.isRenderGraphOptimizationEnabled`)

### Concurrency Considerations

`MTIImage` objects are immutable, which means they can be shared safely among threads.

However, `MTIFilter` objects are mutable and thus cannot be shared safely among threads.

A `MTIContext` contains a lot of states and caches. There's a thread-safe mechanism for `MTIContext` objects, making it safe to share a `MTIContext` object among threads.

### Advantages over Core Image

- Fully customizable vertex and fragment functions.

- MRT (Multiple Render Targets) support.

- Generally better performance. (Detailed benchmark data needed)

## Builtin Filters

- Color Matrix

- Color Lookup

    Uses an color lookup table to remap the colors in an image.

- Opacity

- Exposure

- Saturation

- Brightness

- Contrast

- Color Invert

- Vibrance

    Adjusts the saturation of an image while keeping pleasing skin tones.

- RGB Tone Curve

- Blend Modes

    - Normal
    - Multiply
    - Overlay
    - Screen
    - Hard Light
    - Soft Light
    - Darken
    - Lighten
    - Color Dodge
    - Add (Linear Dodge)
    - Color Burn
    - Linear Burn
    - Lighter Color
    - Darker Color
    - Vivid Light
    - Linear Light
    - Pin Light
    - Hard Mix
    - Difference
    - Exclusion
    - Subtract
    - Divide
    - Hue
    - Saturation
    - Color
    - Luminosity
    - ColorLookup512x512
    - [Custom Blend Mode](https://github.com/MetalPetal/MetalPetal/issues/70#issuecomment-792430483)

- Blend with Mask

- Transform

- Crop

- Pixellate

- Multilayer Composite

- MPS Convolution

- MPS Gaussian Blur

- MPS Definition

- MPS Sobel

- MPS Unsharp Mask

- MPS Box Blur

- [High Pass Skin Smoothing](https://github.com/YuAo/YUCIHighPassSkinSmoothing)

- [CLAHE (Contrast-Limited Adaptive Histogram Equalization)](https://github.com/YuAo/Accelerated-CLAHE)

- [Lens Blur (Hexagonal Bokeh Blur)](https://github.com/YuAo/HexagonalBokehBlur)

- [Surface Blur](https://github.com/MetalPetal/SurfaceBlur)

- Bulge Distortion

- Chroma Key Blend

- Color Halftone

- Dot Screen

- Round Corner (Circular/Continuous Curve)

- [All Core Image Filters](#working-with-core-image)

## Example Code

### Create a `MTIImage`

You can create a `MTIImage` object from nearly any source of image data, including:

- `URL`s referencing image files to be loaded
- Metal textures
- CoreVideo image or pixel buffers (`CVImageBufferRef` or `CVPixelBufferRef`)
- Image bitmap data in memory
- Texture data from a given texture or image asset name
- Core Image `CIImage` objects
- `MDLTexture` objects
- SceneKit and SpriteKit scenes

```Swift
let imageFromCGImage = MTIImage(cgImage: cgImage, isOpaque: true)

let imageFromCIImage = MTIImage(ciImage: ciImage)

let imageFromCoreVideoPixelBuffer = MTIImage(cvPixelBuffer: pixelBuffer, alphaType: .alphaIsOne)

let imageFromContentsOfURL = MTIImage(contentsOf: url)

// unpremultiply alpha if needed
let unpremultipliedAlphaImage = image.unpremultiplyingAlpha()
```

### Apply a Filter

```Swift
let inputImage = ...

let filter = MTISaturationFilter()
filter.saturation = 0
filter.inputImage = inputImage

let outputImage = filter.outputImage
```

### Render a `MTIImage`

```Swift
let options = MTIContextOptions()

guard let device = MTLCreateSystemDefaultDevice(), let context = try? MTIContext(device: device, options: options) else {
    return
}

let image: MTIImage = ...

do {
    try context.render(image, to: pixelBuffer)

    //context.makeCIImage(from: image)

    //context.makeCGImage(from: image)
} catch {
    print(error)
}
```

### Display a `MTIImage`

```Swift
let imageView = MTIImageView(frame: self.view.bounds)

// You can optionally assign a `MTIContext` to the image view. If no context is assigned and `automaticallyCreatesContext` is set to `true` (the default value), a `MTIContext` is created automatically when the image view renders its content.
imageView.context = ...

imageView.image = image
```

If you'd like to move the GPU command encoding process out of the main thread, you can use a `MTIThreadSafeImageView`. You may assign a `MTIImage` to a `MTIThreadSafeImageView` in any thread.

### Connect Filters (Swift)

MetalPetal has a type-safe Swift API for connecting filters. You can use `=>` operator in `FilterGraph.makeImage` function to connect filters and get the output image.

Here are some examples:

```Swift
let image = try? FilterGraph.makeImage { output in
    inputImage => saturationFilter => exposureFilter => output
}
```

```Swift
let image = try? FilterGraph.makeImage { output in
    inputImage => saturationFilter => exposureFilter => contrastFilter => blendFilter.inputPorts.inputImage
    exposureFilter => blendFilter.inputPorts.inputBackgroundImage
    blendFilter => output
}
```

- You can connect unary filters (`MTIUnaryFilter`) directly using `=>`.

- For a filter with multiple inputs, you need to connect to one of its `inputPorts`.

- `=>` operator only works in `FilterGraph.makeImage` method.

- One and only one filter's output can be connected to `output`.

### Process Video Files

Working with `AVPlayer`:

```Swift
let context = try MTIContext(device: device)
let asset = AVAsset(url: videoURL)
let composition = MTIVideoComposition(asset: asset, context: context, queue: DispatchQueue.main, filter: { request in
    return FilterGraph.makeImage { output in
        request.anySourceImage! => filterA => filterB => output
    }!
}

let playerItem = AVPlayerItem(asset: asset)
playerItem.videoComposition = composition.makeAVVideoComposition()
player.replaceCurrentItem(with: playerItem)
player.play()
```

Export a video:

_[VideoIO](https://github.com/MetalPetal/VideoIO) is required for the following examples._

```Swift
import VideoIO

var configuration = AssetExportSession.Configuration(fileType: .mp4, videoSettings: .h264(videoSize: composition.renderSize), audioSettings: .aac(channels: 2, sampleRate: 44100, bitRate: 128 * 1000))
configuration.videoComposition = composition.makeAVVideoComposition()
self.exporter = try! AssetExportSession(asset: asset, outputURL: outputURL, configuration: configuration)
exporter.export(progress: { progress in

}, completion: { error in

})
```

### Process Live Video (with VideoIO)

_[VideoIO](https://github.com/MetalPetal/VideoIO) is required for this example._

```Swift
import VideoIO

// Setup Image View
let imageView = MTIImageView(frame: self.view.bounds)
...

// Setup Camera
let camera = Camera(captureSessionPreset: .hd1920x1080, configurator: .portraitFrontMirroredVideoOutput)
try camera.enableVideoDataOutput(on: DispatchQueue.main, delegate: self)
camera.videoDataOutput?.videoSettings = [kCVPixelBufferPixelFormatTypeKey as String: kCVPixelFormatType_420YpCbCr8BiPlanarFullRange]

...

// AVCaptureVideoDataOutputSampleBufferDelegate

let filter = MTIColorInvertFilter()

func captureOutput(_ output: AVCaptureOutput, didOutput sampleBuffer: CMSampleBuffer, from connection: AVCaptureConnection) {
    guard let pixelBuffer = CMSampleBufferGetImageBuffer(sampleBuffer) else {
        return
    }
    let inputImage = MTIImage(cvPixelBuffer: pixelBuffer, alphaType: .alphaIsOne)
    filter.inputImage = inputImage
    self.imageView.image = filter.outputImage
}

```

Please refer to the `CameraFilterView.swift` in the example project for more about previewing and recording filtered live video.

## Best Practices

- Reuse a `MTIContext` whenever possible.

    Contexts are heavyweight objects, so if you do create one, do so as early as possible, and reuse it each time you need to render an image.

- Use `MTIImage.cachePolicy` wisely.

    Use `MTIImageCachePolicyTransient` when you do not want to preserve the render result of an image, for example when the image is just an intermediate result in a filter chain, so the underlying texture of the render result can be reused. It is the most memory efficient option. However, when you ask the context to render a previously rendered image, it may re-render that image since its underlying texture has been reused.

    By default, a filter's output image has the `transient` policy.

    Use `MTIImageCachePolicyPersistent` when you want to prevent the underlying texture from being reused.

    By default, images created from external sources have the `persistent` policy.

- Understand that `MTIFilter.outputImage` is a compute property.

    Each time you ask a filter for its output image, the filter may give you a new output image object even if the inputs are identical with the previous call. So reuse output images whenever possible.

    For example,

     ```Swift
    //          ╭→ filterB
    // filterA ─┤
    //          ╰→ filterC
    //
    // filterB and filterC use filterA's output as their input.
    ```
    In this situation, the following solution:

    ```Swift
    let filterOutputImage = filterA.outputImage
    filterB.inputImage = filterOutputImage
    filterC.inputImage = filterOutputImage
    ```

    is better than:

    ```Swift
    filterB.inputImage = filterA.outputImage
    filterC.inputImage = filterA.outputImage
    ```

## Build Custom Filter

If you want to include the `MTIShaderLib.h` in your `.metal` file, you need to add the path of `MTIShaderLib.h` file to the `Metal Compiler - Header Search Paths` (`MTL_HEADER_SEARCH_PATHS`) setting.

For example, if you use CocoaPods you can set the `MTL_HEADER_SEARCH_PATHS` to  `${PODS_CONFIGURATION_BUILD_DIR}/MetalPetal/MetalPetal.framework/Headers` or `${PODS_ROOT}/MetalPetal/Frameworks/MetalPetal/Shaders`. If you use Swift Package Manager, set the `MTL_HEADER_SEARCH_PATHS` to `$(HEADER_SEARCH_PATHS)`

### Shader Function Arguments Encoding

MetalPetal has a built-in mechanism to encode shader function arguments for you. You can pass the shader function arguments as `name: value` dictionaries to the `MTIRenderPipelineKernel.apply(toInputImages:parameters:outputDescriptors:)`, `MTIRenderCommand(kernel:geometry:images:parameters:)`, etc.

For example, the parameter dictionary for the metal function `vibranceAdjust` can be:

```Swift
// Swift
let amount: Float = 1.0
let vibranceVector = float4(1, 1, 1, 1)
let parameters = ["amount": amount,
                  "vibranceVector": MTIVector(value: vibranceVector),
                  "avoidsSaturatingSkinTones": true,
                  "grayColorTransform": MTIVector(value: float3(0,0,0))]
```

```Metal
// vibranceAdjust metal function
fragment float4 vibranceAdjust(...,
                constant float & amount [[ buffer(0) ]],
                constant float4 & vibranceVector [[ buffer(1) ]],
                constant bool & avoidsSaturatingSkinTones [[ buffer(2) ]],
                constant float3 & grayColorTransform [[ buffer(3) ]])
{
    ...
}

```

The shader function argument types and the corresponding types to use in a parameter dictionary is listed below.

| Shader Function Argument Type | Swift | Objective-C |
| :--- | :--- | :--- |
| float | Float | float |
| int | Int32 | int |
| uint | UInt32 | uint |
| bool | Bool | bool |
| simd (float2,float4,float4x4,int4, etc.) | simd (with `MetalPetal/Swift`) / MTIVector | MTIVector |
| struct | Data / MTIDataBuffer | NSData / MTIDataBuffer |
| other (float *, struct *, etc.) immutable | Data / MTIDataBuffer | NSData / MTIDataBuffer |
| other (float *, struct *, etc.) mutable | MTIDataBuffer | MTIDataBuffer |

### Simple Single Input / Output Filters

To build a custom unary filter, you can subclass `MTIUnaryImageRenderingFilter` and override the methods in the `SubclassingHooks` category. Examples: `MTIPixellateFilter`, `MTIVibranceFilter`, `MTIUnpremultiplyAlphaFilter`, `MTIPremultiplyAlphaFilter`, etc.

```ObjectiveC
//Objective-C

@interface MTIPixellateFilter : MTIUnaryImageRenderingFilter

@property (nonatomic) float fractionalWidthOfAPixel;

@end

@implementation MTIPixellateFilter

- (instancetype)init {
    if (self = [super init]) {
        _fractionalWidthOfAPixel = 0.05;
    }
    return self;
}

+ (MTIFunctionDescriptor *)fragmentFunctionDescriptor {
    return [[MTIFunctionDescriptor alloc] initWithName:@"pixellateEffect" libraryURL:[bundle URLForResource:@"default" withExtension:@"metallib"]];
}

- (NSDictionary<NSString *,id> *)parameters {
    return @{@"fractionalWidthOfAPixel": @(self.fractionalWidthOfAPixel)};
}

@end
```

```Swift
//Swift

class MTIPixellateFilter: MTIUnaryImageRenderingFilter {

    var fractionalWidthOfAPixel: Float = 0.05

    override var parameters: [String : Any] {
        return ["fractionalWidthOfAPixel": fractionalWidthOfAPixel]
    }

    override class func fragmentFunctionDescriptor() -> MTIFunctionDescriptor {
        return MTIFunctionDescriptor(name: "pixellateEffect", libraryURL: MTIDefaultLibraryURLForBundle(Bundle.main))
    }
}
```

### Fully Custom Filters

To build more complex filters, all you need to do is create a kernel (`MTIRenderPipelineKernel`/`MTIComputePipelineKernel`/`MTIMPSKernel`), then apply the kernel to the input image(s). Examples: `MTIChromaKeyBlendFilter`, `MTIBlendWithMaskFilter`, `MTIColorLookupFilter`, etc.

```ObjectiveC

@interface MTIChromaKeyBlendFilter : NSObject <MTIFilter>

@property (nonatomic, strong, nullable) MTIImage *inputImage;

@property (nonatomic, strong, nullable) MTIImage *inputBackgroundImage;

@property (nonatomic) float thresholdSensitivity;

@property (nonatomic) float smoothing;

@property (nonatomic) MTIColor color;

@end

@implementation MTIChromaKeyBlendFilter

@synthesize outputPixelFormat = _outputPixelFormat;

+ (MTIRenderPipelineKernel *)kernel {
    static MTIRenderPipelineKernel *kernel;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        kernel = [[MTIRenderPipelineKernel alloc] initWithVertexFunctionDescriptor:[[MTIFunctionDescriptor alloc] initWithName:MTIFilterPassthroughVertexFunctionName] fragmentFunctionDescriptor:[[MTIFunctionDescriptor alloc] initWithName:@"chromaKeyBlend"]];
    });
    return kernel;
}

- (instancetype)init {
    if (self = [super init]) {
        _thresholdSensitivity = 0.4;
        _smoothing = 0.1;
        _color = MTIColorMake(0.0, 1.0, 0.0, 1.0);
    }
    return self;
}

- (MTIImage *)outputImage {
    if (!self.inputImage || !self.inputBackgroundImage) {
        return nil;
    }
    return [self.class.kernel applyToInputImages:@[self.inputImage, self.inputBackgroundImage]
                                      parameters:@{@"color": [MTIVector vectorWithFloat4:(simd_float4){self.color.red, self.color.green, self.color.blue,self.color.alpha}],
                                    @"thresholdSensitivity": @(self.thresholdSensitivity),
                                               @"smoothing": @(self.smoothing)}
                         outputTextureDimensions:MTITextureDimensionsMake2DFromCGSize(self.inputImage.size)
                               outputPixelFormat:self.outputPixelFormat];
}

@end
```

### Multiple Draw Calls in One Render Pass

You can use `MTIRenderCommand` to issue multiple draw calls in one render pass.

```Swift
// Create a draw call with kernelA, geometryA, and imageA.
let renderCommandA = MTIRenderCommand(kernel: self.kernelA, geometry: self.geometryA, images: [imageA], parameters: [:])

// Create a draw call with kernelB, geometryB, and imageB.
let renderCommandB = MTIRenderCommand(kernel: self.kernelB, geometry: self.geometryB, images: [imageB], parameters: [:])

// Create an output descriptor
let outputDescriptor = MTIRenderPassOutputDescriptor(dimensions: MTITextureDimensions(width: outputWidth, height: outputHeight, depth: 1), pixelFormat: .bgra8Unorm, loadAction: .clear, storeAction: .store)

// Get the output images, the output image count is equal to the output descriptor count.
let images = MTIRenderCommand.images(byPerforming: [renderCommandA, renderCommandB], outputDescriptors: [outputDescriptor])
```

You can also create multiple output descriptors to output multiple images in one render pass (MRT, See https://en.wikipedia.org/wiki/Multiple_Render_Targets).

### Custom Vertex Data

When `MTIVertex` cannot fit your needs, you can implement the `MTIGeometry` protocol to provide your custom vertex data to the command encoder.

Use the `MTIRenderCommand` API to issue draw calls and pass your custom `MTIGeometry`.

### Custom Processing Module

In rare scenarios, you may want to access the underlying texture directly, use multiple MPS kernels in one render pass, do 3D rendering, or encode the render commands yourself.

`MTIImagePromise` protocol provides direct access to the underlying texture and the render context for a step in MetalPetal.

You can create new input sources or fully custom processing units by implementing the `MTIImagePromise` protocol. You will need to import an additional module to do so.

Objective-C

```
@import MetalPetal.Extension;
```

Swift

```
// CocoaPods
import MetalPetal.Extension

// Swift Package Manager
import MetalPetalObjectiveC.Extension
```

See the implementation of `MTIComputePipelineKernel`, `MTICLAHELUTRecipe` or `MTIImage` for example.

## Alpha Types

If an alpha channel is used in an image, there are two common representations that are available: unpremultiplied (straight/unassociated) alpha, and premultiplied (associated) alpha.

With unpremultiplied alpha, the RGB components represent the color of the pixel, disregarding its opacity.

With premultiplied alpha, the RGB components represent the color of the pixel, adjusted for its opacity by multiplication.

MetalPetal handles alpha type explicitly. You are responsible for providing the correct alpha type during image creation.

There are three alpha types in MetalPetal.

`MTIAlphaType.nonPremultiplied`: the alpha value in the image is not premultiplied.

`MTIAlphaType.premultiplied`: the alpha value in the image is premultiplied.

`MTIAlphaType.alphaIsOne`: there's no alpha channel in the image or the image is opaque.

Typically, `CGImage`, `CVPixelBuffer` and `CIImage` objects have premultiplied alpha channels. `MTIAlphaType.alphaIsOne` is strongly recommended if the image is opaque, e.g. a `CVPixelBuffer` from camera feed, or a `CGImage` loaded from a `jpg` file.

You can call `unpremultiplyingAlpha()` or `premultiplyingAlpha()` on a `MTIImage` to convert the alpha type of the image.

For performance reasons, alpha type validation only happens in debug build.

### Alpha Handling of Built-in Filters

- Most of the filters in MetalPetal accept unpremultiplied alpha and opaque images and output unpremultiplied alpha images.

- Filters with `outputAlphaType` property accept inputs of all alpha types. And you can use `outputAlphaType` to specify the alpha type of the output image.

    e.g. `MTIBlendFilter`, `MTIMultilayerCompositingFilter`, `MTICoreImageUnaryFilter`, `MTIRGBColorSpaceConversionFilter`

- Filters that do not actually modify colors have passthrough alpha handling rule, that means the alpha types of the output images are the same with the input images.

    e.g. `MTITransformFilter`, `MTICropFilter`, `MTIPixellateFilter`, `MTIBulgeDistortionFilter`

For more about alpha types and alpha compositing, please refer to [this amazing interactive article](https://ciechanow.ski/alpha-compositing/) by Bartosz Ciechanowski.

## Color Spaces

Color spaces are vital for image processing. The numeric values of the red, green, and blue components have no meaning without a color space.

Before continuing on how MetalPetal handles color spaces, you may want to know what a color space is and how it affects the representation of color values. There are many articles on the web explaining color spaces, to get started, the suggestion is [Color Spaces - by Bartosz Ciechanowski](https://ciechanow.ski/color-spaces/).

Different softwares and frameworks have different ways of handling color spaces. For example, Photoshop has a default sRGB IEC61966-2.1 working color space, while Core Image, by default, uses linear sRGB working color space.

Metal textures do not store any color space information with them. Most of the color space handling in MetalPetal happens during the input (`MTIImage(...)`) and the output (`MTIContext.render...`) of image data.

### Color Spaces for Inputs

Specifying a color space for an input means that MetalPetal should convert the source color values to the specified color space during the creation of the texture.

- When loading from `URL` or `CGImage`, you can specify which color space you'd like the texture data to be in, using `MTICGImageLoadingOptions`. If you do not specify any options when loading an image, the device RGB color space is used (`MTICGImageLoadingOptions.default`). A `nil` color space disables color matching, this is the equivalent of using the color space of the input image to create `MTICGImageLoadingOptions`. If the model of the specified color space is not RGB, the device RGB color space is used as a fallback.

- When loading from `CIImage`, you can specify which color space you'd like the texture data to be in, using `MTICIImageRenderingOptions`. If you do not specify any options when loading a `CIImage`, the device RGB color space is used (`MTICIImageRenderingOptions.default`). A `nil` color space disables color matching, color values are loaded in the working color space of the `CIContext`.

### Color Spaces for Outputs

When specifying a color space for an output, the color space serves more like a tag which is used to communicate with the rest of the system on how to represent the color values in the output. There is no actual color space conversion performed.

- You can specify the color space of an output `CGImage` using `MTIContext.makeCGImage...` or `MTIContext.startTaskTo...` methods with a `colorSpace` parameter.

- You can specify the color space of an output `CIImage` using `MTICIImageCreationOptions`.

MetalPetal assumes that the output color values are in device RGB color space when no output color space is specified.

### Color Spaces for `CVPixelBuffer`

MetalPetal uses `CVMetalTextureCache` and `IOSurface` to directly map `CVPixelBuffer`s to Metal textures. So you cannot specify a color space for loading from or rendering to a `CVPixelBuffer`. However you can specify whether to use a texture with a sRGB pixel format for the mapping.

In Metal, if the pixel format name has the `_sRGB` suffix, then sRGB gamma compression and decompression are applied during the reading and writing of color values in the pixel. That means a texture with the `_sRGB` pixel format assumes the color values it stores are sRGB gamma corrected, when the color values are read in a shader, sRGB to linear RGB conversions are performed. When the color values are written in a shader, linear RGB to sRGB conversions are performed.

### Color Space Conversions

You can use `MTIRGBColorSpaceConversionFilter` to perform color space conversions. Color space conversion functions are also available in `MTIShaderLib.h`.

- `metalpetal::sRGBToLinear` (sRGB IEC61966-2.1 to linear sRGB)
- `metalpetal::linearToSRGB` (linear sRGB to sRGB IEC61966-2.1)
- `metalpetal::linearToITUR709` (linear sRGB to ITU-R 709)
- `metalpetal::ITUR709ToLinear` (ITU-R 709 to linear sRGB)

## Extensions

### Working with SceneKit

You can use `MTISCNSceneRenderer` to generate `MTIImage`s from a `SCNScene`. You may want to handle the SceneKit renderer's linear RGB color space, see issue [#76 The image from SceneKit is darker than normal](https://github.com/MetalPetal/MetalPetal/issues/76).

### Working with SpriteKit

You can use `MTISKSceneRenderer` to generate `MTIImage`s from a `SKScene`.

### Working with Core Image

You can create `MTIImage`s from `CIImage`s.

You can render a `MTIImage` to a `CIImage` using a `MTIContext`.

You can use a `CIFilter` directly with `MTICoreImageKernel` or the `MTICoreImageUnaryFilter` class. (Swift Only)

### Working with JavaScript

See [MetalPetalJS](https://github.com/MetalPetal/MetalPetalJS)

With MetalPetalJS you can create render pipelines and filters using JavaScript, making it possible to download your filters/renderers from "the cloud".

### Texture Loader

It is recommended that you use APIs that accept `MTICGImageLoadingOptions` to load `CGImage`s and images from `URL`, instead of using APIs that accept `MTKTextureLoaderOption`.

When you use APIs that accept `MTKTextureLoaderOption`, MetalPetal, by default, uses `MTIDefaultTextureLoader` to load `CGImage`s, images from `URL`, and named images. `MTIDefaultTextureLoader` uses `MTKTextureLoader` internally and has some workarounds for `MTKTextureLoader`'s inconsistencies and bugs at a small performance cost. You can also create your own texture loader by implementing the `MTITextureLoader` protocol. Then assign your texture loader class to `MTIContextOptions.textureLoaderClass` when creating a `MTIContext`.

## Install

### CocoaPods

You can use [CocoaPods](https://cocoapods.org/) to install the latest version.

```
use_frameworks!

pod 'MetalPetal'

# Required if you are using Swift.
pod 'MetalPetal/Swift'

# Recommended if you'd like to run MetalPetal on Apple silicon Macs.
pod 'MetalPetal/AppleSilicon'

```

#### Sub-pod `Swift`

Provides Swift-specific additions and modifications to the Objective-C APIs to improve their mapping into Swift. Highly recommended if you are using Swift.

#### Sub-pod `AppleSilicon`

Provides the default shader library compiled in Metal Shading Language v2.3 which is required for enabling programmable blending support on Apple silicon Macs.

### Swift Package Manager

[Adding Package Dependencies to Your App](https://developer.apple.com/documentation/xcode/adding_package_dependencies_to_your_app)

## iOS Simulator Support

MetalPetal can run on Simulator with Xcode 11+ and macOS 10.15+.

`MetalPerformanceShaders.framework` is not available on Simulator, so filters that rely on `MetalPerformanceShaders`, such as `MTIMPSGaussianBlurFilter`, `MTICLAHEFilter`, do not work.

Simulator supports fewer features or different implementation limits than an actual Apple GPU. See [Developing Metal Apps that Run in Simulator](https://developer.apple.com/documentation/metal/developing_metal_apps_that_run_in_simulator) for detail.

## Quick Look Debug Support

If you do a Quick Look on a `MTIImage`, it'll show you the image graph that you constructed to produce that image.

![Quick Look Debug Preview](https://user-images.githubusercontent.com/1234944/116965587-c6a0a280-ace0-11eb-8918-2f36d1d6114c.jpg)

## Trivia

[Why Objective-C?](https://github.com/MetalPetal/MetalPetal/issues/52)

## Contribute

Thank you for considering contributing to MetalPetal. Please read our [Contributing Guidelines](CONTRIBUTING.md).

## License

MetalPetal is MIT-licensed. [LICENSE](LICENSE)

The files in the `/MetalPetalExamples` directory are licensed under a separate license. [LICENSE.md](MetalPetalExamples/LICENSE.md)

Documentation is licensed CC-BY-4.0.


text:
Q: how to assign the values to a string array directly taken from input using bufferedreader? public static void main(String[] args)
{
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in);
    String[] a = new String[]{br.readLine().split("\\s")};
}

I'm getting errors here. Is there any direct way to convert the line into array of strings?

A: split returns an array of strings so you can simply initialize a as:
String[] a = br.readLine().split("\\s");

String[] myArray = new String[] {...} is what is known as an array literal, and the values need to be known before the code runs.

redpajama_set_name: RedPajamaStackExchange


As a kid, I loved the Memory game. It involves a group of cards with assorted images laid face down. Each image has a pair. The rules are simple: each turn, flip over a card, and then try to flip over that card's pair. With each failure, you try to remember the placement of each card you put down so that you can get a match on future turns.
I've never been one to describe myself as having an above average memory, but I adored this game. There is something about images that helps us remember.
Emoji keyboards, Snapchat, and gifs are digital tools that allow us to express ourselves through images. Yet, we don't always have the opportunity to communicate through pictures. For example, in conversations. How do we tap into our listener's photographic memory via non-visual forms of communication?
One strategy is to begin our communications with an authentic personal story. When we tell stories, we achieve something that paintings cannot, we use the listener's own imagination to paint the picture.
Experiences that moved us are easy to recall and easy to express with emotion. Our enthusiasm grabs our audience's attention and makes it easier for them to visualize and remember.
Ben leads business development for Majestyk. Prior to helping companies build their products at Majestyk, he created products within companies and in outside ventures.


text:
Аба́-вуа́ () — характерный для интерьера католических церквей (в первую очередь — выполненных в готическом стиле) архитектурный элемент, представляющий собой потолочный навес особой конфигурации над кафедрой. Помимо чисто декоративной роли, аба-вуа выполнял также звукоусиливающую функцию: усиливая и направляя звуковые колебания, он содействовал тому, чтобы голос проповедника доходил до слушателей, не замирая в высоких сводах храма.

«Аба́» («а́вва») — именование католического священнослужителя-проповедника, настоятеля монастыря (аббатства), отсюда же ведёт своё происхождение и  (аббат). Аба-вуа () — это также «Отец видит».

См. также
 Аба-жур
 Аба-ван
 Аба-сон

Примечания

Литература

Архитектурные элементы
Готическая архитектура
Храмовая архитектура
Крыша
Интерьер
Акустика

redpajama_set_name: RedPajamaWikipedia


I beat A Story About My Uncle, Prey (2017), Mario+Rabbids Kingdom Battle, SEUM: Speed Runners From Hell, Resident Evil 4, Resident Evil 5, Resident Evil 6, Resident Evil Remake HD, Resident Evil 2 (2019). Didn't mean to play so many so quickly but I guess I was more excited for the new game. I also did two speed-runs of RE2.
I also played a fair amount of Kenshi, but I don't think that game really has an end and even if it did, I doubt I'd ever reach it.
Will try to get more done this month hopefully since I'm playing lots of Deep Rock Galactic.
This month was spent on catching up with the kingdom heart series before the release of KH3. Didn't think it would be possible but I managed it. I watched the rest of the games cutscenes/movie version on the 1.5 and 2.5 remix collections and on youtube for Kingdom Hearts X[chi] and Union X/ I wish I had started this sooner so I could play more of the side content and optional bosses.
I thought Lego lord of the rings was relatively average. It had solid but uninspiring gameplay and did not really step away from the lego formula and I really didn't like the use of the movie's voice overs in the game and would've preferred it if they either used new voice overs or kept it silent.
Got some big ones done this month!
Best is easily CrossCode. This game is criminally underplayed, and it's also probably the most cohesive game I've ever experienced. Everything meshes together flawlessly thanks to its incredible story, world, mechanics and level design. It snuck it's way to the top of my 2018 game of the year list, sitting right below Celeste.
Worst was Roundabout. I give them props for wanting to make a silly FMV game and sticking to it, but I got bored of it after the first 20 minutes or so, and unfortunately that's not just because of the gameplay. Eventually the joke wore off, and I was left with a series of highschool level YouTube videos interspersed among boring thread the needle gameplay.
I got to top the month off with Kingdom Hearts III, and damn was that a good time. I'm just coming off of finishing that hell of a game as I write this. I'll probably just be playing more of that, as well as Metro Exodus and Ape Out. I have no idea what else, considering how hard it is to tell if Anthem or Crackdown are going to be any good.
Had so much fun, loved the characters, really enjoyed the story and being able to choose Kassandra's romances (lesbian Kassandra ftw).
I probably expected too much, with so many people saying it was perfect. I guess being /that/ free in a game is not for me.
As you see im playing all the tomb Raider games right now.
Really liked this one but unfortunately the bugs and glitches in the last 2 worlds kinda ruined it for me, don't want that in a precision platformer like this. Might replay this later on a console.
Loved the setting and enemy designs of this game, the combat system took me quite a while to get used to, but I wasn't very experienced in this genre so that might have something to do with it. Played it on Normal.
My favorite game from this month. It's quite a simple metroidvania with more of a focus on puzzles I would say, but it had some stellar bossfights and personally I liked the story and characters a lot. The game also looked great, even though the pixel art style wasn't anything unique.
I wanted to beat some more stuff this month but Super Smash Bros Ultimate once again took all my free time away... Pretty close to finishing Onrush and Fire Emblem though, which would be about time. Hoping to beat more games this month.
Still recovering from grinding out so many in December, so I only got to four in January.
Really good month over all, I have to say my favorites were Mystery Dungeon and Dear Esther, both of which hit me hard in the feels and emotions.
If I had to pick a "worst" it would be Castle Crashers, merely because I played solo and the game really favors a party.
January 9th - Burly men at sea (VITA) - Not much to say about this one, not bad, bang average at best 5/10. Platinum achieved.
January 16 - 36 Fragments of Midnight (PS4) - very simple concept but for the hour I played it was quite addictive. 6/10. Platinum achieved.
January 19th - DC Superheroes: Lego Batman 2 (VITA) - Just the 5 years to complete this on an off, 6.5/10. Platinum achieved.
January 20th - 36 Fragments of Midnight (VITA) - Frist time I've double dipped on a game for the platinum, was a little bit easier on the vita than the PS4. 6/10. Platinum achieved.
Pretty decent month - just working through all the Super Mario series as well as a few games off Game Pass.
I beat Alien: Isolation on 1/9 and retired Thumper on 1/24. Thoroughly enjoyed both, but Thumper became too difficult for me to continue. I got stuck on Boss 6 Omega for a couple hours, and when I watched video of later levels on YouTube, I decided I should tap out.
Nothing all that impressive. Best game was Transistor, followed closely by Until Dawn. Both are great games that I would play again. Worst was SOMA due to it not really gripping me. Aside from the fact that it fueled my fear of being alone, it didn't really do much to keep me on edge for most of the game.
January was a rather "productive" month as far as beating games went.
Sonic Forces (PC) - Somewhat lackluster, but not outright bad game.
Halo Wars (PC): Somewhat simplistic RTS with great production value. Okay, but nothing special.
Outland (PC): Really fun co-op game, but it did take a bit too long before you got the ability to shift to both colours.
Zombie Army Trilogy (PC): Another fun co-op game. It's silly, in a good way.
Shadow of War (PC): Pretty good open world game, although despite having made the end part less grindy, it still felt far too grindy. It has some of the most overpriced DLC I've yet to encounter though.
Reverse Crawl (PC): Not quite what I expected, it's just a simple turn-based tactics game. I've played better, but it was short and to the point.
Age of Empires II: The Age of Kings (PC): I've just had this game since 2000, so it was about time for me to actually beat the main campaign. Good, but the campaign was really poorly balanced. It did not have a difficulty curve, or anything even close to a curve. It was more like random difficulty dots scattered all over the place.
Best has to be Breath of the WIld, worst would be Let's Go Eevee. Not that it was bad (although some parts of the game were pretty boring) but all the other games I beat were really .


text:
Posted on November 20, 2022 November 20, 2022 by OFF
FIRST LAWSUIT FILED
LAWSUIT FILED.
Oregon Firearms has filed the first of what we believe will be numerous lawsuits to put the brakes on Ballot Measure 114, Oregon's gun ban initiative.
Although the media is not giving it much attention yet, in the lawsuit filed with the court, our lawyer, John Kaempf, also challenges the "permit to purchase" provisions of Measure 114. This is a separate argument in addition to challenging the gun magazines ban.
A number of other gun rights organizations have announced their intentions to challenge this truly evil measure and we look forward to, and welcome, any legal action that will stand in the way of this clearly unconstitutional attack on common sense and the rights of Oregonians.
As you probably know, most people assumed the measure would take effect on or around January 15th. That's because most people assumed that State of Oregon would not declare that an election had been "certified" while votes were still being counted in many counties. Well, most people were wrong.
In spite of the fact that there are STILL uncounted ballots, Oregon's Secretary of State has declared that the ban on new gun sales, and the outlawing of standard capacity magazines, goes into effect on Dec. 8th.
This came as a shock not only to gun owners, and gun stores (who stand to lose everything that day) but to the State Police and Sheriffs who have been saddled with implementing this nightmare with no direction, no funding, and no resources . And that's exactly how it was intended.
The liars who promoted this measure are still absurdly claiming that the measure won't go into effect until the rules are created ,while also claiming that creating and imposing the rules are the cop's problem.
While the legislature could make changes to this new assault on rights, they don't even START work until more than a month after it goes into effect, turning countless Oregonians into criminals overnight and crushing small businesses across the state.
As you can imagine the accelerated date of implementation left us with far less time to act in court. Having to respond to a measure that somehow was declared "certified" while the votes were still being counted was, to say the least, unprecedented. But that is how the Secretary of State rolls in Oregon.
Our lawsuit was joined by the Sherman County Sheriff (and civil rights champion) Brad Lohrey and firearms dealer Adam Johnson of Coat of Arms firearms in Keizer, Oregon. Numerous other sheriffs have volunteered to join the suit as have other small dealers and many, many individuals.
Because of the rush to force this measure into law, the devastation it would create came at us faster than we expected so we had no choice but to act quickly. We simply could not wait. There are too many good people whose personal safety and life savings were at risk.
As you would expect, we cannot predict how the courts will rule. We know the state has said they will vigorously defend this measure and work to shut down gun stores as quickly as possible. And as you know, virtually every firearms related legal challenge has been lengthy, expensive, and wrought with setbacks.
The courts were more than happy to uphold orders that closed schools and crippled small businesses during covid.
We also have no way of knowing what actions the legislature could take, either after it's too late or sooner. in an unlikely "special session."
But the threat was too grave to wait.
This will be the single most expensive battle in the history of our organization. The legal bills are already mounting. To everyone who has generously donated to this critical fight, we deeply and sincerely thank you. But it's just getting started.
If you can help, we would be extremely grateful for anything you can contribute. You can donate on line here:
https://oregonfirearms.ejoinme.org/MyPages/DonationPage/tabid/70447/Default.aspx
If you prefer to donate through the mail, the mailing address is at the top of that page. (PO Box 556 Canby OR, 97013)
While donations to any of our three organizations (OFF, the PAC or OFEF) go to the same fight, it is the Oregon Firearms Educational Foundation that is paying the bills. You can select that from the "Donation Category" drop down menu in the above link.
The big box stores that sell sleeping bags and treadmills can survive this. The family gun store where the owner knows your name cannot.
We will not back down.
Category: OFF Alerts
Previous post: Things Just Got Worse
Next post: COURT DATE SET

redpajama_set_name: RedPajamaCommonCrawl


American Sheep Industry Association staff are attending the annual Outdoor Retailer Snow Show this week in Denver. While ASI's policy priorities and outdoor retailers are not always aligned - see Patagonia's response to the administration's efforts to reduce Monument designations consistent with the intent of the Antiquities Act - the outdoor market is tremendously valuable (and growing) for the wool industry.
"Wool is a true performance fiber," said Rita Samuelson, ASI Director of Wool Marketing. "As a natural fiber, it is biodegradable. That alone is appealing for outdoor enthusiasts. Add to that wool's durability, odor resistance and moisture management, and you have a fiber that can keep you cool in the summer and warm in the winter. It's ideally suited for an active lifestyle, as both a base layer and outer layer."
The outdoor apparel market continues to see impressive growth, with consumers spending $887 billion annually on outdoor recreation. Wool is a small part of that, and while it's difficult to pin an exact number on it, wool is about 1.5 percent of international fiber consumption.
"This is a growth market. Every year we come to the OR show we see new vendors using wool and new concepts for wool," said Samuelson. "Many of those innovations are from companies we know well and have had a long relationship with such as Pendleton, Duckworth and Farm to Feet. Our job is to continue to tell manufactures the great story of American wool and help them find new uses for this performance fiber."
Questions around sustainability and animal care are top of mind for outdoor retailers, responding to consumers who demand to know more about the products they buy.


Address: P.O. Box : 28891,, Dubai.
-Overhauling of Main Engine and Auxiliary Engine.
-Complete Package of Marine Engine with Stern arrangement up to 1200 HP component repairs.
-Repairs of Cargo Pumps, Deck Machineries.
-Complete Package of Industrial Gear Boxes, Motors & Centrifugal Pumps.


This Local 1 Owner 2015 Nissan Murano SV AWD has No Accidents & loaded with options: Navi, Dual Sunroofs and ONLY 58xxxkms!!
3.5-litre V6(260hp, 240ft.lbs torque), XTronic CVT, Intuitive AWD, Navigation, Bluetooth, Rear Camera System, HID Xenon Headlights, Power Liftgate, Dual Panel Sunroof, Dual Zone Automatic Climate Control, Power Heated Cloth Seats, Premium Audio, Power Heated Tilt/Telescopic Steering, Intelligent Key with Push Button Ignition, Remote Start, 18 Inch Aluminum Alloy Wheels and much more!
Full Safety/Service inspection and ICBC/CarProof report available upon request. We include a 90 day Limited Warranty and extended warranty is available.


I've always liked the Norse myths, and also the Icelandic Sagas, which were written in the Middle Ages by the descendents of Vikings. The Sagas are interesting because they mix realistic stories about farms and families with sudden bits of supernatural stuff, featuring ghosts and trolls. The fantasy never takes over, but it never goes away either: it's taken for granted by everyone as something on the margin of their lives.
In 2006, after finishing the first three Bartimaeus books, I started thinking about developing a saga of my own. In May that year I did a book tour in New Zealand. I had a couple of days off in the Southern Alps, and sat around looking at the scenery. I began making notes right then about a story set amid vast mountains.
Writing a novel is like a heroic quest: it's a journey full of set-backs and struggles, and you never know how it's going to end. It took a long time for me to figure out how my saga was going to work. To help figure things out I made many pages of notes, as well as maps and diagrams to flesh out the world I was creating.
I worked on the story for more than a year and a half. For a long time there were three main characters – Halli, Aud, and a boy called Einar. There was a problem, however. The story didn't work, and I couldn't figure out why. Then, one night, I woke up knowing the answer. Einar was the problem. He didn't add anything to the story, but only slowed it down. He had to go. This was good, but it meant I had to rewrite the whole thing over again.
I finished Heroes of the Valley in the summer of 2008. It had taken longer to create than any of my previous novels, but I was very proud of the result.
paperback cover follows the German edition.
I wrote lots of things that never made it to the finished book.
Click below for two lost sequences.
Hetti and Krom: My first bit of writing for the book.
Halli in the Grave Mound: An entire rejected chapter.


text:
M-A, a Home Away From Home for Exchange Students
Megan McDonnell September 14, 2016 March 23rd, 2017
This year, M-A is home to 2,400 students, all commuting from Menlo Park, East Palo Alto, or Atherton. However, not all of these students truly call these cities home. We sat down with three exchange students from Italy, Switzerland, and England who are attending M-A this year.
Illustrated by Mia Szymkowski.
Simone Pallante
Simone Pallante is from the northwest region of Italy. He and his good friend, Marco, arrived in Menlo Park on August 15, only two days before school started. When deciding which country to go to, Pallante chose America because of its representation in Italy. "I wanted to see in first person what is the real America, and not only what is the representation of America."
Pallante stated that living abroad for a year of high school is not common: "In my country, it is not normal, but some people decide to have an exchange year. It is very interesting. It's different than a normal school year. You can improve your life skills and open your mind to another culture and another way [of thinking]."
So far, Pallante has been enjoying his time at M-A. While the language barrier is difficult to deal with— "I find it very difficult to explain myself and this [is] a problem…because I can't understand where I have to go or what I have to do"— he finds M-A's curriculum and schedule much better than his Italian school's. "I didn't like school in Italy, it was very boring. It's much more interesting here." He also recognizes, though, that M-A is more demanding than his Italian school: "This place in particular— I don't know all the U.S.— the people are more attentive. The homework or the attention during the lesson is higher."
In Italy, high school lasts for five years, with students graduating when they are 18 or 19. "The school is different. In Italy, you have only one class [of students], so for five years you stay with the same 29, 30, 31 people for all of high school." While he said that the class becomes closer that way, it also feels a bit stifling; there aren't as many social options.
So far, Pallante has found people in the U.S. more friendly than those in Italy. "I think that here the people are more friendly, but I think that it is because my part of Italy is not very friendly. There is some parts of Italy where you can go into every shop and start to speak with other people you don't know. In Italy it is very different in different regions."
Caroline Rothe-Dick
Caroline Rothe-Dick is from Lucerne, the German-speaking region of Switzerland, but she has already had exposure to the United States. Her aunt and uncle both live in Northern California, and she has visited multiple times.
"It's typical for Europeans to do a year abroad. You get to know new cultures. And [I chose] the U.S. because I know people here." She is staying for her full senior year, as it is too difficult to miss only a semester. When she returns to Switzerland next summer, she will have to repeat her senior year before graduating.
Rothe-Dick's hometown, Emmetten.
After living in the United States for a couple months, she has one word to sum up her experience: different. She said, "A lot of things are just bigger, more complicated – different."
Rothe-Dick has been able to navigate the large M-A campus easily, as she does not have a language barrier. In Switzerland, everyone takes anywhere from seven to ten years of English, though not every day. Rothe-Dick's home is bilingual: she speaks English with her mother, who grew up in the United States, and German with her father and two little sisters. "Because I can speak the language pretty well, I don't have a problem."
Some differences stand out more than others— people here seem to have an aversion to public transportation and carpooling; lunch is the big meal in Switzerland as opposed to dinner — but Rothe-Dick has been surprised by the similarities. "It looks really alike to Europe or Switzerland. There a lot more cars here though."
Rothe-Dick sledding in Emmetten on a toboggan run.
Socially, M-A has been easy to navigate."People are more open. In Switzerland people are all very nice, but not very open. And they are super correct in Switzerland. You're always right on time, or you always have to do everything perfect."
The school systems, however, differ greatly. High school acts as a sort of college in Switzerland: students declare majors or regions of focus. Only 20 percent of the students complete all four years; the majority stop high school after two years and become apprentices— such as apprentice bankers and apprentice chefs— where they have a sort of half job, half school schedule. The 20 percent that focus on school are the only people who continue into college.
Lucerne, a city near Rothe-Dick's home.
The college application process is also much more simple in Switzerland, much to the envy of M-A's senior class. The chances of getting into colleges are almost certain, and the cost is nowhere near as expensive as it is in the United States.
She has already learned a lot from her time abroad: "Just be open for everything. That's so cliché, but try new things and ask people about things."
While Rothe-Dick has been enjoying her time at M-A so far, there is one thing she misses: "Chocolate! I'm sorry, but yours is just…"
Jacqueline Kim
Unlike Pallante and Rothe-Dick, Jacqueline Kim is living in the United States with her entire family. When her father got a job at Google, she decided to leave her boarding school and make the move with the rest of her family. She plans on staying in California until she graduates in two years. After graduating, she's considering staying in the United States for college, but says she will most likely leave to go back to England.
England and America are considered to be somewhat similar. Kim, however, has noticed some glaring differences since moving here five months ago: white socks with vans and the fact that "Americans are VERY friendly."
Kim has learned some important cultural lessons since her move to the United States: "Abbreviations such as ASAP, TTYL; also don't say rubbish, it's trash."
According to Kim, British and American schools are very different. She admitted that the first few weeks at an American high school were difficult, and referred to M-A as a "jungle." Before coming to M-A, Kim came from a school where teachers did not assign homework. At M-A, it's a whole other story. She feels somewhat overwhelmed by all the work, and after missing a few days, was not excited to start the large pile of make-up work.
In terms of the actual school system and classes, Kim said she prefers the English education system. For Year 12 and Year 13 (equivalent to junior and senior year), students in England "only choose three to four subjects [they] are good at and what [they] would like to do so [they] can concentrate more." As a junior, she did not have to take these classes before she moved, but said they are more challenging than Advanced Placement (AP) classes in America.
According to Kim, friend groups in England are "mostly divided by gender." Within her age group, partying and drinking is common since the drinking age in England is 16. Although teenagers can drink at 16, they cannot buy alcohol until they turn 18.
Kim is happy to adapt to many of the differences in America. Coming from rainy, cold England, Kim is still not used to the sunny California weather, but enjoys it, although some days it is too hot. She is also looking forward to being able to drive. In England, teenagers must wait until they are 18 before they can even pass their permit test, so having the opportunity to drive earlier is an advantage.
However, there are some aspects of England she is sad to leave behind. For one, Kim misses both her friends and English breakfast, which she recommends to everyone. She is also disappointed to not have British transportation. America, especially the Bay Area, does not have a good system of public transportation. Buses and trains are sparse and inconvenient. In England the subway, called the "tube," is the main method of public transport among teenagers and adults.
Kim concluded by saying she loves living in California and is excited to spend her next two years at M-A.
Features No Comments
Megan McDonnell
My name is Megan McDonnell and I am a current senior at M-A. This is my first year on the Chronicle, and I am excited to work on stories, features, and layout design of the website. I love getting involved in the M-A community whether that is attending sports games or meeting new classmates. Last year, I led the Yearbook staff as Editor-in-Chief and am happy to bring the photography and design skills I learned from Yearbook to The Chronicle. Outside of the journalism class, I love traveling, reading, dance, and High School Musical.
Previous PostGirls Volleyball Wins First Regular Season Match
Next PostMovie Review: Clint Eastwood Brings the 'Miracle on the Hudson' to Life with "Sully"


text:
Home News A Week of Progress for Women and Children
A Week of Progress for Women and Children
Secretary-General Ban Ki-moon(second from right) applaudes among members of the audience at the "Every Women,Every Child" event in support of the Global Strategy for Women's and Children's Health. Photo:UN Photo/Eskinder Debebe
NEW YORK — When a woman dies in pregnancy or childbirth, a family is devastated and a community suffers an irreplaceable loss. And when her options are narrowed for lack of health, education or equity, her family, community and country suffer as well. This week, which marked the first anniversary of the UN Secretary-General's Global Strategy for Women's and Children's Health, world leaders took notice and took action.
What made this week different than many others in which policymakers and leaders get together to share experiences, strategize for better outcomes and reaffirm promises was the game-changing participation and commitment of new partners, including corporations, civil society and organizations from other sectors of development, to help countries build stronger health systems and save lives -- 16 million by 2015.
"When we deliver for every woman and every child, we will advance a better life for all people around the world," said United Nations Secretary-General Ban Ki-moon at an event held at UN Headquarters on the margins of the 66th session of the General Assembly.
"One year ago, we launched the Every Woman Every Child initiative out of our conviction that in our time, it is wrong to allow women and children to die when we have the tools to save them," said the Secretary-General.
"On that day, we said we would carry out commitments to improve women's and children's health. We said we would develop a framework to ensure accountability. We said we would work together to bring in new partners. I am happy to say today, one year later, we are delivering on all three fronts," said Mr. Ban.
Below are highlights of some of the week's main events:
Leaders and Health Ministers Strategize Ways to Improve Community-level Access to Maternal Health
The week kicked off behind the scenes, with a reminder that building – and meeting – significant financial and political commitments to women's and children's health takes leadership – by individual people.
Health ministers from several countries with high rates of maternal death gathered at the Greentree Foundation estate in Manhassat, New York, on Sunday. The ministers – from Bangladesh, the Democratic Republic of Congo, Ethiopia, Nigeria and the United Republic of Tanzania (mainland and Zanzibar) – exchanged ideas and began taking steps to mobilize the financial, technical and human resources needed to put health services in communities where women and children need them.
Joining the conversation were Dr. Babatunde Osotimehin, Executive Director of UNFPA; Michel Sidibe, the Executive Director of UNAIDS; Michele Bachelet, Executive Director of UN Women; high-level representatives of UNICEF, WHO, and the World Bank; MDG Advocate and UN Special Envoy for Malaria, Ray Chambers; Adrienne Germain, the President Emerita of the International Women's Health Coalition; and technical experts from the UN system, private sector and other development partners.
The Nigerian Minister of State for Health, Mohammed Ali Pate, called the meeting an important opportunity for countries to learn from each other.
"This is very useful because it's also reinforcing the partnerships at the global level, but also at country level," Pate explained. "No country will do this alone by itself. No individual sector or health professional group can do this by themselves. It will be in the hands of all of us coming together to save the lives of mothers, infants and children. And so a forum such as this one reinforces the centrality of the partnerships we have."
Women's Health: The Next Frontier in Non-Communicable Diseases
Partnerships across the entire health sector were also the focus of a special event on women's health and non-communicable diseases. Coinciding with the first?ever UN High-level Meeting on NCDs, the panel discussion looked how the prevention and treatment of chronic diseases may be integrated into health programmes and policies to tackle the specific health needs of women, across their entire lifetime.
"Our efforts are targeted to improve the lives of women and young people, and we believe that unleashing their potential can bring vast benefits for all," said Purnima Mane, Deputy Executive Director of UNFPA.
"How can we unleash this potential if we cannot protect them from communicable and non-communicable diseases by using every existing platform, every opportunity and working together across sectors to raise the resources available to address health challenges and avoid the silos in which we tend to work?" Mane continued.
Other members of the panel – which included representatives of the World Heart Federation, US National Cancer Advisory Board, GAVI Alliance, PATH, Women Deliver and the Partnership for Maternal, Newborn and Child Health – stressed the need to support governments in their health system priorities, including building stronger systems that integrate sexual and reproductive health, healthy lifestyle promotion, and the prevention and treatment of non-communicable diseases.
On behalf of UNFPA, Mane presented an award to Dr. Alexandre Padhila, the Brazilian Minister of Health, who accepted it on behalf of Dilma Rousseff, President of Brazil. Rousseff, herself a cancer survivor, was recognized for her advocacy and leadership on addressing non-communicable diseases.
Global Leaders Council for Reproductive Health
On Monday evening, Dr. Babatunde Osotimehin, Executive Director of UNFPA, joined former Irish President Mary Robinson and members of the Global Leaders Council for Reproductive Health at the Rubin Museum in New York to urge world leaders to deliver on commitments to deliver voluntary family planning to the 215 million women worldwide who want but do not have access to it.
Robinson, chair of the Global Leaders Council, Dr. Osotimehin and other Council members shared personal stories about the inspiration behind their commitment to reproductive health and rights. Osotimehin recounted his recent visit to the refugee camps in Dadaab, Kenya, where
adolescent girls lack access the security, basic education, and reproductive health care that would enable them to achieve their potential.
"Unprecedented action is required if we want to provide history's largest population of young people with the choices they need to shape a bright future – for themselves and their countries," Dr. Osotimehin said.
"I call on governments and world leaders to move from words to action, and to live up to their promise to ensure universal access to reproductive health, including voluntary family planning."
A Transformative Alliance: The Clinton Global Initiative
On Thursday, UNFPA Executive Director, Dr. Babatunde Osotimehin participated in the Clinton Global Initiative panel on women and girls – what works, and what are the most pressing issues where efforts should be taken to scale.
Watch live streaming video from cgi_breakoutseminar2 at livestream.com
Dr. Osotimehin shared success examples of HIV programming in different cultural contexts and highlighted the high returns of investing in girls' education, including age-appropriate sexuality education, and sexual and reproductive health, including access to voluntary family planning.
Gaining a round of applause, UNFPA Executive Director made a strong case for equity, calling development partners to direct investments to the most disadvantaged people in all societies. "Equity must be there, and ensure that you reach those girls who ordinarily would not have access to anything," he stated.
Every Woman, Every Child
Finally, many of those governments and world leaders gathered on Tuesday at the United Nations to take stock of progress on those commitments, and of the on-going Every Woman Every Child effort in support of the Global Strategy for Women's and Children's Health.
More than 60 countries have committed to intensify efforts to improve the health of women and children. Countries have committed to train and better support national health workforces to expand access to midwifery in communities; to improve the coverage of emergency obstetric care; and to improve child health through vaccination, nutrition and anti-malaria programmes. The Every Woman Every Child effort is also catalysing global partnerships to scale up access to family planning, which also reflect growing awareness about the implications that 215 million women in a world of 7 billion people who want to delay or avoid pregnancy, but do not have access to contraception.
Secretary-General Ban Ki-moon launched a progress update, Saving the Lives of 16 Million which presented the findings of the Commission on Information and Accountability for women's and children's health, and several heads of state were recognized for eliminating policy roadblocks and taking concrete steps to meet their commitments. Highlights of the Every Woman Every Child initiative in the last year include major new commitments by the private sector and a strong focus on innovation.
New commitment announcements – including from 27 countries who made commitments in 2011 with the support of UNFPA, acting on behalf of the H4+ (short for Health 4, comprising UNFPA, UNICEF, WHO, the World Bank and UNAIDS) -- and recognition of progress continued into the evening, at a celebration hosted by MDG Advocate Ray Chambers. UNFPA, on behalf of the H4+, chaired a segment of the evening on maternal health, which included the announcement of the first-ever corporate partner to a joint H4+ programme. Johnson & Johnson has entered a four-year partnership with the H4+ that aims to help reduce maternal and infant mortality in Tanzania and Ethiopia by building health-care capacity and training skilled birth attendants.
"We responded to the Secretary General's call for action because we aim to make a real and lasting difference for women and children in some of the most challenging areas of the world," said Bill Weldon, Johnson & Johnson Chairman and CEO. " This is the goal to which we are holding ourselves accountable."
Listen to an interview about Every Woman, Every Child with Yves Bergevin, UNFPA Maternal Health Thematic Fund Coordinator
Read more coverage on UN News.
118-truck convoy delivers urgent aid to stranded residents in Rukban, Syria
UNFPA delivered critical supplies to a remote settlement in Rukban, where residents have been stranded in the desert for years.
UNFPA scales up response after Iraq earthquake
In the aftermath of the powerful earthquake that struck the Iraq-Iran border on 12 November, UNFPA has scaled up its emergency response to meet the needs of women and girls.
This Mother's Day, remembering the joys – and dangers – of motherhood
Motherhood should be a time of joy, but for too many women, it comes with something else: peril. "Becoming a mother and having a family was always a dream of mine.
https://www.unfpa.org/node/7879


Since the Download thread will stay in a closed state and just be used for downloading, I wanted a thread that would be open for comments on the new Ultimate Care Guide.
Last edited by ClayEnglish; 01-09-2011 at 03:56 PM.
Well, all I can say is that this is way beyond what I expected. Jeff's addition on breeding is amazing. I have the VPI DVD with Boa Constrictor Manual and this guide blows those away. The detail is great! Clay also updated his sections and also did a great job.
I can't believe this thing is FREE!!!
Again, Thank you both. You guys rock!
I read the new breeding section last night, and was blown away by the amount of detail. I can't imagine the countless hours of research that went into this amazing piece of work. I can't thank yall enough for being able to make this free. Just another reason why RTB's is the best forum on the net.
I as well found the guide very detailed and it saved me the hastle of buying an overpriced refrence book from my local petstore. Like petsmart needs my money! Thank you so much for making this avalible to us GREAT INFORMATION. With the money i saved i can upgrade my member status!
Very cool that you put the Care Guide Online. I love to re-read it!
ClayEnglish and Boa Amarali like this.
Great guide!!!! As a new RTB owner, I couldn't have asked for a better free guide for my new family member!!
Boa Amarali, tsblair and judgment like this.
I wanted to brush up on a bit of breeding information the other night and after about 30 minutes of unsuccessful searching for an old thread I remembered from 2010 I finally decided to go back to basics and hit up The Ultimate Care Guide. I found what I was looking for in about 20 seconds.
trying to download the PDF file but it wont let me maybe cuz i just joined and need to post 2 approved threads???
you vshould be able to just click the guide at the top of home page is that what your doing?
That would make sense, but after reading the guide, my guess is most people still have questions, myself included! So making an account is something you would have eventually done anyways!
I have a 9 month old BCI that is 3'9. What I'm trying to figure out is do I go by her age or size to figure out how often I should feed her? Most snakes I've kept I've fed every week until they are a year old (at which point I bump them up to every 10-14 days), which is what the guide recommends. However, for her size and according to the guide she should be feed every two weeks.
So which do I go by? I've been feeding her one size appropriate rat (which would be a medium rat) every week so far, and she's doing well. She's not over weight, and she acts and seems healthy. Should I stick with once a week until she's a year old, or bump her back now?
Was this a planned breeding or did you buy/adopt/rescue a gravid boa?


text:
The Cornell Daily Sun (https://cornellsun.com/2006/03/02/the-soul-of-electronica/)
The Soul of Electronica
By | March 2, 2006
Santa Cruz, Calif. based Sound Tribe Sector 9 (STS9) has done it again with their latest full length remix album, Artifact:Perspectives. This album is so funky you'll start grooving when you hear the first bass beat. In fact, this article almost didn't get written on time to get printed because the album went onto repeat while I kept dancing.
"Better Day Remix (Sub-id)" has a beat as heavy as water balloons filled with wet cement being lobbed by polyrhythmic catapults while beautiful sirens in the background keep the melody flowing. Only a new subwoofer would improve the first track's enchanting hook.
"Tokyo Remix (Machinedrum)" comes at you with a rhythm so complex you'll think you're under attack by an invading fleet of robot controlled drum machines. Don't try to understand these snaps and pops too much or you might overload you're brains music-processing unit, although at times STS9 seems to project their trance even through a stereo.
When you hear the rhymes on this album, you'll forget about your Top-100 rappers. "Possibilities Remix (Collective Efforts)" shows how well poetic lyrics can flow in and out of an sophisticated base line, all while drums keep the jazz beats streaming.
"By the Morning Sun Remix (Slicker)" is just as danceable as any other track, but manages to keep the feeling slightly cooler, and laid-back. This slow but not slow feeling clears the way for pulsing end-of-song funk-down.
Don't be fooled by the track names: even though titles repeat, if it weren't for the names, you'd have a hard time telling which mixes were from the same original. "By the Morning Sun Remix (Metrognome)" jams out on a Far East-sounding super melodic pentatonic riff. Serenity and complexity somehow combine here to deliver a soothing, fascinating unity, like a light rain pattering on the roof of a tin shed. "Tokyo Shinjuku Flashback Mix (Bill Laswell)" is a thoroughly intricate jazz-funk-tronic creation. This baseline your run of the mill, pop-inspired three-note affair, it's an evolving jazz backbone which keeps your ears interested and your feet moving.
Artifact:Perspectives makes electronic music interesting again in its funked-out driving remix of jazz laid on top of hip-hop on top of music which escapes genre. I hope I hear any track on this album next time I'm in a club.
Check out the Sound Tribe on tour soon, in Albany on April 30 and Buffalo on May 3.
Archived article by Brad Lipovsky
W. Hoops to Welcome Ivy Foes
For seniors Sarah Brown, Brittani Rettig and Hillary Seidel, this weekend will be the end of four years of ups and downs. Although Cornell cannot win the Ivy League title, the seniors have a chance to lead the team in making an impact on who does, as well as help the Red reach some significant program milestones.
Cornell (8-17, 5-7 Ivy) faces Harvard (10-14, 6-5) tonight, and Dartmouth (18-6, 9-2) tomorrow for the Red's season finale and Senior Night.
The Crimson currently reside in fourth place, two games ahead of the fifth-place Red. If the Red can win out this weekend, along with the Crimson losing both its weekend contests, Cornell will clinch a fourth-place tie with Harvard. This would be the first time the team has both broken into the top half of the standings and recorded a .500 record in the Ancient Eight since 2001-02, the last season before current head coach Dayna Smith was hired.
"Sarah, Brittani and Hillary have been through a lot," Smith said. "Through all the transitions
Softball to Open Year On Road in Virginia
The softball team starts its 2006 campaign this weekend, as it travels down to Fairfax, Va., to play in the George Mason Patriot Classic. Tomorrow the team will face-off against Mount St. Mary's and Niagara. On Sunday the Red will play Niagara and host, George Mason.
The Red lineup will look a bit different tomorrow than it did during the 2005 season. The Red will be without two-time Ivy League Player of the Year, Lauren May '05. May broke almost every batting record in Cornell softball history including career hits (226), home runs (58), RBIs (190), batting average (.415), total bases (443), slugging percentage (.415), bases on balls (79) and on-base percentage (.483).
"No one will be able to fill Lauren May's shoes," said head coach Dick Blood. "But now we have a more balanced lineup and we're hoping that we'll be more consistent since our offense will be pretty evenly spread eight or nine spots deep."
Senior captain Whitney Smith feels similarly to Coach Blood.
"I'm really excited to get going. The team chemistry is great this year," Smith said. "I'm looking forward to seeing how we play once we get on the field together."
Some things will remain the same. Returning to the leadoff slot will be sophomore Jenna Campagnolo, who has been nursing an ankle injury, but according to Blood, is ready to play for the Mount St. Mary's game.
In addition to Smith, senior captain Caitlin Warren – fresh from playing for the women's hockey team – also leads the Red. Although she was skating on the ice for the Red, Warren was still practicing with the softball team and is ready to play this weekend.
The pitching staff is ready to shine this weekend. Sophomore Jenn Meunier will start games one and three against Mount St. Mary's and Niagara, respectively. Smith will pitch in the game against Niagara tomorrow, and freshman Haley Mirrer will make her Cornell debut in game four against George Mason. Mirrer will also be available out of the bullpen in the first three games if any of the other starters need relief.
Even with the lineup set exactly the way Blood wants it, this weekend's games won't be easy. Mount St. Mary's and George Mason have already played outdoor games, and Mount St. Mary's has an impressive 2-1 win over Army under its belts.
"It's tough because some of the other teams have already been on the field," Blood said. "I just hope our hitters relax in the box and our pitchers are able to settle down quickly."
In some ways the Red is particularly looking forward to Sunday's match up with George Mason. Last season, George Mason rallied to produce a huge four-run seventh-inning comeback to barely outscore the Red. But Smith only sees the big picture.
"We want to beat whoever we're playing. The bottom line is that we want four Ws this weekend," Smith said.
Archived article by Lance Polivy Sun Staff Writer


text:
Home » Celebrities » Jacob Elordi Breaks His Silence on Those Zendaya Dating Rumors
Jacob Elordi Breaks His Silence on Those Zendaya Dating Rumors
Jacob Elordi is finally addressing those Zendaya dating rumors. In a recent interview with GQ Australia, the 22-year-old actor denied the rumors, saying Zendaya is like his "sister." "Zendaya is an amazing creative, you know? She's super dope to work with. She's an incredible artist and a very caring person to all of us," Jacob said about his Euphoria costar. "But we're all really close. There is not one weak link in that show. We've spent so much time together and everyone is just so cool to work with."
Jacob and Zendaya star in the HBO series as Nate Jacobs and Rue Bennett, respectively. Ever since August, the two have been at the center of romance rumors. The pair were first spotted vacationing together in Greece, and two months later, they were reportedly seen on a movie date in Los Angeles. More recently, they spent Thanksgiving together in Sydney, Australia, where they were both honored at GQ Australia's Men of the Year Awards. Zendaya still has yet to publicly address the status of her relationship with Jacob, but I guess the rumors were just that. Sigh.
Zendaya Has a Huge Family, So Let's Get Nosy and Learn All About 'Em
EastEnders' Patsy Palmer celebrates daughter's high school graduation
Zendaya Responds To Fans Making Fun of the 'Spider-Man: Far From Home' IMAX Poster
Zendaya is a tangerine dream in NYC as she arrives for The Late Show
Zendaya Tells Fans Not To Spoil Anything After Seeing 'Spider-Man: Far From Home'
« 'The Magicians' Face Off Against More Magical Monsters in Season 5 Trailer
Robert K. Massie, Narrator of Russian History, Is Dead at 90 »


"Rattler" Single & MUSIC VIDEO!!!
We present to you the first single off our new EP, "And Then You Were Gone" AND our first ever official music video! We are so excited and so proud and we hope you enjoy it!
One hundred billion thanks to the team at It's a Strange Thing, Rebecca Davis and MJ Slide!
"And Then You Were Gone" Releases Everywhere 7/20!
You can pre-order the EP now through our Bandcamp and you'll get an immediate download of "Rattler" before it's available anywhere else!
Our new EP - "And Then You Were Gone"


Integrated Water Services Ltd (IWS) provides a wide range of specialist water related services throughout the UK on a 24/7 basis.
The aim of the business is to consistently exceed our clients' expectations by continuously improving everything we do and we closely monitor our performance through internal and client measures.
IWS M&E provides a specialist service in all aspects of water and wastewater treatment, pumping project management and telemetry. Services include infrastructure maintenance, water quality monitoring and water filtration.
IWS operates nationally and provides cost efficient solutions including the provision of in house design and maintenance of specialist hazardous chemical storage and dosing equipment to onsite testing and diagnosis of pumping plant. Our specialist workshop facilities provide a complete range of overhaul, maintenance and repair services for pumps and pumping equipment. Through a robust energy management process IWS is able to offer clients energy audits to identify areas of excessive consumption and solutions to mitigate this.
IWS Water Hygiene is the leading nationwide supplier of water hygiene and water facilities maintenance servicing Local Authorities, Housing Associations, and Facilities Managers at various commercial and industrial locations across the UK.
IWS provides specialist services and solutions for all aspects of water treatment and water hygiene services concerning legionnaire's disease and the control of legionella bacteria; and is a Category 1 member of the Legionella Control Association. Managed by industry specialists and delivered using a local labour resource we provide a wide range of services, from chemical and microbiological water sampling and analysis to the installation and maintenance of Chlorine Dioxide systems.
IWS Pipeline Services is a specialist clean water contractor servicing UK Water Companies, Housing Associations, industrial, commercial and domestic customers.
Using 'No-Dig' and 'Low-Dig' technologies as well as traditional trenching techniques, we provide a wide range of services, from finding and fixing leaks on underground supply pipes to the specialist installation, repair, maintenance, rehabilitation and replacement of all parts of the water distribution network. This includes working on pipework from 15mm to over 1,000mm in diameter, in all materials and ground conditions. We are registered with Achilles Verify and are part of the UK Water Industry Approved Plumbers scheme (WIAPS).


Hello – We expect you're wondering what this is all about? Well, to be brief we need more evidence for funders regarding the lack of amenities in Whitley and how they impact you and your family. The funding we require is to support the purchase of a building/land in the village for a Community Centre now that we have established the need. The more people complete this survey, the more evidence we have to show prospective funding agencies.
* 1. Do you live in Whitley/Whitley area?
* 2. What age bracket are you in?
* 3. Which gender do you identify as?
* 4. How strongly do you feel you belong to our community or that you are part of it?
* 5. Thinking about how much contact you have had with people, which of the following best describes your social situation?
* 6. How often do you feel lonely?
* 8. What factors are barriers to social contact in Whitley?
* 9. Do you experience difficulty in accessing basic services such as Doctors, Banks, Hospitals, Recreation (Cinema, Shopping, Eating out) and Supermarkets etc.?
* 11. Do you own a car or rely on Public transport to access services?
* 13. Do you feel our community provides enough social interaction/ activities?


Can Barnes & Noble Education Climb Higher?
The educational content specialist has seen a big rebound in recent months, but will its quarterly results justify the upward move?
Image source: Barnes & Noble Education.
College in America is big business, and Barnes & Noble Education (NYSE:BNED) has sought to create a lucrative niche in serving college students across the country. With a captive audience of students, each college and university location offers an opportunity for Barnes & Noble Education, which operates campus bookstores and looks to offer its customers the textbooks, supplies, and sundries they need.
Coming into its fiscal first-quarter financial report on Thursday, most investors don't think B&N Education will be able to make money, but they hope to see ongoing progress that should reduce the flow of red ink over time. Let's look more closely at what's been happening with B&N Education and whether it can keep moving in the right direction going forward.
What's coming up for Barnes & Noble Education earnings?
Over the past few months, investors haven't been certain about their views on B&N Education earnings. They've reduced their expectations for the July and October quarters by a penny per share, but they've made small boosts to their full-year fiscal 2017 and 2018 projections. The stock has responded positively, climbing 14% since early June.
B&N Education's fiscal fourth-quarter results helped to inspire optimism among shareholders. The company posted a 4.5% rise in comparable-store sales during the quarter, reversing what had been a downward trend in comps earlier in the year. Overall revenue climbed 8%, and B&N Education defied expectations for a small adjusted loss by posting adjusted earnings of $0.07 per share. Not only did the company benefit from a calendar effect that shifted some school-related textbook and course materials into the quarter, but B&N Education also said general merchandise revenue performed well, pointing to sales of graduation-related products and college logo apparel. Despite somewhat tepid guidance, B&N Education seemed to build some momentum coming into the summer months.
Already, B&N Education has made a huge amount of progress in winning new business and continuing its expansion plans. In mid-August, the company announced contract wins that brought its total for the just-started fiscal year to 18 new contracts. These relationships will put B&N Education into 34 new campus-located and online virtual bookstores, and the educational institutions serve in total more than 200,000 students and faculty members. Such growth has been a key part of B&N Education's overall strategy, with CEO Max Roberts noting that its student and faculty customers are "the vital core of our company's mission to deliver innovative and affordable educational content, competency-based education tools, and courseware solutions.
Another key driver of future growth is to make sure B&N Education keeps up with the transformation of the college experience into digital education. In August, B&N Education said it had extended its current relationship with OpenStax, a nonprofit entity that provides greater access to cost-effective, high-quality course materials and other digital solutions. By integrating OpenStax content through its LoudCloud learning analytics platform, B&N Education believes it can offer educators better tools that they can use to boost their students' performance and keep them at their institutions. Similarly, Barnes & Noble Education said in July that it had entered into a partnership with Instructure (NYSE:INST), which is the cloud-computing company behind the Canvas learning management system. The partnership will integrate B&N Education's LoudCloud with Canvas, which both companies hope will enhance the value of each element of the platform and satisfy client institutions more fully.
In the B&N Education earnings report, investors should watch to see how well the company is doing in moving forward with new bookstore projects and agreements it has set up recently. If it can create a seamless transition for colleges and universities, then more potential customers might look at Barnes & Noble Education as a viable solution to meet their students' needs.


text:
Research & Impact Overview
Acute and Critical Care
Geriatric Health
Health Care Delivery and Development
Local to Global Community Health
Maternal Infant Outcomes
Active Funded Projects
Community Engagement Overview
Advocate Aurora Health and EdAssist
Community Paramedics
Office of Clinical Placement
Community Health and Wellness Centers
TTSTA Resources for Refugees, Providers & Educators
Black and Gold Committee
Sigma Theta Tau – Eta Nu Chapter
Nursing Class Photos Archive
Center for Global Health Equity
Institute for Systems Change and Peacebuilding
Self-management Science Center
Center for Nursing History
UWM.edu
Home Research & Impact
Fulfilling its research mission daily, the College of Nursing has one of the most robust scientific research operations at the university.
UWM is one of the nation's top 131 research universities as recognized by the Carnegie Classification of Institutions of Higher Education.
Research is vital to the college's mission as a premier, urban, academic, collegial nursing community. We're engaged in transforming health care delivery and health care policy, and promoting wellness from rural to urban communities for patients in need of prenatal care to elder care.
Research Support Active Funded Projects
Nursing Research Focus
The college's research potential is nurtured through the efforts of our faculty researchers, scientists, undergraduate and graduate-level research assistants and the Harriet H. Werley Center for Nursing Research.
Graduate and undergraduate students work alongside nursing faculty in creating bold and effective solutions for advancing local, national and global health. Our national and global perspectives and research expand the reach and relevancy of our work in key areas of nursing research and health care.
Research collaboration is key to advancing nursing science. Research groups at the college work alongside students to achieve success locally and globally.
View Research Groups
We offer a variety of research support within our college as well as through our Shared Office of Research. Faculty and students have access to statisticians, librarians and other services.
View Research Support
Research funding is key to advancing the science of nursing and creating healthier communities. Our faculty take pride in their funded projects, many of which include undergraduate or graduate research assistants.
View Active funded Projects
Cunningham Hall 135
1921 E. Hartford Avenue, Milwaukee, WI 53211
Map414-229-5047uwmnurse@uwm.edu


text:
Q: Spotfire Data Limiting using Dropdowns I have a spotfire dashboard with two dropdown lists, one for Day and one for Month,  that I want to use to limit the data of visualizations.

I need to be able to use both filters at the same time. I currently have a case statement written out to do this however case statements by default stop evaluating expressions when they reach a true statement.
For example below, I have the statements for the MonthSelector on top, it does not continue to evaluate past that to the DaySelector.
case

when "${MonthSelector}"="all" then [Month] <> ''

when "${MonthSelector}"<>"all" then [Month] = "${MonthSelector}"

when "${DaySelector}"="all" then [Week_Day] <> ''

when "${DaySelector}"="WeekDay" then [Week_Day] <> 'Saturday' and [Week_Day] <> 'Sunday'

when "${DaySelector}"="WeekEnd" then [Week_Day] = 'Saturday' OR [Week_Day] = 'Sunday'

when "${DaySelector}"<>"WeekEnd" AND "${DaySelector}"<>"WeekDay" AND "${DaySelector}"<>"all" then [Week_Day] = "${DaySelector}"
else false end case

I need assistance in either somehow getting spotfire to continue evaluating the case statement past the first true, or another way of writing a data limiting expression that will limit data based on both dropdowns.
I am at a loss, any help will be appreciated.

A: Can you try nesting the cases? Maybe like this untested expression:
case
    when "${MonthSelector}"="all" then case
        when "${DaySelector}"="all" then [Week_Day] <> '' and [Month] <> ''
        when "${DaySelector}"="WeekDay" then [Week_Day] <> 'Saturday' and [Week_Day] <> 'Sunday' and [Month] <> ''
        when "${DaySelector}"="WeekEnd" then [Week_Day] = 'Saturday' OR [Week_Day] = 'Sunday' and [Month] <> ''
        when "${DaySelector}"<>"WeekEnd" AND "${DaySelector}"<>"WeekDay" AND "${DaySelector}"<>"all" then [Week_Day] = "${DaySelector}" and [Month] <> ''
        else false
        end
    when "${MonthSelector}"<>"all" then case
        when "${DaySelector}"="all" then [Week_Day] <> '' and [Month] = "${MonthSelector}"
        when "${DaySelector}"="WeekDay" then [Week_Day] <> 'Saturday' and [Week_Day] <> 'Sunday' and [Month] = "${MonthSelector}"
        when "${DaySelector}"="WeekEnd" then [Week_Day] = 'Saturday' OR [Week_Day] = 'Sunday' and [Month] = "${MonthSelector}"
        when "${DaySelector}"<>"WeekEnd" AND "${DaySelector}"<>"WeekDay" AND "${DaySelector}"<>"all" then [Week_Day] = "${DaySelector}" and [Month] = "${MonthSelector}"
        else false
        end
    else false
end


Plus.ro recommends the Me Gal Metallic Paint Sashay Red Gallon by Modern Masters. Modern Masters Brand. METALLIC PAINT COLLECTION b Exciting finishes without toxic products For walls, ceilings, doors, furniture, Can be rolled, brushed or sprayed.


text:
Q: Flutter Example Starter code with Main.Dart vs. .java If an example app has both a main.dart file and  .java & build.gradle files does that mean that there are two redundant ways for the example app to be run on an emulated Android device?
I can currently run the main.dart file on an emulated device in Android Studio, but when I try running the .java file it give me the error "Error: Gradle project sync failed. Please fix your project and try again."
It seems like the .java and gradle files directly compile to an Android .apk program when run, but my intuition was that the Dart code could also be compiled to an apk or ipa program.

A: When you make a new Flutter project it generate dart, android and iOS (if on a mac) code. For the most part we dont have to touch the underlying Java code.
But if you must you can open just the android folder in android studio and let gradle sync and build the project. You may also want to write platform specific code for either android or iOS.
Here is a guide on how you can do that https://flutter.dev/docs/development/platform-integration/platform-channels
tl;dr;
flutter generates native code for your dart code. You can also access native hardware by writing platform specific code.