text:
use gl;
use GlObject;

use backend::Facade;
use version::Version;
use context::Context;
use ContextExt;
use TextureExt;
use version::Api;
use Rect;

use pixel_buffer::PixelBuffer;
use image_format::{self, TextureFormatRequest, ClientFormatAny};
use texture::Texture2dDataSink;
use texture::{MipmapsOption, TextureFormat};
use texture::{TextureCreationError, TextureMaybeSupportedCreationError};
use texture::{get_format, InternalFormat};

use buffer::BufferViewAny;
use BufferViewExt;

use libc;
use std::cmp;
use std::fmt;
use std::mem;
use std::ptr;
use std::borrow::Cow;
use std::cell::Cell;
use std::rc::Rc;

use ops;
use fbo;

/// A texture whose type isn't fixed at compile-time.
pub struct TextureAny {
    context: Rc<Context>,
    id: gl::types::GLuint,
    requested_format: TextureFormatRequest,

    /// Cache for the actual format of the texture. The outer Option is None if the format hasn't
    /// been checked yet. The inner Option is None if the format has been checkek but is unknown.
    actual_format: Cell<Option<Option<InternalFormat>>>,

    bind_point: gl::types::GLenum,
    ty: TextureType,
    width: u32,
    height: Option<u32>,
    depth: Option<u32>,
    array_size: Option<u32>,

    /// Number of mipmap levels (`1` means just the main texture, `0` is not valid)
    levels: u32,
    /// Is automatic mipmap generation allowed for this texture?
    generate_mipmaps: bool,
}

/// Represents a specific mipmap of a texture.
#[derive(Copy, Clone)]
pub struct TextureAnyMipmap<'a> {
    /// The texture.
    texture: &'a TextureAny,

    /// Layer for array textures, or 0 for other textures.
    layer: u32,

    /// Mipmap level.
    level: u32,

    /// Width of this mipmap level.
    width: u32,
    /// Height of this mipmap level.
    height: Option<u32>,
    /// Depth of this mipmap level.
    depth: Option<u32>,
}

/// Type of a texture.
#[derive(Copy, Clone, Debug, PartialEq, Eq)]
#[allow(missing_docs)]      // TODO: document and remove
pub enum TextureType {
    Texture1d,
    Texture1dArray,
    Texture2d,
    Texture2dArray,
    Texture2dMultisample,
    Texture2dMultisampleArray,
    Texture3d,
}

/// Builds a new texture.
pub fn new_texture<'a, F, P>(facade: &F, format: TextureFormatRequest,
                             data: Option<(ClientFormatAny, Cow<'a, [P]>)>,
                             mipmaps: MipmapsOption,
                             width: u32, height: Option<u32>, depth: Option<u32>,
                             array_size: Option<u32>, samples: Option<u32>)
                             -> Result<TextureAny, TextureMaybeSupportedCreationError>
                             where P: Send + Clone + 'a, F: Facade
{
    let (is_client_compressed, data_bufsize) = match data {
        Some((client_format, _)) => {
            (client_format.is_compressed(),
             client_format.get_buffer_size(width, height, depth, array_size))
        },
        None => (false, 0),
    };

    if let Some((_, ref data)) = data {
        if data.len() * mem::size_of::<P>() != data_bufsize
        {
            panic!("Texture data size mismatch");
        }
    }

    // checking non-power-of-two
    if facade.get_context().get_version() < &Version(Api::Gl, 2, 0) &&
        !facade.get_context().get_extensions().gl_arb_texture_non_power_of_two
    {
        if !width.is_power_of_two() || !height.unwrap_or(2).is_power_of_two() ||
            !depth.unwrap_or(2).is_power_of_two() || !array_size.unwrap_or(2).is_power_of_two()
        {
            let ce = TextureCreationError::DimensionsNotSupported;
            return Err(TextureMaybeSupportedCreationError::CreationError(ce));
        }
    }

    let (stored_ty, texture_type) = if height.is_none() && depth.is_none() {
        assert!(samples.is_none());
        if array_size.is_none() {
            (TextureType::Texture1d, gl::TEXTURE_1D)
        } else {
            (TextureType::Texture1dArray, gl::TEXTURE_1D_ARRAY)
        }

    } else if depth.is_none() {
        match (array_size.is_some(), samples.is_some()) {
            (false, false) => (TextureType::Texture2d, gl::TEXTURE_2D),
            (true, false) => (TextureType::Texture2dArray, gl::TEXTURE_2D_ARRAY),
            (false, true) => (TextureType::Texture2dMultisample, gl::TEXTURE_2D_MULTISAMPLE),
            (true, true) => (TextureType::Texture2dMultisampleArray, gl::TEXTURE_2D_MULTISAMPLE_ARRAY),
        }

    } else {
        assert!(samples.is_none());
        (TextureType::Texture3d, gl::TEXTURE_3D)
    };

    let generate_mipmaps = mipmaps.should_generate();
    let texture_levels = mipmaps.num_levels(width, height, depth) as gl::types::GLsizei;

    let (teximg_internal_format, storage_internal_format) =
        try!(image_format::format_request_to_glenum(facade.get_context(), data.as_ref().map(|&(c, _)| c), format));

    let (client_format, client_type) = match (&data, format) {
        (&Some((client_format, _)), f) => try!(image_format::client_format_to_glenum(facade.get_context(), client_format, f)),
        (&None, TextureFormatRequest::AnyDepth) => (gl::DEPTH_COMPONENT, gl::FLOAT),
        (&None, TextureFormatRequest::Specific(TextureFormat::DepthFormat(_))) => (gl::DEPTH_COMPONENT, gl::FLOAT),
        (&None, TextureFormatRequest::AnyDepthStencil) => (gl::DEPTH_STENCIL, gl::UNSIGNED_INT_24_8),
        (&None, TextureFormatRequest::Specific(TextureFormat::DepthStencilFormat(_))) => (gl::DEPTH_STENCIL, gl::UNSIGNED_INT_24_8),
        (&None, _) => (gl::RGBA, gl::UNSIGNED_BYTE),
    };

    let mut ctxt = facade.get_context().make_current();

    let id = unsafe {
        let has_mipmaps = texture_levels > 1;
        let data = data;
        let data_raw = if let Some((_, ref data)) = data {
            data.as_ptr() as *const libc::c_void
        } else {
            ptr::null()
        };

        if ctxt.state.pixel_store_unpack_alignment != 1 {
            ctxt.state.pixel_store_unpack_alignment = 1;
            ctxt.gl.PixelStorei(gl::UNPACK_ALIGNMENT, 1);
        }

        BufferViewAny::unbind_pixel_unpack(&mut ctxt);

        let id: gl::types::GLuint = mem::uninitialized();
        ctxt.gl.GenTextures(1, mem::transmute(&id));

        {
            ctxt.gl.BindTexture(texture_type, id);
            let act = ctxt.state.active_texture as usize;
            ctxt.state.texture_units[act].texture = id;
        }

        ctxt.gl.TexParameteri(texture_type, gl::TEXTURE_WRAP_S, gl::REPEAT as i32);
        if height.is_some() || depth.is_some() || array_size.is_some() {
            ctxt.gl.TexParameteri(texture_type, gl::TEXTURE_WRAP_T, gl::REPEAT as i32);
        }
        if depth.is_some() || array_size.is_some() {
            ctxt.gl.TexParameteri(texture_type, gl::TEXTURE_WRAP_R, gl::REPEAT as i32);
        }
        ctxt.gl.TexParameteri(texture_type, gl::TEXTURE_MAG_FILTER, gl::LINEAR as i32);
        if has_mipmaps {
            ctxt.gl.TexParameteri(texture_type, gl::TEXTURE_MIN_FILTER,
                                  gl::LINEAR_MIPMAP_LINEAR as i32);
        } else {
            ctxt.gl.TexParameteri(texture_type, gl::TEXTURE_MIN_FILTER,
                                  gl::LINEAR as i32);
        }

        if !has_mipmaps && (ctxt.version >= &Version(Api::Gl, 1, 2) ||
                            ctxt.version >= &Version(Api::GlEs, 3, 0))
        {
            ctxt.gl.TexParameteri(texture_type, gl::TEXTURE_BASE_LEVEL, 0);
            ctxt.gl.TexParameteri(texture_type, gl::TEXTURE_MAX_LEVEL, 0);
        }

        if texture_type == gl::TEXTURE_3D || texture_type == gl::TEXTURE_2D_ARRAY {
            let mut data_raw = data_raw;

            let width = match width as gl::types::GLsizei {
                0 => { data_raw = ptr::null(); 1 },
                a => a
            };

            let height = match height.unwrap() as gl::types::GLsizei {
                0 => { data_raw = ptr::null(); 1 },
                a => a
            };

            let depth = match depth.or(array_size).unwrap() as gl::types::GLsizei {
                0 => { data_raw = ptr::null(); 1 },
                a => a
            };

            if storage_internal_format.is_some() && (ctxt.version >= &Version(Api::Gl, 4, 2) || ctxt.extensions.gl_arb_texture_storage) {
                ctxt.gl.TexStorage3D(texture_type, texture_levels,
                                     storage_internal_format.unwrap() as gl::types::GLenum,
                                     width, height, depth);

                if !data_raw.is_null() {
                    if is_client_compressed {
                        ctxt.gl.CompressedTexSubImage3D(texture_type, 0, 0, 0, 0, width, height, depth,
                                                         teximg_internal_format as u32,
                                                         data_bufsize as i32, data_raw);
                    } else {
                        ctxt.gl.TexSubImage3D(texture_type, 0, 0, 0, 0, width, height, depth,
                                              client_format, client_type, data_raw);
                    }
                }

            } else {
                if is_client_compressed && !data_raw.is_null() {
                    ctxt.gl.CompressedTexImage3D(texture_type, 0, teximg_internal_format as u32,
                                       width, height, depth, 0, data_bufsize as i32, data_raw);
                } else {
                    ctxt.gl.TexImage3D(texture_type, 0, teximg_internal_format as i32, width,
                                       height, depth, 0, client_format as u32, client_type,
                                       data_raw);
                }
            }

        } else if texture_type == gl::TEXTURE_2D || texture_type == gl::TEXTURE_1D_ARRAY {
            let mut data_raw = data_raw;

            let width = match width as gl::types::GLsizei {
                0 => { data_raw = ptr::null(); 1 },
                a => a
            };

            let height = match height.or(array_size).unwrap() as gl::types::GLsizei {
                0 => { data_raw = ptr::null(); 1 },
                a => a
            };

            if storage_internal_format.is_some() && (ctxt.version >= &Version(Api::Gl, 4, 2) || ctxt.extensions.gl_arb_texture_storage) {
                ctxt.gl.TexStorage2D(texture_type, texture_levels,
                                     storage_internal_format.unwrap() as gl::types::GLenum,
                                     width, height);

                if !data_raw.is_null() {
                    if is_client_compressed {
                        ctxt.gl.CompressedTexSubImage2D(texture_type, 0, 0, 0, width, height,
                                                         teximg_internal_format as u32,
                                                         data_bufsize as i32, data_raw);
                    } else {
                        ctxt.gl.TexSubImage2D(texture_type, 0, 0, 0, width, height, client_format,
                                              client_type, data_raw);
                    }
                }

            } else {
                if is_client_compressed && !data_raw.is_null() {
                    ctxt.gl.CompressedTexImage2D(texture_type, 0, teximg_internal_format as u32,
                                       width, height, 0, data_bufsize as i32, data_raw);
                } else {
                    ctxt.gl.TexImage2D(texture_type, 0, teximg_internal_format as i32, width,
                                       height, 0, client_format as u32, client_type, data_raw);
                }
            }

        } else if texture_type == gl::TEXTURE_2D_MULTISAMPLE {
            assert!(data_raw.is_null());

            let width = match width as gl::types::GLsizei {
                0 => 1,
                a => a
            };

            let height = match height.unwrap() as gl::types::GLsizei {
                0 => 1,
                a => a
            };

            if storage_internal_format.is_some() && (ctxt.version >= &Version(Api::Gl, 4, 2) || ctxt.extensions.gl_arb_texture_storage) {
                ctxt.gl.TexStorage2DMultisample(gl::TEXTURE_2D_MULTISAMPLE,
                                                samples.unwrap() as gl::types::GLsizei,
                                                storage_internal_format.unwrap() as gl::types::GLenum,
                                                width, height, gl::TRUE);

            } else if ctxt.version >= &Version(Api::Gl, 3, 2) || ctxt.extensions.gl_arb_texture_multisample {
                ctxt.gl.TexImage2DMultisample(gl::TEXTURE_2D_MULTISAMPLE,
                                              samples.unwrap() as gl::types::GLsizei,
                                              teximg_internal_format as gl::types::GLenum,
                                              width, height, gl::TRUE);

            } else {
                unreachable!();
            }

        } else if texture_type == gl::TEXTURE_2D_MULTISAMPLE_ARRAY {
            assert!(data_raw.is_null());

            let width = match width as gl::types::GLsizei {
                0 => 1,
                a => a
            };

            let height = match height.unwrap() as gl::types::GLsizei {
                0 => 1,
                a => a
            };

            if storage_internal_format.is_some() && (ctxt.version >= &Version(Api::Gl, 4, 2) || ctxt.extensions.gl_arb_texture_storage) {
                ctxt.gl.TexStorage3DMultisample(gl::TEXTURE_2D_MULTISAMPLE_ARRAY,
                                                samples.unwrap() as gl::types::GLsizei,
                                                storage_internal_format.unwrap() as gl::types::GLenum,
                                                width, height, array_size.unwrap() as gl::types::GLsizei,
                                                gl::TRUE);

            } else if ctxt.version >= &Version(Api::Gl, 3, 2) || ctxt.extensions.gl_arb_texture_multisample {
                ctxt.gl.TexImage3DMultisample(gl::TEXTURE_2D_MULTISAMPLE_ARRAY,
                                              samples.unwrap() as gl::types::GLsizei,
                                              teximg_internal_format as gl::types::GLenum,
                                              width, height, array_size.unwrap() as gl::types::GLsizei,
                                              gl::TRUE);

            } else {
                unreachable!();
            }

        } else if texture_type == gl::TEXTURE_1D {
            let mut data_raw = data_raw;

            let width = match width as gl::types::GLsizei {
                0 => { data_raw = ptr::null(); 1 },
                a => a
            };

            if storage_internal_format.is_some() && (ctxt.version >= &Version(Api::Gl, 4, 2) || ctxt.extensions.gl_arb_texture_storage) {
                ctxt.gl.TexStorage1D(texture_type, texture_levels,
                                     storage_internal_format.unwrap() as gl::types::GLenum,
                                     width);

                if !data_raw.is_null() {
                    if is_client_compressed {
                        ctxt.gl.CompressedTexSubImage1D(texture_type, 0, 0, width,
                                                         teximg_internal_format as u32,
                                                         data_bufsize as i32, data_raw);
                    } else {
                        ctxt.gl.TexSubImage1D(texture_type, 0, 0, width, client_format,
                                              client_type, data_raw);
                    }
                }

            } else {
                if is_client_compressed && !data_raw.is_null() {
                    ctxt.gl.CompressedTexImage1D(texture_type, 0, teximg_internal_format as u32,
                                       width, 0, data_bufsize as i32, data_raw);
                } else {
                    ctxt.gl.TexImage1D(texture_type, 0, teximg_internal_format as i32, width,
                                       0, client_format as u32, client_type, data_raw);
                }
            }

        } else {
            unreachable!();
        }

        // only generate mipmaps for color textures
        if generate_mipmaps {
            if ctxt.version >= &Version(Api::Gl, 3, 0) ||
               ctxt.version >= &Version(Api::GlEs, 2, 0)
            {
                ctxt.gl.GenerateMipmap(texture_type);
            } else if ctxt.extensions.gl_ext_framebuffer_object {
                ctxt.gl.GenerateMipmapEXT(texture_type);
            } else {
                unreachable!();
            }
        }

        id
    };

    Ok(TextureAny {
        context: facade.get_context().clone(),
        id: id,
        requested_format: format,
        actual_format: Cell::new(None),
        bind_point: texture_type,
        width: width,
        height: height,
        depth: depth,
        array_size: array_size,
        ty: stored_ty,
        levels: texture_levels as u32,
        generate_mipmaps: generate_mipmaps,
    })
}

impl<'a> TextureAnyMipmap<'a> {
    /// Returns the texture.
    pub fn get_texture(&self) -> &'a TextureAny {
        self.texture
    }

    /// Returns the level of the texture.
    pub fn get_level(&self) -> u32 {
        self.level
    }

    /// Returns the layer of the texture.
    pub fn get_layer(&self) -> u32 {
        self.layer
    }
}

/// Changes some parts of the texture.
pub fn upload_texture<'a, P>(mip: &TextureAnyMipmap, x_offset: u32, y_offset: u32, z_offset: u32,
                             (format, data): (ClientFormatAny, Cow<'a, [P]>), width: u32,
                             height: Option<u32>, depth: Option<u32>,
                             regen_mipmaps: bool)
                            -> Result<(), ()>   // TODO return a better Result!?
                             where P: Send + Copy + Clone + 'a
{
    let id = mip.texture.id;
    let bind_point = mip.texture.bind_point;
    let level = mip.level;

    let (is_client_compressed, data_bufsize) = (format.is_compressed(),
                                                format.get_buffer_size(width, height, depth, None));
    let regen_mipmaps = regen_mipmaps && mip.texture.levels >= 2 &&
                        mip.texture.generate_mipmaps && !is_client_compressed;

    assert!(!regen_mipmaps || level == 0);  // when regen_mipmaps is true, level must be 0!
    assert!(x_offset <= mip.width);
    assert!(y_offset <= mip.height.unwrap_or(1));
    assert!(z_offset <= mip.depth.unwrap_or(1));
    assert!(x_offset + width <= mip.width);
    assert!(y_offset + height.unwrap_or(1) <= mip.height.unwrap_or(1));
    assert!(z_offset + depth.unwrap_or(1) <= mip.depth.unwrap_or(1));

    if data.len() * mem::size_of::<P>() != data_bufsize
    {
        panic!("Texture data size mismatch");
    }

    let (client_format, client_type) = try!(image_format::client_format_to_glenum(&mip.texture.context,
                                                                                format,
                                                                                mip.texture.requested_format)
                                                                                .map_err(|_| ()));

    let mut ctxt = mip.texture.context.make_current();

    unsafe {
        if ctxt.state.pixel_store_unpack_alignment != 1 {
            ctxt.state.pixel_store_unpack_alignment = 1;
            ctxt.gl.PixelStorei(gl::UNPACK_ALIGNMENT, 1);
        }

        BufferViewAny::unbind_pixel_unpack(&mut ctxt);

        {
            ctxt.gl.BindTexture(bind_point, id);
            let act = ctxt.state.active_texture as usize;
            ctxt.state.texture_units[act].texture = id;
        }

        if bind_point == gl::TEXTURE_3D || bind_point == gl::TEXTURE_2D_ARRAY {
            unimplemented!();

        } else if bind_point == gl::TEXTURE_2D || bind_point == gl::TEXTURE_1D_ARRAY {
            assert!(z_offset == 0);
            // FIXME should glTexImage be used here somewhere or glTexSubImage does it just fine?
            if is_client_compressed {
                ctxt.gl.CompressedTexSubImage2D(bind_point, level as gl::types::GLint,
                                                x_offset as gl::types::GLint,
                                                y_offset as gl::types::GLint,
                                                width as gl::types::GLsizei,
                                                height.unwrap_or(1) as gl::types::GLsizei,
                                                client_format,
                                                data_bufsize  as gl::types::GLsizei,
                                                data.as_ptr() as *const libc::c_void);
            } else {
                ctxt.gl.TexSubImage2D(bind_point, level as gl::types::GLint,
                                      x_offset as gl::types::GLint,
                                      y_offset as gl::types::GLint,
                                      width as gl::types::GLsizei,
                                      height.unwrap_or(1) as gl::types::GLsizei,
                                      client_format, client_type,
                                      data.as_ptr() as *const libc::c_void);
            }

        } else {
            assert!(z_offset == 0);
            assert!(y_offset == 0);

            unimplemented!();
        }

        // regenerate mipmaps if there are some
        if regen_mipmaps {
            if ctxt.version >= &Version(Api::Gl, 3, 0) {
                ctxt.gl.GenerateMipmap(bind_point);
            } else {
                ctxt.gl.GenerateMipmapEXT(bind_point);
            }
        }

        Ok(())
    }
}

pub fn download_compressed_data(mip: &TextureAnyMipmap) -> Option<(ClientFormatAny, Vec<u8>)> {
    let texture = mip.texture;
    let level = mip.level as i32;

    let mut ctxt = texture.context.make_current();

    unsafe {
        let bind_point = get_bind_point(texture);
        ctxt.gl.BindTexture(bind_point, texture.get_id());

        let mut is_compressed = mem::uninitialized();
        ctxt.gl.GetTexLevelParameteriv(bind_point, level, gl::TEXTURE_COMPRESSED, &mut is_compressed);
        if is_compressed != 0 {

            let mut buffer_size = mem::uninitialized();
            ctxt.gl.GetTexLevelParameteriv(bind_point, level, gl::TEXTURE_COMPRESSED_IMAGE_SIZE, &mut buffer_size);
            let mut internal_format = mem::uninitialized();
            ctxt.gl.GetTexLevelParameteriv(bind_point, level, gl::TEXTURE_INTERNAL_FORMAT, &mut internal_format);

            match ClientFormatAny::from_internal_compressed_format(internal_format as gl::types::GLenum) {
                Some(known_format) => {
                    let mut buf = Vec::with_capacity(buffer_size as usize);
                    buf.set_len(buffer_size as usize);

                    BufferViewAny::unbind_pixel_pack(&mut ctxt);

                    // adjusting data alignement
                    let ptr = buf.as_ptr() as *const u8;
                    let ptr = ptr as usize;
                    if (ptr % 8) == 0 {
                    } else if (ptr % 4) == 0 && ctxt.state.pixel_store_pack_alignment != 4 {
                        ctxt.state.pixel_store_pack_alignment = 4;
                        ctxt.gl.PixelStorei(gl::PACK_ALIGNMENT, 4);
                    } else if (ptr % 2) == 0 && ctxt.state.pixel_store_pack_alignment > 2 {
                        ctxt.state.pixel_store_pack_alignment = 2;
                        ctxt.gl.PixelStorei(gl::PACK_ALIGNMENT, 2);
                    } else if ctxt.state.pixel_store_pack_alignment != 1 {
                        ctxt.state.pixel_store_pack_alignment = 1;
                        ctxt.gl.PixelStorei(gl::PACK_ALIGNMENT, 1);
                    }

                    ctxt.gl.GetCompressedTexImage(bind_point, level, buf.as_mut_ptr() as *mut _);
                    Some((known_format, buf))
                },
                None => None,
            }

        } else {
            None
        }
    }
}

/// Returns the `Context` associated with this texture.
pub fn get_context(tex: &TextureAny) -> &Rc<Context> {
    &tex.context
}

/// Returns the bind point of this texture.
///
/// The returned GLenum is guaranteed to be supported by the context.
pub fn get_bind_point(tex: &TextureAny) -> gl::types::GLenum {
    tex.bind_point
}

impl TextureAny {
    /// UNSTABLE. Reads the content of a mipmap level of the texture.
    // TODO: this function only works for level 0 right now
    //       width/height need adjustements
    pub fn read<T>(&self, level: u32) -> T
                   where T: Texture2dDataSink<(u8, u8, u8, u8)>
            // TODO: remove Clone for P
    {
        assert_eq!(level, 0);   // TODO:

        let attachment = fbo::Attachment::TextureLayer {
            texture: self,
            layer: 0,
            level: 0,
        };

        let rect = Rect {
            bottom: 0,
            left: 0,
            width: self.width,
            height: self.height.unwrap_or(1),
        };

        let mut ctxt = self.context.make_current();

        let mut data = Vec::with_capacity(0);
        ops::read(&mut ctxt, &attachment, &rect, &mut data);
        T::from_raw(Cow::Owned(data), self.width, self.height.unwrap_or(1))
    }

    /// UNSTABLE. Reads the content of a mipmap level of the texture to a pixel buffer.
    // TODO: this function only works for level 0 right now
    //       width/height need adjustements
    pub fn read_to_pixel_buffer(&self, level: u32) -> PixelBuffer<(u8, u8, u8, u8)> {
        assert_eq!(level, 0);   // TODO:

        let size = self.width as usize * self.height.unwrap_or(1) as usize * 4;

        let attachment = fbo::Attachment::TextureLayer {
            texture: self,
            layer: 0,
            level: 0,
        };

        let rect = Rect {
            bottom: 0,
            left: 0,
            width: self.width,
            height: self.height.unwrap_or(1),
        };

        let pb = PixelBuffer::new_empty(&self.context, size);

        let mut ctxt = self.context.make_current();
        ops::read(&mut ctxt, &attachment, &rect, &pb);
        pb
    }

    /// UNSTABLE. Returns the `Context` associated with this texture.
    pub fn get_context(&self) -> &Rc<Context> {
        &self.context
    }

    /// Returns the width of the texture.
    pub fn get_width(&self) -> u32 {
        self.width
    }

    /// Returns the height of the texture.
    pub fn get_height(&self) -> Option<u32> {
        self.height.clone()
    }

    /// Returns the depth of the texture.
    pub fn get_depth(&self) -> Option<u32> {
        self.depth.clone()
    }

    /// Returns the array size of the texture.
    pub fn get_array_size(&self) -> Option<u32> {
        self.array_size.clone()
    }

    /// Returns the number of mipmap levels of the texture.
    pub fn get_mipmap_levels(&self) -> u32 {
        self.levels
    }

    /// Returns the type of the texture (1D, 2D, 3D, etc.).
    pub fn get_texture_type(&self) -> TextureType {
        self.ty
    }

    /// Determines the internal format of this texture.
    ///
    /// Returns `None` if the backend doesn't allow querying the actual format.
    pub fn get_internal_format_if_supported(&self) -> Option<InternalFormat> {
        if let Some(format) = self.actual_format.get() {
            format

        } else {
            let mut ctxt = self.context.make_current();
            let format = get_format::get_format_if_supported(&mut ctxt, self);
            self.actual_format.set(Some(format.clone()));
            format
        }
    }

    /// Returns a structure that represents a specific mipmap of the texture.
    ///
    /// Returns `None` if out of range.
    pub fn mipmap(&self, layer: u32, level: u32) -> Option<TextureAnyMipmap> {
        if layer >= self.array_size.unwrap_or(1) {
            return None;
        }

        if level >= self.levels {
            return None;
        }

        let pow = 2u32.pow(level);
        Some(TextureAnyMipmap {
            texture: self,
            level: level,
            layer: layer,
            width: cmp::max(1, self.width / pow),
            height: self.height.map(|height| cmp::max(1, height / pow)),
            depth: self.depth.map(|depth| cmp::max(1, depth / pow)),
        })
    }
}

impl TextureExt for TextureAny {
    fn get_bind_point(&self) -> gl::types::GLenum {
        self.bind_point
    }
}

impl GlObject for TextureAny {
    type Id = gl::types::GLuint;
    fn get_id(&self) -> gl::types::GLuint {
        self.id
    }
}

impl fmt::Debug for TextureAny {
    fn fmt(&self, fmt: &mut fmt::Formatter) -> Result<(), fmt::Error> {
        write!(fmt, "Texture #{} (dimensions: {}x{}x{}x{})", self.id,
               self.width, self.height.unwrap_or(1), self.depth.unwrap_or(1),
               self.array_size.unwrap_or(1))
    }
}

impl Drop for TextureAny {
    fn drop(&mut self) {
        let mut ctxt = self.context.make_current();

        // removing FBOs which contain this texture
        fbo::FramebuffersContainer::purge_texture(&mut ctxt, self.id);

        // resetting the bindings
        for tex_unit in ctxt.state.texture_units.iter_mut() {
            if tex_unit.texture == self.id {
                tex_unit.texture = 0;
            }
        }

        unsafe { ctxt.gl.DeleteTextures(1, [ self.id ].as_ptr()); }
    }
}


"Times have changed since people got married and moved right out of their parents' house, without a dish to their name, into their new home together," says Valarie Falvey of Kirkbrides Wedding Planning & Design, and we can't help but nod in agreement. The truth is that by the time you and your S.O. tie the knot, you may already be in your 30s, living together, and in no need (though always in want) of a new Le Creuset Dutch oven.
Setting up a traditional registry, and the house full of boxes that follows, may be the last thing you want. But asking directly for cash can be considered as a little tasteless or impersonal, too.
Fortunately, there are a few tactful ways to get what you want—and make your guests feel good about their gift.
"We think the best options for couples avoiding the traditional wedding registry are a honeymoon registry such as Honeyfund or a digital cash registry, like The Newlywed Fund from The Knot," adds Falvey. "Guests can gift cash through the site, and it's easy for everyone. Additionally, there are websites where you can still register for some material items but also request cash all on one site, such as Newlywish."
If you are certain you are going down this road, Falvey suggests including a short message on your wedding website explaining to your guests why you need the money and how you are planning on spending it.
"If people understand where this money is going, it may make them more likely to chip in," says Jolene Peterson of event planning firm Laurel & Rose. "You can graciously explain that you have merged your kitchenware, appliances, and towels, and are saving for a truly special trip together."
Another way to sway those less inclined to give cash gifts is to give back.
Don't be shy to ask your family and friends to spread the word since, very often, guests will reach out to them before the wedding. Just make sure you brief your parents on what it is they should say—maybe they can mention that you have been saving up for a down payment and can use a little help with that.
The most important thing is to be honest—but specific—with your guests. They'll be happy to know that their gift, whatever it may be, has contributed to your newlywed life in a positive way.


text:
A chilling story behind
the closed doors of
a Castleconnell hotel
The Shannon Inn, previously the Shannon Hotel, on the Main Street in Castleconnell, Co Limerick (Photograph: Patrick Comerford, 2017)
I was writing earlier this week [20 December 2017] about George Peabody and John Bright and their fishing holidays in Castleconnell, Co Limerick, a century and a half ago in the late 1860s, when they went fishing on the River Shannon for salmon and trout.
In the 18th century, Castleconnell was a well-known spa resort, and the waters here were reputed to be 'successful in the treatment of ulcers, bilious complaints, obstruction in the liver and jaundice.' Because of this reputation, the spa at Castleconnell rivalled Lisdoonvarna in Co Clare as a resort in the Georgian era.
However, from the mid-19th century, fishing and boating became the mainstay of tourism in Castleconnell for generations, until the 1930s or later. Celebrated visitors, apart from Bright and Peabody, included Sir Winston Churchill's father, Lord Randolph Churchill (1849-1895), who once described Castleconnell as a 'pleasant oasis where time appears to stand still.'
The Shannon Hotel on Main Street, Castleconnell, now known as the Shannon Inn, became the principal hotel for anglers and people who took boats on the River Shannon.
Although the Shannon Inn is closed at the moment, it is a landmark building in a prominent location on the Main Street, facing a junction marked out by Saint Joseph's Roman Catholic Church and Shannon Stores, a surviving Victorian shop whose name illustrates the important role the river has played in the life of Castleconnell.
The Shannon Inn is a terraced, five-bay, two-storey house, built around 1800. For many generations, the Enright family were the celebrated hosts at this 'anglers' rest,' until it was bought in 1918 by Denis O'Donovan, a popular local businessman, the Limerick agent for Murphy's Brewery, and a kinsman of O'Donovan Rossa. A year before the Easter Rising, at the invitation of Patrick Pearse, Denis O'Donovan attended O'Donovan Rossa's funeral in Glasnevin Cemetery in 1915.
The former Shannon Hotel looks like a modest house today, and it was built originally as part of a terrace. But it is worth taking note of because of its subtle, classically inspired façade, and many of its original features still survive, including the render window surrounds, the sash windows and the ornate shopfront.
The front elevation is a rendered shopfront. There is a pitched slate roof with rendered chimneystacks, and the overhanging eaves have timber brackets and cast-iron rainwater goods.
The lined-and-ruled rendered walls have a render plinth course. The square-headed openings have painted stone sills, render surrounds with entablatures and consoles over one-over-one pane timber sliding sash windows.
The shopfront has render pilasters supporting the fascia and cornice over square-headed openings. Doric style pilasters support the fascia with a render cornice. The square-headed display windows have timber mullions and flanking pilasters. There is a square-headed opening with a glazed over-light over the double-leaf timber panelled doors.
The pair of rendered chamfered square-profile piers to the south-west have render caps and a single-leaf cast-iron gate. The rendered boundary walls have cast-iron railings that end in a cast-iron pier that has a single-leaf gate.
The Shannon Inn stands on a prominent corner in Castleconnell, Co Limerick (Photograph: Patrick Comerford, 2017)
Denis 'Denny' O'Donovan and two members of the Royal Irish Constabulary were killed here by a 'Black and Tan' auxiliary contingent out of uniform on 17 April 1921, at the height of the Irish War of Independence. A parliamentary inquiry heard three policemen at the bar naturally assumed that the assailants were members of the IRA who had spotted them as policemen. At once they drew their revolvers and opened fire.
O'Donovan, who was then 46, had his hands in the air. He was taken out into the yard behind the hotel and was shot dead in front of his wife, two sons and two daughters. His younger daughter, Una O'Donovan, was the mother of the Limerick politician Dessie O'Malley.
The killings took place just weeks after the Mayor of Limerick, George Clancy, a former Mayor of Limerick, Michael O'Callaghan, and a young man named John O'Donoghue, had been killed in Limerick on the night of 6 March 1921. It is said that unknown to the assailants, Stephen O'Mara, who had returned to Ireland from the US to succeed Clancy as Mayor of Limerick, was staying in the Shannon Hotel that day, although this is not supported by evidence given within the next 10 days in the House of Lords.
Dessie O'Malley later suggested in his memoirs, Conduct Unbecoming, that the incident might have had no political consequences but for the fact that one of the guests in the Shannon Hotel that day was Dr William Harrison Cripps (1850-1923), a surgeon in his 70s, who had recently retired from Saint Bartholomew's Hospital, London.
Harrison Cripps, who was in the dining room in the hotel at the time of the attack, was a former Vice-President of the Royal College of Surgeons and a pioneer in colostomy. He was a son of Henry William Cripps (1815-1899), former Recorder of Lichfield, an elder brother of Charles Alfred Cripps (1852-1941), Lord Parmoor, a former Conservative politician, and an uncle of Sir Richard Stafford Cripps (1889-1952).
The two bothers, Harrison Cripps and Lord Parmoor, had married sisters, and both were brothers-in-law of the radical social reformer Beatrice Webb (1858-1942). When Parmoor was made a member of the House of Lords in 1914, he left the Tories and aligned with the Liberal Party, opposed conscription and sympathised with conscientious objectors. An active High Church Anglican, he became the first chair of the House of Laity in the National Church Assembly of the Church of England in 1920.
Lord Parmoor rose in the House of Lords on 26 April 1921 to call attention to the attack on the hotel at Castleconnell. He explained that his brother, who was there with his wife, had gone to Castleconnell for the fishing for 30 or 40 years. His brother and sister-in-law, were the only two visitors at the hotel and Parmoor added that his brother did not agree with him generally on Irish matters, and had always been strongly in favour of the Government's policy. Parmoor produced an illegal dum-dum bullet his brother had picked up from the floor, and in his speech in the Lords he described the attack as 'the most wicked attack you can imagine.'
The events that evening had a significant impact on the peace negotiations. They helped secured the truce that was agreed in July 1921, and led ultimately to the Anglo-Irish Treaty signed in December 1921.
In 1923, Lord Parmoor accepted an invitation from the first Labour Prime Minister, Ramsay McDonald, to join the Labour Party, and he was appointed Lord President of the Council and Joint Leader of the House of Lords.
A plaque inside the Shannon Inn reads: 'This is the house where Mr Denis O'Donovan, proprietor of the Shannon Hotel, along with two others was fatally shot by crown forces on 17th April 1921. This incident so outraged public opinion in Ireland and England that it was a turning point in the peace negotiations, eventually leading to the Treaty of 1921. This plaque was unveiled by his grandson Desmond O'Malley, TD, on 16/4/1997.'
The two policeman also killed that day, Sergeant William John Hughes (45) and Cadet Donald Pringle (31), are not named on the plaque.
But there is a curious genealogical tangle that has also been pointed to by Dessie O'Malley. Denis O'Donovan's son, Dr Donogh (DK) O'Donovan, married Dr Phyllis Gill, a descendant of an English Quaker family named Priestman. She was a third cousin of Mariann Emily Ennis (1878-1952), who married Lord Parmoor as his second wife.
Her stepson, Sir Stafford Cripps, was a Labour cabinet minister in the 1930s and 1940s, an ambassador, a radical socialist, and Clement Atlee's Chancellor of the Exchequer. During his career, he negotiated with Stalin and Gandhi, and when he resigned from Parliament in 1950 his seat in Bristol South-East was taken at the by-election by Tony Benn.
In recent years, it has been alleged by some that the leader of the Black and Tan gang who attacked the Shannon Hotel was George Nathan (1895-1937), and that he also led the gang that killed Clancy, O'Callaghan and O'Donoghue. Nathan was Jewish and gay, and the first Jewish officer in the Brigade of Guards. He cut a lonely figure, and his defenders say the allegations besmirch the reputation of a man who later became a well-known socialist.
Nathan died in the Spanish Civil War in 1937 fighting as a major on the Republican side in British contingent in the XV International Brigade. In his diary, Peter O'Connor from Waterford described him as 'one of the greatest soldiers taking part in the first fight against Fascism.'
The name of the Shannon Hotel was changed to the Shannon Inn. In more recent years, it was run by Paddy Hickey, but it closed in 2014. However, in September 2017, the Limerick Leader reported, the Shannon Inn had been bought by the Ahane Castleconnell Montpelier (ACM) Community Centre. The plans for the Shannon Inn include a heritage centre, an art hub, a youth space, a café and a men's shed.
Across the street, on the corner facing Saint Joseph's Church, Shannon Stores is a detached four-bay two-storey house, built about 1870, with shopfront on both sides.
This prominently located building at a central junction in Castleconnell still has several interesting original Victorian features, including the render details, the shopfront and the simple classically inspired façade.
The Shannon Stores and the Shannon Inn on a prominent street corner in Castleconnel (Photograph: Patrick Comerford, 2017)
Posted by Patrick Comerford at 18:30 2 comments:
Labels: Castleconnell, Co Limerick, Lichfield, Local History, Quakers, River Shannon, River walks, Talking about 1916, War and peace
Christmas: A message
of solidarity
This full-length editorial is published in 'The Irish Times' today [23 December 2017], in the last edition before Christmas Day 2017:
The Festival of Nine Lessons and Carols is one of the comforting and stable traditions of Christmas throughout the English-speaking world. It has become so popular in Ireland that it is now a seasonal feature in many churches and cathedrals. Tickets for this year's service in Dublin's St Patrick's Cathedral on Christmas Eve are so sought-after that they were all allocated many weeks ago.
Yet, like many Christmas traditions – from the Christmas tree to popular and well-loved carols – this service is a recent innovation, dating only from the later decades of the Victorian era.
When Edward White Benson became bishop of the newly-formed Diocese of Truro in 1877, he found an improvised wooden building was serving as his cathedral, and the choir spent the evening of Christmas Eve going from one chorister's house to the next, singing a carol in each house, steadily drinking and gradually becoming more-and-more tipsy as they made their way through the Cornish town.
Benson set about making Christmas Eve more meaningful, integrating it into the Christmas celebrations. And so, the first Service of Nine Lessons and Carols was hosted in his temporary wooden cathedral on Christmas Eve 1880.
Benson went on to become Archbishop of Canterbury, and his new service is part of his legacy to the wider church. In its present format, it relies on an adaptation made by Eric Milner-White in the Chapel of King's College, Cambridge, in the immediate aftermath of the first World War. The 100th service in King's College Chapel takes place tomorrow.
No room in a teeming city
But it would be wrong to think either Benson in Cornwall or Milner-White in Cambridge wanted their lessons and carols to be comforting and soporific: Benson tried to bring the Christmas message into the dark, dismal corners of a town that no cathedral choristers wanted to trudge through in the bleak mid-winter. Milner-White, a decorated war chaplain, wanted to challenge post-war Britain with the dangers of descending into isolation, marginalising the foreigner and ignoring the suffering and violence that brought a divided and war-torn Europe close to self-destruction. It is a message that is equally relevant in a Brexit Britain today.
The traditional opening carol for this service, 'Once in royal David's city,' by the Irish-born Cecil Frances Alexander, tells again the story of a homeless pregnant mother who can find no room in a teeming city. About 190,000 homes lie empty in Ireland this Christmas, more than enough to house people living in emergency accommodation. This young mother, who fails to find shelter, gives birth in a squalid stable not fit for human habitation; estimates this week say 3,194 children are being housed in unfit accommodation in Ireland this Christmas.
Judgmental, harsh, deceptive
The ever-popular Victorian hymn by Christina Rossetti, 'In the bleak mid-winter,' is sung regularly at this service. She was part of a group of Anglo-Catholic socialists linked with the Pre-Raphaelite Movement, and her winter was made bleak not merely by the snow or the earth "hard as iron", but more by the hardness of heart that made the poor lonely and isolated. Yet, for Rossetti, the greatest gift to offer is not dependent on wealth or spending power, but on simple human love.
After the Ninth Lesson, the service ends with two traditional hymns, 'O come, all ye faithful' and 'Hark! the herald angels sing.' The first of these paired hymns, translated by Frederick Oakeley, speaks of fear and poverty in ways that are more challenging than they are consoling. The second hymn, by Charles Wesley, is imbued with promises of peace on earth and joy for all nations, in contrast with forces of fear, isolation and death.
The fear of terror in Britain this year after the attacks at the Manchester Arena and London Bridge means King's College Chapel has abolished the early morning Christmas Eve queue that has been part of the seasonal tradition, and entry tomorrow is on a ticket-only basis. But concentrating on changes such as this detracts from the main message of the carols being sung and the lessons being read.
The Christmas message is plain and simple. It has nothing to do with the judgmental, harsh and deceptive lying of those who supported Judge Roy Moore and continue to back Donald Trump while calling themselves "conservative Evangelical Christians". They wish to conserve neither the values of Christianity nor the good news of the Gospel. If people wish to "put Christ back into Christmas", they can put into practice the message of love heard in the Nine Carols and Lessons this season: feed the hungry, clothe the naked, house the homeless, welcome the despised and the marginalised, care for the sick and the lonely, love our enemies, and love others as we love ourselves.
It is a simple message, preached in the Sermon on the Mount and given flesh on the first Christmas night.
Labels: Cambridge, Carols, Christmas 2017, Christmas Eve, Hymns, Justice, The Irish Times, Theology and Culture, War and peace
Praying in Advent with USPG
and Lichfield Cathedral
(21): 23 December 2017
'Remember Christians in the Holy Land. Pray for peace there, and throughout the world Little Jerusalem' ... a painting of Jerusalem in a Dublin restaurant (Photograph: Patrick Comerford)
We have just two days to go to Christmas Day. We are at the end of the last week of Advent, and tomorrow is Christmas Eve.
Throughout this season of Advent, I am spending a short time of prayer and reflection each morning, using the prayer diary of the Anglican mission agency, USPG (United Society Partners in the Gospel) and the Advent and Christmas Devotional Calendar from Lichfield Cathedral.
USPG, founded in 1701, is an Anglican mission agency supporting churches around the world in their mission to bring fullness of life to the communities they serve.
Under the title Pray with the World Church, the current prayer diary (22 October 2017 to 10 February 2018), offers prayers and reflections from the Anglican Communion.
This week, the Prayer Diary continues its Advent series, looking at how the Church is reaching out to mothers and babies. This week, it continues with reflections and prayers from Bangladesh.
On Sunday, the Prayer Diary included an article by Sister Gillian Rose, a former USPG mission partner, who oversees the USPG-supported Bollobphur Hospital, which is owned by the Church of Bangladesh.
The USPG Prayer Diary:
Saturday 23 December 2017:
Give thanks for the commitment of the Church of Bangladesh to reach out to poor and vulnerable communities in the name of Christ.
Lichfield Cathedral Advent and Christmas Devotional Calendar:
Today, the calendar is headed 'O Emmanuel,' referring to the seventh of the O Antiphons in the final week of Advent.
The calendar suggests lighting your Advent candle each day as you read the Bible and pray.
Today, the calendar suggests reading Luke 1: 67-79.
The reflection for today offers this challenge:
Remember Christians in the Holy Land. Pray for peace there, and throughout the world. Remember all living in darkness, pain and suffering, all living under occupation.
Readings (Revised Common Lectionary, the Church of Ireland, Holy Communion):
Malachi 3: 1-4, 4: 5-6; Psalm 25: 3-9; Luke 1: 57-66.
The Collect of the Third Sunday of Advent:
O Lord Jesus Christ,
who at your first coming sent your messenger
to prepare your way before you:
Grant that the ministers and stewards of your mysteries
may likewise so prepare and make ready your way
by turning the hearts of the disobedient to the wisdom of the just,
that at your second coming to judge the world
we may be found an acceptable people in your sight;
for you are alive and reign with the Father and the Holy Spirit,
one God, world without end. Amen.
The Advent Collect:
Almighty God,
Give us grace to cast away the works of darkness
and to put on the armour of light
now in the time of this mortal life
in which your Son Jesus Christ came to us in great humility;
that on the last day
when he shall come again in his glorious majesty
to judge the living and the dead,
we may rise to the life immortal;
through him who is alive and reigns with you and the Holy Spirit,
one God, now and for ever.
Yesterday's reflection
Continued tomorrow.
Labels: Advent 2017, Bangladesh, Christmas 2017, Jerusalem, Lichfield Cathedral, Mission, Prayer, USPG
A chilling story behind the closed doors of a Cast...
Christmas: A message of solidarity
Praying in Advent with USPG and Lichfield Cathedra...

redpajama_set_name: RedPajamaCommonCrawl


text:
Nicole Sullivan(I)
DIVOS! (2020)
-Grew up doing theater in NYC -Studied at Northwestern University. -Her career started in 1995, when she was cast on MADtv (1995) for 6 seasons. -Cast member of The King of Queens (1998) for 5 seasons, playing opposite Jerry Stiller.
Enjoys working in TV.
-Recurs on ABC's Black-ish (2014) Sex Lives of College Kids, and Bob Hearts Abishola. Scrubs (2001) and Cougar Town (2009). -Was a regular on many shows, including ABC's Talk to Me (2000) with Kyra Sedgwick; ABC's Hot Properties (2005) with Gail O'Grady; NBC's Raines (2007) with Jeff Goldbloom; Lifetime's Rita Rocks (2008); CBS's $#*! My Dad Says (2010) with William Shatner; and Wendell and Vinnie (2013) on Nickelodeon.
-Guest-starred on many shows, such as Law & Order: Special Victims Unit (1999); Monk (2002); My Boys (2006); CSI: Crime Scene Investigation (2000); Leverage (2008); Numb3rs (2005); The Game (2006); The Exes (2011); Whitney (2011); The Middle (2009) and, more recently, on Cougar Town (2009); Devious Maids (2013) and Black-ish (2014).
-Has been working in voice over animation for years. Family Guy (1999) for 15 years; Baby Blues (2000); Buzz Lightyear of Star Command (2000); Clone High (2002); Kim Possible (2002); Clone High (2002); The Secret Saturdays (2008); The Penguins of Madagascar (2008).
-Enjoyed talk show appearances Late Show with David Letterman (1993) 3 times; The Tonight Show with Jay Leno (1992) 4 times; The Sharon Osbourne Show (2003); Dennis Miller (2004); Hollywood Squares (1998); The Late Late Show with Craig Ferguson (2005).
BornApril 21, 1970
Meet the Robinsons
Franny(voice)
Black Dynamite
Patricia Nixon
Julia Riker
Muriel Goldman
Alexis Radcliffe (voice) ...
(voice)
Carol Finkle
High School Musical: The Musical: The Series
Supergirl (voice)
Rebecca Hendricks
Bizarro (voice) ...
It Takes Three
Laura Berger
Little Cookie
Mary Beth (voice) ...
DC Super Hero Girls: Teen Power
Kara Danvers (voice)
"Roles" Written by
Untitled Nicole Sullivan Project
The Secret Saturdays
Buzz Lightyear of Star Command Trailer - Season 1
DIVOS!
Eat With Me
The Secret Saturdays: Volume One
DC Super Hero Girls: Super Shorts
Slacker Cats: Season 1
Bleep My Dad Says: Season 1
Secret Saturdays
Rita Rocks: What's Love Got To Do With It
ThE OnlY YAHOO CluB FoR NicolE SullivaN!
5′ 4½″ (1.64 m)
New York City, New York, USA
Jason Packham2006 - present (2 children)
Dashel Pierce
In May of 2004, she donated the $100,000 she won on Celebrity Poker Showdown (2003) to her favorite charity, Alley Cat Allies, an organization that rescues cats and promotes spaying/neutering.
Was originally cast as Leela in Matt Groening 's Futurama (1999) but was replaced by Katey Sagal
I thought that somehow your life would be much different when you're sort of famous... and it's not. You just buy more stuff.
Sarcastic, comedic voice


text:
The Long Break, or Doug's hiatus from console gaming
Whenever I've moved, one of the last things to get packed up has been my gaming console. Of course, my console has also often been the first thing unpacked once I've gotten moved in. Funny how that works. But this time, after moving to Japan in early August, all I've played since are iPhone games – until last weekend, I hadn't picked up a real controller since arriving in the land of Nintendo and Sony.
What the hell happened? Well, a perfect storm of things for me, at least.
First: I didn't want to bring my Xbox 360 with me to Japan. It's old, is bound to break (again), and is region-locked. Most importantly, though, I would either have to pack it into my slim luggage allowance or ship it over separately, and neither are worth the trouble. Sometimes you have to be an adult and bring clothing, especially when there's little chance to buy new threads. Okay, I did bring my Nintendo DS, but it's now gathering Japanese dust instead of gathering American dust. I've got the itch to play games; what to do?
But I can wait. Maybe. I've gone two months without playing a game – and longer without playing anything new, frankly – and can afford to wait because real life and the gaming release schedule have allowed me to. I'm too busy getting out of the house and visiting my new friends to spend too much time playing games at the moment, which is good, because there haven't been a ton of AAA titles coming out this summer. I bemoaned the lack of a year-round release schedule earlier in the year, but I'm quite glad for the break at the moment.
Soon the weather will turn nasty and, as a friend here in Japan said, people will begin to "hide under their kotatsu." Unlike the U.S., most places in Japan aren't centrally heated and have very poor insulation, which means you wear lots of sweaters indoors and a kotatsu, a table with a heated blanket. In short, people don't want to head out and be social; perfect time to catch up on video games, then!
Postscript to the story? Last weekend was my birthday. With enough money and free time on the weekend to go buy a PS3, I broke down and picked one up — a 320 gb model, which now sits happily next to my TV and wireless router. It's now set up to stream media from my computer, access my U.S. Netflix account, and make use of the Silicon Sasquatch staff PSN share. And I bought a pretty kick-ass game to go along with the system, too, one that I'm excited to write about soon.
After the long break, it's good to be back.
EditorialsDouglas Bonham October 8, 2011 Editorials, Japan, PlayStation 3, Xbox 3602 Comments
Visiting the Fantastic Fest Arcade
FeaturesNick Cummings October 21, 2011 Austin, Fantastic Fest, Fantastic Fest Arcade, Fez, Journey, Octodad, thatgamecompany
Silicon Sasquatch's 300th post
UncategorizedSilicon Sasquatch October 7, 2011 milestones


Today is Small Business Saturday, and folks in cyberspace are promoting it with hashtags including #ShopSmall or #SmallBusinessSaturday, as well as with images such as the one featured atop this entry.
A well known small business's web-page who is using a copy of this particular image has this to re this Saturday's annual "observance:"
Small Business Saturday "always happens the Saturday after Thanksgiving .... Small Business Saturday was started in 2010 as a way to encourage shoppers to patronize businesses that are small and local. This was in counterpart to Black Friday and Cyber Monday, which feature big box retail and e-commerce stores. Started almost surprisingly by American Express, it wasn't until the next year in 2011 that the day became official with governors, mayors, senators and even President Obama voicing support for Small Business Saturday. "
I certainly recall the onset of putting Small Business Saturday on the calendar back in 2010, for I discussed the topic in an entry here on Blogger at that time.
As a published author and creator of photographs that can be reproduced on to greeting cards, various surfaces for wall art; as well as on household items or on to things for personal use, I consider myself to be a small business owner, albeit without a brick and mortar store.
And I certainly appreciate it when any brick and mortar store is willing to carry my books and or "products" that have incorporated my photographs.
Although I do admit that it's been most difficult (and for the most part impossible) to get small book stores to carry my Words In Our Beak book series (pictured below).
At the moment, only one small book store, known as book culture on Columbus (on the UWS in NYC) has carried a book of mine; but all of my books are available to any book seller.
Therefore dear reader, during this Small Business Saturday, please get ye to a bookstore and have them order volumes of my Words In Our Beak book series. In doing so, you will be supporting them as well as me!
As for the photographs from these books that can be rendered on to greeting cards; a selection of them (a few samples can be seen directly below) are available within my pages on Fine Art America (FAA); and as I've been saying for the past two days (Thursday and Friday) here on Blogger, FAA is offering free shipping on all merchandise through this coming Monday, 11-26-2018.
FAA can also render my images of the now famous Mandridan duck on to greeting card, one example is posted directly below.
In terms of my photos of the Mandarin, as well as of my kaleidoscopic images, in addition to being able to be printed on greeting cards, they can be printed on an array of surfaces for home decor such as wall art (on an array of surfaces), shower curtains, duvet covers, throw pillows etal.
A fraction of these offerings can be seen in the next set of images.
And FAA is able to print my images on items to accommodate one's lifestyle, such as notebooks for sketching or journal keeping. A few examples are can be seen below.
Moreover, the kaleidoscopic look great on yoga mats as seen in the next picture.
The possibilities of what FAA can do with my images seem endless; but thee offer for free shipping is not! As I've stated that promo ends in a few days: 11-26-2018.
I've only included a few samples within this entry, so I recommend that you visit my FAA collections to see the breadth of choices.
Meanwhile, take advantage of your Small Business Saturday by supporting those who bring unique things into your life.


text:
«Эффект Марты Митчелл» () — короткометражный документальный фильм американских режиссёров Энн Альверг и Дебры Мак-Клатчи, вышедший на экраны в 2022 году. Был номинирован на «Оскар» в категории «Лучший короткометражный документальный фильм».

Сюжет
Фильм рассказывает об Уотергейтском кризисе 1970-х годов. Его главная героиня — Марта Митчелл, жена генерального прокурора Джона Ньютона Митчелла, которая первой открыто заявила о том, что президент организовывает незаконную прослушку своих оппонентов.

Премьера и восприятие
Премьерный показ фильма состоялся в 2022 году на виртуальном кинофестивале Сандэнс, где картина получила положительные отзывы. 17 июня 2022 года «Эффект Марты Митчелл» появился на Netflix.

Фильм номинирован на «Оскар» в категории «Лучший короткометражный документальный фильм».

Примечания

Короткометражные фильмы США
Документальные фильмы 2022 года
Документальные фильмы США

redpajama_set_name: RedPajamaWikipedia


Q: Do I need to pay any fee in order to sign up at Computer to Computer?
A: You don't need to pay any fee or buy products or a starter kit in order to sign up. All you have to do is fill out the registration form.
Q: I already am a Racco Team Leader. If I sign up as a Promoter, how does that affect my team?
A: Racco maintains your position in the system and you maintain your whole team. If you continue placing orders as a Team Leader through your Distributor, you'll continue receiving your commissions from Racco Marketing System.
Q: I already am a Racco Team Leader. If I sign up as a Promoter, how does that affect the earnings of my sponsor (who invited me to join)?
A: If your sponsor is a Team Leader, this person will receive 5% of commissions over every order of your Personal Network in Computer to Computer.
Q: Do Promoter have access to exclusive deals?
A: As a Promoter, you'll have access to exclusive deals and specials from RaccoMania and others deals created especially for Promoters.
Q: How can I increase my profit with these exclusive deals?
A: Most deals will only be visible for Promoters, so this way Promoters can buy products at discounted prices and sell for full price.
Q: I already am a Racco Team Leader or Consultant. Do I become a Promoter automatically due to my current position in the system?
A: This new system, Computer to Computer is new so you have to sign up at www.racco.com to be part of the system, even if you have already signed up as a Racco Independent Beauty Consultant before.
Q: What percentage of commissions does this Compensation Plan offer?
A: By signing up as a Promoter, you earn 20% of commissions over orders from your first down line (first generation) and 5% over your second down line (second generation). Besides earning from commissions, you also profit with sales made personally by you to your personal "clients", when buying products at discounted prices from RaccoMania.
Q: What is the monthly cycle for orders?
A: The cycle starts at the first minute of every month and ends at the last minute of every month.
Q: What is my minimum monthly commitment as a Promoter?
A: The minimum monthly commitment for Promoters is a $50 order within each cycle. This order must be confirmed and paid in full in order to be valid.
Q: How are my commissions calculated?
A: Commissions are calculated based on every confirmed and paid orders within each cycle.
Q: If I fail to reach my minimum monthly commitment of a $50 order in a cycle, do I still receive my commissions?
A: No. Commissions are paid only If the minimum commitment ir reached.
Q: Does the system accumulate unpaid commissions?
A: Commissions are not paid nor saved if the minimum commitment is not reached in a cycle. This amount is not carried to the next cycle. Unpaid commissions are lost, therefore the importance of reaching your monthly commitment.
Q: How many people do I need in my Personal Network in order to be eligible to receive my commissions?
A: You may have only one person in your Personal Network to start receiving commissions. There is no limit to the number of people you can invite to join your Personal Network.
Q: I get 5% of commissions over my second line even though I have no relations with them?
A: Yes. As long as you reach your monthly commitment you receive commissions over first and second lines. Now imagine how many people you can invite to join your Personal Network immediately and start receiving 20% and 5% of commissions!
Q: Do I receive my commissions from Computer to Computer if I am an active Consultant or Team Leader but haven't met my monthly commitment?
A: No, you must meet your commitment goal from Computer to Computer in order to receive your commissions, even if you are eligible to receive commissions from Racco Marketing System on a specific month.
Q: How do I add emails to my Contact List?
A: First, log in to your account using your email and password. Then access the menu on the upper-left corner called My Racco. Click INVITE and Contacts. There you can add as many emails as you wish to your list by clicking Add New Contact.
Q: How to I Send Invitations to my contacts to visit the website?
A: Go to Send Invitations under My Racco / INVITE, select the contacts you want to add using the link on the right side and edit the email you want them to receive.
Q: When my contacts visit the website and place orders after receiving my invitation, how does the system know that the invitation was sent out by me?
A: The website possesses a technology that recognizes from which account the invitation was effectively sent out and creates a permanent link between you and your contact. So when this person accesses the site and places an order, the system will automatically calculate 20% of commissions over that order for you, and every other subsequent order will generate the Promoter commission of 20% and post it in your account.
Q: How do I access my commissions?
A: By logging in to your account you can access not only your commissions but also reports on your Personal Network's orders, accumulated earnings, orders details, number of accepted invitations, etc. Just access My Racco on the upper-left corner and click on My Network.
Q: How can I send Email Marketing for my contacts?
A: Log in to your account and go to the My Racco menu, then click INVITE / Send Email Marketing. There you can select the contacts you want to receive the email, edit text, add background image or select a special if available.


2 TAKE PART IN THE BOOK CLUB YOU MUST HAVE/READ THE BOOK.
STAY ON TOPIC AND PLEASE HELP TO MAKE IT AN ENJOYABLE EXPERIENCE.
THERE ARE ENOUGH AND HAVE BEEN ENOUGH THREADS TO DISCUSS THINGS EXTENSIVELY.
Ok this is the official book club thread for The Rise of Prince 1958-1988 by Alex Hahn & Laura Tiebert.
Although it is not the 27th yet where I live, it's the 27th somewhere.
I thought we would start with Chapter 1, and do the Prologue & Forward at the end. The Chapters seem pretty short.
Prince stayed in MN unlike Bob Dylan & became the States favorite son.
Father John Louis Nelson married Vivian Howard gave birth to Sharon, Lorna, Norrine & John Rodgers, Jr. & had a dog named Prince. Formed a Jazz Trio named Prince Rogers Nelson.
Immediately Marries Mattie Shaw 10 months later gives birth to Prince Rogers Nelson, two years later gave birth to Tyka.
Mattie Shaw was a twin and they are believed to have been the 1st set of black twins born on the Northside. Mattie moved to Missouri where she married Alfred Jackson, Sr. & Alfred JR was born. They separated and Mattie returned to MN where she became an amateur jazz singer and where she met John Nelson and married.
In this chapter it states that John L Nelson was left without any parents before his 18th Birthday, his mother died, but it doesn't say if his father died or just never had contact after the divorce from Carrie Jenkins. ??
So far in the story these siblings to Prince have been born: Sharon, Lorna, Norrine & John, Jr., Alfred, Jr., Prince, Tyka.
Did John L Nelson's father die before John was 18 or just did not participate in John's life?
It seems both of Prince's parents liked to dress stylish.
Usually these first chapters with family backgrounds, etc. are kind of a slog to get through (I read a lot of rock bios, hahaha), but I found this one fascinating: many of the details on John Nelson become very important later in Prince's life, especially the legacy of infidelity and the origins of his surname (which Prince basically came out and said was one of the reasons for his name change in the '90s).
Laura and I are honored that this book club is taking place and would be happy to participate and kick things around.
This chapter was in many ways the most fascinating to write. We did a lot of genealogical research and examined documents. This chapter was the most time-consuming by many a factor.
As far as what happened with John's dad, Clarence, the records indicate that by the time John was three, John and his mom Carrie were living with an entirely different man. That is the last we hear of Clarence. Then Carrie, John, and other family members, including Olivia Nelson, with whom Prince will eventually live for a bit, leave Louisiana for Minneapolis. So while we don't know for sure, it sounds like John's relationship with his dad never resumed.
Bought the book at Fetus this weekend. Will Read Chapter 1 and 2 tonight. Not sure how often I'll be able to comment but will participate when able. Thanks for starting the thread.
I'm looking forward to this. Yay authors!
as one of the reasons for his name change in the '90s).
i AGREE! i found the heritage /family tree information very interesting.
It was well written. It didn't make your eyes glaze over by beng bogged down with minutia.
Can a diagram/tree be posted? Alex?
Please quote only the relevant parts. You've now got two consecutive posts quoting the entire first post, despite only a handful of lines being relevant. Also, instead of quoting your own post, simply edit the existing one.
Laura and I are honored that this book club is taking place and would be happy to participate and kick things around. This chapter was in many ways the most fascinating to write. We did a lot of genealogical research and examined documents. This chapter was the most time-consuming by many a factor. As far as what happened with John's dad, Clarence, the records indicate that by the time John was three, John and his mom Carrie were living with an entirely different man. That is the last we hear of Clarence. Then Carrie, John, and other family members, including Olivia Nelson, with whom Prince will eventually live for a bit, leave Louisiana for Minneapolis. So while we don't know for sure, it sounds like John's relationship with his dad never resumed.
Thank you for explaining about Clarence & thank you for participating.
I find it fascinating how the divorces and other spouses are passed down thru the generations.
Please don't come on my thread bossing people around and stick to the topic of the book please.
Post #8 and it's already starting.
I reckon his ancestors on the Nelson side were Black or at least mulattoes going right back.
A year of two ago someone posted a link to a site called geni, which showed so called photos of Prince's great grandfather Edward Nelson and his Grandfather Clarence Nelson. The photos showed 2 white men (Clearly white, not even Quadroons and Octoroons). Later on it was revealed these photos were a hoax and had been stolen from a genealogical site about an English American family that was White.
Also the so called photo of Edward Nelson showed a white Union Army Soldier and this did not fit with Edward Nelsons 1863 birth date, the photo showed a man in his mid 20s, meaning it was a generation further back anyway (The man in photo would have been born around 1840) Edward Nelson would have been that age around 1885/90.
However this hoax has persisted, the names and dates were real the photos completely fake. John Nelson in some book said that the place in Louisiana he came from, had the church burnt down by racists in the 1950s and the details were lost.
I am surprised that Mattie Shaw was born in MPLS as I read Mattie Della Shaw was born to Louise Bunnell (b1899) and Frank Shaw in the South. Both of them were very light skinned, but the children of slaves (Most likely Mulatto or Quadroon).
I am enjoying reading this book. The first chapter is very interesting; apart from learning about Prince's ancestors, who themselves have an interesting story, I learned about other things I had never heard of, such as the Great Migration in the U.S. While reading this chapter I felt an undercurrent of sadness for these families and the hardships they had to endure. For a little bit it made me happy to read that the families found joy in playing music and singing together. When John Nelson leaves Vivian and their 4 teenaged kids for another woman (Prince's mom), repeating the pattern his father had set, I was struck by this coldhearted and selfish move.
Frank Shaw of Louisiana who relocated to Iowa, where he married Lucille Barnell (also from Louisiana) & they eventually moved north to MN.
Wanted to pop in and say hi and thanks for doing this book group!
Alex did the research on this chapter, and when the pattern of abandonment surfaced in John Nelson's family, we were both pretty stunned, since it was the same sad story playing out time and again. We also were riveted by John L. Nelson himself. He is quite the compelling and complex character, and we could have written another couple of chapters on him alone, but we forced ourselves back to the subject at hand.
If the women and kids got support at all. Maybe that's why Mattie felt compelled to marry. I'm still wondering if Mattie raised Alfred, Jr.?
After 'Possessed'? OK.. I'll bite my lip. Ouch! Is that blood? Not flinging poo, just not keen.
Hi, that was my first thought as well when I read that John Nelson left her.
How would she support herself in those days alone with 4 kids? It was very disturbing to read.
Interesting. I wondered about that, too.
John L Nelson's piano was off limits to Prince. Prince revered his father.
John and Mattie started having marital problems in part because John was frequantly out of town do to gigs with his band and not arriving home until early morning hours from gigs during the week. John moved out of the home, but the piano stayed and 7 yr old Prince could play when ever he liked.
Prince became friends with a classmate Terry Jackson. Terry also noticed that among people Prince didn't know very well he was shy & almost meek. But among friends he was talkative, playful, and like to pull pranks. Also noted, Prince had multiple personality traits that helped him achieve his goal in many different situations.
Prince was free to visit his father when ever he wanted, but his father was often on the road and did supply Prince with allowance.
Mattie again got married to Hayward Baker who failed to connect with his step children. Hayward often locked Prince in a room as punishment, another form of punishment was to have him pick dandelions in the yard which isolated Prince from his friends and music.
Prince and his friend Terry were able to attend a James Brown concert where Prince jumped on stage and started dancing the mashed potato. A stage hand removed Prince peacefully and Prince was back with his friends to enjoy the rest of the show, he was only 10.
I was quite surprised to learn that his step father was the one who locked him in the closet.
On The Larry King interview when asked about his relatioship with his father, he said he was strict.
I'm one year older than Prince, for our geneneration spanking was the norm. and for teens, especially males, things could get rough.
I do realize the emotional abuse by his biological father is just as bad as physical. The not letting him touch the piano, the abandonment etc.
It's very sad that there was not a loving father figure in his life.
That's interesting. Care to elaborate?
Ch 2. Hayward Baker's abuse of Prince was disturbing and difficult to read about. I had always read that Prince didn't get along with his stepfather and moved out at 12, but I thought it was because of physical abuse. I didn't realize that the abuse was also emotional. It seems like he was jealous/resentful of Prince. Reading about Prince having to pick dandelions for half a day, being locked in his room for hours and associating his piano with loneliness was heartbreaking. I wondered to what extent Mattie was aware of this and what (if any) support she provided Prince while this was happening. We know his mother issues also haunted him his whole life.
It's incredible that Prince was able to find a way to succeed and thrive despite such challenging conditions at a young age. It says a lot about Prince's fierce self-reliance and discipline, ironically learned from his father.


text:
Uncovering the missing links of La Mer at Le Touquet
The restored 12th hole of La Mer at Le Touquet
Until a recent visit to Le Touquet Golf Resort, I'm ashamed to say I've never really given much thought to those who have designed any golf course I've played.
I suppose it's like when I choose a wine, I'm no connoisseur by any stretch of the imagination, but I know what I like. I'm not too worried about who makes it, so long as it's enjoyable and keeps me coming back for more.
Now, after a couple of days enjoying a round or two in on the Côte d'Opale on the Northern coast of France, I've begun to rethink my lack of caring for golf architects and the trials and tribulations they face so my day on the golf course is made much more interesting.
I spent time discussing the ins and outs of golf course design and playing a few holes with Patrice Boissonnas on one of his latest projects to reinstate Harry Colt's masterpiece La Mer course to its original design. His passion and determination has most definitely put him on the first step of fulfilling his dream to increase his status in the highly competitive world of golf design.
His quest at La Mer began in 2011 when he was charged with the job of restoring the original course to the golden years of the 1920s an 30s when royalty and high fliers from around the world, flocked for the golf courses of Le Touquet to test their skills as well as the fashionable beaches and casino to enjoy the high life.
The history of La Mer started in 1928 when Harry Colt, who was responsible for the designs of grand masters like Turnberry, Sunningdale and Wentworth, was commissioned to build a links course among the dunes and grasslands at Le Touquet. It opened in 1931 and within 10 years had hosted the French open twice. Subsequently staging it again in 1976 and 1977.
During the Second World War, allies bombed the German concrete bunkers along the coastline and with them La Mer, and five of Colt's celebrated fairways and greens. By the time the course was rebuilt they had disappeared beneath trees and undergrowth. When it was rebuilt, new holes were created to take their place.
Today, thanks to the dedication and passion of Boissonnas, four of the 'lost holes' have been uncovered, rebuilt and crafted to recreate the original design. Along with them, previous work on the rest of the course has been readjusted to fit Colt's ethos. After completing four holes, the fight to restore the 'last lost hole', the 17th, continues as Boissonnas and ecologists argue the pros and cons of removing the forest which has grown through the fairway of Colt's original.
Armed with a copy of the original design and aerial photographs, as well as finding the remains of bunkers guarding the 17th green, he is convinced he has found the route of the original fairway and will not rest until the final 'missing link' is reattached.
Until that happens golfers will approach the 17th up a precipitous final 100 yards to a towering green, which runs completely against Colt's design ethos.
As it is, the course is stunning. From the opening par 5, first, 469 metres off the white tee, to the 384m par 4, 18th, it is clearly evident why so many golfers rate this course so highly. Winding its way through and across towering dunes and formidable grasslands, it is a classic out-and-back links with deep greenside bunkering and immense run-offs.
For me there isn't a best hole or a favourite because each one has its own distinct character. And, fortunately for me, it's not a course which plays solely to the low handicapped long hitter, it gives the higher handicapper a fair chance of reaching the green in regulation. What it does successfully is repay good shots for golfers of all levels and any loose ones will cost at least one shot – which is what Colt intended while designing all of his courses.
But, if you play this course and have a higher handicap, make sure you play at least half a dozen from the white tees, just for the thrill of it. By seeing the course from this perspective you begin to appreciate a little of what goes into designing a golf course and, seeing the layout of a particular hole, appreciate how much the designer has used the natural contours of a land and how much has been manufactured using bulldozers.
The difference is always intriguing and, while I doubt I will ever become a connoisseur of golf course design, it will perhaps help me understand a little more why I like one course more than another and why I keep going back for more.
Meanwhile back at the clubhouse, nearly a century on from those heady days in the Roaring 20s, Le Touquet Golf Resort, is ushering in a new golden age for European golf travel with the opening of a remarkable clubhouse designed to blend in to the links. Its striking roofline features pyramidal peaks, reminiscent of the dunes themselves, while offering hospitality and every modern comfort.
The clubhouse and its acclaimed restaurant The Spoon, is part of a long-term investment programme at the resort, which will see its hotel Le Manoir undergo a transformation, with plans to turn it into a boutique-style hotel. A stylish restaurant, echoing the modern golf clubhouse, has already opened and the communal areas are undergoing renovation during this winter.
Le Touquet Golf Resort, part of the Open Golf Club group, is less than an hour's drive south of the Eurotunnel terminus, making it easy to access using the A16 autoroute, and every possibility of a day out to play the courses or more relaxing weekend to play a couple of them.
While you are in the area you can't miss a trip to Open Golf Club group's two sister courses Les Dunes and Les Pins (The Pines) at nearby Golf d'Hardelot.
Les Pins, originally designed by the much-praised Tom Simpson in 1931, has also undergone some major restoration, again under the guidance of Boissonnas and fellow designer Frank Pont, who used old photographs and aerial views to restore it to Simpson's original 1931 routing and design, recreating the shaping and contours of greens, surrounds, fairways and bunker edges.
While work is still ongoing, the course is a delight and the success of its redesign is proven as it has recently been adopted as a venue by the European Tour Qualifying School.
Golf d'Hardelot has reinforced its position as one of Europe's must-visit golf destinations after its iconic Les Pins course was elevated to #24 in Golf World magazine's newly published 'Top 100 Courses in Continental Europe.'
The meteoric rise up the rankings (from 98th in 2013) is the result of one of Europe's most successful course renovation programmes.
Ken Strachan, General Manager of Golf d'Hardelot, said: "Becoming one of Continental Europe's Top 25 courses, after such a historic leap up the rankings in 2015, underlines the focused investment we have made to further enhance the experience for our visitors and members."
For more about Le Touquet Golf Resort visit www.opengolfclub.com/en/Golf-du-Touquet.
For information on Golf at Hardelot visit www.hardelotgolfclub.com/en/
https://sasshoesreviews.com/ link
Very Informative and useful... Keep it up the great work.
Jeff R Fuidge
No matter how fraught, every journey is worth finding a new favourite place


text:
Legal Studies Effective Asylum Seekers
Assess the effectiveness of the legal system in dealing with asylum seeks and refugees? Introduction * Legal system: purpose to bring justice and civilization to a community Enforced by police and other figures of authority applied equally basis and fundamentals of having a cooperative society and country made up of institutions e. g. Australian Human Rights Commissions or UNHCR ( United Nations High Commissioner for Refugees). (Legal Studies workbook) Ultimately the goal of the law is to protect the rights of all citizens in society.
Under the 1951 Refugee Convention a refugee is defined as a person who has a well founded fear of being persecuted, whether because of their race, religion, nationality, membership of a particular social group or political opinion, and if they are outside the country of their nationality and if they are unable, or owing to such fear, unwilling to avail himself/herself of the protection of that country, they are deemed a refugee.
* Asylum seekers are people who are seeking refugee status and safety. In Australia, nearly all asylum seekers who arrive by boat are assessed to be genuine refugees escaping violence, extremism and terror. Asylum seekers are not a threat, they are threatened. Asylum seekers undergo security checks by ASIO (Australia's Security Intelligence Organization) Main refugees come from countries Afghanistan, * Iraq and Colombia (http://www.
refugeecouncil. org. au/docs/news;amp;events/RW_Background_Information. pdf) Ineffectiveness * The United nations Convention of Protocol Relation to Status of Refugees (1951, 1968) or commonly known as the refugee conventions the body that deals with refugees. * Australia is signatory with 25 other nations. * It is legal to seek asylum in Australia, even if you arrive on a boat without a visa.
Asylum seekers are not breaking the rules – they are following the processes outlined in the UN Refugee Convention and Australian Migration Act. (http://www. amnesty. org. au/refugees/comments/24024/) Responsiveness; Protection of Individual Rights * The isolated location of Christmas Island makes it impossible to implement a humane immigration policy there, and is leading to extreme detention conditions. * Government believe that mandatory detention and off-shore processing will act as a deterrent.
* There are 4 immigration detention centers on the Australian mainland: • Villawood (Sydney, NSW) Maribyrnong (Melbourne, Vic) • Perth (WA) • Northern Immigration Detention Centre (Darwin, NT) * In addition, there is an immigration and reception and processing centre on Christmas Island, which is south of the Indonesian island of Java. This centre is primarily for people who arrive unauthorized by boat. * The current practice of detaining asylum seekers off-shore who arrive by boat on excised territory severely restricts their access to basic rights and services, including legal representation, education, translators, and advocacy and health services.
This approach impacts on the mental, physical and emotional health of asylum seekers and lacks compassion and dignity. * 1951 Convention Article 31: punished for illegal entry of contracting state Article 17 to 19: work 20:courts (http://www.
unhcr. org/3b66c2aa10. html) Conclusion Asylum seekers and refugees can and do make as valuable a contribution to the nation as other migrants. * Turning away boats carrying people seeking Australia's protection is inconsistent with Australia's obligations under the UN Refugee Convention.
Furthermore, as a rich country dealing with small numbers of asylum seekers, Australia sets a very poor example in the Asia Pacific by refusing to protect asylum seekers who arrive in its territory. The UNHCR report highlights that most of the world's refugees are being protected in countries much poorer than Australia.
E. g. Out of the 10. 4 million refugees under UNHCR's mandate, the largest numbers were being hosted by Pakistan (1,740,711), Iran (1,070,488) and Australia hosting 22,548 refugees (http://www. salvationarmy.
org. au/justsalvos/up/Refugee_and_Asylum_Seekers/refugeesandasylumseekers. df) Australia's support for UNHCR is particularly critical in the Asia-Pacific region. Australia is one of the few countries in the region which provides consistent funding to UNHCR as well as supporting its work in protecting refugees and seeking solutions to refugee situations. http://www. abc.
net. au/news/2012-08-15/senate-debates-bill-on-offshore-processing-of-asylum-seekers/4201062 * AHRC recommended more equal system where all asylum seekers have access to same system e. g. asylum seekers who arrive by boat should be given bridging bias like those arrived by plane.
Article Bridging visas are a more humane way to treat people seeking protection Friday 25 November 2011 (http://humanrights. gov.
au/about/media/media_releases/2011/115_11. html) This includes persons for whom there are serious reasons to suspect that: • they have committed a crime against peace, a war crime, a crime against humanity or a serious non-political crime outside their country of refuge; or • they are guilty of acts contrary to the purposes and principles of the United Nations. http://www. unhcr. org/4ec262df9.
Legal Studies Family
Legal Studies HSC essay plan
Legal Studies Chapter One Summary
Port Arthur Massacre – Legal Studies
Legal Studies Free Essay Sample
The Woods Asylum


With more than 60 languages to choose from during the academic year, Five College students can either major in language or combine serious language study with majors in other fields or with self-designed concentrations. Language study enhances any major. With 34 departments, sections and programs offering language opportunities, students can let their creativity take the lead to fulfill personal or vocational goals or to simply enjoy learning a new language and culture.
Courses in some languages are available for credit during the summer. These courses are open to students and non-students alike.