text:
Building a Political Agenda for Social Work
Filipe Duarte
The foundational values of human rights and social justice have always been compounded with socialism and social democracy as core ideals and "right principles" of social work. Social workers are committed to promote human rights, social justice and address the root causes of poverty, oppression and inequalities.
The "Global Agenda" launched in 2012 by the International Federation of Social Workers (IFSW), the International Association of Schools of Social Work (IASSW), and the International Council on Social Welfare (ICSW) has reinforced this commitment. In that sense, social workers need to understand and analyze the impact of change on social welfare and the transformation of society towards values of equality, human well-being, social justice, and citizens' participation.
The nature and operation of institutions and economic systems and the distribution of resources and power are also core commitments for social work. Thus, the pursuit of social justice in the twenty-first century requires that social workers acknowledge the political dimensions of all practices and the need to engage in multifaceted struggles to regain influence within the political and public arena.
Therefore, social work needs to strengthen its progressive values and influence the understanding of social problems and social relations through a materialist perspective. Social work also needs to focus its commitment on the impact of the wider social structures such as class, injustice, power, oppression, exploitation, domination and inequality promoted and reinforced by capitalism. Under the current neoliberal paradigm of austerity and market justice, social work needs to see society as a struggle between groups with competing interests.
Social work should focus upon economic and political institutions that influence and are influenced by institutions supported by the dominant neoliberal ideology. The central concern of social work should be, power – both personal and political – and how the powerful elites define and constrain the most vulnerable and working classes. Thus, social work needs to criticize the dominant institutions, advocate for their dismantling and suggest a vision of transformation. In other words, social work should seek to transform the conditions and social structures that cause these inequalities in order to contribute to the transformation of the current society to one that is more congruent with the principles of social justice.
Why Ideology Matters?
Ideologies are systems of beliefs that guide our choices and behaviors, and indeed justify our thoughts and actions. As Bailey and Gayle explain, structures, systems of power and advantage play a central role in maintaining the development of points of view. In this sense, it is important to see the world through an ideological lens. Why? Because ideology relates to power and the distribution of power in society. In questioning this relationship, social work has the opportunity to achieve a new moment for social and political action in accordance with its own values and commitments.
The Ideology in Social Work
Social work in Western countries has lost its political direction. It has failed to clarify its own ideology and to preserve its own values and ethical commitments. Social work emerged from working-class movements for social justice and became in time a mediator between the state and the people. Social work values are guided by the pursuit of socialism and social democracy. Thus, socialism and social democracy are embedded in social work values and commitments.
Both have a common understanding and sharing interests about the collective needs in relationship to the individual. They also believe that social justice is a goal for all in society. Those actions and policies to achieve social justice will emerge from a more equitable distribution of wealth and knowledge among classes. Social work needs to rebuild a new relation between the political and social movements, based on the recognition of the rights and claims of the citizens. Economic and material needs are a key priority for citizens and social work should advocate for them through political and social action.
The state has a fundamental obligation to play a major role in the maximization of social equality. The collective goals of the community must be respected. The distribution of resources should serve the public good, not the private needs. Another important element in achieving social justice is the recognition of class interests and the gendered and ethnic class locations within society. In that sense, "The Global Agenda for Social Work and Social Development" needs to bring and reinforce the ideological dimension as the central focus of social work in order to social work pursue political and social action.
(Building) a Political Agenda for Social Work
According to McKendrick and Webb in Taking A Political Stance in Social Work, "taking a political stance in social work necessarily involves a close historical examination of the influence of social and economic structures as well as the constituting context of relations of domination". In that sense, social work needs to rebuild its own political strategy to confront structures that need transformation. Thus, to build a political strategy some key questions should be defined: should social work take a conflict perspective?
What can social work do to reinforce its own progressive values within society? How should social work position itself between citizens and competing neoliberal interests? What is the political agenda of social work? How can we promote social justice without pursuing a conflict perspective?
Social workers cannot be servants of financial capitalism and supervisors of expenditure of the most vulnerable. Neoliberalism brought managerialism, corporatisation and performance as key demands for social work. McKendrick and Webb also argues that "the 'spirit of capitalism' is the ideology that justifies people's commitment to capitalism, and which renders this commitment attractive within the mainstream society".
Social work needs to build a strategy rooted in ideology that will confront and transform the nature of capitalist exploitation that affects the most vulnerable citizens, and the working class. As McKendrick and Webb acknowledge, "social work, inevitably operates within a 'grand tension' of refusing the dominant order while at the same time being contaminated by this very order".
However, social work should clearly advocate for a large public sector which is directly provided by state allocation. Education and health care should be provided as decommodified public goods. Economic and material needs should also be at the forefront of any social work political strategy, such as the debate and implementation of a basic income that will enhance people's standard of living. Moreover, immigration and refugee policies should also be key priorities in which social work should advocate and lobby for them.
The "Global Agenda" is embedded in progressive social work values, so it should define and promote a political strategy to pursue and respect those values in order to contribute to the transformation of the root causes of social and economic inequalities.
Related Topics:Activismausteritycapitalismglobal agendapoliticsservice usersSocial WorkSocial Workers
Filipe Duarte is PhD candidate and researcher in Social Work at Carleton University in Ottawa, Canada. His research areas of interest are: social citizenship rights, comparative social policies, political economy of the welfare state, politics of austerity, and anti-oppressive and structural approaches to social work and social policy.

redpajama_set_name: RedPajamaCommonCrawl


text:
CRYENGINE Now on Steam for Just 9.90 USD/EUR per Month
May 29, 2014 | Filed under: Gaming,Gaming PR | Posted by: Kristofer Brozio
I guess I could file this under gaming right?
Crytek's award-winning CRYENGINE software launched exclusively on the Steam Store today, enabling developers everywhere to gain royalty-free access to all of its groundbreaking features on a subscription basis.
As part of their new Engine-as-a-Service program, Crytek have made CRYENGINE available to the Steam community of gamers and developers for a low monthly payment of 9.90 USD/EUR. The subscription includes full use of the engine for PC, and ensures developers never have to pay royalties for the games they create.
Crytek's Director of Business Development, Carl Jones, said: "We wanted to ensure that when we released CRYENGINE to subscribers, it would be in the best place to address today's indie gamers and developers. Steam is the best place right now for developers to create their games, show them to a huge community and even release them directly to market – it fits our philosophy for Engine as a Service perfectly. Today's announcement means we are adding the first complete game development engine to Steam, with access to enough source code to allow the creation of any kind of PC game. We're also giving indie developers state-of-the-art tools that live within the same eco-system that they can choose to publish their games. By ruling out royalties we are aiming to make CRYENGINE the best choice for everyone, and hope its arrival on Steam will empower developers of all sizes to achieve their creative visions."
Doug Lombardi, Vice President of Marketing at Valve, said: "The power of CRYENGINE combined with our publishing services, the Steam community and Steam Workshop will
make it easier and more effective than ever to develop and publish games online. The engine's availability through our store is a significant addition that we expect will be embraced and put to excellent use by the many talented developers who use Steam."
Subscribers can count on having the latest version of CRYENGINE to work with at all times, as continuous updates keep the newest features coming.
Among the industry-leading tools and features at the fingertips of CRYENGINE users are the powerful renderer behind Crytek's Xbox One launch title "Ryse: Son of Rome", C++ and LUA APIinterfaces, and demo levels and assets for different types of games. Developers also gain access to extensive documentation, such as programming API references and multiple tutorials by talented CRYENGINE professionals, as well as becoming part of a CRYENGINE community full of dedicated experts.
Subscribe for access to CRYENGINE today at http://store.steampowered.com/app/220980/, or find out more about all Crytek's technology has to offer at www.cryengine.com.


israeli poet and political activist. Communist and anti-zionist. Support in World Socialist Revolution of Worker Class.
Was born in former USSR (Kiev district, Ukraine). In Israel since 1988. In begining I was right, and since 1993-94, under influnce of Oslo process, I begined to move in left direction. Today, I revolutionery and anti-zionist activist, that support in solution of one socialist and equelity country on all territory of Palestine.
Thank you for your friend invite Shmuel, I deeply appreciate it. It is a pleasure!
Your profile is very interesting and I like it extremely well. I myself am a Berliner (Germany), but I live very long time in the French part of Switzerland. The red color is very familiar to me and internalized, and I am delighted that you found me.
Oh, I don't think Yiddish will come back as a language of the left. The people who speak it as their first language now are almost all Haredim!
I only meant to ask if you feel personally connected to the history of the Yiddishj-speaking left in your home country, your political bubbes and zeydes (סבתות וסבים), or if you know anything about it.
So I am interested to know, do you, as a revolutionary socialist Jew from the former Soviet Union, feel any connection with that Yiddish left history? Are you familiar with it? I also wonder, what kind of work do you do? Hope you don't mind my asking.
Actually, Beit Dajan is closer to Jaffa, which predated Tel Aviv by millenia. I have never heard of Zochrot. With which Palestinian Nakba organization do they collaborate?
My last name is Dajani. My family is from Beit Dajan, now called Bet Dagan. The village is mentioned in the Book of Joshua as "Beth Dagon". Our family lived there for no less than five hundred years and probably much longer. We have grown oranges there for centuries.
I would love to. I have visited Lebanon many times, but I have never been to the Holy Land. I need to visit the homeland of my father and father's fathers.
Yes, Aerosvit Airlines flies from JFK to Tel Aviv, with a transfer in Kiev. www.aerosvit.com has parallel websites in English, Russian, and Ukranian.
I admire your courage and honor. If our lives were exchanged, would I be as brave? I'll never know what you know. I'll never know if under your conditions I could show as much mercy and honor.


text:
Philip Reitinger
David Navetta
Michael Redman
Space and Missile Defense Command (SMDC)
Thom Langford
(TL)2
Events , Network Performance Monitoring & Diagnostics , Security Operations
Securing the Data With Increased Networking Visibility Techniques
As the volume and speed of network data increases, security tools are unable to keep up, resulting in security tool sprawl, performance degradation, inefficiencies and unnecessary expenditures. Because your network is critical to operations, it's a juicy target for cyberthreats, including ransomware and data breaches. What can you do? Inline security tools can be an effective solution, but they represent multiple points of possible failure, particularly as network speeds increase because they simply can't keep up.
The solution is to build an efficient network security architecture that copes with increasing network speeds, improving the return on investment of security tools while reducing complexity, cost and tool overload across physical, virtual or cloud infrastructure. By connecting to your network ecosystem, the solutions should enable you to provide insights and intelligence from your network traffic to better protect and secure your organization through delivery of the right data to the right tools - at both the right time and speed.
The session describes how network and security teams can operate faster and safer in a swiftly evolving cybersecurity landscape.
Ian Farquhar
Distinguished Sales Engineer, Gigamon
The Elegant AppSec Solution: How to Design a Program that Developers Will Adopt
Shutting the Dark Web Is Impossible: Inside an Investigator's Notebook
Ian Farquhar has worked in IT Security for over 25 years and has built his career with large organizations such RSA/EMC, Cisco, Sun MicroSystems, Silicon Graphics/ Cray Research and Macquarie University. Ian is the worldwide security subject matter expert at Gigamon and leads the worldwide security team of specialist sales engineers. He and his team work closely to evaluate and engage with customers whose security needs require a deep level of expertise. He is a key contributor to guiding the development of next-generation security solutions and capabilities, working closely with the teams from product management and engineering. Ian has had experience designing, deploying and evaluating network security architectures in government agencies, enterprises and service providers worldwide. Ian is based in Sydney, Australia and has a B.Sc. degree in Computer Science from Macquarie University.


text:
import { serialize, SerializationHelper, serializeAsTexture, expandToProperty } from "../../Misc/decorators";
import { Observer, Observable } from "../../Misc/observable";
import { Nullable } from "../../types";
import { Scene } from "../../scene";
import { Matrix } from "../../Maths/math.vector";
import { EngineStore } from "../../Engines/engineStore";
import { InternalTexture } from "../../Materials/Textures/internalTexture";
import { Constants } from "../../Engines/constants";
import { IAnimatable } from '../../Animations/animatable.interface';
import { GUID } from '../../Misc/guid';
import { ISize, Size } from '../../Maths/math.size';

import "../../Misc/fileTools";
import { ThinEngine } from '../../Engines/thinEngine';

declare type Animation = import("../../Animations/animation").Animation;

/**
 * Base class of all the textures in babylon.
 * It groups all the common properties the materials, post process, lights... might need
 * in order to make a correct use of the texture.
 */
export class BaseTexture implements IAnimatable {
    /**
     * Default anisotropic filtering level for the application.
     * It is set to 4 as a good tradeoff between perf and quality.
     */
    public static DEFAULT_ANISOTROPIC_FILTERING_LEVEL = 4;

    /**
     * Gets or sets the unique id of the texture
     */
    @serialize()
    public uniqueId: number;

    /**
     * Define the name of the texture.
     */
    @serialize()
    public name: string;

    /**
     * Gets or sets an object used to store user defined information.
     */
    @serialize()
    public metadata: any = null;

    /**
     * For internal use only. Please do not use.
     */
    public reservedDataStore: any = null;

    @serialize("hasAlpha")
    private _hasAlpha = false;
    /**
     * Define if the texture is having a usable alpha value (can be use for transparency or glossiness for instance).
     */
    public set hasAlpha(value: boolean) {
        if (this._hasAlpha === value) {
            return;
        }
        this._hasAlpha = value;
        if (this._scene) {
            this._scene.markAllMaterialsAsDirty(Constants.MATERIAL_TextureDirtyFlag | Constants.MATERIAL_MiscDirtyFlag);
        }
    }
    public get hasAlpha(): boolean {
        return this._hasAlpha;
    }

    /**
     * Defines if the alpha value should be determined via the rgb values.
     * If true the luminance of the pixel might be used to find the corresponding alpha value.
     */
    @serialize()
    public getAlphaFromRGB = false;

    /**
     * Intensity or strength of the texture.
     * It is commonly used by materials to fine tune the intensity of the texture
     */
    @serialize()
    public level = 1;

    /**
     * Define the UV chanel to use starting from 0 and defaulting to 0.
     * This is part of the texture as textures usually maps to one uv set.
     */
    @serialize()
    public coordinatesIndex = 0;

    @serialize("coordinatesMode")
    private _coordinatesMode = Constants.TEXTURE_EXPLICIT_MODE;

    /**
    * How a texture is mapped.
    *
    * | Value | Type                                | Description |
    * | ----- | ----------------------------------- | ----------- |
    * | 0     | EXPLICIT_MODE                       |             |
    * | 1     | SPHERICAL_MODE                      |             |
    * | 2     | PLANAR_MODE                         |             |
    * | 3     | CUBIC_MODE                          |             |
    * | 4     | PROJECTION_MODE                     |             |
    * | 5     | SKYBOX_MODE                         |             |
    * | 6     | INVCUBIC_MODE                       |             |
    * | 7     | EQUIRECTANGULAR_MODE                |             |
    * | 8     | FIXED_EQUIRECTANGULAR_MODE          |             |
    * | 9     | FIXED_EQUIRECTANGULAR_MIRRORED_MODE |             |
    */
    public set coordinatesMode(value: number) {
        if (this._coordinatesMode === value) {
            return;
        }
        this._coordinatesMode = value;
        if (this._scene) {
            this._scene.markAllMaterialsAsDirty(Constants.MATERIAL_TextureDirtyFlag);
        }
    }
    public get coordinatesMode(): number {
        return this._coordinatesMode;
    }

    /**
    * | Value | Type               | Description |
    * | ----- | ------------------ | ----------- |
    * | 0     | CLAMP_ADDRESSMODE  |             |
    * | 1     | WRAP_ADDRESSMODE   |             |
    * | 2     | MIRROR_ADDRESSMODE |             |
    */
    @serialize()
    public wrapU = Constants.TEXTURE_WRAP_ADDRESSMODE;

    /**
    * | Value | Type               | Description |
    * | ----- | ------------------ | ----------- |
    * | 0     | CLAMP_ADDRESSMODE  |             |
    * | 1     | WRAP_ADDRESSMODE   |             |
    * | 2     | MIRROR_ADDRESSMODE |             |
    */
    @serialize()
    public wrapV = Constants.TEXTURE_WRAP_ADDRESSMODE;

    /**
    * | Value | Type               | Description |
    * | ----- | ------------------ | ----------- |
    * | 0     | CLAMP_ADDRESSMODE  |             |
    * | 1     | WRAP_ADDRESSMODE   |             |
    * | 2     | MIRROR_ADDRESSMODE |             |
    */
    @serialize()
    public wrapR = Constants.TEXTURE_WRAP_ADDRESSMODE;

    /**
     * With compliant hardware and browser (supporting anisotropic filtering)
     * this defines the level of anisotropic filtering in the texture.
     * The higher the better but the slower. This defaults to 4 as it seems to be the best tradeoff.
     */
    @serialize()
    public anisotropicFilteringLevel = BaseTexture.DEFAULT_ANISOTROPIC_FILTERING_LEVEL;

    /**
     * Define if the texture is a cube texture or if false a 2d texture.
     */
    @serialize()
    public get isCube(): boolean {
        if (!this._texture) {
            return false;
        }

        return this._texture.isCube;
    }

    public set isCube(value: boolean) {
        if (!this._texture) {
            return;
        }

        this._texture.isCube = value;
    }

    /**
     * Define if the texture is a 3d texture (webgl 2) or if false a 2d texture.
     */
    @serialize()
    public get is3D(): boolean {
        if (!this._texture) {
            return false;
        }

        return this._texture.is3D;
    }

    public set is3D(value: boolean) {
        if (!this._texture) {
            return;
        }

        this._texture.is3D = value;
    }

    /**
     * Define if the texture is a 2d array texture (webgl 2) or if false a 2d texture.
     */
    @serialize()
    public get is2DArray(): boolean {
        if (!this._texture) {
            return false;
        }

        return this._texture.is2DArray;
    }

    public set is2DArray(value: boolean) {
        if (!this._texture) {
            return;
        }

        this._texture.is2DArray = value;
    }

    /**
     * Define if the texture contains data in gamma space (most of the png/jpg aside bump).
     * HDR texture are usually stored in linear space.
     * This only impacts the PBR and Background materials
     */
    @serialize()
    @expandToProperty("_markAllSubMeshesAsTexturesDirty")
    public gammaSpace = true;

    /**
     * Gets or sets whether or not the texture contains RGBD data.
     */
    public get isRGBD(): boolean {
        return this._texture != null && this._texture._isRGBD;
    }
    public set isRGBD(value: boolean) {
        if (this._texture) { this._texture._isRGBD = value; }
    }

    /**
     * Is Z inverted in the texture (useful in a cube texture).
     */
    @serialize()
    public invertZ = false;

    /**
     * Are mip maps generated for this texture or not.
     */
    public get noMipmap(): boolean {
        return false;
    }

    /**
     * @hidden
     */
    @serialize()
    public lodLevelInAlpha = false;

    /**
     * With prefiltered texture, defined the offset used during the prefiltering steps.
     */
    @serialize()
    public get lodGenerationOffset(): number {
        if (this._texture) { return this._texture._lodGenerationOffset; }

        return 0.0;
    }
    public set lodGenerationOffset(value: number) {
        if (this._texture) { this._texture._lodGenerationOffset = value; }
    }

    /**
     * With prefiltered texture, defined the scale used during the prefiltering steps.
     */
    @serialize()
    public get lodGenerationScale(): number {
        if (this._texture) { return this._texture._lodGenerationScale; }

        return 0.0;
    }
    public set lodGenerationScale(value: number) {
        if (this._texture) { this._texture._lodGenerationScale = value; }
    }

    /**
     * With prefiltered texture, defined if the specular generation is based on a linear ramp.
     * By default we are using a log2 of the linear roughness helping to keep a better resolution for
     * average roughness values.
     */
    @serialize()
    public get linearSpecularLOD(): boolean {
        if (this._texture) { return this._texture._linearSpecularLOD; }

        return false;
    }
    public set linearSpecularLOD(value: boolean) {
        if (this._texture) { this._texture._linearSpecularLOD = value; }
    }

    /**
     * In case a better definition than spherical harmonics is required for the diffuse part of the environment.
     * You can set the irradiance texture to rely on a texture instead of the spherical approach.
     * This texture need to have the same characteristics than its parent (Cube vs 2d, coordinates mode, Gamma/Linear, RGBD).
     */
    @serializeAsTexture()
    public get irradianceTexture(): Nullable<BaseTexture> {
        if (this._texture) { return this._texture._irradianceTexture; }

        return null;
    }
    public set irradianceTexture(value: Nullable<BaseTexture>) {
        if (this._texture) { this._texture._irradianceTexture = value; }
    }

    /**
     * Define if the texture is a render target.
     */
    @serialize()
    public isRenderTarget = false;

    /**
     * Define the unique id of the texture in the scene.
     */
    public get uid(): string {
        if (!this._uid) {
            this._uid = GUID.RandomId();
        }
        return this._uid;
    }

    /** @hidden */
    public _prefiltered: boolean = false;

    /**
     * Return a string representation of the texture.
     * @returns the texture as a string
     */
    public toString(): string {
        return this.name;
    }

    /**
     * Get the class name of the texture.
     * @returns "BaseTexture"
     */
    public getClassName(): string {
        return "BaseTexture";
    }

    /**
     * Define the list of animation attached to the texture.
     */
    public animations = new Array<Animation>();

    /**
    * An event triggered when the texture is disposed.
    */
    public onDisposeObservable = new Observable<BaseTexture>();

    private _onDisposeObserver: Nullable<Observer<BaseTexture>> = null;
    /**
     * Callback triggered when the texture has been disposed.
     * Kept for back compatibility, you can use the onDisposeObservable instead.
     */
    public set onDispose(callback: () => void) {
        if (this._onDisposeObserver) {
            this.onDisposeObservable.remove(this._onDisposeObserver);
        }
        this._onDisposeObserver = this.onDisposeObservable.add(callback);
    }

    /**
     * Define the current state of the loading sequence when in delayed load mode.
     */
    public delayLoadState = Constants.DELAYLOADSTATE_NONE;

    private _scene: Nullable<Scene> = null;
    private _engine: Nullable<ThinEngine> = null;

    /** @hidden */
    public _texture: Nullable<InternalTexture> = null;
    private _uid: Nullable<string> = null;

    /**
     * Define if the texture is preventinga material to render or not.
     * If not and the texture is not ready, the engine will use a default black texture instead.
     */
    public get isBlocking(): boolean {
        return true;
    }

    /**
     * Instantiates a new BaseTexture.
     * Base class of all the textures in babylon.
     * It groups all the common properties the materials, post process, lights... might need
     * in order to make a correct use of the texture.
     * @param sceneOrEngine Define the scene or engine the texture blongs to
     */
    constructor(sceneOrEngine: Nullable<Scene | ThinEngine>) {
        if (sceneOrEngine) {
            if (BaseTexture._isScene(sceneOrEngine)) {
                this._scene = sceneOrEngine;
            }
            else {
                this._engine = sceneOrEngine;
            }
        }
        else {
            this._scene = EngineStore.LastCreatedScene;
        }

        if (this._scene) {
            this.uniqueId = this._scene.getUniqueId();
            this._scene.addTexture(this);
            this._engine = this._scene.getEngine();
        }

        this._uid = null;
    }

    /**
     * Get the scene the texture belongs to.
     * @returns the scene or null if undefined
     */
    public getScene(): Nullable<Scene> {
        return this._scene;
    }

    /** @hidden */
    protected _getEngine(): Nullable<ThinEngine> {
        return this._engine;
    }

    /**
     * Get the texture transform matrix used to offset tile the texture for istance.
     * @returns the transformation matrix
     */
    public getTextureMatrix(): Matrix {
        return <Matrix>Matrix.IdentityReadOnly;
    }

    /**
     * Get the texture reflection matrix used to rotate/transform the reflection.
     * @returns the reflection matrix
     */
    public getReflectionTextureMatrix(): Matrix {
        return <Matrix>Matrix.IdentityReadOnly;
    }

    /**
     * Get the underlying lower level texture from Babylon.
     * @returns the insternal texture
     */
    public getInternalTexture(): Nullable<InternalTexture> {
        return this._texture;
    }

    /**
     * Get if the texture is ready to be consumed (either it is ready or it is not blocking)
     * @returns true if ready or not blocking
     */
    public isReadyOrNotBlocking(): boolean {
        return !this.isBlocking || this.isReady();
    }

    /**
     * Get if the texture is ready to be used (downloaded, converted, mip mapped...).
     * @returns true if fully ready
     */
    public isReady(): boolean {
        if (this.delayLoadState === Constants.DELAYLOADSTATE_NOTLOADED) {
            this.delayLoad();
            return false;
        }

        if (this._texture) {
            return this._texture.isReady;
        }

        return false;
    }

    private _cachedSize: ISize = Size.Zero();
    /**
     * Get the size of the texture.
     * @returns the texture size.
     */
    public getSize(): ISize {
        if (this._texture) {
            if (this._texture.width) {
                this._cachedSize.width = this._texture.width;
                this._cachedSize.height = this._texture.height;
                return this._cachedSize;
            }

            if (this._texture._size) {
                this._cachedSize.width = this._texture._size;
                this._cachedSize.height = this._texture._size;
                return this._cachedSize;
            }
        }

        return this._cachedSize;
    }

    /**
     * Get the base size of the texture.
     * It can be different from the size if the texture has been resized for POT for instance
     * @returns the base size
     */
    public getBaseSize(): ISize {
        if (!this.isReady() || !this._texture) {
            return Size.Zero();
        }

        if (this._texture._size) {
            return new Size(this._texture._size, this._texture._size);
        }

        return new Size(this._texture.baseWidth, this._texture.baseHeight);
    }

    /**
     * Update the sampling mode of the texture.
     * Default is Trilinear mode.
     *
     * | Value | Type               | Description |
     * | ----- | ------------------ | ----------- |
     * | 1     | NEAREST_SAMPLINGMODE or NEAREST_NEAREST_MIPLINEAR  | Nearest is: mag = nearest, min = nearest, mip = linear |
     * | 2     | BILINEAR_SAMPLINGMODE or LINEAR_LINEAR_MIPNEAREST | Bilinear is: mag = linear, min = linear, mip = nearest |
     * | 3     | TRILINEAR_SAMPLINGMODE or LINEAR_LINEAR_MIPLINEAR | Trilinear is: mag = linear, min = linear, mip = linear |
     * | 4     | NEAREST_NEAREST_MIPNEAREST |             |
     * | 5    | NEAREST_LINEAR_MIPNEAREST |             |
     * | 6    | NEAREST_LINEAR_MIPLINEAR |             |
     * | 7    | NEAREST_LINEAR |             |
     * | 8    | NEAREST_NEAREST |             |
     * | 9   | LINEAR_NEAREST_MIPNEAREST |             |
     * | 10   | LINEAR_NEAREST_MIPLINEAR |             |
     * | 11   | LINEAR_LINEAR |             |
     * | 12   | LINEAR_NEAREST |             |
     *
     *    > _mag_: magnification filter (close to the viewer)
     *    > _min_: minification filter (far from the viewer)
     *    > _mip_: filter used between mip map levels
     *@param samplingMode Define the new sampling mode of the texture
     */
    public updateSamplingMode(samplingMode: number): void {
        if (!this._texture) {
            return;
        }

        const engine = this._getEngine();
        if (!engine) {
            return;
        }

        engine.updateTextureSamplingMode(samplingMode, this._texture);
    }

    /**
     * Scales the texture if is `canRescale()`
     * @param ratio the resize factor we want to use to rescale
     */
    public scale(ratio: number): void {
    }

    /**
     * Get if the texture can rescale.
     */
    public get canRescale(): boolean {
        return false;
    }

    /** @hidden */
    public _getFromCache(url: Nullable<string>, noMipmap: boolean, sampling?: number, invertY?: boolean): Nullable<InternalTexture> {
        const engine = this._getEngine();
        if (!engine) {
            return null;
        }

        var texturesCache = engine.getLoadedTexturesCache();
        for (var index = 0; index < texturesCache.length; index++) {
            var texturesCacheEntry = texturesCache[index];

            if (invertY === undefined || invertY === texturesCacheEntry.invertY) {
                if (texturesCacheEntry.url === url && texturesCacheEntry.generateMipMaps === !noMipmap) {
                    if (!sampling || sampling === texturesCacheEntry.samplingMode) {
                        texturesCacheEntry.incrementReferences();
                        return texturesCacheEntry;
                    }
                }
            }
        }

        return null;
    }

    /** @hidden */
    public _rebuild(): void {

    }

    /**
     * Triggers the load sequence in delayed load mode.
     */
    public delayLoad(): void {
    }

    /**
     * Clones the texture.
     * @returns the cloned texture
     */
    public clone(): Nullable<BaseTexture> {
        return null;
    }

    /**
     * Get the texture underlying type (INT, FLOAT...)
     */
    public get textureType(): number {
        if (!this._texture) {
            return Constants.TEXTURETYPE_UNSIGNED_INT;
        }

        return (this._texture.type !== undefined) ? this._texture.type : Constants.TEXTURETYPE_UNSIGNED_INT;
    }

    /**
     * Get the texture underlying format (RGB, RGBA...)
     */
    public get textureFormat(): number {
        if (!this._texture) {
            return Constants.TEXTUREFORMAT_RGBA;
        }

        return (this._texture.format !== undefined) ? this._texture.format : Constants.TEXTUREFORMAT_RGBA;
    }

    /**
     * Indicates that textures need to be re-calculated for all materials
     */
    protected _markAllSubMeshesAsTexturesDirty() {
        let scene = this.getScene();

        if (!scene) {
            return;
        }

        scene.markAllMaterialsAsDirty(Constants.MATERIAL_TextureDirtyFlag);
    }

    /**
     * Reads the pixels stored in the webgl texture and returns them as an ArrayBuffer.
     * This will returns an RGBA array buffer containing either in values (0-255) or
     * float values (0-1) depending of the underlying buffer type.
     * @param faceIndex defines the face of the texture to read (in case of cube texture)
     * @param level defines the LOD level of the texture to read (in case of Mip Maps)
     * @param buffer defines a user defined buffer to fill with data (can be null)
     * @returns The Array buffer containing the pixels data.
     */
    public readPixels(faceIndex = 0, level = 0, buffer: Nullable<ArrayBufferView> = null): Nullable<ArrayBufferView> {
        if (!this._texture) {
            return null;
        }

        var size = this.getSize();
        var width = size.width;
        var height = size.height;

        const engine = this._getEngine();
        if (!engine) {
            return null;
        }

        if (level != 0) {
            width = width / Math.pow(2, level);
            height = height / Math.pow(2, level);

            width = Math.round(width);
            height = Math.round(height);
        }

        try {
            if (this._texture.isCube) {
                return engine._readTexturePixels(this._texture, width, height, faceIndex, level, buffer);
            }

            return engine._readTexturePixels(this._texture, width, height, -1, level, buffer);
        } catch (e) {
            return null;
        }
    }

    /**
     * Release and destroy the underlying lower level texture aka internalTexture.
     */
    public releaseInternalTexture(): void {
        if (this._texture) {
            this._texture.dispose();
            this._texture = null;
        }
    }

    /** @hidden */
    public get _lodTextureHigh(): Nullable<BaseTexture> {
        if (this._texture) {
            return this._texture._lodTextureHigh;
        }
        return null;
    }

    /** @hidden */
    public get _lodTextureMid(): Nullable<BaseTexture> {
        if (this._texture) {
            return this._texture._lodTextureMid;
        }
        return null;
    }

    /** @hidden */
    public get _lodTextureLow(): Nullable<BaseTexture> {
        if (this._texture) {
            return this._texture._lodTextureLow;
        }
        return null;
    }

    /**
     * Dispose the texture and release its associated resources.
     */
    public dispose(): void {
        if (this._scene) {
            // Animations
            if (this._scene.stopAnimation) {
                this._scene.stopAnimation(this);
            }

            // Remove from scene
            this._scene._removePendingData(this);
            var index = this._scene.textures.indexOf(this);

            if (index >= 0) {
                this._scene.textures.splice(index, 1);
            }
            this._scene.onTextureRemovedObservable.notifyObservers(this);
            this._scene = null;
        }

        if (this._texture === undefined) {
            return;
        }

        // Release
        this.releaseInternalTexture();

        // Callback
        this.onDisposeObservable.notifyObservers(this);
        this.onDisposeObservable.clear();

        this._engine = null;
    }

    /**
     * Serialize the texture into a JSON representation that can be parsed later on.
     * @returns the JSON representation of the texture
     */
    public serialize(): any {
        if (!this.name) {
            return null;
        }

        var serializationObject = SerializationHelper.Serialize(this);

        // Animations
        SerializationHelper.AppendSerializedAnimations(this, serializationObject);

        return serializationObject;
    }

    /**
     * Helper function to be called back once a list of texture contains only ready textures.
     * @param textures Define the list of textures to wait for
     * @param callback Define the callback triggered once the entire list will be ready
     */
    public static WhenAllReady(textures: BaseTexture[], callback: () => void): void {
        let numRemaining = textures.length;
        if (numRemaining === 0) {
            callback();
            return;
        }

        for (var i = 0; i < textures.length; i++) {
            var texture = textures[i];

            if (texture.isReady()) {
                if (--numRemaining === 0) {
                    callback();
                }
            }
            else {
                var onLoadObservable = (texture as any).onLoadObservable as Observable<BaseTexture>;

                if (onLoadObservable) {
                    let onLoadCallback = () => {
                        onLoadObservable.removeCallback(onLoadCallback);
                        if (--numRemaining === 0) {
                            callback();
                        }
                    };

                    onLoadObservable.add(onLoadCallback);
                }
            }
        }
    }

    private static _isScene(sceneOrEngine: Scene | ThinEngine): sceneOrEngine is Scene {
        return sceneOrEngine.getClassName() === "Scene";
    }
}

redpajama_set_name: RedPajamaGithub


Stevenage's run in the FA Youth Cup came to an end with a 3-1 defeat at Wigan Athletic in the third round last night.
After wins in the previous two rounds against Aveley and Cambridge United, Boro travelled north with confidence and their squad of first and second year scholars was supplemented with Under-16s Andronicos Georgiou, Charlie O'Keefe, Ben Wilmot and David Etheridge, plus work experience loanee Kofi Boateng from Norwich and Elite Development Programme striker Sam Dowridge.
Going into the game with great belief, Boro nearly got a dream start at the Robin Park Arena with Louis Yamfam driving into the box and firing in an effort which the Wigan 'keeper parried away.
The visitors' early dominance continued with Kerr firing a 30-yard free-kick straight at the goalkeeper and Georgiou nearly finding the bottom corner from a tight angle, but saw his shot bounce wide on 11 minutes.
However Wigan took the lead just before the quarter-hour mark. A neat ball between centre-half and full-back saw highly-rated striker James Barrigan through and he fired past the onrushing Jackson to put the hosts 1-0 up.
The Latics pushed forward again immediately and four minutes later doubled their advantage. Another attack down the left saw Wigan capitalise on a slip by Kerr and midfielder Matt Rimmer was there to smash home from yards out after a cross found him.
Boro were rocked and their cause wasn't helped on 24 minutes when Georgiou went off injured, to be replaced by fellow Under-16 David Etheridge. Luke Slater went close with a header as Stevenage looked to get back into the game and then moments later Matt Smyth thought he'd pulled one back with a thumping header from a Kerr free-kick, but saw the ball fly inches wide.
Two goals to the good, Wigan began to show why they are top of their division, keeping possession and continuing to create further chances to extend their lead.
Going into the half-time break with a two goal deficit, Stevenage looked to make amends in the second half knowing the next goal was vital. However within seconds of the restart they were undone and made to pay once again. Straight from kick-off the ball was played forward and Barrigan was taken out by Jackson inside the box – the striker dusting himself down to bag his second and Wigan's third goal.
Barrigan went close to his hat-trick a few minutes later when a close-range header bounced off the post. It was another let-off for the visitors and fortunately for them, the talented Barrigan was forced from the field through injury later in the half.
Stevenage were handed a lifeline back into the game on 57 minutes when Luke Slater drove with the ball to the edge of the box and smashed home a fine individual effort. Then 60 seconds later Boro went close to an immediate second when Etheridge was slipped in, but a covering defender came back with a last-gasp challenge.
Sub Ben Wilmot, on for the injured Kerr, made a superb goal-line clearance as Wigan looked to kill the game completely with a fourth, but Stevenage hung in there and pushed forward in the closing stages, albeit to no avail.
Etheridge again went close with a free header that flew over and Zak Guerfi tried his luck from 30 yards with five minutes remaining, but Wigan hung on to secure victory and a home draw in Round 4 against either Derby County or West Ham United.


This "Conversation Prism" designed by JESS3 highlights the wide variety of social media platforms that exist in various categories and industries.
Brian Solis sits down with Ben Pring to discuss the evolution of technology in the workplace and how it will shape the future of work.
Spotify has rolled out successful ad campaigns utilizing customer data in a very unique and entertaining fashion.
Machine learning technologies like Siri, Alexa, and Google Assistant are helping humans make to-do lists, find answers to questions and carry out everyday tasks. Gear Patrol unpacks what makes these virtual assistants so smart.
Over 5,500 photos were submitted this year for Audubon's annual photography contest to highlight the most stunning bird photos. Here are a few of the winners.
For the general public, a PR crisis is most often viewed through the lens of social media and news outlets. But what are PR playmakers doing behind the scenes to take control of the situation?
Christopher Nolan's new WWII movie has already received high praises, and much of the credit goes to his decision to film with 70mm cameras, resulting in an insanely high quality resolution. For more on Nolan's filming characteristics, check out this video that identifies the unique elements incorporated into all of his work.


Check all the details about Air France Baggage Information.
Dimension of cabin baggage must exceed 55 x 35 x 25 cm / 21.7 x 13.8 x 9.8 inch including wheel, pocket, handles.
If dimension and weight limit of any baggage exceeds then passenger must need to pay an extra fee at the airport.


I really like Time - the mantel, the clock, very awesome.
Your story and image has a powerful impact Minnie !!! I can relate in several ways, from the stopped clock to the vintage framed pictures. Thanks for reminding me of my memories of long ago.
Thanks. I'm kinda living in a time machine a few days every week now.
That old house holds so many memories for me,it's fun to try and photograph memories! There's a little magic there in that the house as we reconstructed it is true to its original form, so it allows some of the memories to be captured.
I took my little macro lens to my OtherHouse in Sallis yesterday to work on this assignment, and had too much fun with it so may post more than one thing.
While rampaging through the head-high hayfield looking for blackberries I spotted this owl feather caught on a stalk and stopped to photograph it, then take it in for my grandson's collection of feathers. We love listening to the owls talk at night, though sometimes they'll start a raucous owl party at 3 AM.
That must have been one barn-burner of a party!
I like your colorwork and texture on a beautiful subject. Well done!
Sometimes they do cut up. I wish I could wrangle an invitation to the party.
Thanks Frank. The 52 project has been a good exercise for me.


Publisher of books. The company specializes in books about law, medicine, science and political thought in United States.
This information is reserved for PitchBook Platform users. To explore Gryphon Editions's full profile, request access.


text:
Naftogaz procured 17.5 bcm of gas in 9 months of 2017
12 October 2017 / 09:36
Over the first 9 months of 2017, Naftogaz bought 17.5 billion cubic meters (bcm) of gas, which is 3.1 bcm more than in the same period last year
Over the first 9 months of 2017, Naftogaz bought 17.5 billion cubic meters (bcm) of gas, which is 3.1 bcm more than in the same period last year.
The share of imports was 41%, with 59% procured from Ukrgazvydobuvannya, a 100%-owned upstream subsidiary of Naftogaz.
In 2017, as well as in 2016, no gas was imported to Ukraine from Russia. All supplies were sourced from European suppliers.
Over the first nine months of 2017, Naftogaz imported 7.1 bcm of gas from the European market, which is 2.4 bcm (53%) more than in the same period of 2016. This year, Naftogaz has been purchasing gas from 12 European suppliers based in Germany, Switzerland, France, the United Kingdom, the Czech Republic, Poland and Italy. None of those companies accounted for more than 30% of total gas imports.
During this period, private companies imported additional 3.6 bcm of gas to Ukraine. Naftogaz share in gas imports thus dropped to 66% from 75% in the 9 months of 2016.
The Ukrainian government has imposed public service obligations (PSO) on Naftogaz which require it to guarantee gas supply for households, religious organizations and district heating companies to provide households and religious organizations with heating and hot water. Naftogaz is not supplying gas directly to the households. Instead, regional gas retailers designated by the government decree resell gas procured by Naftogaz.
All marketable volumes of gas produced by Naftogaz subsidiary in Ukraine are obligatory directed to these purposes. Naftogaz covers the remaining gas needs of the protected consumer categories and its commercial clients with gas imports.
Natural gas imports to Ukraine in the first nine months of 2017 and 2016, bcm
Ukraine total 10.7 6.3
by direction: Slovakia 7.9 5.2
Hungary 1.9 0.5
Poland 0.9 0.6
Including Naftogaz, total 7.1 4.7
Hungary 0.1 0*
Poland 0.0 0.0*
*- imports less than 0.1 bcm in the said period
Corporate Communications Department
NJSC Naftogaz of Ukraine


text:
ngers gold mining in south africa
Here's Why South African Gold Mining Stocks Are Down Big ...Aug 15, 2018· So what. South Africa is home to some of the world's most lucrative mining assets. In fact, it's the top producer of gold, platinum, and chromium, among other metals.Gold Mining Output Falls Again in South Africa | Gold NewsGOLD MINE output from South Africa – the No.1 producer throughout the 20th century – fell a further 6.2% in April compared with a year earlier, the official data agency Statistics South Africa said Thursday. Extending the last decade's 50% decline in annual Gold Mining output – and confirming the nation's slide to world No.4 – April's drop comes after the 15% year-on-year fall .
South Deep Gold Mine, Gauteng Province, South Africa
The South Deep gold mine, located in Gauteng Province of South Africa, is one of the world's biggest gold mines. It is also the seventh deepest mine in the world with a depth of 2,995m below the surface. It has a mine life of 75 years. The underground gold mine also has a large resource base of uranium.Mining industry of South Africa - WikipediaAnglo Gold Ashanti, Sibayane Gold Ltd, Harmony Gold Mining Co., First Uranium, and Peninsula Energy own or control most of the uranium-from-gold mining processing plants in South Africa. Though uranium production in South Africa showed a decrease from 711t in 2000 to 579t in 2010, in 2011 930t were produced with a forecast of 2,000t by 2020. [28]Gold Mining in South Africa | Gold NewsJun 11, 2012· South Africa, with its prolific Witwatersrand basin, is still the continent's largest gold and platinum group metals (PGMs) producing region, but gold production in South Africa went down in 2011 and there are whispers that the ANC wants to nationalize at least a portion of the country's PGM mines.
South Africa - Diamonds, gold, and imperialist ...South Africa experienced a transformation between 1870, when the diamond rush to Kimberley began, and 1902, when the South African War ended. Midway between these dates, in 1886, the world's largest goldfields were discovered on the Witwatersrand.Gold Production by Country | Gold Production | GoldhubJun 30, 2020· Gold mining is a global business with operations on every continent, except Antarctica, and gold is extracted from mines of widely varying types and scale. At a country level, China was the largest producer in the world in 2018 and accounted for around 12 per cent of total global production.The Role of Mining in the South African EconomyConventional wisdom views the mining sector ofthe South African economy as its quintessence. As contributor to aggregate output, as foreign exchange earner for the economy, as employer, and as a generator of tax revenues mining has often been viewed as the locomotive of South Africa.What are the largest gold mines in South Africa?The Mponeng gold mine, owned and operated by South Africa-based AngloGold Shanti, was named as the the tenth-biggest facility of its kind in 2016. Located near the town of Carletonville, west of South Africa's capital Johannesburg, it contains estimated gold reserves of 13.81m oz, as of December 2012.
The world's biggest gold mines: Top tenJan 30, 2020· Mponeng gold mine located near the town of Carletonville, South Africa, is owned and operated by AngloGold Ashanti. The underground gold mine is also currently the deepest mine in the world with a depth of more than 4km below the surface. The mine had contained gold reserve of 11.65Moz (36.47Mt grading 9.93g/t gold), as of December 2018.Methods of Gold Mining - Geology InOther gold mines use underground mining, where the ore is extracted through tunnels or shafts. South Africa has the world's deepest hard rock gold mine up to 3,900 metres (12,800 ft) underground. At such depths, the heat is unbearable for humans, and air conditioning is required for the safety of the workers. The first such mine to receive air ...
The South Deep gold mine, located in Gauteng Province of South Africa, is one of the world's biggest gold mines. It is also the seventh deepest mine in the world with a depth of 2,995m below the surface. It has a mine life of 75 years. The underground gold mine also has a large resource base of uranium.South Africa's most commonly mined mineralsGold is a precious metal that plays an important role in South Africa's economy. South Africa produces 15% of the world's gold and holds 35% of the world's gold reserves. South Africa's two most important gold mines, the East Rand Mine in Boksburg and TauTona in Carltonville are among the deepest mines in the world. Diamonds. South ...The Gold Mining Industry in South Africa Essay - 1011 ...Gold mining in South Africa has a large impact on the environment, the economy and social structure in South Africa. The environmental impact of gold mining on the environment includes water, air and noise pollution. The mining industry in South Africa is one of the largest in the world. It provides ...Mining: South Africa's Biggest Success or Apartheid's ...Jan 22, 2016· The discovery of gold was what put South Africa at the forefront of economic exploration by European settlers for potential mining opportunities, and the surrounding countries as well. However, this discovery came at a price, and the price was paid on black African laborers.
South Africa - Diamonds, gold, and imperialist ...South Africa - South Africa - Diamonds, gold, and imperialist intervention (1870–1902): South Africa experienced a transformation between 1870, when the diamond rush to Kimberley began, and 1902, when the South African War ended. Midway between these dates, in 1886, the world's largest goldfields were discovered on the Witwatersrand. As the predominantly agrarian societies of European ...The 10 Biggest Gold Mining Stocks | The Motley FoolGold Fields Gold Fields is a South African gold mining company. It has eight operating mines scattered across the globe in Australia, Chile, Ghana, Peru, and South Africa, as well as several...South African Environmentalists Sue to Clean Up Toxic MinesJul 30, 2020· Mining companies have invested at least $5 billion toward gold exploration in West Africa in the last decade but significant reserves are under-exploited, mineral industry experts said on Tuesday.
List of Gold mines in South Africa - BrieflyJul 09, 2019· Gold mining in South Africa is a big industry that is employing numerous individuals, with the industry producing some of the richest people in Mzansi. There are a lot of Gold mines in South Africa, and this list of mines in South Africa covers different areas around the country. READ ALSO: List of the biggest mining companies in South AfricaGrade 8 - Topic 2 - The Mineral Revolution in South Africa ...Feb 24, 2015· Grade 8 - Topic 2 - The Mineral Revolution in South Africa. Background and Focus of Grade 8- Term 2: The Mineral Revolution in South Africa. The Mineral Revolution in South Africa started with the discovery of diamonds in Kimberley in 1867, and intensified with the discovery of deep-level gold on the Witwatersrand in 1886.South Africa - Gold mining | BritannicaSouth Africa - South Africa - Gold mining: Prospectors established in 1886 the existence of a belt of gold-bearing reefs 40 miles (60 km) wide centred on present-day Johannesburg. The rapid growth of the gold-mining industry intensified processes started by the diamond boom: immigration, urbanization, capital investment, and labour migrancy. By 1899 the gold industry attracted investment worth ...
Gold Mining Output Falls Again in South Africa | Gold NewsGOLD MINE output from South Africa – the No.1 producer throughout the 20th century – fell a further 6.2% in April compared with a year earlier, the official data agency Statistics South Africa said Thursday. Extending the last decade's 50% decline in annual Gold Mining output – and confirming the nation's slide to world No.4 – April's drop comes after the 15% year-on-year fall reported ...The History of Gold Mining in South Africa | Adventure HubApr 01, 2020· The History of gold mining in South Africa – Gold in South Africa was first discovered in the late 19th century by two prospectors in Witwatersrand, which triggered the 1886 Witwatersrand Gold Rush. It led to the change of the country from a principally agricultural society to grow into the world's largest producer of gold today.Mining: South Africa's Biggest Success or Apartheid's ...Jan 22, 2016· The discovery of gold was what put South Africa at the forefront of economic exploration by European settlers for potential mining opportunities, and the surrounding countries as well. However, this discovery came at a price, and the price was paid on black African laborers.
A history of mining in South Africa (ZA)
M M ining in South Africa has been a contentious issue since 15-year-old Erasmus Stephanus Jacobs discovered South Africa's first diamond, the Eureka, in Hopetown in 1867. It kickstarted what historians call the Mineral Revolution, which made few European opportunists wealthy beyond measure, and saw hundreds of thousands of men leaving their homes to become fulltime mineworkers.Record gold price gives miners a good lifeline in South AfricaFactsheets of fund managers seen by Reuters show South Africa's Fairtree increased its exposure to Harmony gold by 0.78% between March and June, while US-based ASA, which invests in gold mining companies globally, increased its investments in South Africa to 10.7% in June from 9.9% in January. But the operating environment remains risky.Top 10 Biggest Gold Mining Companies in the World 2020 ...Mar 31, 2019· Gold Fields Limited is the second-largest of South Africa's gold mining companies. The company is headquartered in Johannesburg, and it has active operations in South Africa, Ghana, Australia and Peru. Gold Fields has historically relied on acquisitions to expand the company's presence in regions where it is already active.Top 10 Biggest Gold Mining Companies in the World 2020 ...Mar 31, 2019· Gold Fields Limited is the second-largest of South Africa's gold mining companies. The company is headquartered in Johannesburg, and it has active operations in South Africa, Ghana, Australia and Peru. Gold Fields has historically relied on acquisitions to expand the company's presence in regions where it is already active.Top Gold-mining Companies | Who Produced the Most Gold? | INNThe company is a globally diversified gold producer with eight operating mines in Australia, Ghana, Peru and South Africa. In 2019, the company produced 68.4 tonnes of the metal, a slight increase...Mining: South Africa's Biggest Success or Apartheid's ...Jan 22, 2016· The discovery of gold was what put South Africa at the forefront of economic exploration by European settlers for potential mining opportunities, and the surrounding countries as well. However, this discovery came at a price, and the price was paid on black African laborers.
A history of mining in South Africa (ZA)M M ining in South Africa has been a contentious issue since 15-year-old Erasmus Stephanus Jacobs discovered South Africa's first diamond, the Eureka, in Hopetown in 1867. It kickstarted what historians call the Mineral Revolution, which made few European opportunists wealthy beyond measure, and saw hundreds of thousands of men leaving their homes to become fulltime mineworkers.Record gold price gives miners a good lifeline in South AfricaFactsheets of fund managers seen by Reuters show South Africa's Fairtree increased its exposure to Harmony gold by 0.78% between March and June, while US-based ASA, which invests in gold mining companies globally, increased its investments in South Africa to 10.7% in June from 9.9% in January. But the operating environment remains risky.Top 10 Biggest Gold Mining Companies in the World 2020 ...Mar 31, 2019· Gold Fields Limited is the second-largest of South Africa's gold mining companies. The company is headquartered in Johannesburg, and it has active operations in South Africa, Ghana, Australia and Peru. Gold Fields has historically relied on acquisitions to expand the company's presence in regions where it is already active.
manufacturers slag crusher
small crusher machine in dubai
investors stone crushers in india
20 mm drill grinding machine
crush quartz find gold