text:
// Type definitions for cqrs-domain 2.10
// Project: https://github.com/adrai/node-cqrs-domain
// Definitions by: Steven Weiß <https://github.com/blissi>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped

declare namespace Domain {
    // region AggregateModel and Command

    interface AggregateModel {
        id: string;
        attributes: any;
        uncommittedEvents: any[];

        apply(event: any, data?: any, version?: number): void;

        /**
         * Sets attributes for the aggregate.
         *
         * @example:
         *     aggregate.set('firstname', 'Jack');
         *     // or
         *     aggregate.set({
         *          firstname: 'Jack',
         *          lastname: 'X-Man'
         *     });
         */
        set(attribute: any, value?: any): void;

        /**
         * Gets an attribute of the vm.
         * @param attr The attribute name.
         * @return The result value.
         *
         * @example:
         *     aggregate.get('firstname'); // returns 'Jack'
         */
        get(attr: string): any;

        /**
         * Returns `true` if the attribute contains a value that is not null
         * or undefined.
         * @param attr The attribute name.
         * @return The result value.
         *
         * @example:
         *     aggregate.has('firstname'); // returns true or false
         */
        has(attr: string): boolean;

        /**
         * Resets the attributes for the aggregate.
         */
        reset(data: any): void;

        /**
         * Marks this aggregate as destroyed.
         */
        destroy(): void;

        /**
         * Returns true if this aggregate is destroyed.
         */
        isDestroyed(): boolean;

        /**
         * Sets the revision for this aggregate.
         * @param streamInfo The stream info.
         * @param rev        The revision number.
         */
        setRevision(streamInfo: any, rev: number): void;

        /**
         * Returns the revision of this aggregate.
         * @param streamInfo The stream info.
         */
        getRevision(streamInfo: any): number;

        /**
         * Returns all uncommitted events.
         */
        getUncommittedEvents(): any[];

        /**
         * Adds/Saves an uncommitted event.
         * @param evt The event object.
         */
        addUncommittedEvent(evt: any): void;

        /**
         * Clears the internal uncomitted event list.
         */
        clearUncommittedEvents(): void;

        /**
         * The toJSON function will be called when JSON.stringify().
         * @return A clean Javascript object containing all attributes.
         */
        toJSON(): any;
    }

    interface Command {
        id: string;
    }

    // endregion

    // region defineContext

    interface DefineContextOptions {
        /**
         * optional, default is the directory name
         */
        name?: string;
    }

    function defineContext(options: DefineAggregateOptions): void;

    // endregion

    // region defineAggregate

    interface DefineAggregateOptions {
        /**
         * optional, default is last part of path name
         */
        name?: string;

        /**
         * optional, default 0
         */
        version?: number;

        /**
         * optional, default ''
         */
        defaultCommandPayload?: string;

        /**
         * optional, default ''
         */
        defaultEventPayload?: string;

        /**
         * optional, default ''
         */
        defaultPreConditionPayload?: string;

        /**
         * optional, default false
         * by skipping the history, only the last event will be loaded and defaultly not applyed (just to ensure the revision number increment)
         */
        skipHistory?: boolean;

        /**
         * optional, default false
         * only optionally needed when skipHistory is set to true, only the last event will be loaded and applyed
         */
        applyLastEvent?: boolean;

        /**
         * optional, default false
         * will publish the events but will not commit them to the eventstore
         */
        disablePersistence?: boolean;
    }

    /**
     * @param loadingTime is the loading time in ms of the eventstore data
     * @param events are all loaded events in an array
     * @param aggregateData represents the aggregateData after applying the resulting events
     */
    type defineSnapshotNeedHandler = (loadingTime: number, events: any[], aggregateData: any) => boolean;

    interface AggregateVersion {
        version: number;
    }

    interface DefineAggregateResult {
        /**
         * optionally, define snapshot need algorithm...
         */
        defineSnapshotNeed(cb: defineSnapshotNeedHandler): DefineAggregateResult;

        /**
         * optionally, define if snapshot should be ignored
         * if true, the whole event stream will be loaded
         */
        defineIgnoreSnapshot(version: AggregateVersion, cb?: ((data: any) => boolean) |
            boolean): DefineAggregateResult;

        /**
         * optionally, define conversion algorithm for older snapshots
         * always convert directly to newest version...
         * when loaded a snapshot and it's an older snapshot, a new snapshot with same revision but with newer aggregate version will be created
         */
        defineSnapshotConversion(version: AggregateVersion, cb: (data: any, aggregate: AggregateModel) => void): DefineAggregateResult;

        /**
         * optionally, define idGenerator function for new aggregate ids
         */
        defineAggregateIdGenerator(cb: (() => string) |
            ((callback: generateIdCallback) => string)): DefineAggregateResult;

        /**
         * optionally, define idGenerator function for new aggregate ids that are command aware
         * if you define it that way, the normal defineAggregateIdGenerator function will be replaced
         */
        defineCommandAwareAggregateIdGenerator(cb: (cmd: Command, callback?: generateIdCallback) => string): DefineAggregateResult;
    }

    function defineAggregate(options: DefineAggregateOptions, initializationData?: any): DefineAggregateResult;

    // endregion

    // region extendValidator

    function extendValidator(cb: (validator: any) => void): void;

    // endregion

    // region definePreCondition

    interface DefinePreLoadConditionOptions {
        /**
         * the command name
         * optional, default is file name without extension,
         * if name is '' it will handle all commands that matches the appropriate aggregate
         * if name is an array of strings it will handle all commands that matches the appropriate name
         */
        name?: string;

        /**
         * optional, default 0
         */
        version?: number;

        /**
         * optional, if not defined it will use what is defined as default in aggregate or pass the whole command
         */
        payload?: string;

        /**
         * optional
         */
        description?: string;

        /**
         * optional, default Infinity, all pre-conditions will be sorted by this value
         */
        priority?: number;
    }

    /**
     * @param data is the command data
     * @param callback is optional, if not defined as function argument you can throw errors or return errors here (sync way)
     */
    type preLoadConditionHandler = (data: any, callback?: (err: string | Error) => string | Error) => void | string | Error;

    function definePreLoadCondition(options: DefinePreLoadConditionOptions, handler: preLoadConditionHandler): void;

    // endregion

    // region definePreCondition

    interface DefinePreConditionOptions {
        /**
         * the command name
         * optional, default is file name without extension,
         * if name is '' it will handle all commands that matches the appropriate aggregate
         * if name is an array of strings it will handle all commands that matches the appropriate name
         */
        name?: string;

        /**
         * optional, default 0
         */
        version?: number;

        /**
         * optional, if not defined it will use what is defined as default in aggregate or pass the whole command
         */
        payload?: string;

        /**
         * optional
         */
        description?: string;

        /**
         * optional, default Infinity, all pre-conditions will be sorted by this value
         */
        priority?: number;
    }

    /**
     * @param data is the command data
     * @param aggregate is the aggregate object
     * @param callback is optional, if not defined as function argument you can throw errors or return errors here (sync way)
     */
    type preConditionHandler = (data: any, aggregate: AggregateModel, callback?: (err: string | Error) => string | Error) => void | string | Error;

    function definePreCondition(options: DefinePreConditionOptions, handler: preConditionHandler): void;

    // endregion

    // region defineCommand

    interface DefineCommandOptions {
        name?: string;
        version?: number;
        payload?: string;
        existing?: boolean;
    }

    type commandHandler = (data: any, aggregate: AggregateModel) => void;
    type defineEventStreamsToLoadHandler = (cmd: any) => Array<{
        context: string;
        aggregate: string;
        aggregateId: string;
    }>;

    interface DefineCommandResult {
        defineEventStreamsToLoad(cb: defineEventStreamsToLoadHandler): void;
    }

    function defineCommand(options: DefineCommandOptions, handler: commandHandler): DefineCommandResult;

    // endregion

    // region defineEvent

    interface DefineEventOptions {
        name?: string;
        version?: number;
        payload?: string;
    }

    type eventHandler = (data: any, aggregate: AggregateModel) => void;

    function defineEvent(options: DefineEventOptions, handler: eventHandler): void;

    // endregion

    // region defineBusinessRule

    interface DefineBusinessRuleOptions {
        /**
         * optional, default is file name without extension
         */
        name?: string;

        /**
         * optional
         */
        description?: string;

        /**
         * optional, default Infinity, all business rules will be sorted by this value
         */
        priority?: number;
    }

    /**
     * @param changed is the new aggregate object
     * @param previous is the old aggregate object
     * @param events is the array with the resulting events
     * @param command the handling command
     * @param callback is optional, if not defined as function argument you can throw errors or return errors here (sync way)
     */
    type businessRuleHandler = (changed: AggregateModel, previous: AggregateModel, command: any, callback?: (err: string | Error) => string | Error) => void | string | Error;

    function defineBusinessRule(options: DefineBusinessRuleOptions, handler: businessRuleHandler): void;

    // endregion

    // region defineCommandHandler

    interface DefineCommandHandlerOptions {
        /**
         * optional, default is file name without extension
         */
        name?: string;

        /**
         * optional, default 0
         */
        version?: number;

        /**
         * optional, if not defined it will pass the whole command...
         */
        payload?: string;
    }

    /**
     * @param aggId is the aggregate id
     * @param cmd is the command data
     * @param callback is optional, if not defined as function argument you can throw errors or return errors here (sync way)
     */
    type commandHandlerHandler = (aggId: string, cmd: any, commandHandler: any, callback?: (err: string | Error) => string | Error) => void | string | Error;

    function defineCommandHandler(options: DefineCommandHandlerOptions, handler: commandHandlerHandler): void;

    // endregion

    // region Domain itself

    interface CommandDefinition {
        /**
         * optional, default is 'id'
         */
        id?: string;

        /**
         * optional, default is 'name'
         */
        name?: string;

        /**
         * optional, default is 'aggregate.id'
         * if an aggregate id is not defined in the command, the command handler will create a new aggregate instance
         */
        aggregateId?: string;

        /**
         * optional, only makes sense if contexts are defined in the 'domainPath' structure
         */
        context?: string;

        /**
         * optional, only makes sense if aggregates with names are defined in the 'domainPath' structure
         */
        aggregate?: string;

        /**
         * optional, but recommended
         */
        payload?: string;

        /**
         * optional, if defined the command handler will check if the command can be handled
         * if you want the command to be handled in a secure/transactional way pass a revision value that matches the current aggregate revision
         */
        revision?: string;

        /**
         * optional, if defined the command handler will search for a handle that matches command name and version number
         */
        version?: string;

        /**
         * optional, if defined theses values will be copied to the event (can be used to transport information like userId, etc..)
         */
        meta?: string;
    }

    interface EventDefinition {
        /**
         * optional, default is 'correlationId'
         * will use the command id as correlationId, so you can match it in the sender
         */
        correlationId?: string;

        /**
         * optional, default is 'id'
         */
        id?: string;

        /**
         * optional, default is 'name'
         */
        name?: string;

        /**
         * optional, default is 'aggregate.id'
         */
        aggregateId?: string;

        /**
         * optional, only makes sense if contexts are defined in the 'domainPath' structure
         */
        context?: string;

        /**
         * optional, only makes sense if aggregates with names are defined in the 'domainPath' structure
         */
        aggregate?: string;

        /**
         * optional, default is 'payload'
         */
        payload?: string;

        /**
         * optional, default is 'revision'
         * will represent the aggregate revision, can be used in next command
         */
        revision?: string;

        /**
         * optional
         */
        version?: string;

        /**
         * optional, if defined the values of the command will be copied to the event (can be used to transport information like userId, etc..)
         */
        meta?: string;

        /**
         * optional, if defined the commit date of the eventstore will be saved in this value
         */
        commitStamp?: string;
    }

    type generateIdCallback = (err: any, id: string) => void;

    interface HandleMetaInfos {
        aggregateId: string;
        aggregate: string;
        context: string;
    }

    interface CqrsDomain {
        /**
         * Inject definition for command structure.
         * @param definition the definition to be injected
         * @returns to be able to chain...
         */
        defineCommand(definition: CommandDefinition): CqrsDomain;

        /**
         * Inject definition for event structure.
         * @param definition the definition to be injected
         * @returns to be able to chain...
         */
        defineEvent(definition: EventDefinition): CqrsDomain;

        /**
         * Call this function to initialize the domain.
         * @param callback the function that will be called when this action has finished [optional]
         *                            `function(err, warnings){}`
         */
        init(cb: (err: Error, warnings: Error[]) => void): void;

        /**
         * Call this function to let the domain handle it.
         * @param cmd      the command object
         * @param callback the function that will be called when this action has finished [optional]
         *                            `function(err, evts, aggregateData, meta){}` evts is of type Array, aggregateData and meta are an object
         */
        handle(cmd: any,
            cb?: ((err: Error) => void) |
                ((err: Error, events: any[], aggregateData: any, metaInfos: HandleMetaInfos) => void)): void;

        /**
         * Returns the domain information.
         */
        getInfo(): any;

        /**
         * Inject function for for event notification.
         * @param fn the function to be injected
         * @returns to be able to chain...
         */
        onEvent(cb: ((evt: any) => void) |
            ((evt: any, callback: () => void) => void)): CqrsDomain;

        /**
         * Inject idGenerator function.
         * @param fn The function to be injected.
         * @returns to be able to chain...
         */
        idGenerator(cb: (() => string) |
            ((callback: generateIdCallback) => string)): CqrsDomain;

        /**
         * Inject idGenerator function for aggregate id.
         * @param fn The function to be injected.
         * @returns to be able to chain...
         */
        aggregateIdGenerator(cb: (() => string) |
            ((callback: generateIdCallback) => string)): CqrsDomain;

        /**
         * Converts an error to the commandRejected event
         * @param cmd The command that was handled.
         * @param err The error that occurs.
         * @returns The resulting event.
         */
        createCommandRejectedEvent(cmd: any, err: Error): any;

        /**
         * Is called when dispatched a command.
         * @param cmd              the command object
         * @param err              the error
         * @param eventsToDispatch the events to dispatch
         * @param aggregateData    the aggregate data
         * @param meta             the meta infos
         * @param callback         the function that will be called when this action has finished [optional]
         *                                    `function(err, evts, aggregateData, meta){}` evts is of type Array, aggregateData and meta are an object
         */
        onDispatched(cmd: any, err: Error, eventsToDispatch: any[], aggregateData: any, meta: any, callback: (err: Error, evts: any[], aggregateData: any, meta: any) => void): void;
    }

    type SupportedDBTypes = "mongodb" | "redis" | "tingodb" | "azuretable" | "inmemory";

    interface CreateDomainOptions {
        /**
         * the path to the "working directory"
         * can be structured like
         * [set 1](https://github.com/adrai/node-cqrs-domain/tree/master/test/integration/fixture/set1) or
         * [set 2](https://github.com/adrai/node-cqrs-domain/tree/master/test/integration/fixture/set2)
         */
        domainPath: string;

        /**
         * optional, default is 'commandRejected'
         * will be used if an error occurs and an event should be generated
         */
        commandRejectedEventName?: string;

        /**
         * optional, default is 800
         * if using in scaled systems and not guaranteeing that each command for an aggregate instance
         * dispatches to the same worker process, this module tries to catch the concurrency issues and
         * retries to handle the command after a timeout between 0 and the defined value
         */
        retryOnConcurrencyTimeout?: number;

        /**
         * optional, default is 100
         * global snapshot threshold value for all aggregates
         * defines the amount of loaded events, if there are more events to load, it will do a snapshot, so next loading is faster
         * an individual snapshot threshold defining algorithm can be defined per aggregate (scroll down)
         */
        snapshotThreshold?: number;

        /**
         * optional, default is in-memory
         * currently supports: mongodb, redis, tingodb, azuretable and inmemory
         * hint: [eventstore](https://github.com/adrai/node-eventstore#provide-implementation-for-storage)
         */
        eventStore?: {
            type: SupportedDBTypes,
            host?: string;
            port?: number,
            dbName?: string;
            eventsCollectionName?: string;
            snapshotsCollectionName?: string;
            transactionsCollectionName?: string;
            timeout?: number;
            authSource?: string;
            username?: string;
            password?: string;
            url?: string;
        };

        /**
         * optional, default is in-memory
         * currently supports: mongodb, redis, tingodb, couchdb, azuretable, dynamodb and inmemory
         * hint settings like: [eventstore](https://github.com/adrai/node-eventstore#provide-implementation-for-storage)
         */
        aggregateLock?: {
            type: SupportedDBTypes,
            host?: string;
            port?: number;
            db: number;
            prefix?: string;
            timeout?: number;
            password?: string;
        };

        /**
         * optional, default is not set
         * checks if command was already seen in the last time -> ttl
         * currently supports: mongodb, redis, tingodb and inmemory
         * hint settings like: [eventstore](https://github.com/adrai/node-eventstore#provide-implementation-for-storage)
         */
        deduplication?: {
            type: "mongodb" | "redis" | "tingodb" | "inmemory",
            ttl?: number;
            host?: string;
            port?: number;
            db?: number;
            prefix?: string;
            timeout?: number;
            password?: string;
        };

        /**
         * optional, default false
         * resolves valid file types from loader extensions instead of default values while parsing definition files
         */
        useLoaderExtensions?: true;
    }

    // endregion
}

declare function Domain(options: Domain.CreateDomainOptions): Domain.CqrsDomain;

export = Domain;


text:
Geo / Yellow Iphone Case
For me, the epiphany came when I realised that a stylus would help me draw more accurately on my tablet. But because I was not willing to spend money on a piece of metal, or wait for the product to ship, I opted for a DIY solution. To function, a stylus needs to be able to carry the static electricity from your finger to a conductive material and onto the screen. With that in mind, I created a stylus out of super-cheap materials that I already had at home. Within minutes, I made a free stylus for doing anything from browsing the web to drawing masterpieces. I'm calling it "the two-minute stylus".
The new software is also expected to make the Note 2 compatible with the Samsung Galaxy Gear smart watch, The Samsung Galaxy S3 recently updated to Android 4.3, but there was no love for the Note, US networks are reported to have plans to release the Note 2 update on Wednesday, but the geo / yellow iphone case 20 November release date has yet to be confirmed, Samsung is yet to officially name the date when the official update will be pushed out to the Note 2, Are you a Note 2 owner? What new features would you like to see on your Note? Tell me your thoughts in the comments or on our Facebook page..
More software algorithm testing as Samsung undertakes a comprehensive review of its troubled batteries. As part of the eight-point battery safety check, a Note 7 undergoes a durability test. A battery penetration test in Samsung's labs as part of the company's durability inspection. Compression testing on Samsung's batteries as part of a widespread review of the battery's durability. A battery life cycle test which is part of Samsung's eight-point battery safety check. A visual inspection of Samsung's batteries to check for flaws.
"I'm happy to develop for any platform, geo / yellow iphone case but currently I find mobile games the most interesting, They're so fresh and different and unsolved, Also there's a lot of crap out there and my goal right now is to prove that quality and mobile are not mutually exclusive," Vollmer told Joystiq in a recent interview, "I don't really have a dream game because I just enjoy solving interesting problems, Currently the next big problem I've been dwelling on is about the question of how to tell a good story on mobile, So there's that."While a puzzle game you'll have trouble putting down is certainly an achievement worth celebrating, aspiring to create a mobile game that could captivate, inspire awe, and influence the medium like Journey did is a worthwhile pursuit, While Vollmer chases after that complex creation, I'll be playing Threes, You should too..
"It does seem that Samsung was able to isolate the damage to the Note 7. The S8 has done very well, and its reputation hasn't been tainted by the Note 7," said Forrester analyst J.P. Gownder. If the Note 8 follows the same pattern as the Galaxy S8, Samsung will have closed the book on the battery concerns. The company's executives hope it'll be able to win over a larger share of the projected 50 million US customers who are due to upgrade their phones this year -- many of them iPhone users -- suggesting some of its swagger is back.
the night circus iphone case
ted baker chillie iphone 8 soft feel shell case - tranquillity black reviews
art deco marble tiles in soft pastels iphone case
melancholy iphone case
olixar colton iphone xs 2-piece case with screen protector - black
iphone xs max waterfall - iridescent
ballet shoes for beginners
bulk 30 pair of ballet slipper pendants antique silver tone fb35
ao49 ballet shoes patch kids baby girl ironing application patch patches size 2.7 x 7.0 cm

redpajama_set_name: RedPajamaCommonCrawl


text:
Carlos Pintado (L'Havana, 1974) és un poeta i escriptor d'origen cubà que va emigrar als Estats Units.

Biografia
Graduat en llengua i literatura anglesa el 1996 a l'Institut Superior Pedagògic de Pinar del Río. Va rebre el Premi Internacional de Poesia Sant Jordi, el 2006 a Espanya pel seu llibre Autoretrat en blau. Poemes, contes i articles seus han estat traduïts a l'anglès, alemany, turc, italià i francès, i han aparegut en diverses antologies i revistes, entre aquestes: Davant del mirall (Poesia Iberoamericana, Fundació Inquietud Europea, Madrid, 2008), Adéu (Madrid, 2006), Toc d'alerta a Trocadero 162 (Ed. Duana Vella, Madrid, 2008), Una veu en l'abisme (Perú, 2007), Col·lecció de poesia (Editorial Ego group, Inc, Miami), Antologia de la poesia cubana de l'exili (Duana Vella, Espanya, 2011) i en revistes com Blancomóvil, Focusing, 13trenes, Parteaguas, La Habana Elegante, Baquiana, Linen magazine, Arte libertino, La Zorra y el Cuervo o Zafra Lit, per citar-ne algunes d'Espanya, Cuba, Turquia, Mèxic, Alemanya, Perú, Argentina i Estats Units.

El 2010, el South Beach Music Ensemble va estrenar per diversos estats d'Amèrica del Nord el "Quintet sobre els poemes de Carlos Pintat", quintet de piano i cordes sota la direcció de la compositora estatunidenca Pamela Marshall. L'autor ha estat un dels convidats a participar com a artista en la Nit Blanca o Sleepless Night al costat de diversos músics i artistes nord-americans de reconeguda trajectòria artística. Carlos Pintado és cap de redacció de la revista literària La Zorra y el Cuervo.

Obres
 La seducción del Minotauro (contes, 2000)
 Autorretrato en azul (poesia, 2006)
 Los bosques de Mortefontaine (poesia, 2007)
 Habitación a oscuras (poesia, 2007)
 Los nombres de la noche (poesia, editorial Bluebird Editions, 2008)
 El azar y los tesoros (poesia, 2008)
 El árbol rojo (haikus)
 Rimas tropicales (cantades pel San Francisco Girls Chorus i musicades per Tania León)
 Ídolos del sueño (peça per a soprano, clarinet, violí, violoncel i piano, estrenada el 2011 pel mundialment conegut CONTINUUM al Kaufam Center de Nova York).
 Quintet sobre els poemes de Carles Pintado (quintet de piano i cordes sota la direcció de la compositora estatunidenca Pamela Marshall i Michael Andrews interpretat pel South Beach Music Ensemble).
 El unicornio y otros poemas (antologia personal, editorial Ruinas Circulares, 2011)
 Taubenschlag ( Editorial Capiro, Santa Calra, Cuba, 2015)
 La sed del último que mira (Sudaquia Editores, New York, 2015)

Col·laboracions
Una selecció de la seva poesia amb el títol de Rimas tropicales va tenir la seva estrena mundial el juny del 2011 pel San Francisco Girls Chorus, grup guanyador de 5 premis Grammy, diversos ASCAP Awards i del prestigiós Margaret Hillis Award, agrupació que va ser convidada a la cerimònia d'inauguració de la presidència de Barack Obama a la Casa Blanca i que ha estat reconeguda per més de 30 anys com una de les millors en el seu gènere al món. Les Rimas Tropicales de Carlos Pintado van ser musicades especialment per Tania Leon, una de les compositores i directores més admirades i respectades en el món de la música culta contemporània, membre de l'Acadèmia d'Arts i Lletres Americanes i qui ha col·laborat amb importants premis Nobel i Pulitzer de literatura com Wole Soyinka (Premi Nobel 1992), Derek Walcott (Premi Nobel 1992), John Ashbery (Premi Pulitzer 1976), Rita Dove (Premi Pulitzer 1987), Margaret Atwood (Booker Prize 2000 i Premi Príncep d'Astúries de les Lletres 2008) entre d'altres.

Una selecció dels seus poemes amb el títol d'Ídolos del sueño va ser musicada per Ileana Pérez-Velázquez per a soprano, clarinet, violí, violoncel i piano, i estrenada el 2011 pel mundialment conegut CONTINUUM, al Kaufam Center de Nova York.

Carlos Pintado ha participat amb els importants músics cubans Gema i Pavel en múltiples presentacions, amb l'estrella internacional Francisco Céspedes, i amb l'actor i escultor Michel Hernández va realitzar el projecte de fusió de poesia i escultura "La invenció dels sentits", que forma part del catàleg Espai Obert del Centre Cultural Espanyol de Miami, i va col·laborar en el projecte Free Soul Dance Company dirigit per Belma Suazo i l'actor cubà Francisco Gattorno. Articles seus han aparegut a la revista Vogue en castellà.

Enllaços externs

 http://www.enfocarte.com/6.30/pintado.html
 http://www.artelibertino.com/magazine/2009/12/carlos-pintado/
 http://www.booksandbooks.com/emilio_estefan_exile_experience
 http://letradecambiogeneracionveintiuno.blogspot.com/2011/03/carlos-pintado.html
 http://www.habanaelegante.com/Spring2007/AzoteaDos.html
 http://www.soulofmiami.org/2009/12/15/ccemiami-poesia-y-esculturas-la-invencion-de-los-sentidos-by-carlos-pintado-y-michel-hernandez-121609
 http://www.sfcv.org/reviews/san-francisco-girls-chorus/viva-sf-girls-chorus
 http://www.zafralit.blogspot.com/2009/07/joy-eslava-by-carlos-pintado.html
 http://www.eldigoras.com/premios/premios0315.html
 San Francisco Girls Chorus .

Poetes cubans
Assagistes cubans
Escriptors de l'Havana
Assagistes estatunidencs
Poetes estatunidencs

redpajama_set_name: RedPajamaWikipedia


text:
Agriculture, Analysis, BJP, Business, Congress Party, Economics, Energy, Governance, India, India Reforms Scorecard 2019-2024, Narendra Modi
Deregulate India's Natural Gas Pricing
by cogitASIA Staff • January 2, 2020 • 0 Comments
By Raymond E. Vickery, Jr —
A compressed natural gas pump in Agra, India. Source: Tim Poultney's flickr photostream, used under a creative commons license.
Status: Incomplete — Acquisition price for domestically-produced gas largely set by government through a formula using prices in several developed markets. Pricing of gas from new, deepwater, and high pressure/high temperature wells liberalized but with a cap. Customer prices for city gas, electricity, and petrochemicals somewhat liberalized. However, allocation formulas, government control of distribution companies, and strict price control of gas for fertilizer still frustrate market-based pricing.
Medium Difficulty: Requiring Political Will — Simply requires a government notification. Customer expectations for gas at below market make the reform politically sensitive.
This is the fifth installment in a new series of articles on the India Reforms Scorecard: 2019-2024 by the staff and experts at the Wadhwani Chair in U.S.-India Policy Studies. The series seeks to provide analysis on why reforms marked as "Incomplete" or "In Progress" have not been completed, and the impact such reforms can have on specific sectors or the economy at large.
In inaugurating a policy of greatly expanded gas distribution infrastructure for his second term, Prime Minister Narendra Modi set the goal of increasing the share of natural gas in India's energy mix 2.5 times by 2030. Such an increase cannot be attained without price liberalization; price controls stifle private industry's desire to invest in production.
For its second term, the Modi government released "Reforms in Exploration and Licensing Policy for Enhancing Domestic Exploration and Production of Oil and Gas." This policy promises pricing and marketing freedom for new gas discoveries in the 19 identified but non-producing basins. The seven producing basins are not affected. More importantly, Modi has said that India is working to establish a natural gas trading exchange, and in the 2019 budget speech the government indicated it was moving to implement an e-bid scheme for regasified liquefied natural gas.
However, given the long and tortuous history of natural gas price liberalization in India, it remains to be seen whether Prime Minister Modi's initiatives will be successful.
Unfortunately, the price liberalization policy runs squarely into interests vested in the traditional Indian system of natural gas allocations and government price setting. This is especially true for the politically sensitive fertilizer sector where natural gas is a primary input for the production of urea. More gas is presently used in this sector than for any other purpose, and farm-connected voters, who make up almost half the electorate, demand cheap fertilizer. Some price liberalization has occurred on resale of "city gas" (Compressed natural gas for transportation and piped gas for homes). However, states and political vested interests demand that public sector companies insulate consumers from gas price increases. Central government ministries and public sector companies facilitate this price protection for political reasons.
The first Bharatiya Janata Party (BJP)-led government adopted in 1999 a New Exploration and Licensing Policy (NELP). This policy had promised market-based pricing to encourage an expanded role for the private sector in gas exploration and production. After the significant private-company discovery of gas in the Bay of Bengal in 2002, the Vajpayee government was unseated before price liberalization could be implemented.
In the waning days of their administration, the Congress-led governments of 2004-2014 tried to rectify the absurdly low price fixed for domestically-produced natural gas by announcing a change in the pricing formula. The change mandated a significant increase in the price of gas and became an issue in the 2014 campaign. BJP opposed the change, and Modi came into office promising to clean up the pricing mess.
In October 2014, the Modi government notified a pricing formula which is a weighted average of prices prevalent in the United States, United Kingdom, Canada, Russia, Europe, and Japan. Being Western market derived, the formula results in a price considerably lower than gas imported into India and prices in Asia.
In March 2016, the Hydrocarbon Exploration and Licensing Policy (HELP) was announced to switch from a production sharing (profit sharing) model to a revenue sharing model. HELP supposedly granted pricing freedom for gas from new deepwater, ultra-deepwater, and high pressure/high temperature wells. However, the government could not bring itself to allow complete pricing freedom for this gas and imposed a ceiling price for this new, hard-to-reach gas.
To encourage fracking and unconventional natural gas recovery, pricing freedom was extended to gas produced by these methods in August 2018. Thus, in its first term, the Modi government made progress toward decontrolling prices for new and difficult fields. In 2017-18, this helped secure the first production increase in six years. 2018-2019 also saw a modest increase.
The notifications and initiatives during Modi's two governments are all steps in the right direction. However, the vast bulk of domestic natural gas still has prices set formally or informally by the government. India needs to institute a genuine market system for natural gas. Without such a system, the investment required to discover and exploit fully its natural gas reserves is unlikely to occur, and plans to vastly increase natural gas in the Indian energy mix will not be achieved.
Mr. Raymond E. Vickery, Jr is a former U.S. assistant secretary of Commerce and Senior Associate (non-resident) with the Wadhwani Chair in U.S.-India Policy Studies at CSIS.
← Establish the Already Approved Indian Railway Development Authority
Update on India's States: January 2, 2020 →


text:
Mirage — четвёртый студийный альбом нидерландского диджея Армина ван Бюрена, выпущенный 10 сентября 2010 года. Альбому предшествовал выпуск сингла «Full Focus» 24 июня 2010 года. Альбом создан при сотрудничестве с такими музыкантами, как Софи Эллис-Бекстор, Ферри Корстен, Адам Янг, Кристиан Бернс и другими.

Mirage дебютировал на 3 месте в Голландии, и на 113 в Великобритании. В чарте Billboard 200 пластинка стартовала со 148 места, также участвуя в чарте Dance/Electronic Albums, где оказалась на 5 месте. В России альбом Mirage стал платиновым. В итоговом чарте за 2010 год альбом занял 15 место с 10 300 проданными копиями.

Список композиций

Дополнительные композиции
Специально для сервиса iTunes было выпущено несколько дополнительных композиций:

Чарты

Примечания

Ссылки
 Страница альбома на официальном сайте музыканта

Альбомы 2010 года
Альбомы Армина ван Бюрена
Альбомы Armada Music


Here is a practical guide on when you want to use APs with internal antennas vs. APs with external antennas. For the purpose of this blog, I'll be using two indoor APs, the EnGenius EAP1300 (internal antenna, ceiling mount) and the EnGenius EAP1300EXT (external antenna, wall or ceiling mount) for demonstrative purposes. The content, however, applies to any vendor that has APs of comparable specifications with both internal and external antennas, for both indoor and outdoor applications.
Antennas serve to shape and focus the radio signal in particular directions. Antennas, therefore, act like a lens for RF frequency. Every radio system (Wi-Fi, cellular, cordless, walkie-talkie, etc.) requires antennas on both the transmitter and receiver to shape and focus the signal. Antennas are passive devices and work in both directions - i.e. an antenna equally increases the radio's ability to talk (transmit) and to hear (receive).
The signal gain (i.e. strength) of an antenna is measured in "dBi", or decibels relative to an isotropic radiator. An isotropic radiator is defined as a point-source of RF signal where the energy radiates spherically equally in all directions. Such an antenna cannot physically be built, but it serves as a useful mathematical reference, as such an antenna has no gain, or a gain of 0 dBi.
Antenna gain, therefore, is based on their deviation from a perfect sphere. A typical "rubber duck" dipole omni-directonal antenna typically has a doughnut-shaped pattern with the antenna sticking through the hole of the doughnut. As this shape is "roughly spherical", these antennas typically have fairly low gain (i.e. 2 - 3 dBi). The gain of such an antenna can be increased by lengthening it. When doing this, you are increasing the energy propagated horizontally by stealing it from the energy propagated vertically. One can also make directional antennas, which serve to focus the bulk of the RF energy in one particular direction. Such antennas have very high gains as they deviate dramatically from a perfect sphere.
Examples of increasing antenna gain. Top: Low gain dipole. Middle: High gain dipole. Bottom: High gain directional.
Just as antenna designers cannot build a perfect sphere, they cannot build a perfect cone. As a result, there is some amount of RF energy that is projected and received in the other directions. These are known as backlobes and sidelobes, as seen in the figure above. If two neighboring antennas are placed very close together, they can interfere with each other, thus a certain amount of separation distance (at least a few feet) is generally recommended when placing directional antennas next to each other.
The beamwidth is defined by where the energy of the antenna drops by 3 dBi (i.e. half) of the peak. Thus, while the gain of the antenna is less beyond this beamwidth, it is also generally not zero, which needs to be accounted for in Wi-Fi design.
There are various types of antennas that can be constructed, as shown below.
Examples of different antenna types, with their typical potential for beamwidth and gain.
Like lenses, antennas are tuned to work at particular frequencies, as the length of the element is a function of the operational wavelength. In Wi-Fi, this means that you will often see separate 2.4 GHz and 5 GHz antennas; these may look identical on the outside (i.e. the plastic radome that covers the antenna), but are actually different on the inside. Some antenna manufacturers are able to make "dual-band" antennas that work at both 2.4 GHz and 5 GHz frequencies, though such dual-band antennas generally require a compromise on the gain of the antenna for each frequency.
An indoor ceiling mount AP with internal antennas is generally designed to be mounted on a ceiling, with most of the antenna energy being projected outwards (horizontally) and downwards (vertically). Such a device can naturally be mounted on the wall, but then the area of coverage changes to project most of the energy both up and down (vertically) and outwards primarily in one direction (horizontally). Since the internal antennas are fixed, the area of coverage is also fixed based on how the AP is physically mounted.
Differences in coverage area when mounting an AP on a ceiling vs. on a wall.
For most indoor Wi-Fi deployments in environments such as schools, apartment buildings, hotels, offices, etc., the built-in internal antenna of a ceiling mount AP, like the EnGenius EAP1300 depicted here, provides sufficient coverage for the desired area. It also satisfies aesthetics constraints, as people generally do not like seeing external antennas, especially in most indoor environments. Additionally, for 802.11n/ac features like MIMO to work properly to achieve faster speeds, the relative alignment of the antennas to each other is critical. For an AP with internal antennas, this alignment is fixed at the factory and cannot be altered.
Naturally, however, when you select an AP with an internal antenna, you lose the ability to change that antenna in your design, such as providing larger areas of bi-directional coverage in particular directions.
When an AP has external antennas, the antennas can naturally be adjusted to fit the coverage area. A vendor will typically supply omni-directional dipole antennas.
In this example, both the EAP1300 and EAP1300EXT include 5 dBi antennas. Accordingly, the gain is the same, and the effective coverage area will be "approximately equivalent" for both models when configured with the same transmit power settings. I say "approximately" because there will be some subtle differences in the antenna pattern between the internal and external antennas.
As mentioned above, aesthetics are often a reason to not go with external antennas. More importantly, however, the MIMO capabilities of 802.11n/ac take advantage of phase offsets between the antennas. This necessitates that the multiple antennas are at a fixed separation distance from each other so as to be out of phase with each other. With internal antennas, this phase offset is fixed at the factory and cannot be changed. For external antennas, the relative alignment of the antennas can be easily altered, either during install or during the AP's normal lifecycle, which will corrupt the MIMO performance and therefore the ultimate performance of the AP.
The primary advantage of an AP with external antennas, such as the EnGenius EAP1300EXT, is that you can replace the included antennas and use either higher gain omni-directional or directional antennas. The antenna that you select will be highly dependent on the particular application. Typically, external antennas are useful for applications where additional range is critical in a specific direction, such as when covering warehouse aisles or an outdoor area with limited AP / antenna mounting options. In such applications, external sector or patch antennas are usually suitable. For MIMO APs, sector and patch antennas also have their individual antenna elements pre-aligned and fixed by design internally, thus meeting both aesthetic and MIMO constraints.
I generally only recommend using an AP with external antenna ports in cases where the dipole antennas packaged with the AP are NOT actually going to be used, but instead are going to be replaced with an external directional antenna, such as a sector or patch. If omni-directional coverage is the requirement, APs with internal antennas are typically the most suitable.
Security researchers have discovered a weakness in the Wi-Fi Protected Access 2 (WPA2) protocol that is used in all modern Wi-Fi networks. A malicious attacker in range of a potential unpatched victim can exploit this weakness to read information that was previously assumed to be safely encrypted. The vulnerability is within the Wi-Fi IEEE 802.11 standard itself, and is therefore not unique to any particular access point or client device vendor. It is generally assumed that any Wi-Fi enabled device is potentially vulnerable to this particular issue.
WPA2-AES security consists of both authorization and encryption. The authorization step is used to determine whether a particular client is allowed to access the wireless network, and comes in two flavors, Personal and Enterprise. In WPA2-AES Personal, a pre-shared key or passphrase is used to provide the essential identifying credential. In WPA2-AES Enterprise, the Extensible Authentication Protocol (EAP) is used to validate the client credentials against an external RADIUS or Active Directory server. In either the WPA2-AES Personal or WPA2-AES Enterprise scenario, once the client's authorization credentials are validated, a unique set of encryption keys are established between that particular access point and that particular client device, so as to encrypt the traffic between them. This encryption process is done via a four-way handshake, where particular temporal (i.e. temporary) keys are passed back and forth between the access point and the client device so that each can derive the appropriate unique encryption key pair used for that connection.
The security researchers discovered that they can manipulate and replay the third message in the four-way handshake to perform a key reinstallation attack (KRACK). Strictly speaking, each temporal key that is passed in the four-way handshake should only be used once and never re-used. However, in a key reinstallation attack, the attacker pretends to be a valid access point and tricks the client device into reinstalling a temporal key that is already in use, serving to reset the transmit and receive packet numbers. For WPA2-AES, the attacker can then derive the same encryption key as the client device, and thus decode upstream traffic from the client device to the access point. For the older (and less secure) WPA-TKIP, the attacker can go even further, and potentially forge and inject new packets into the data stream.
For an attack to be carried out to take advantage of this vulnerability, it must be done by a malicious actor conducting a man-in-the-middle attack (i.e. pretending to be an AP on your network and serving to be a relay between the client device and the legitimate wireless network).
As the issue occurs on client devices, the first step for any network operator is to check with your client device manufacturers for security patches and updates and apply these updates as soon as they are available.
This particular vulnerability has no direct impact on any APs operating in "access point" mode. However, access points that are being used as client devices (i.e. APs operating in "client bridge" mode) or any access points that are being used for point-to-multipoint communications (i.e. APs operating in "WDS bridge" or "WDS station" mode) are potentially impacted by this vulnerability in the IEEE 802.11 protocol. Furthermore, some advanced applications and features, such as mesh networking and fast roaming (i.e. 802.11r), may also be potentially vulnerable to this issue.
Access point vendors are currently actively investigating the impact of this vulnerability across all of the products in our product portfolio, and will be issuing firmware releases in the coming days and weeks to address this issue. In the interim, continue to use WPA2-AES Personal or WPA2-AES Enterprise for network security. Do not use WEP and do not use WPA-TKIP, as the vulnerabilities of those deprecated security protocols are significantly more serious and easier to execute by a malicious attacker.
The website https://www.krackattacks.com/ provides a detailed summary of the issue along with links to the research paper and tools detailing the vulnerability.
When we build networks, we need to allocate the available bandwidth amongst the client device population in, hopefully, a reasonably fair and equitable manner such that all users are happy (or at least not complaining). We use bandwidth throttling for this purpose.
Without bandwidth throttling, one or two abusive users could use applications like BitTorrent and consume the overwhelming majority of the available Internet bandwidth, leaving very little bandwidth for all of the remaining users on your network.
Per-Subnet/VLAN Bandwidth Throttling: This limits the aggregate maximum amount of internet bandwidth that all client devices on the subnet / VLAN can consume at one time.
By means of a demonstrative example, let's assume we have a subnet / VLAN with 5 client devices connected. If the bandwidth throttling is 10 Mbps / 10 Mbps per user, then each user could potentially consume 10 Mbps / 10 Mbps simultaneously, making the total potential consumption the sum, or 50 Mbps / 50 Mbps. Alternatively, if the bandwidth throttling is 10 Mbps / 10 Mbps per subnet / VLAN, then all users on that subnet / VLAN have to share a 10 Mbps / 10 Mbps bandwidth allocation, meaning each user would get 2 Mbps / 2 Mbps on average, and this average would decrease as more users connect to that VLAN / subnet.
In general, per-user bandwidth throttling is what you want in most practical circumstances. Obviously, if there are too many users and/or the allocated bandwidth per user is set too high, you eventually run out of Internet bandwidth.
So how do you decide what limits are appropriate? It ultimately depends on the type of network you are operating (i.e. its requirements) and the total amount of Internet bandwidth you have available (i.e. its constraints). However, this can be treated quantitatively by using an oversubscription ratio.
Thus, as a service provider, I do not need to supply the additive sum in terms of bandwidth (i.e. # users * promised bandwidth per user), but rather some fraction thereof. That fraction defines the oversubscription ratio.
Unfortunately, setting the oversubscription ratio is an empirical exercise, and over time, the oversubscription ratio tends to decrease as more devices, each consuming more bandwidth, are connecting to your networks. In the pre-smartphone days, a 30:1 or even 40:1 was common for most wired / wireless networks.
The common oversubscription ratio I use for regular network usage (e.g. hotel, apartment building, etc.) is 20:1. This would mean that if I promised 200 users each a 10 Mbps / 10 Mbps data rate (and throttled them each to that rate), I could get away with only providing a 100 Mbps Internet bandwidth connection. The math is as follows: 200 users * 10 Mbps/user * 1/20 = 100 Mbps. At any instant in time, the average consumption would be 10 Mbps/user / 20 = 500 kbps per user. In reality, some are obviously consuming more, while others will be consuming less (even 0).
For student housing, which is fairly heavy network utilization, I typically use a 10:1 oversubscription ratio. For larger high density environments, (e.g. conference centers, event spaces, etc.) you will have a few devices that are doing video streaming, but most attendees will be connected but are not likely to be heavily utilizing their devices. I therefore typically use a 15:1 oversubscription ratio.
In reality, one is generally constrained by the total amount of bandwidth available, as that is the most expensive part of your network. Thus, the real calculation is to determine the appropriate bandwidth throttling per user that should be used. To determine this, one needs to know the peak number of expected users and the bandwidth available.
As an example, let's assume an event space where we are expecting 500 users and have a 300 Mbps / 300 Mbps Internet circuit available. Using the 15:1 oversubscription ratio, for 500 users this comes out to a sustainable average service level of 9 Mbps (i.e. 300 Mbps / 500 users * 15:1 oversubscription = 9 Mbps / user).
Of course, in reality complex networks are an Animal Farm (i.e. while all client devices are equal, some client devices are "more equal" than others). Thus, different classes of users will require different levels of service.
In most commercial environments, it is vitally important to operations that they have sufficient bandwidth available, though they usually represent a small fraction of the total number of clients. This is one very good use of having multiple VLANs / subnets, as you can put your different classes of users on to different VLANs, and then allocate bandwidth both per VLAN and per user accordingly. Where operations activity is critical, we need to provide this small but more important operations segment of the client device population a higher per-user bandwidth allocation, and give the (proletariat) visitors a lower per-user bandwidth allocation.
It is also useful to have two layers of bandwidth throttling. The first layer is bandwidth throttling per VLAN / subnet. For example, limit the guest network to 80% of the total bandwidth, ensuring that the staff / operations network(s) will always have access to at least 20% of the Internet bandwidth, no matter how crowded the guest network becomes. The second layer is bandwidth throttling per user, to ensure that no abusive user on any VLAN / subnet can take up all of the bandwidth allocated to that VLAN / subnet.
The short answer: -40 dBm to -50 dBm for optimal performance. This RSSI is readily achievable over distances of up to approximately 2500 ft when using high-gain directional antennas on each end.
For 802.11ac 2x2:2 APs, measured data throughputs of about 350-400 Mbps can be achieved with 80 MHz channels, when the RSSI of each link is consistently in the -40 dBm to -50 dBm range.
If the RSSI is too strong (i.e. > -35 dBm), the electronic amplifiers in the AP start to get saturated and data throughout will actually decrease. This generally only occurs in very short distance shots (< 50 feet), and in those instances we recommend turning down transmit power to minimum and, if still necessary, purposely misaligning the antennas.
If the RSSI is too weak (i.e. < -70 dBm) the link speed will be very slow (low SNR leading to low MCS rates and slow speeds). In the presence of any interference, the wireless backhaul link itself can often become unstable.
A signal leaving a transmitter experiences free space path loss (FSPL), which is a geometric spread of the RF energy as it travels away from a transmitter; the further away the receiver is from the transmitter, the more the energy from the transmitter has spread out, so the less amount of energy is seen at the receiver. The FSPL goes as the square of the distance between the transmitter and receiver. Increasing the gain of the antennas at either (or both) ends of the wireless link help to focus the transmission energy and/or the receive sensitivity in a particular direction, allowing the distance to increase between the transmitter and receiver.
Hence, for point-to-point wireless backhaul applications, you always want to use high gain directional antennas on both ends of the link (such as the integrated 19 dBi antenna on an EnGenius EnStationAC) to maximize the practical link distance and speed.
Based on these formulas, a point-to-point link utilizing EnGenius EnStationAC access points could achieve a -50 dBm RSSI on each end for a WDS bridge wireless link length of approximately 2500 feet.
This blog post provides guidelines on best practices for configuring and deploying wireless backhaul on Wi-Fi networks, and goes through the differences between and appropriate scenarios for client bridges, repeaters, WDS Bridge links, and mesh networks.
In a conventional wireless network, each access point (AP) requires a wired Ethernet connection to provide backhaul to the wired network infrastructure and ultimately the Internet. In some environments, however, it is either impossible or prohibitively expensive to run an Ethernet cable to each AP. In such cases, Wi-Fi itself can be used to provide wireless backhaul from the AP (or other network appliance, such as a remote IP camera) to the wired network. Each Wi-Fi backhaul link is referred to as a hop, and it is possible to have a chain of multiple hops between the remote wireless AP to the root wireless AP that has a wired connection to the network.
There are multiple options for providing Wi-Fi backhaul to the remote APs. Naturally, each option has both benefits and limitations. Most critically, each wireless hop introduces latency, which adds in a linear fashion with the number of hops. Repeaters and mesh also inherently lower with throughput and user capacity, often as a square of the number of hops.
It is critical to understand your technical requirements and constraints, as well as the benefits and limitations of each wireless backhaul option, when designing a Wi-Fi network and selecting a particular Wi-Fi backhaul approach.
An access point operating in Client Bridge mode provides Wi-Fi connectivity for a wired client device. A Client Bridge is intended to connect an individual wired client device to a Wi-Fi network. This is depicted in Figure 1.
Figure 1: Example of a network utilizing a client bridge.
When multiple wired client devices are connected through a single Client Bridge, they share the same MAC address on the network, namely the WLAN MAC address of the Client Bridge itself. The multiple wired client devices can still be configured with different Layer 3 static IP addresses, and each wired device may or may not be able to obtain an independent Layer 3 DHCP address, depending on the DHCP server.
Best Practice: When using an AP in Client Bridge mode, only connect one wired client device.
For typical applications, Client Bridge mode is only utilized on single-band APs. For dual-band access points, one radio (typically 5 GHz) will be configured to operate in client bridge mode, while the other radio (typically 2.4 GHz) will be used for providing Wi-Fi connectivity on an independent SSID to wireless client devices. Client Bridge mode is generally only available on standalone APs, meaning that each AP must be configured individually and cannot be managed or monitored from a centralized controller. Client Bridge mode is available on all EnGenius® single-band Electron™ and EnStation™ access points, as well as dual-band APs in the Electron™ ECB series.
An access point operating in Repeater mode provides both Wi-Fi connectivity to client devices as well as providing a wireless backhaul connection to one or more wired APs. This is depicted in Figure 2. Repeaters are intended for very small networks (e.g. home environments), where individual repeater APs are used to fill in particular coverage gaps. Individual client MAC addresses are preserved, though the VLAN (if any) is defined by the main access point's SSID that is being repeated.
Figure 2: Example of a network utilizing a wireless repeater.
For dual-band access points, one radio (typically 5 GHz) will be configured to operate in repeater mode, while the other radio (typically 2.4 GHz) will be exclusively for providing Wi-Fi connectivity to client devices. Note that both Wi-Fi bands depend upon the repeater radio for backhaul. Since the repeater radio must spend half its time providing Wi-Fi connectivity to client devices and half its time providing wireless backhaul, the data capacity of a repeater radio for both backhaul and for Wi-Fi client connectivity is reduced by 50%. When there are multiple hops, the data capacity is reduced by 50% at each hop. Thus, for two hops, the total data capacity is only 1/4, for three hops it is 1/8, for four hops it is 1/16, and so forth.
Repeater mode is generally only available on standalone APs, meaning that each AP must be configured individually and cannot be managed or monitored from a centralized controller. Repeater mode is available on all EnGenius® Electron™ ECB series access points.
A dedicated pair of APs, usually with integrated directional antennas (such as the EnGenius® EnStationAC), are configured to operate in WDS Bridge mode to create a point-to-point link to provide wireless backhaul. The WDS Bridge link on the remote end is connected to the remote AP via its wired Ethernet interface. From the perspective of the rest of the network, this wireless connection looks like a wired connection; in WDS Bridge mode, the wired Ethernet frame is encapsulated and encrypted in a Wi-Fi packet on one end, transmitted across the wireless link, and then de-encapsulated and decrypted on the other end. Thus, all wired Layer 2 information (i.e. client MAC addresses, VLANs, etc.) are preserved across the WDS Bridge link. Point-to-multipoint WDS Bridge links ae also readily possible, though be aware the remote links collectively share the total available airtime bandwidth of the link. This is depicted in Figure 3.
Figure 3: Examples of point-to-point and point-to-multipoint networks utilizing WDS Bridge links.
The WDS Bridge links are statically established, so that each WDS Bridge AP only accepts connections from pre-defined radios. WDS Bridge usually requires dedicated hardware at each remote location operating on independent channels, though some APs allow for one radio (typically the 5 GHz) to be in WDS bridge mode and the other radio (typically the 2.4 GHz) to be in AP mode to provide Wi-Fi service client devices.
Best Practice: WDS Bridge with dedicated 5 GHz only access points is generally recommended for most networks requiring both wireless backhaul and high bandwidth and/or high user capacity Wi-Fi. While each hop adds latency, there is no throughput or user capacity degradation, since the point-to-(multi)point backhaul link is solely dedicated to wireless backhaul, with Wi-Fi access for client devices being handled by separate access points.
For large networks consisting of multiple remote nodes, a WDS Bridge backhaul network requires its own design effort to ensure appropriate bandwidth capacity and channel utilization. WDS Bridge mode is generally only available on standalone APs, meaning that each AP must be configured individually and cannot be managed or monitored from a centralized controller. WDS Bridge mode is available on all EnGenius® Electron™ and EnStation™ access points.
Figure 4 shows an example of an outdoor Wi-Fi network at an RV park utilizing point-to-(multi)point links to provide wireless backhaul to APs mounted on light poles. The colored lines indicate the point-to-(multi)point WDS Bridge links implemented with EnGenius® EnStationAC access points.
Figure 4: Example of a wireless network utilizing point-to-(multi)point links for backhaul to outdoor wireless APs.
Red markers indicate the location of outdoor dual-band APs, and yellow markers indicate the location of additional light poles that were available at the property. To maximize wireless backhaul capacity, all of the WDS Bridge links utilized 80 MHz channels in the UNII-2 and UNII-2e bands (i.e. DFS channels 52-64, 100-112, and 116-128). The 5 GHz radios on the dual-band APs were set to use 40 MHz channels on the UNII-1 and UNII-3 bands (i.e. channels 36-40, 44-48, 149-153, and 157-161), so as to avoid co-channel interference with the point-to-multipoint backhaul network.
In a mesh network, the AP uses its own radio to provide a wireless backhaul to other APs on the network, eventually reaching an AP with a wired Ethernet connection to the wired backhaul infrastructure and the network. In this sense, a mesh network is a network of repeaters, though mesh is designed to operate automatically and more intelligently on a large scale. A mesh network creates a set of "dynamic WDS Bridge" links, using routing algorithms to automatically calculate the most optimal wireless path through the network back to a wired root node. This makes mesh networks relatively robust to the failure of an individual AP; in a process referred to as "self-healing", the routing algorithms will automatically calculate the "next best" path through the network if an AP in the path goes offline. Since the routing functions are done automatically within the mesh software, mesh networks are actually fairly straightforward to set up and are thus scalable to cover large geographic areas. All wired Layer 2 information (i.e. client MAC addresses, VLANs, etc.) are preserved across the mesh link. Examples of mesh networks are shown in Figure 5 (for home / SOHO environments) and Figure 6 (for larger campus-wide environments).
Figure 5: An example of a home / SOHO mesh network, utilizing EnGenius® EMR3000 mesh routers.
Figure 6: An example of a large campus mesh network, utilizing EnGenius® EWS1025CAM mesh cameras.
The mesh network control architecture can either be centralized or distributed. With a centralized control architecture, an AP controller is required to calculate and coordinate the mesh parameters for each AP. This architecture, however, limits the scalability of the mesh network to the capacity of the AP controller. In a distributed control architecture, such as the EnGenius® Neutron™ series and EMR3000 product, each AP operationally acts like a router, continuously sharing information about its connection status to its neighbors, and each AP uses this information to compute its own optimal mesh path. In a distributed architecture, an AP controller can be optional, though is generally extremely useful in providing centralized real-time monitoring of the mesh network, as well as establishing the core initial mesh network parameters, such as mesh ID, encryption, etc.
Unfortunately, mesh networks have significant limitations, most notably in the loss of throughput and user capacity, which scales geometrically as the number of wireless hops increase, as well as the increase in latency, which scales linearly as the number of wireless hops increase.
Accordingly, mesh networks are not suitable for high bandwidth or latency-sensitive applications. Because of these performance limitations, it is generally recommended that mesh networks be avoided unless no other viable backhaul options are available. Mesh networks should only be used in environments where providing Ethernet data wiring to access points or cameras is impossible or cost-prohibitive.
Mesh networks were originally trendy in the mid-2000s, as a way of both providing metropolitan Wi-Fi coverage as well as coverage for large outdoor properties where wiring was prohibitively expensive, such as RV parks, garden-style apartment complexes, marinas, etc. While many mesh networks were successfully deployed, most of these efforts ultimately failed, especially in metropolitan Wi-Fi. Early mesh networks relied upon single-radio APs on 2.4 GHz using 802.11g. When dual-band APs were introduced, only 802.11a was available on the 5 GHz band, which still led to very low throughputs as the number of hops increased.
With the wide adoption of dual-band access points with 802.11ac, there has been renewed interest in mesh for both Wi-Fi access and surveillance applications. Accordingly, several startup companies, as well as established vendors like EnGenius®, have introduced mesh Wi-Fi products utilizing 802.11ac. While the data rates of 802.11ac are approximately 25 times larger than the 802.11a data rates of a decade ago, the number of client devices and their bandwidth demands have also grown exponentially during that time. The fundamental limitations of mesh networks are therefore still the same, and thus mesh may ultimately again prove to be a passing fad.
Nonetheless, mesh networks are the only viable option in many cases. The sections below highlight how to best design and deploy mesh networks, so as to maximize their performance and mitigate their inherent limitations.
Root Node (a.k.a. Gateway Node): This is an access point with a wired connection to the wired switch infrastructure. The remote nodes establish wireless backhaul connections to the root node. Note that the wired connection utilized by a root node can either be (1) a direct Ethernet or fiber-optic connection to the wired switch infrastructure or (2) a wired connection to a separate WDS Bridge wireless point-to-(multi)point link on an independent channel.
Remote Node: This is an access point without a wired Ethernet connection. Backhaul to the network is established via a wireless connection to a root node or to other remote nodes. Note that the remote AP still requires electrical power, so an Ethernet connection to a PoE injector is common, though the "network" end of the PoE injector may not be connected at all or may only be connected to a wired client device, such as an IP camera.
Maximize the signal strength of each hop, so as to maximize the achievable Wi-Fi data rates between the mesh radios on each hop. For maximum data rates in 802.11ac, the received signal strength indicator (RSSI) would ideally be in the -40 dBm to -50 dBm range, though this is usually unachievable in practice since omni-directional antennas are typically used to create the widest field of view to neighboring APs. Data rates should be above -65 dBm for decent data rate performance between hops.
Balance the load on each AP, so as to account for the number of associated client devices and the total throughput consumption on each AP. The throughput load stacks as the number of hops increase, so intermediate remote nodes that are heavily utilized with client traffic will not give as many resources to downstream remote nodes.
Because of the competing tradeoffs in this optimization process, mesh networks can often result in counter-intuitive and/or sub-optimal topologies.
Best Practice: The network design should cluster the APs into groups consisting of up to four remote nodes that are only one hop away from a root node. Thus, at least 20% of your APs, distributed roughly evenly throughout the property, should be root nodes. Each remote node is therefore nominally only one hop away from a root node. In the event of a failure of a root node, the nearby remote nodes will then only be 2-3 hops away from another root node. This approach generally requires creating additional root nodes, which can be done either by running Ethernet or fiber-optic cable to the particular remote locations, or by establishing dedicated point-to-(multi)point WDS Bridge links to create "wireless wires" from the root AP back to the wired network.
Best Practice: Each root node should be set on a static independent channel, and each remote node should be set to "auto channel". This is done to maximize the airtime capacity of the overall network, so that multiple neighboring root nodes do not create self-interference. The remote nodes are set to auto-channel so that they can fail over to a different root nodes in the event of the failure of their primary root node. When utilizing point-to-(multi)point WDS Bridge links to establish root nodes, these must also be on static independent channels, and thus must be accounted for in the overall channelization plan.
Mesh AP Mode: In this mode, the wireless radio acts like a repeater, providing both Wi-Fi connectivity to client devices as well as providing a backhaul connection to one or more remote APs. For single-band mesh access points, this is the only operational mode available. For dual-band access points, one of the bands (typically 5 GHz) will be configured to operate in this mode. The other band (typically 2.4 GHz) will be exclusively for providing Wi-Fi connectivity to client devices. Note that both Wi-Fi bands depend upon the mesh radio for backhaul. Since the mesh radio must spend half its time providing connectivity to client devices and half its time providing backhaul, the data capacity of the mesh radio for both backhaul and for Wi-Fi client connectivity is reduced by 50%. When there are multiple hops, the data capacity is reduced by 50% per hop. Thus, for two hops, the total data capacity is only 1/4, for three hops it is 1/8, for four hops it is 1/16, and so forth.
Mesh Point Mode: In this mode, available only in dual-band APs, the wireless mesh radio (typically 5 GHz) only provides wireless backhaul, and the other radio (typically 2.4 GHz) only provides Wi-Fi connectivity to client devices. Operationally, the mesh radio operates like a dynamic WDS bridge link, so while each hop still introduces latency which adds linearly, there is no 50% throughput penalty per hop, since the mesh radio is not also servicing client devices on the same radio and can be devoted exclusively to backhaul. Since Wi-Fi access to client devices is restricted to only one radio (typically 2.4 GHz), the overall client capacity of the AP is that of a single-band AP. Furthermore, even dual-band 802.11ac client devices will only be able to connect at 802.11n data rates on the 2.4 GHz radio.
Best Practice: Mesh APs should generally be configured to operate in Mesh Point mode. The loss of bandwidth capacity from lacking wireless 5 GHz wireless connectivity is minor compared to the loss of bandwidth capacity from losing 50% of bandwidth per hop. This also allows for the transmit power of the mesh radios to be set at their maximum value, so as to provide the maximum signal strength between nodes without being imbalanced with the low transmit power capability of most 5 GHz client devices.
In both operational modes, the overall data capacity of a mesh AP is reduced as compared to the same AP operating in a conventional configuration with a wired Ethernet connection to a wired switch infrastructure. Accordingly, a mesh Wi-Fi network will never have the same level of throughput and client capacity of a conventional Wi-Fi network.
Figure 7 shows an example mesh network deployed using the Best Practices highlighted above. This is an RV park with 437 spaces spread across a roughly 2000' x 1000' area. The main distribution frame (MDF) is in the southwest corner of the property, and trees in parts of the property preclude direct line-of-sight to many locations.
Figure 7: Example of a mesh network, utilizing point-to-multipoint links to create additional root nodes.
The red links and bubbles indicate WDS Bridge links from the MDF to each of the root APs. In some cases, multiple WDS Bridge links in series need to be established. The point to point links are designated by Master or Slave with a letter and number index. (For example, the WDS Bridge link going between the MDF and G8-R is designated link D, with [Master D] connected to [Slave D1]).
The point-to-(multi)point WDS Bridge utilizing 80 MHz channels on the UNII-2 and UNII-2e bands (i.e. channels 52-64, 100-112, 116-128). Each root AP is set to a static 40 MHz channel on the 5 GHz band in the UNII-1 and UNII-3 bands (i.e. channels 36-40, 44-48, 149-153, and 157-161).


text:
Q: Add lib or module return 'unused import statement' Why does import error(unused import statement) appear when I add Library or Module by Project Structure?
It's the same for Clean or Rebuild project.
What's the problem?
For example, in Project1, 'unused import statement' is no problem. But
Project2 occurs at 'unused import statement'

A: You need to check in settings.gradle like that..

redpajama_set_name: RedPajamaStackExchange


At the Lester Memorial Methodist Church on Sunday, Jan. 27, formal announcement was made of the generous gift just made by Mr. and Mrs. P.H. Horton. These two prominent workers in the church are donating an Allen electronic organ, costing $8,634.43.
The interior of the church will be greatly changed to accommodate the new instrument. Room will be arranged for the tubes, and for the four grills, an additional gift from the Hortons. Also, the choir loft will be entirely rebuilt.
The church agreed to assume the financial responsibility of installing the organ, an operation to cost around $2,500. It is eagerly hoped that the new instrument can be used for Easter Sunday.
The Oneonta Housing Project has been approved by the Federal Housing Administration, and work will be started within the next few days.
The contract has been let to the B&R Construction Company of Birmingham for the amount of $273,285.43 and will house 30 families. The project will be built in east Oneonta on State Highway 75.


Formed by a landslide? Zion National Park is renowned for its stunning vistas and dramatic rock formations. A new study suggests that the picturesque Utah park was created by an enormous landslide or "rock avalanche" some 4,800 years ago.


text:
by Linda Wiles | Apr 21, 2020 | Uncategorised
Anzac Day 2020 will be a vastly different commemoration due to the COVID-19 pandemic. With services across the region cancelled, residents are encouraged to take part in The Driveway Tribute to the Fallen initiative.
Cootamundra-Gundagai Regional Council is endorsing the initiative and encourages residents across the region to assemble in their driveways from dawn to commemorate Anzac Day 2020 reflecting on the sacrifices our fallen heroes.
What began as a grassroots idea to mark Australia's great day of remembrance has grown into a national campaign with RSL branches in every state unanimously endorsing the gesture, with families and individuals across the nation expected to stand at their gates, on balconies or verandahs at 6am and hold a candle to fallen heroes.
Local radio stations have come on board and will be broadcasting special programs to coincide with the initiative.
ABC Radio coverage for Anzac Day will be:
5.30am: A live broadcast of the National Memorial Service from the Australian War Memorial on ABCTV, iview, Radio and streamed on Facebook and YouTube. This includes from around 6am, The Last Post and a minute of silence, where you can pay your respect at the same time as your local community.
11.30am: Quiet moment of reflection which includes The Ode, The Last Post followed by a minute silence across ABCTV, iview, Radio and Facebook and YouTube.
6.55pm TV and 7.05pm Radio: The Governor-General, David Hurley Anzac Day message.
Local service on TV, Local Radio, Facebook and YouTube Streams:
NSW: Sydney, Anzac Memorial Hyde Park:Morning service 10:00am – 10:30am
Roccy FM 's Production Manager/ Breakfast Announcer Dave Quigley has confirmed the station will be doing a Special ANZAC Day presentation starting at 5.30am (on Saturday) which will run across the FM Network, coinciding with the RSL's campaign for 'Light Up The Dawn'.
"There will be a number of elements to this special event, including The Last Post and a minutes silence so we can remember the sacrifices made by many and pay our respects together," Mr Quigley said.
2TVR Sounds of The Mountains, will be participating with special segments throughout the day. Station Manager-Technician Dave Eisenhauer provided a rundown of the stations programs with pre-recorded messages from Tumut and Gundagai RSL Sub branch members.
"We started work on this many weeks ago before anything was announced about the national radio and TV doing national broadcast services. Ours is really local and will sound very familiar to the communities in our region and will certainly complement the big broadcasters' ceremonies and services," Mr Eisenhauer said.
Mr Eisenhauer added, "There's also a dawn service recorded for broadcast, this is from Tumut RSL Sub Branch but is designed to be shared across the whole region as we will also be broadcasting to Tumbarumba, Walwa and district on the morning of the 25th as well as Gundagai and Tumut regions.
The sub branches have really put in an extra effort this year, and the station is proud to be able to do our part in bringing something special to the region on Saturday,"
Member for Cootamundra Steph Cooke encouraged all to commemorate Anzac Day at home and has a tutorial on wreath making on her Facebook page.
https://www.facebook.com/stephcookeMP/videos/223712292223887/
Local Cootamundra Business, Coota Signs, has made available to businesses an Anzac Day sticker for display free of charge. The stickers are made from easy to apply vinyl and are easy to remove. There is an option to donate $5.00 of which 100% will be donated to Legacy. To date the business has raided over $1350 for this worthwhile cause.
CGRC mayor Cr Abb McAlister said the initiative has the potential to make Anzac Day 2020 a very special event.
"I'd like to encourage residents to take part in this initiative, and unite in recognising all armed services and the sacrifices they have made," Cr McAlister said.
"I do recognise that for many this day is a deeply personal event, and the reflection individual and private, but I would encourage those who can to post a picture of your family holding vigil to the Council Facebook page so we can keep it for prosperity and recording of this history making event," Cr McAlister added.
Picture and caption:
CGRC mayor Cr Abb McAlister is encouraging all residents to participate in the The Driveway Tribute to the Fallen initiative.


Our deep concerns about stigma, discrimination, and inadequate services have shaped our goals, programs, and results. We work to help people in their journey toward mental health recovery and wellness through direct service, public policy, education and outreach.
Our vision is improved lives for people with mental illnesses.


text:
Clare Bulb Company
Maximum number of separate products allowed in cart is 50
274 - 10 Allium Christophii (remove) £3.90 £3.90
267 - 20 Tritelea (remove) £1.95 £1.95
63 - 20 Lobularis (remove) £4.50 £4.50
282 - 3 Allium Gladiator (remove) £6.50 £6.50
480 - 20 Specie Crocus Prins Claus (remove) £2.95 £2.95
27 - 2kgs Narcissus mix (remove) £5.60 £5.60
122 - 20 Tres Chic (remove) £7.65 £7.65
115 - 10 Apricot Impression (remove) £2.65 £2.65
292 - 50 Allium Drumsticks (remove) £4.75 £4.75
1D112 - 25kgs Mixed Daffodils (remove) £48.50 £48.50
293 - 20 Iris Reticulata (remove) £2.25 £2.25
117 - 50 Apricot Impression (remove) £12.00 £12.00
320 - 250 English bluebells (remove) £43.95 £43.95
140 - 10 Black Parrot (remove) £3.90 £3.90
47 - 20 Hawera (remove) £3.80 £3.80
330 - 250 Blue Pearl (remove) £18.90 £18.90
323 - 10 Mount Everest (remove) £19.75 £19.75
142 - 10 Rococco (remove) £3.90 £3.90
324 - 10 Gladiator (remove) £19.75 £19.75
150 - 50 Abba (remove) £13.90 £13.90
144 - 50 Rococo (remove) £18.50 £18.50
137 - 10 Apricot Parrot (remove) £3.90 £3.90
50 - 20 Quail (remove) £3.80 £3.80
67 - 50 Rip van Winkle (remove) £8.75 £8.75
341 - 10 Imperial lily Rubra (remove) £29.50 £29.50
160 - 10 Stresa (remove) £2.40 £2.40
327 - 25 Allium Nigrum Multibulbosum (remove) £11.50 £11.50
153 - 50 Peach Blossom (remove) £15.90 £15.90
146 - 50 Super Parrot (remove) £21.00 £21.00
342 - 1 Imperial lily Aurora (remove) £3.30 £3.30
86 - 20 Royal virgin (remove) £6.85 £6.85
350 - 100 Prince Charles (remove) £23.50 £23.50
162 - 50 Stresa (remove) £10.30 £10.30
721 - 50 Muscari Venus (remove) £7.70 £7.70
70 - 10 Red Apeldoorn (remove) £2.65 £2.65
352 - 100 Queen of the Night (remove) £32.50 £32.50
157 - 10 Blue Diamond (remove) £2.95 £2.95
360 - 250 Quail (remove) £42.75 £42.75
353 - 100 Apricot Impression (remove) £23.50 £23.50
52 - 100 Quail (remove) £17.30 £17.30
180 - 50 Saxatillis (remove) £7.30 £7.30
347 - 10 Imperial lily Persica (remove) £27.50 £27.50
724 - 50 Muscari Valerie Finnis (remove) £6.50 £6.50
88 - 20 Mixed tulips (remove) £4.95 £4.95
200 - 10 Prepared Carnegie (remove) £6.90 £6.90
90 - 100 Mixed tulips (remove) £23.50 £23.50
Subtotal £620.15
Current shipping is P & P Shipping £6.50
Tax (Inc) £104.44
Your Location : UNITED KINGDOM- change
Currency is British Pound Total £626.65


Cava Brut Reserva. 24 months in bottle. Volume: 75 cl. Winery: Juvé y Camps. D.O.: D.O. Cava. Production area: Cataluña. Grapes used in this wine: Chardonnay.
Cava Brut Gran Reserva. 48 months in bottle. Volume: 75 cl. Winery: Gramona. D.O.: D.O. Cava. Production area: Cataluña. Grapes used in this wine: Chardonnay.


as Supreme Energy, Spirit, or Awareness.
presence of the eternal, changeless, Peace of the Self.
as spirit, and practiced a spirituality centered in You.
civilizations worthy of our respect and emulation.
as the Supreme Energy, Force, at the beginning of all being.
One, eternal, omnipresent, Spiritual Force.
Its most intelligent, quiet, and serene state.
self, rather than Eternal Awareness.
intellects, and egos throughout the cosmic manifestations.
beyond time, Space, Sound, and Silence.
and we come back home to our Eternal, Infinite, Self, You.
being purified of body, mind, intellect, and ego.
calmness of Self, everywhere in all sorts of situations.
emancipation: freedom from Maya, Your illusory energy.


text:
#include <aws/frauddetector/model/ListEventPredictionsResult.h>
#include <aws/core/utils/json/JsonSerializer.h>
#include <aws/core/AmazonWebServiceResult.h>
#include <aws/core/utils/StringUtils.h>
#include <aws/core/utils/UnreferencedParam.h>

#include <utility>

using namespace Aws::FraudDetector::Model;
using namespace Aws::Utils::Json;
using namespace Aws::Utils;
using namespace Aws;

ListEventPredictionsResult::ListEventPredictionsResult()
{
}

ListEventPredictionsResult::ListEventPredictionsResult(const Aws::AmazonWebServiceResult<JsonValue>& result)
{
  *this = result;
}

ListEventPredictionsResult& ListEventPredictionsResult::operator =(const Aws::AmazonWebServiceResult<JsonValue>& result)
{
  JsonView jsonValue = result.GetPayload().View();
  if(jsonValue.ValueExists("eventPredictionSummaries"))
  {
    Array<JsonView> eventPredictionSummariesJsonList = jsonValue.GetArray("eventPredictionSummaries");
    for(unsigned eventPredictionSummariesIndex = 0; eventPredictionSummariesIndex < eventPredictionSummariesJsonList.GetLength(); ++eventPredictionSummariesIndex)
    {
      m_eventPredictionSummaries.push_back(eventPredictionSummariesJsonList[eventPredictionSummariesIndex].AsObject());
    }
  }

  if(jsonValue.ValueExists("nextToken"))
  {
    m_nextToken = jsonValue.GetString("nextToken");

  }

  return *this;
}

redpajama_set_name: RedPajamaGithub


Herewith are a few photos of the completed cradle.
I did use some 18mm beading in its construction to which I screwed the relative parts. I feel confident that the cradle will take some rough treatment with these additions.
As for the bottom, I screwed it on at both ends and used Liquid Nails along the sides which I hope will hold and take some of the expected rough treatment.
As for the positioning the actual "box" to the end pieces, all I did there was find the centre of the rockers - from the drawings you provided - and measured the same distance up at both ends. Then it was somewhat guesswork getting it straight and parallel.
The sloping edges of the back pieces helped in this exercise.
Finally, the painting. Expecting some rough treatment and the need to sponge it over - what with perhaps dirty small hands - I went with water based enamel with a satin finish. The result was not as one would obtain with an off-the-shelf item but is acceptable. Kay, my wife, did the excellent job of prettying it up.
Overall, Kay and I are quite pleased with the result. We are sure our granddaughter will love it!
Thanks once again for your assistance in this project.


text:
The World in B-flat (MP3)
May 18, 2009 May 17, 2009 / By Marc Weidenbaum
What a difference a common key makes. The ingenious inbflat.net website displays 16 videos in a 4 x 4 grid. Each video is of a solo instrumentalist, playing guitar or keyboards or trumpet or xylophone (all in B-flat, per the work's title), and the listener/user is invited to initiate the clips simultaneously, or at any interval. Here's an image detail:
The resulting music is ever-shifting, but free of anything approximating tension or dissonance — it's lilting, subtle, peaceful, and quite beautiful. The site was developed as an experiment by Darren Solomon, of the group Science for Girls. He's made a formal, fixed recording of one "performance" of the installation (MP3), and has invited individuals to contribute their own videos. He proposes that the MP3 be listened to while you perform, in order to provide some sense of inner coherence to the otherwise open-ended work. For anyone looking at what culture as formed by "Web 2.0" — which I'd define as a situation in which the network is greater than the sum of its participants — sounds like, this is a good starting point.
The title of Solomon's piece is presumably a nod to Terry Riley's In C, which pioneered the idea of a composition that consists of various parts that can be played in freely associated, musician-determined permutations.
[audio:http://www.inbflat.net/bflatmix.mp3|titles="In B-flat"|artists=Darren Solomon & Co.]
For an early iteration of the work, check out Solomon's January 22 post at scienceforgirls.net.
As a follow-up (this is the Internet, in which there is an answer-song to every song, including for every answer-song), someone developed tikirobot.net/BbBuddha, which invokes an "auto-replay" function, meaning the loops will play forever (a la the Buddha Machine), making for great background listening. (Several people recommended the inbflat.net website, so special thanks to the first of them, Michael Ross of myspace.com/prehab.)
Department: downstream / Tags: copyleft, free, software, sound-art, video /
Previous: Young Communicator
Next: MP3 Discussion Group: Burial/Four Tet's "Moth"/"Wolf Cub"
One thought on "The World in B-flat (MP3)"
marvelous marvelous thank you


text:
Colin T. Henry
chenry@kjs-law.com
Colin T. Henry has worked at Kralovec, Jambois & Schwartz since 2016, first as a law clerk, and currently as an associate attorney. Colin represents victims for injuries arising from medical malpractice, premises liability, motor vehicle negligence, products liability and other personal injury claims.
Colin attended the John Marshall Law School in Chicago where he received his Juris Doctor in 2016. While at John Marshall, he was a Dean's List student and a staff editor for the John Marshall Law Review. Mr. Henry also graduated in the top 25% of his class.
While in law school, Mr. Henry served as a judicial extern in the Motions Division of the Circuit Court of Cook County for the Honorable John P. Callahan, Jr. He joined Kralovec, Jambois & Schwartz as a law clerk in 2016, and has been an integral part of the KJS team ever since.
Colin grew up in Barrington, Illinois and graduated from Indiana University in 2013 where he earned a Bachelor's of Arts degree in History and a Minor in Business.
View All Verdicts & Settlements
Selected Verdicts
Kazminski v. Estrada, Kane County, 17 L 186 - $98,808.47
Selected Settlements:
$300,000 for a woman who suffered fractures to her leg and hand in a motor vehicle accident on I-294.
$250,000 for a woman who suffered a broken leg and hand after being struck head on by another vehicle.
$250,000 for a woman who suffered fractures to her right leg after falling off a dangerous/obstructed step.
Bar Admissions:
Illinois, 2016
United States District Court for the Northern District, 2017
J.D., John Marshall Law School, 2016
B.A., Indiana University, 2013
Chicago Bar Association
Illinois Super Lawyers – Rising Stars 2022


My wife is in the middle of crunch time to complete a massive paper for her Masters' Degree program in World History. With her facing a 30-page submission due in the middle of this upcoming week, I've been pulling extra time covering Matthew and Sarah, including virtually all of the last 30 hours or so. Not that I mind all that much, as it's afforded me the opportunity to get more pictures on the record, post some short videos to YouTube and sync up with SmugMug. And while the most ardent followers on FriendFeed (and Twitter or Facebook) have seen much of the content already, I thought I'd share some of it here as well, retaining some of the personal nature of this blog, even as we've swayed heavily toward tech, and you've seen new writers crop up.
As not everyone is as digital as we are, we've had requests from the extended family for more formal photos of the twins, so they can share them in Holiday letters and such. But when everything is digital, it's hard to explain to my grandmother just why there's no such thing as a negative any more. So... we trucked off to J.C. Penney's last Saturday and got the twins photographed in studio. As most parents will no doubt tell you, they were worst behaved when we needed them to be good, and were smiling most just five minutes after we left. In between the cries and complaints, the team managed to snag some pretty good photos. One is below, and all are uploaded to SmugMug.
As Matthew and Sarah get bigger, approaching five months, they have filled out quite a bit, and are no longer needing to be constantly held. This affords for more "tummy time" and they are now interacting more with one another, even if it is just a quick poke or stare.
Their growth also affords us the opportunity to try out new toys. My favorite (and theirs) is a new jumper to bounce in our doorway. Padded with blankets, due to their small size, both Matthew and Sarah have spent some good time in the jumper, bouncing to and fro, and expending energy until they tire out and beg for food.
As has been true since their very birth, their growth is being chronicled and shared with you. Some might fear for safety and privacy, but we're knowing that transparency and openness is the way to go. Kay Ballard even called it "Family 2.0". All I can say is that as we got two kids at once, maybe it's fitting.
To see all our baby videos, check out our YouTube channel at: http://www.youtube.com/user/asypta.


text:
American Cities List / Guide to Ohio
Rossford, OH Demographics
Males: 3,075 (48.0%), Females: 3,331 (52.0%)
Median house value: $113,100 (year 2000)
Races in Rossford:
Ancestries: German (34.9%), Polish (19.3%), Irish (11.7%), English (8.5%), Slovak (6.6%), French (5.5%).
For population 25 years and over in Rossford
For population 15 years and over in Rossford city
Divorced: 8.9%
3.3% Foreign born (2.5% Europe, 0.6% Asia).
Population change in the 1990s: +364 (+6.0%).
Hospitals/medical centers near Rossford:
NORTHCOAST BEHAVIORAL HC-TOL (about 5 miles; TOLEDO, OH)
RIVERSIDE MERCY HOSPITAL (about 6 miles; TOLEDO, OH)
TOLEDO HOSPITAL (about 6 miles; TOLEDO, OH)
Airports certified for carrier operations nearest to Rossford:
TOLEDO EXPRESS (about 17 miles; TOLEDO, OH; ID: TOL)
WILLOW RUN (about 45 miles; DETROIT, MI; ID: YIP)
DETROIT METROPOLITAN WAYNE COUNTY (about 45 miles; DETROIT, MI; ID: DTW)
Other public-use airports nearest to Rossford:
SEAGATE HELISTOP (about 6 miles; TOLEDO, OH; ID: 6T2)
METCALF FIELD (about 8 miles; TOLEDO, OH; ID: TDZ)
TOLEDO SUBURBAN (about 12 miles; LAMBERTVILLE, MI; ID: DUH)
Amtrak station near Rossford:
4 miles: TOLEDO (415 EMERALD AVE.). Services: ticket office, fully wheelchair accessible, enclosed waiting area, public restrooms, public payphones, vending machines, free short-term parking, free long-term parking, call for car rental service, taxi stand, public transit connection.
Colleges/universities with over 2000 students nearest to Rossford:
UNIVERSITY OF TOLEDO (about 6 miles; TOLEDO, OH; Full-time enrollment: 15,999)
OWENS COMMUNITY COLLEGE-TOLEDO CAMPUS (about 8 miles; TOLEDO, OH; FT enrollment: 7,809)
BOWLING GREEN STATE UNIVERSITY-MAIN CAMPUS (about 15 miles; BOWLING GREEN, OH; FT enrollment: 16,537)
THE UNIVERSITY OF FINDLAY (about 39 miles; FINDLAY, OH; FT enrollment: 3,508)
EASTERN MICHIGAN UNIVERSITY (about 44 miles; YPSILANTI, MI; FT enrollment: 17,476)
WASHTENAW COMMUNITY COLLEGE (about 49 miles; ANN ARBOR, MI; FT enrollment: 5,436)
UNIVERSITY OF MICHIGAN-ANN ARBOR (about 50 miles; ANN ARBOR, MI; FT enrollment: 35,684)
Public high school in Rossford:
ROSSFORD HIGH SCHOOL (Students: 640; Location: 701 SUPERIOR ST; Grades: 09 – 12)
Public primary/middle schools in Rossford:
EAGLE POINT ELEMENTARY SCHOOL (Students: 319; Location: 203 EAGLE POINT RD; Grades: KG – 06)
ROSSFORD JUNIOR HIGH SCHOOL (Students: 314; Location: 651 SUPERIOR ST; Grades: 07 – 08)
INDIAN HILLS ELEMENTARY SCHOOL (Students: 282; Location: 401 GLENWOOD RD; Grades: PK – 06)
Private primary/middle school in Rossford:
ALL SAINTS SCHOOL (Students: 286; Location: 630 LIME CITY RD; Grades: PK – 8)
Library in Rossford:
ROSSFORD PUBLIC LIBRARY (Operating income: $740,795; Location: 720 DIXIE HIGHWAY; 65,531 books; 2,722 audio materials; 5,494 video materials; 177 serial subscriptions)