text:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="virtualDataSourceHandler" class="com.jaspersoft.jasperserver.api.engine.common.virtualdatasourcequery.VirtualDataSourceHandler">
        <property name="repositoryService">
             <ref bean="${bean.repositoryService}"/>
        </property>
        <property name="virtualDataSourceQueryService" ref="teiidVirtualQueryService"/>
    </bean>

    <bean id="teiidVirtualQueryService" class="com.jaspersoft.jasperserver.api.engine.common.virtualdatasourcequery.impl.TeiidVirtualDataSourceQueryServiceImpl">
        <property name="virtualReportDataSourceServiceFactory"><ref bean="virtualDataSourceServiceFactory"/></property>
        <property name="memoryConfig"><ref bean="teiidMemoryConfig"/></property>
        <property name="transactionManagerConfiguration"><ref bean="transactionManagerConfiguration"/></property>
        <property name="serverConfig"><ref bean="serverConfig"/></property>
        <property name="engineService"><ref local="engineService"/></property>
        <property name="repositoryService"><ref bean="${bean.repositoryService}"/></property>
        <property name="poolTimeoutInMinute" value="720"/>
        <property name="useSubDSTableList" value="true"/>
        <property name="virtualDataSourceConfigList">
            <list>
                <bean class="com.jaspersoft.jasperserver.api.engine.common.virtualdatasourcequery.VirtualDataSourceConfig">
                    <property name="dataSourceURI" value="/organizations/organization_1/datasources/BigDataConnectors"/>
                    <property name="additionalDataSourceList">
                        <list>
                            <!--MONGODB CONNECTOR SAMPLE
                                EXAMPLE OF MAPPING MONGODB DOCUMENT TO RELATIONAL SCHEMA:
                                   DOCUMENT:  { h"_id": 1, "student_id": 0, "state": "OR", "score": 55.59}
                                   SCHEMA:  CREATE FOREIGN TABLE student_scores(id varchar(25), student_id integer, state varchar(25), score integer) OPTIONS(UPDATABLE 'TRUE');
                                Here is the reference link for defining relational schema for MongoDB:
                                https://docs.jboss.org/author/display/TEIID/MongoDB+Translator
                            -->
                            <!-- bean class="com.jaspersoft.jasperserver.api.engine.common.virtualdatasourcequery.teiid.impl.MongoDBTeiidConnectorImpl">
                                <property name="dataSourceName" value="MongoDB" />
                                <property name="remoteServerList" value="127.0.0.1:27017" />
                                <property name="schemaText" value="CREATE FOREIGN TABLE student_scores(id varchar(25), student_id integer, state varchar(25), score integer) OPTIONS(UPDATABLE 'TRUE');" />
                                <property name="database" value="test" />
                            </bean  -->
                        </list>
                    </property>
                </bean>
            </list>
        </property>

        <property name="defaultTranslatorConfig"><ref bean="defaultTranslatorConfig"/></property>
        <property name="translatorConfigList">
            <list>
                <bean class="com.jaspersoft.jasperserver.api.engine.common.virtualdatasourcequery.teiid.TranslatorConfig">
                    <property name="productName" value="oracle"/>
                    <property name="translatorName" value="oracle"/>
                    <property name="translatorFactoryClass" value="org.teiid.translator.jdbc.oracle.OracleExecutionFactory"/>
                </bean>
                <bean class="com.jaspersoft.jasperserver.api.engine.common.virtualdatasourcequery.teiid.TranslatorConfig">
                    <property name="productName" value="postgresql"/>
                    <property name="translatorName" value="postgresql"/>
                    <property name="translatorFactoryClass" value="org.teiid.translator.jdbc.postgresql.PostgreSQLExecutionFactory"/>
                </bean>
                <bean class="com.jaspersoft.jasperserver.api.engine.common.virtualdatasourcequery.teiid.TranslatorConfig">
                    <property name="productName" value="Microsoft SQL Server"/>
                    <property name="translatorName" value="sqlserver"/>
                    <property name="translatorFactoryClass" value="org.teiid.translator.jdbc.sqlserver.SQLServerExecutionFactory"/>
                </bean>
                <bean class="com.jaspersoft.jasperserver.api.engine.common.virtualdatasourcequery.teiid.TranslatorConfig">
                    <property name="productName" value="db2"/>
                    <property name="translatorName" value="db2"/>
                    <property name="translatorFactoryClass" value="org.teiid.translator.jdbc.db2.DB2ExecutionFactory"/>
                </bean>
                <bean class="com.jaspersoft.jasperserver.api.engine.common.virtualdatasourcequery.teiid.TranslatorConfig">
                    <property name="productName" value="ingres"/>
                    <property name="translatorName" value="ingres"/>
                    <property name="translatorFactoryClass" value="org.teiid.translator.jdbc.ingres.IngresExecutionFactory"/>
                </bean>
                <bean class="com.jaspersoft.jasperserver.api.engine.common.virtualdatasourcequery.teiid.TranslatorConfig">
                    <property name="productName" value="metamatrix"/>
                    <property name="translatorName" value="metamatrix"/>
                    <property name="translatorFactoryClass" value="org.teiid.translator.jdbc.mm.MetaMatrixExecutionFactory"/>
                </bean>
                <bean class="com.jaspersoft.jasperserver.api.engine.common.virtualdatasourcequery.teiid.TranslatorConfig">
                    <property name="productName" value="vertica"/>
                    <property name="translatorName" value="jdbc-simple"/>
                    <property name="translatorFactoryClass" value="org.teiid.translator.jdbc.SimpleJDBCExecutionFactory"/>
                </bean>
                <bean class="com.jaspersoft.jasperserver.api.engine.common.virtualdatasourcequery.teiid.TranslatorConfig">
                    <property name="productName" value="mysql"/>
                    <property name="translatorName" value="mysql5"/>
                    <property name="translatorFactoryClass" value="org.teiid.translator.jdbc.mysql.MySQL5ExecutionFactory"/>
                </bean>
                <bean class="com.jaspersoft.jasperserver.api.engine.common.virtualdatasourcequery.teiid.TranslatorConfig">
                    <property name="productName" value="hive"/>
                    <property name="translatorName" value="hive"/>
                    <property name="translatorFactoryClass" value="org.teiid.translator.hive.HiveExecutionFactory"/>
                </bean>
            </list>
        </property>

        <!--  example to include synonym table for specific data source -->
        <!--property name="importPropertyMap">
            <map>
                <entry key="FoodmartDataSource">
                        <map>
                            <entry key="importer.tableTypes" value="TABLE,VIEW,SYNONYM"/>
                        </map>
                </entry>
            </map>
        </property -->

        <!--  map custom data source to teiid data source -->
        <property name="dataSourceServiceToTeiidConnectorMap">
            <map>
                <entry key="com.jaspersoft.cassandra.jasperserver.CassandraDataSourceService">
                    <bean class="com.jaspersoft.jasperserver.api.engine.common.virtualdatasourcequery.teiid.impl.CassandraTeiidConnectorImpl">
                    </bean>
                </entry>
                <entry key="com.jaspersoft.hadoop.hive.jasperserver.HiveDataSourceService">
                    <bean class="com.jaspersoft.jasperserver.api.engine.common.virtualdatasourcequery.teiid.impl.HiveTeiidConnectorImpl">
                    </bean>
                </entry>
                <entry key="com.jaspersoft.mongodb.jasperserver.MongoDbDataSourceService">
                    <bean class="com.jaspersoft.jasperserver.api.engine.common.virtualdatasourcequery.teiid.impl.MongoDBTeiidConnectorImpl">
                    </bean>
                </entry>
            </map>
        </property>

        <property name="logConfigList">
            <list>
                <bean class="com.jaspersoft.jasperserver.api.engine.common.virtualdatasourcequery.teiid.LogConfig">
                    <property name="LogContext" value="org.teiid.CONNECTOR"/>
                    <property name="LogLevel" value="DETAIL"/>
                </bean>
                <bean class="com.jaspersoft.jasperserver.api.engine.common.virtualdatasourcequery.teiid.LogConfig">
                    <property name="LogContext" value="org.teiid.RUNTIME"/>
                    <property name="LogLevel" value="DETAIL"/>
                </bean>
            </list>
        </property>
    </bean>

    <bean id="defaultTranslatorConfig" class="com.jaspersoft.jasperserver.api.engine.common.virtualdatasourcequery.teiid.TranslatorConfig">
        <property name="productName" value="generic"/>
        <property name="translatorName" value="jdbc-simple"/>
        <property name="translatorFactoryClass" value="org.teiid.translator.jdbc.SimpleJDBCExecutionFactory"/>
    </bean>

    <bean id="teiidMemoryConfig" class="com.jaspersoft.jasperserver.api.engine.common.virtualdatasourcequery.impl.TeiidMemoryConfigImpl">
        <!-- disk storage directory -->
        <!-- property name="diskDirectory" value="temp"/ -->
        <!-- enable disk storage  -->
        <property name="useDisk" value="true"/>
        <!--
        Usage of extremely large VM sizes and or datasets requires additional considerations. Teiid has a non-negligible
        amount of overhead per batch/table page on the order of 100-200 bytes. Depending on the data types involved each
        full batch/table page will represent a variable number of rows (a power of two multiple above or below the
        processor batch size). If you are dealing with datasets with billions of rows and you run into OutOfMemory
        issues, consider increasing the processor-batch-size to force the allocation of larger batches and table pages
        -->
        <property name="processorBatchSize" value="256"/>
        <!-- the batch size to use when reading data from a connector -->
        <!-- property name="connectorBatchSize" value="512"/ -->
        <!-- max open files for caching in cache directory -->
        <property name="maxOpenFiles" value="64"/>
        <!-- the max file size (in MB) (default 2048MB) -->
        <property name="maxFileSize" value="2048"/>
        <!--
        setting determines the total size in kilobytes of batches that can be used by one active plan may be in addition
        to the memory held based on max-reserve-kb. Typical minimum memory required by Teiid when all the active plans
        are active is #active-plans*max-processing-kb. The default value of -1 will auto-calculate a typical max based
        upon the max heap available to the VM and max active plans. The auto-calculated value assumes a 64bit
        architecture and will limit processing batch usage to 10% of memory beyond the first 300 megabytes (which are
        assumed for use by the AS and other Teiid purposes)
        -->
        <property name="maxProcessingKb" value="-1"/>
        <!--
        setting determines the total size in kilobytes of batches that can be held by the BufferManager in memory.
        This number does not account for persistent batches held by soft (such as index pages) or weak references.
        The default value of -1 will auto-calculate a typical max based upon the max heap available to the VM.
        The auto-calculated value assumes a 64bit architecture and will limit buffer usage to 50% of the first
        gigabyte of memory beyond the first 300 megabytes (which are assumed for use by the AS and other Teiid purposes)
        and 75% of the memory beyond that.
        -->
        <property name="maxReserveKb" value="-1"/>
        <!--
        get the max amount of buffer space for caching (file storage) in MB
        For table page and result batches the buffer manager will we a limited number of files that are dedicated to
        a particular storage size. However, as mentioned in the installation, creation of Teiid lob values (for example
        through SQL/XML) will typically create one file per lob once the lob exceeds the allowable in memory size of
        8KB. In heavy usage scenarios, consider pointing the buffer directory on a partition that is routinely
        defragmented. By default Teiid will use up to 50GB of disk space. This is tracked in terms of the number of
        bytes written by Teiid. For large data sets, you may need to increase the max-buffer-space setting.
        -->
        <property name="maxBufferSpace" value="51200"/>
        <!-- persisted inline lobs in file storage -->
        <property name="inlineLobs" value="true"/>
        <!--
        the memory space for caching (in MB)
        set the value to -1 for using approximately 25% of what's set aside for the reserved (default -1)
        -->
        <property name="memoryBufferSpace" value="-1"/>
        <!--
        the max storage size for object (in byte)
        This represents the individual batch page size. If the processor-batch-size is increased and/or you are dealing
        with extremely wide result sets (several hundred columns), then the default setting of 8MB for the
        max-storage-object-size may be too low. The inline-lobs also account in this size if batch contains them.
        The sizing for max-storage-object-size is in terms of serialized size, which will be much closer to the raw
        data size than the Java memory footprint estimation used for max-reserved-kb. max-storage-object-size should
        not be set too large relative to memory-buffer-space since it will reduce the performance of the memory buffer.
        The memory buffer supports only 1 concurrent writer for each max-storage-object-size of the memory-buffer-space
        -->
        <property name="maxStorageObjectSize" value="8388608"/>
        <!--
        uses direct byte buffer (off heap = true) or heap byte buffer (off heap = false)
        Take advantage of the BufferManager memory buffer to access system memory without allocating it to the heap.
        Setting memory-buffer-off-heap to "true" will allocate the Teiid memory buffer off heap. Depending on whether
        your installation is dedicated to Teiid and the amount of system memory available, this may be preferable to
        on-heap allocation. The primary benefit is additional memory usage for Teiid without additional garbage
        collection tuning. This becomes especially important in situations where more than 32GB of memory is desired
        for the VM. Note that when using off-heap allocation, the memory must still be available to the java process and
        that setting the value of memory-buffer-space too high may cause the VM to swap rather than reside in memory.
        With large off-heap buffer sizes (greater than several gigabytes) you may also need to adjust VM settings.
        -->
        <property name="memoryBufferOffHeap" value="false"/>
    </bean>

    <bean id="transactionManagerConfiguration" class="com.jaspersoft.jasperserver.api.engine.common.virtualdatasourcequery.impl.TransactionManagerConfigurationImpl">
        <!--
         a stable ASCII string that must uniquely identify this TM instance. It must not exceed 51 characters or it will be truncated.
         -->
        <property name="serverId" value="TeiidEmbeddedServer-TransactionManager"/>
        <!--
         Journal fragment file 1
         -->
        <property name="logPart1Filename" value="transactionBtm1.log"/>
        <!--
        Journal fragment file 2
        -->
        <property name="logPart2Filename" value="transactionBtm2.log"/>
        <!--
        whether saving journal fragment files to log directory
        -->
        <property name="saveLogFilesToLogDirectory" value="true"/>
        <!--
        Set the journal to be used to record transaction logs. This can be any of disk, null or a class name.
        The disk journal is a classic implementation using two fixed-size files and disk forces, the null journal just allows one to disable logging.
        -->
        <property name="journal" value="null"/>
        <!--
        set logs forced to disk
        -->
        <property name="forcedWriteEnabled" value="false"/>
        <!--
        Are disk forces batched? Disabling batching can seriously lower the transaction manager's throughput.
        -->
        <property name="forceBatchingEnabled" value="true"/>
        <!--
        Should corrupted transactions log entries be skipped? Use only at last resort when all you have to recover is a pair of corrupted files.
        -->
        <property name="skipCorruptedLogs" value="true"/>
    </bean>

    <bean id="fileTranslator" class="com.jaspersoft.jasperserver.api.engine.common.virtualdatasourcequery.teiid.TranslatorConfig">
        <property name="productName" value="file"/>
        <property name="translatorName" value="file"/>
        <property name="translatorFactoryClass" value="org.teiid.translator.file.FileExecutionFactory"/>
    </bean>

    <bean id="serverConfig" class="com.jaspersoft.jasperserver.api.common.virtualdatasourcequery.teiid.ServerConfig">
        <!-- property name="transactionManagerJNDILookup" value="java:/comp/env/TransactionManager"/ -->
        <!-- property name="serverInit"><ref bean="serverInit"/></property -->
    </bean>

    <bean id="serverInit" class="com.jaspersoft.jasperserver.api.engine.common.virtualdatasourcequery.teiid.impl.TeiidServerInitImpl"/>

</beans>

redpajama_set_name: RedPajamaGithub


Your opportunity to win an Amazon Echo Dot has arrived and it's as simple as like and comment for your chance to win.
Every new like or comment of our Facebook page or our competition post, will enter you into the prize draw. Make it fun and comment on our post and tell us how you will use your new Amazon Echo Dot or your special Malta Moments.
The competition will end on the 31st January 2019 and no new likes, comments and shares will be added to the prize draw after this date.
We will announce the winner, on the Chevron Facebook page, by the 4th February 2019.
Any entries after the 31st January 2019 will not be considered. Each contestant can only be entered into the draw a maximum of 3 times. Entries into the competition must supply correct information to be eligible for the prize; dubious entries will be removed from the draw. You must be 18 or over to enter. Competition is not open to Chevron employees or immediate family members. Prize has no monetary value and no exchanges can be made. Chevron reserves the right to cancel or change the competition at any time. Once the winner has been announced, they must claim their prize within 14 days from the winner announcement or they will forfeit the prize. The winner will be annouced on our Facebook page; to claim the prize, message us on Facebook or send us an email with your postal address. If the prize is not claimed, Chevron reserves the right to then offer the prize in another competition. This competition is run solely by Chevron and has no affiliation with any other parties.


Hi I'm Kev from Nottingham, a bit older than the oldest Mini .
Originally a Ritz still Silver but that is about all that's Ritz on it . Anybody else on here Road Rally?
road rallying sounds interesting, tell us more !
Take your favourite road for the Mini road Rally would probably use it after midnight with a strict time ie you have to do a 6 mile section in 12 mins including plotting the route because you don't know where you're going till you get to the section start. You have to stick to all 30-40 &50 limits in built up area's you have to STOP at all give ways. Most of the road sections are to get you to competitves wich are either very narrow white roads or private roads farm tracks old airfields etc. Rally's are between 120 & 190 miles long. Start around midnight finish 6am + The Mini can be competitive last Rally out a Historic 1275 won outright beat at least 3 Scooby's BMW 325i etc etc I wasn't driving had a poo night myself. It 's a real Blast and relatively cheap. If you want I'll dig out some photo's not all Mini but you'll get the idea. There is usually a prof photg on the rally too.
SOUNDS COOL. PICS WOULD BE NEAT TO SEE. IS IT LEGAL???
Hi there welcome to the site, cheers for the pics it looks like great fun!


Five Nigerian men with student visas have been arrested in connection with the murder of an African man in Taman Cendana, Sungai Chua.
Police chief Asst Comm Othman Nanyan said a resident of the housing area alerted the authorities of the incident at the back lane of Jalan Cendana 3 at about 8.30pm Friday.
"We believe that the victim died after he was attacked with machetes.
"A witness told us that three men had chased the victim and hacked him with machetes.
"We recovered two of the weapons from a drain and another some 10m away from the victim.
"A Hyundai Elantra, believed to be the victim's car, was parked some 100m away," he said.
ACP Othman said the body, believed to be African, had no identification.
The five suspects, ages 20 to 28, were picked between 11pm yesterday and 12.30am today.
ACP Othman said the suspects had valid student permits.


text:
(function(){
    var teamMembersPrizes =
    ['personData','teamData','publications','authentication','$timeout', '$mdMedia','$mdPanel','$rootScope',
    function (personData,teamData,publications,authentication, $timeout, $mdMedia, $mdPanel,$rootScope) {
        return {
            restrict: 'E',
            scope: {
                lab: '@',
                group: '@'
            },
            templateUrl: 'team/productivity/prizes/team.membersPrizes.html',
            link:
            function (scope,element,attrs) {
                //this._mdPanel = $mdPanel;

                scope.teamPrizes = [];
                scope.membersPrizes = [];

                scope.forms = {
                    'membersWork': 0,
                };
                var numberCards = Object.keys(scope.forms).length; // the number of cards with "Update" in each tab
                scope.updateStatus = [];
                scope.messageType = [];
                scope.hideMessage = [];
                for (var i=0; i<numberCards; i++) {
                    scope.updateStatus.push('');
                    scope.messageType.push('message-updating');
                    scope.hideMessage.push(true);
                }

                $rootScope.$on('removedLabPrizesMessage', function (event,data) {
                    getPrizes();
                });

                getPrizes();

                scope.renderPrizes = function (str, ind) {
                    if (str === 'new') {
                        scope.currentPage = 1;
                    }
                    scope.totalPrizes = scope.membersPrizes.length;
                    scope.selectedPrizes = [];
                    var toInclude = 0;
                    var toIncludeDueFrom = 0;
                    var toIncludeDueTo = 0;
                    scope.fromYearWork = parseInt(scope.fromYearWork,10);
                    scope.toYearWork = parseInt(scope.toYearWork,10);
                    for (var ind in scope.membersPrizes) {
                        //scope.membersPrizes[ind]['year'] = momentToDate(scope.membersPrizes[ind]['status_date'],undefined,'YYYY');
                        toInclude = 0;
                        toIncludeDueFrom = 0;
                        toIncludeDueTo = 0;
                        if (Number.isInteger(scope.fromYearWork)) {
                            if (scope.fromYearWork <= scope.membersPrizes[ind].year) {
                               toIncludeDueFrom = 1;
                            }
                        } else {
                            toIncludeDueFrom = 1;
                        }
                        if (Number.isInteger(scope.toYearWork)) {
                            if (scope.toYearWork >= scope.membersPrizes[ind].year) {
                               toIncludeDueTo = 1;
                            }
                        } else {
                            toIncludeDueTo = 1;
                        }
                        toInclude = toIncludeDueFrom * toIncludeDueTo;
                        if (toInclude === 1) {
                            scope.selectedPrizes.push(scope.membersPrizes[ind]);
                        }
                    }
                    scope.totalFromSearch = scope.selectedPrizes.length;

                    scope.totalPages = Math.ceil(scope.totalFromSearch / scope.pageSize);
                    scope.pages = [];
                    for (var num=1; num<=scope.totalPages; num++) {
                        scope.pages.push(num);
                    }
                    // Sort selectedPeople according to defined order, before
                    // defining page contents
                    scope.selectedPrizes = scope.selectedPrizes.sort(sorter);
                    scope.currPrizes = [];
                    for (var member = (scope.currentPage - 1) * scope.pageSize;
                            member < scope.currentPage * scope.pageSize && member < scope.totalFromSearch;
                            member++) {
                        scope.currPrizes.push(Object.assign({}, scope.selectedPrizes[member]));
                    }
                };
                scope.submitMembersPrizes = function (ind) {
                    scope.updateStatus[ind] = "Updating...";
                    scope.messageType[ind] = 'message-updating';
                    scope.hideMessage[ind] = false;
                    var data = {addPrizes: scope.newLabPrizes};
                    publications.addMembersPrizes(scope.group,scope.lab,data)
                        .then( function () {
                            getPrizes();
                            $rootScope.$broadcast('updateLabPrizesMessage', data);
                            if (ind > -1) {
                                scope.updateStatus[ind] = "Updated!";
                                scope.messageType[ind] = 'message-success';
                                scope.hideMessage[ind] = false;
                                $timeout(function () { scope.hideMessage[ind] = true; }, 1500);
                            }
                        },
                        function () {
                            scope.updateStatus[ind] = "Error!";
                            scope.messageType[ind] = 'message-error';
                        },
                        function () {}
                        );
                    return false;
                };
                scope.addPrize = function (pub) {
                    var alreadyAdded = scope.newLabPrizes.filter(
                            function(el) {
                                return el.id === pub.id;
                            });
                    if (alreadyAdded.length === 0) {
                        scope.newLabPrizes.push(pub);
                    }
                };
                scope.removeRow = function (current, ind) {
                    current.splice(ind,1);
                };

                function getPrizes() {
                    publications.thisTeamPrizes(scope.group, scope.lab)
                        .then(function (response) {
                            scope.teamPrizes = response.data.result;
                            getMembersPrizes();
                        })
                        .catch(function (err) {
                            console.log(err);
                        });
                }
                function getMembersPrizes() {
                    publications.thisMembersPrizes(scope.group, scope.lab)
                        .then(function (response) {
                            scope.membersPrizesAll = response.data.result;
                            var labPubIDs = scope.teamPrizes.map(function(obj){return obj.id;});
                            scope.membersPrizes = scope.membersPrizesAll.filter(
                                    function (obj) { return labPubIDs.indexOf(obj.id) === -1;});
                            initializeVariables();
                        })
                        .catch(function (err) {
                            console.log(err);
                        });
                }

                function initializeVariables() {
                    scope.sortReverse = true;
                    scope.sortType = 'year';
                    scope.currentPage = 1;
                    scope.pageSize = 10;

                    scope.newLabPrizes = [];

                    // computes the number of pages
                    scope.totalPrizes = scope.membersPrizes.length;
                    scope.totalPages = Math.ceil(scope.totalPrizes / scope.pageSize);
                    scope.pages = [];
                    for (var num=1; num<=scope.totalPages; num++) {
                        scope.pages.push(num);
                    }
                    scope.renderPrizes();
                }
                function sorter(a,b) {
                    if (scope.sortType === 'year') {
                        if (scope.sortReverse) {
                            return b[scope.sortType]-a[scope.sortType];
                        } else {
                            return a[scope.sortType]-b[scope.sortType];
                        }
                    } else {
                        if (scope.sortReverse) {
                            return -(a[scope.sortType] ? a[scope.sortType] : '')
                                .localeCompare(b[scope.sortType] ? b[scope.sortType] : '');
                        } else {
                            return (a[scope.sortType] ? a[scope.sortType] : '')
                                .localeCompare(b[scope.sortType] ? b[scope.sortType] : '');
                        }
                    }
                }

                /* for exporting */
                scope.exportPrizesSpreadsheet = function() {
                    var type = 'xlsx';
                    var wsName = 'Data';
                    var wb = {};
                    var selectedPrizes = convertData(scope.selectedPrizes);
                    var ws = XLSX.utils.json_to_sheet(selectedPrizes);
                    wb.SheetNames = [wsName];
                    wb.Sheets = {};
                    wb.Sheets[wsName] = ws;
                    var wbout = XLSX.write(wb, {bookType: type, bookSST: true, type: 'binary'});
                    var dateTime = momentToDate(moment(),undefined,'YYYYMMDD_HHmmss')
                    var from;
                    var to;
                    if (scope.fromYearWork === undefined || isNaN(scope.fromYearWork)) {
                        from = 'all';
                    } else {
                        from = scope.fromYearWork;
                    }
                    if (scope.toYearWork === undefined || isNaN(scope.toYearWork)) {
                        to = 'all';
                    } else {
                        to = scope.toYearWork;
                    }
                    var fname = 'team_members_prizes_' + from + '_' + to
                                + '_' + dateTime + '.' + type;
                    try {
                    	saveAs(new Blob([s2ab(wbout)],{type:"application/octet-stream"}), fname);
                    } catch(e) { if(typeof console != 'undefined') console.log(e, wbout); }
                };

                function s2ab(s) {
                	if(typeof ArrayBuffer !== 'undefined') {
                		var buf = new ArrayBuffer(s.length);
                		var view = new Uint8Array(buf);
                		for (var i=0; i!=s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;
                		return buf;
                	} else {
                		var buf = new Array(s.length);
                		for (var i=0; i!=s.length; ++i) buf[i] = s.charCodeAt(i) & 0xFF;
                		return buf;
                	}
                }
                function convertData(arrObj) {
                    // selects data for exporting
                    var data = [];
                    if (arrObj.length > 0) {
                        for (var el in arrObj) {
                            data.push({
                                "Prize": arrObj[el]['name'],
                                "Year": arrObj[el]['year'],
                                "Recipients": arrObj[el]['recipients'],
                                "Organization": arrObj[el]['organization'],
                                "Amount (€)": arrObj[el]['amount_euro'],
                                "Notes": arrObj[el]['notes']
                            });
                        }
                        return data;
                    }
                    return data;
                }
                function momentToDate(timedate, timezone, timeformat) {
                    if (timezone === undefined) {
                        timezone = 'Europe/Lisbon';
                    }
                    if (timeformat === undefined) {
                        timeformat = 'YYYY-MM-DD';
                    }
                    return timedate !== null ? moment.tz(timedate,timezone).format(timeformat) : null;
                }
            }
        };
    }];

    var teamLabPrizes =
    ['personData','teamData','publications','authentication',
     '$timeout', '$mdMedia','$mdPanel','$rootScope',
    function (personData,teamData,publications,authentication,
              $timeout, $mdMedia, $mdPanel,$rootScope) {
        return {
            restrict: 'E',
            scope: {
                lab: '@',
                group: '@'
            },
            templateUrl: 'team/productivity/prizes/team.labPrizes.html',
            link:
            function (scope,element,attrs) {

                scope.teamPrizes = [];

                scope.forms = {
                    'teamWorkRemove': 0,
                };
                var numberCards = Object.keys(scope.forms).length; // the number of cards with "Update" in each tab
                scope.updateStatus = [];
                scope.messageType = [];
                scope.hideMessage = [];
                for (var i=0; i<numberCards; i++) {
                    scope.updateStatus.push('');
                    scope.messageType.push('message-updating');
                    scope.hideMessage.push(true);
                }

                $rootScope.$on('updateLabPrizesMessage', function (event,data) {
                    getPrizes();
                    initializeDetails();
                });

                getPrizes();
                initializeDetails();

                scope.removePrize = function (pub) {
                    for (var ind in scope.teamPrizes) {
                        if (pub.labs_prizes_id === scope.teamPrizes[ind].labs_prizes_id) {
                            scope.teamPrizes.splice(ind,1);
                            scope.deletePrizes.push(pub);
                            break;
                        }
                    }
                    scope.renderPrizes('');
                };
                scope.submitPrizeRemoval = function(ind) {
                    if (scope.deletePrizes.length > 0) {
                        alert("This won't remove the prizes from the database." +
                          "\nIt will simply remove the connection of this lab with these prizes.");
                        scope.updateStatus[ind] = "Updating...";
                        scope.messageType[ind] = 'message-updating';
                        scope.hideMessage[ind] = false;
                        var data = {deletePrizes: scope.deletePrizes};
                        publications.removePrizesTeam(scope.group,scope.lab,data)
                            .then( function () {
                                initializeDetails();
                                getPrizes(ind);
                                $rootScope.$broadcast('removedLabPrizesMessage', data);
                                if (ind > -1) {
                                    scope.updateStatus[ind] = "Updated!";
                                    scope.messageType[ind] = 'message-success';
                                    scope.hideMessage[ind] = false;
                                    $timeout(function () { scope.hideMessage[ind] = true; }, 1500);
                                }
                            },
                            function () {
                                scope.updateStatus[ind] = "Error!";
                                scope.messageType[ind] = 'message-error';
                            },
                            function () {}
                            );
                    }
                    return false;

                };

                scope.renderPrizes = function (str, ind) {
                    if (str === 'new') {
                        scope.currentPage = 1;
                    }
                    scope.totalPrizes = scope.teamPrizes.length;
                    scope.selectedPrizes = [];
                    var toInclude = 0;
                    var toIncludeDueFrom = 0;
                    var toIncludeDueTo = 0;
                    scope.fromYearWork = parseInt(scope.fromYearWork,10);
                    scope.toYearWork = parseInt(scope.toYearWork,10);
                    for (var ind in scope.teamPrizes) {
                        //scope.teamPrizes[ind]['year'] = momentToDate(scope.teamPrizes[ind]['status_date'],undefined,'YYYY');
                        toInclude = 0;
                        toIncludeDueFrom = 0;
                        toIncludeDueTo = 0;
                        if (Number.isInteger(scope.fromYearWork)) {
                            if (scope.fromYearWork <= scope.teamPrizes[ind].year) {
                               toIncludeDueFrom = 1;
                            }
                        } else {
                            toIncludeDueFrom = 1;
                        }
                        if (Number.isInteger(scope.toYearWork)) {
                            if (scope.toYearWork >= scope.teamPrizes[ind].year) {
                               toIncludeDueTo = 1;
                            }
                        } else {
                            toIncludeDueTo = 1;
                        }
                        toInclude = toIncludeDueFrom * toIncludeDueTo;
                        if (toInclude === 1) {
                            scope.selectedPrizes.push(scope.teamPrizes[ind]);
                        }
                    }
                    scope.totalFromSearch = scope.selectedPrizes.length;

                    scope.totalPages = Math.ceil(scope.totalFromSearch / scope.pageSize);
                    scope.pages = [];
                    for (var num=1; num<=scope.totalPages; num++) {
                        scope.pages.push(num);
                    }
                    // Sort selectedPeople according to defined order, before
                    // defining page contents
                    scope.selectedPrizes = scope.selectedPrizes.sort(sorter);
                    scope.currPrizes = [];
                    for (var member = (scope.currentPage - 1) * scope.pageSize;
                            member < scope.currentPage * scope.pageSize && member < scope.totalFromSearch;
                            member++) {
                        scope.currPrizes.push(Object.assign({}, scope.selectedPrizes[member]));
                    }
                };

                function getPrizes() {
                    publications.thisTeamPrizes(scope.group, scope.lab)
                        .then(function (response) {
                            scope.teamPrizes = response.data.result;
                            scope.originalTeamPrizes = JSON.parse(JSON.stringify(scope.teamPrizes));
                            initializeVariables();
                        })
                        .catch(function (err) {
                            console.log(err);
                        });
                }
                function initializeVariables() {
                    scope.deletePrizes = [];
                    scope.sortReverse = true;
                    scope.sortType = 'year';
                    scope.currentPage = 1;
                    scope.pageSize = 10;

                    // computes the number of pages
                    scope.totalPrizes = scope.teamPrizes.length;
                    scope.totalPages = Math.ceil(scope.totalPrizes / scope.pageSize);
                    scope.pages = [];
                    for (var num=1; num<=scope.totalPages; num++) {
                        scope.pages.push(num);
                    }
                    scope.renderPrizes();
                }
                function initializeDetails() {
                    /*scope.pubTitles = [];
                    scope.thisprize = [];*/
                }
                function sorter(a,b) {
                    if (scope.sortType === 'year') {
                        if (scope.sortReverse) {
                            return b[scope.sortType]-a[scope.sortType];
                        } else {
                            return a[scope.sortType]-b[scope.sortType];
                        }
                    } else {
                        if (scope.sortReverse) {
                            return -(a[scope.sortType] ? a[scope.sortType] : '')
                                .localeCompare(b[scope.sortType] ? b[scope.sortType] : '');
                        } else {
                            return (a[scope.sortType] ? a[scope.sortType] : '')
                                .localeCompare(b[scope.sortType] ? b[scope.sortType] : '');
                        }
                    }
                }

                /* for exporting */
                scope.exportPrizesSpreadsheet = function() {
                    var type = 'xlsx';
                    var wsName = 'Data';
                    var wb = {};
                    var selectedPrizes = convertData(scope.selectedPrizes);
                    var ws = XLSX.utils.json_to_sheet(selectedPrizes);
                    wb.SheetNames = [wsName];
                    wb.Sheets = {};
                    wb.Sheets[wsName] = ws;
                    var wbout = XLSX.write(wb, {bookType: type, bookSST: true, type: 'binary'});
                    var dateTime = momentToDate(moment(),undefined,'YYYYMMDD_HHmmss')
                    var from;
                    var to;
                    if (scope.fromYearWork === undefined || isNaN(scope.fromYearWork)) {
                        from = 'all';
                    } else {
                        from = scope.fromYearWork;
                    }
                    if (scope.toYearWork === undefined || isNaN(scope.toYearWork)) {
                        to = 'all';
                    } else {
                        to = scope.toYearWork;
                    }
                    var fname = 'lab_prizes_' + from + '_' + to
                                + '_' + dateTime + '.' + type;
                    try {
                    	saveAs(new Blob([s2ab(wbout)],{type:"application/octet-stream"}), fname);
                    } catch(e) { if(typeof console != 'undefined') console.log(e, wbout); }
                };

                function s2ab(s) {
                	if(typeof ArrayBuffer !== 'undefined') {
                		var buf = new ArrayBuffer(s.length);
                		var view = new Uint8Array(buf);
                		for (var i=0; i!=s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;
                		return buf;
                	} else {
                		var buf = new Array(s.length);
                		for (var i=0; i!=s.length; ++i) buf[i] = s.charCodeAt(i) & 0xFF;
                		return buf;
                	}
                }
                function convertData(arrObj) {
                    // selects data for exporting
                    var data = [];
                    if (arrObj.length > 0) {
                        for (var el in arrObj) {
                            data.push({
                                "Prize": arrObj[el]['name'],
                                "Year": arrObj[el]['year'],
                                "Recipients": arrObj[el]['recipients'],
                                "Organization": arrObj[el]['organization'],
                                "Amount (€)": arrObj[el]['amount_euro'],
                                "Notes": arrObj[el]['notes']
                            });
                        }
                        return data;
                    }
                    return data;
                }
                function momentToDate(timedate, timezone, timeformat) {
                    if (timezone === undefined) {
                        timezone = 'Europe/Lisbon';
                    }
                    if (timeformat === undefined) {
                        timeformat = 'YYYY-MM-DD';
                    }
                    return timedate !== null ? moment.tz(timedate,timezone).format(timeformat) : null;
                }
            }
        };
    }];

    angular.module('managementApp')
        .directive('teamMembersPrizes', teamMembersPrizes)
        .directive('teamLabPrizes', teamLabPrizes)
})();


My dear Brethren: - Grace and peace through our Beloved Master!
As the passion of our Beloved Lord comes once more acutely to our attention because of "the Cross," it is well that we meditate again upon St. Paul's words in Hebrews 12:1-3 (Dia.): "Consider Him attentively who has endured such opposition from sinners, so that you may not be wearied, being discouraged in your souls." The specific primary grace accentuated by this text is our Lord's perfection in Patience – His cheerful continuance in well doing amid excruciating trials – His "narrow way" finished in His death at Calvary.
In these first three verses of Hebrews 12 St. Paul is offering in summation his discussion in Hebrews 11 of the faith of many of the Ancient Worthies – "For by this (faith) the ancients were attested." (Heb. 11:2,Dia.) By this Faith Abel ''was attested to be righteous" (v. 4); Enoch ''had been attested to have been well-pleasing to God"; Noah's "Pious fear" was attested (v. 7); Abraham's "obedience" was attested (v. 8); Moses' sense of values was attested (vs. 23-29), as he "appointed the Passover" (the type of "Christ our Passover," whose memory we once more cherish and revere), departed from Egypt (type of the world in sin), "passed through the Red Sea as though a dry place"; Rahab was attested "having received the spies in peace" (v. 31); others were attested by "a trial of mockings and scourges, and also of bonds and imprisonment, were stoned, sawn asunder, tempted, died by slaughter of the sword, went about in sheepskins and in goatskins, being destitute, afflicted, ill-treated.... all "attested by means of faith" (vs. 36-39).
Clearly enough, by means of just one of the virtues or graces many of the Ancients ''were attested"; and in none of them could it be said that they reflected in perfection those sterling qualities St. Paul attributes to them. But, as we "consider Him," we are reminded that not just one, but all, of the virtues and graces combined perfectly in Him–nothing lacking, whether we "consider" one or all of the "beauties of holiness" as our Lord reflected them in perfection of character.
Let us ponder now the Memorial of His death, a service commonly described throughout Christendom as the Lord's Supper–this and Baptism being regarded as the two Sacraments of the Christian religion. Over the years it has been one of the most controversial of subjects; and it is said there are now in existence about two hundred different variations in time of keeping, manner of keeping, and significance of keeping. This, as with so many other essential Christian doctrines, has been debated by able scholars and intellects–so severe at times as to cause them to overlook completely that this teaching above all others should designate the Prince of Peace and bring God's people to peace with each other. In fact, in 1 Cor. 10:16 St. Paul states that the participation in the bread and wine of this service is a "common union"; and this intimate relationship becomes accentuated when we consider that the individual grapes which produce the cup, and the individual grains of wheat which produce the bread, lose completely their divers identities and are fully fused or merged into one common whole.
If, then, there be no dispute on the day of the month, the same being the 14th of Nisan, there leaves but one other consideration – How do we determine when Nisan begins? Unfortunately, the Bible is silent on this matter, from which we may conclude it is not vital to our present spiritual state or our eternal salvation. Therefore, we can but do the best we can with what we have outside the Bible; and from Josephus and other Jewish records it would seem reasonably certain that the original Passover in Egypt was kept after the sun had crossed the Equator on its way north, thus definitely establishing the Passover as a Spring festival. And so the Jews have maintained it over the centuries – even as Brother Johnson has also stressed it in E-7:366, and as elaborated in our paper No. 85.
It should be clearly understood that when Brother Johnson made the positive statement in his 1933 Present Truth that we should "never observe the Memorial before the Vernal Equinox," he was not there quoting from Josephus, or from any one else; it was not even a paraphrase from Josephus or any other writer; it was his own firm conviction, with full support for his belief in the statement by Brother Russell to the same effect in the 1907 Watch Tower. We ourselves are in full harmony with what they determined; and we believe all of us should be firm in contending for what the Star Members gave us, because there is nothing anywhere to dispute their position. once this became clear to us a year ago, we node haste to correct what we would now consider a grievous mistake.
This question also has been subject to much heated contention throughout the Gospel Age. In the Roman Church only members in good standing may do so; and even those may not do so unless they first make confession before their priest the day before, and neither eat nor drink the next morning before the actual service. The Roman Church has used this as a cruel weapon of punishment over the years, as they "ex"-communicated various and sundry dissenters, with the dissenters often right, and the Church body wrong. This extreme of severity in the Roman Church is offset on the other hand by an extreme of laxity in some Protestant Churches, some allowing the man on the street to walk in and partake, without even asking what his professions may be.
"To be of this class requires fulness of consecration; and these are and will be the overcomers, who shall be deemed worthy of joint heirship with Christ Jesus their Lord in His kingdom. To this class, obedient and watchful, the Lord says, 'I will guide thee with mine eye'– 'Thou shalt guide me with thy counsel and afterward receive me to Glory," Those who can be guided only by continual scourging are not of the overcoming class, and will not be accounted worthy to be of Jesus' Bride, and have such a witness from the Lord through the Spirit of the Truth – contrast Ps. 32:8, 73:24 with Rev. 7:9,14." Therefore, let us keep the feast in simplicity of deportment, with sincerity of purpose, with malice toward none but with charity toward all.
Dear Brother Hoefle: – Greetings in our Master's Name!
A week ago I received the Nov-Dec. 1962 P.T. In that paper Bro. Jolly is still trying to justify himself in the eyes of his readers, and so adding falsehood to falsehood, he refers to me as a new disciple of "this sifter." In my letter I was pointing out the charge Bro. jolly layed against Brother Roach as "highly clericalistic"–but which fits him (Bro. jolly) – when he said Brother Roach acted contrary to Church rule. He is quite right in saying every local Church is mistress of her own affairs; but there's no truth when he said that this Church did appoint a Chairman for the Memorial service for 1962 (see P.T. July-Aug. p. 60, top of col. 2, and other places, too).
The brother in question only got to know that he was to be Chairman of that meeting the same-evening when he arrived for the service (that is what the Brother Told me sometime later); then it was Bro. Jolly said to the Brother, "I understand you are the Chairman," and asked him if he had any special preparation. He then handed him a program – and it was the only one of its kind that evening!
He said I accuse the Chairman of clericalism in the exercise of his proper chairmanship. He said some latitude must be given the Chairman – which is quite true; but I say no latitude was given to him when he had to go according to the dictates of the program given to him by Bro, Jolly at the beginning of the meeting. I happened to see the program as the service was in progress, as I did not even know what passage of the Bible to read when I was called upon to read the lesson for the service. Then for the first time I saw against my name what I was to read. Where, then, is the latitude given to the Chairman, as Bro. jolly claims in the Nov.-Dec. P.T., P. 90, par. 2?
Also, he said J, like "this sifter", used the same designation of Epiphany Campers Consecrated. Well, to put it the other way – Epiphany Consecrated Campers – would not extinguish his "strange fire. The only way to extinguish his "strange fire" is to teach according to the Star Member's presentation on the subject. Brother Johnson in E. Vol. 10, p. 209, states that in the finished picture the Camp "is the condition of truly repentent and believing, but NOT consecrated Jews and Gentiles," Bro. Jolly, who is not a Star Member, teaches just the contrary. In the same book, p. 672, Brother Johnson also offers a contradiction to Campers Consecrated. As for me, I prefer to accept the Star Member's teachings on the subject – and not that of a Levite.
P.S. Please. send us some more tracts.
Dearly beloved Brother Hoefle: – Grace and peace through our Lord!
I received your letters; also the stickers and all the tracts in good shape. Thank you. I could not put them out as yet.... We've had a hard winter, and I have been sick...... Thanks for letting me know about the lawsuit, for I do not get the P.T., but your writings prove that they both are wrong* It does not matter whether I read their errors. Anyway, they are just words, words, words. Praise the Lord for His Truth. I look forward to the articles, and just sit down and read them as soon as they come. The Lord surely spreads a table without 'vomit' – and how we praise Him and thank Him! Now wouldn't that be something if the Lord had 'vomit' on His table the same as the Levite groups! Where would we go?
The answer to your question re the crown-losers in the Epiphany Movement being a part of Little Babylon is in Epiphany Vol. 10, p. 588, twelve lines down. I believe the Youthful Worthies are part of Little Babylon, too (those who stay with them).
Mount Dora, Florida – Gentlemen: Please send me the following literature which you offer in your booklet ''The Resurrection of the Dead": – What is the Soul; Where are the Dead; The Three Babylons. Thank you!
I have received your letters, as well as the literature you have sent, and have thoroughly enjoyed all. To say it was enlightening would be putting it very mildly. This literature has cleared up many points troubling my mind concerning the Epiphany Truth. I realize now that instead of doubting Brother Johnson, as the Epiphany Messenger, with his many types and antitypes, and his mistaken expectations in connection with 1954-56, I should have paid more attention to the way Bro. Jolly tried to force their fulfillments. How clear now when one sticks to Brother Johnson's expositions of the Epiphany Truth. In short, most all my confusion lay in trying to harmonize Brother Johnson with Bro. Jolly–when I should have done the opposite.


text:
Tacos & Tequila Las Vegas Offers Summer Happy Hour Specials
In Las Vegas Events
Last Update July 5, 2010 /
Book 3 Nights, Save 20% At Rio Las Vegas Hotel!
Save 25%, Get 2 For 1 Thrill Rides at Stratosphere Las Vegas Hotel!
Just in time for summer, Tacos & Tequila (T&T), the rock 'n' roll-inspired Mexican restaurant at Luxor, introduces new happy hour specials. Locals and tourists will enjoy a variety of libations and tasty tacos at a special price, Monday through Friday from 3 to 5 p.m.
Guests will get their drink on with Hornitos shots, Dos Equis Lager or casaritas, available for just $5 each, or a bucket of authentic, Sol Mexican beers, served on ice, available for $18. Revelers with an appetite will go loco for T&T's delicious taco and beer combo featuring six signature tacos and a bucket of Sol Mexican beers for $29.
Tacos & Tequila embodies the cool modernism of the new Mexico City while incorporating traditional elements of Mexican style and high-end Las Vegas panache. The color mixture of old and new creates a vivid picture of brushed aluminum, dark wood, leather, bright fabrics and colored glass. The focal point of T&T's design is its abstract sombrero composed of 20 brushed-aluminum panels featuring thousands of laser-cut images, including two 30-foot dancing, tequila-drinking skeletons. Lit from within, the breathtaking panels stretch across the entire length of the restaurant floor and across the common area, connecting the T&T retail store and walk-up daiquiri bar.
The highly-stylized Mexican restaurant and bar with a fun, high-energy vibe and flavorful menu is located at Luxor Hotel and Casino, open daily from 11 a.m. until 11 p.m. The 8,000-square-foot venue embodies Mexican culture intermixed with rock-n-roll flair with a flavorful menu created for Drive This Entertainment! by the talents of world-renowned restaurateur and chef, Richard Sandoval. For more information contact T&T at 702.262.5225
Tacos & Tequila Information
Luxor Hotel and Casino

redpajama_set_name: RedPajamaCommonCrawl


text:
Become an Agent of Transformation
Your journey starts here. Learn about the 5 types of technologist, take our assessment and find out how to propel your career to the next level with AppDynamics.
Learn about AppDynamics
Read the Research Report
Get the key findings of our global research into the skills, characteristics and tools of today's technologists.
Meet five types of technologist who all have a crucial role to play in driving innovation and digital transformation.
Find out what type of technologist you are and how you can become an Agent of Transformation with our online assessment.
Meet the Agents of Transformation
Hear from some of the most innovative technologists in the industry about how they became Agents of Transformation.
Get the Agents of Transformation Handbook
Learn how AppDynamics enables Agents of Transformation with real time application and business intelligence.
Browse our latest resources for more from the Agents of Transformation.
NSFORMATION
Meet the Agents of Transformation - Loblaw Digital
Hesham Fahmy, VP Technology, Loblaw Digital
Hesham Fahmy is responsible for the technical delivery and operations of Loblaw's omni-channel digital experiences. These unify a customer's online and in-store experience so that no matter how and where they might engage, the customer is always delighted.
What is your current role and how much of your work at Loblaw Digital is focused on transformation or innovation-led projects?
The retail industry is at a major inflection point, with disruption from new entrants to the market, and ever-changing consumer demands. Customers today expect a lot more – they want to be delighted by every experience. As Canada's leading retailer, Loblaw is committed to meeting and exceeding these growing demands. From a personal perspective, I focus 100% of my time and energy looking to drive innovation across our digital services, whether it be developing and maintaining existing platforms, or exploring the latest technologies and planning where our future investments will be made.
We have to shift from being a traditional retail company to a technology company that also happens to be a retailer. It's a big task – we operate close to 20 different grocery banners, own one of the country's largest pharmacy chains and an apparel brand too! We also operate Canada's largest loyalty programme with over 18m active users – to put that into context, it's close to two thirds of Canada's adult population. We believe passionately in the importance of evolving the online grocery experience, and making it easier for Canadians to do their shopping.
Do you have a motto or maxim that you use to inform your approach?
"Be better today than you were yesterday, and be better tomorrow than you are today." Lorenzo Snow.
I am a big believer in seeking continuous improvement, and it applies as much to success as failure. I always ask myself if something could have been done better. Even as a leader, this simple question opens you up to listening to new ideas and approaches, and ultimately creates a culture where everyone is focused on sharing and learning, and doing a better job tomorrow than they did today.
Is there a book or podcast that really inspired you on your journey to becoming an Agent of Transformation?
I really love Reid Hoffman's (co-founder of LinkedIn) podcast series Masters of Scale, during which he coined the phrase 'Infinite Learner'. He then published an article online called 'Rules to Live By For Infinite Learners'. It's a great listen and read for anyone tasked with driving innovation and scale when everything around them is changing.
What do you see as being the single hardest step that technologists need to take in order to become an Agent of Transformation?
The biggest question Agents of Transformation can answer is 'Why?'. It's a skill to take something complex and present it in a language that everyone can understand. So often I see technologists get stuck in the weeds, passionate about a new technology but unable to communicate the value to the business – they just end up frustrated when people don't 'get it'. Agents of Transformation tailor the message for each audience member, tapping into their pain points and articulating how the innovation or solution will support them on a personal level.
What are the skills or character attributes that technologists should be focusing on in order to become Agents of Transformation and drive successful innovation projects?
Firstly, be an Infinite Learner. They need to revel in their ignorance, treat nothing as sacred, and be hungry to learn new things. They should aspire to always be better and do better.
Secondly, it's about being a great communicator. Any transformation project is all about People, Process and Technology, and in that order. Having the skills to get people onboard with a new idea or project is key – by listening you can get to the heart of what is keeping people up at night and then communicate how you can solve that issue, and the role they can actively play in the journey. Bringing people on-side in this way is critical to any digital transformation.
What advice would you give to other technologists who are looking to progress in their careers, to work on more exciting innovation-focused projects and to become an Agent of Transformation?
If you want to be an Agent of Transformation you have to take the initiative. So often people find themselves seeking out permission to work on a transformation project or approval to make a change. Or even worse, thinking that a new idea has to be fully baked and perfect before it can be shared. In my opinion, those are myths. If you have a great idea, go ahead and prototype it, get a proof of concept going. The learnings you will make during that process will be invaluable. Either you will fail, in which case you will learn more. Or you will succeed, in which case you will get noticed, get buy in and can really push on with your idea and make a huge impact.
How can companies foster a culture where those with aspirations to be Agents of Transformation can flourish?
A culture of innovation is critical if you want to drive transformation, and freedom to experiment and test new ideas is fundamental to success. Hackathons get loads of attention, but companies seem intent on making them one-off events or competitions. Why not always work with the Hackathon mentality? When people come to me with an idea, I encourage them to go ahead and do it! By working in this way – testing small, incremental changes and improvements – when things don't work, it's not a huge issue. But when they do, these small, innovative ideas can have a huge impact on the business and transform people's careers.
Research tells us that organisations need as many of 45% of their technologists to be operating as Agents of Transformation in the next 5-10 years if they want to remain competitive. What skills should organizations be looking for when recruiting technologists that have the potential and drive to become Agents of Transformation?
My key advice is to look beyond the CV and their professional experience. What have they done in life that was experimental, that proved they were hungry to learn? Perhaps it was taking on a personal challenge, learning a new skill such as languages or mastering a musical instrument, or a personal passion for a team or sport. If they do these things in their personal time too, it shows their true self.
How would you describe the role that AppDynamics is playing within your transformation strategy?
Having visibility into reliable, real-time data that you can act on is critical to any transformation initiative. We monitor the insights from AppDynamics religiously to make smart, iterative changes to our digital interfaces, and continuously improve the customer experience. The relevant metrics we can derive from AppDynamics, at both an operational and infrastructure level, and from synthetic monitoring of the customer experience, informs what we should actually be thinking about, as opposed to what we think we should be doing!
What advice would you give to a technologist that is considering AppDynamics?
Think about AppDynamics as a strategic solution that can drive improved customer experience and business performance. Be deliberate in the way you build dashboards by identifying the critical data and insight for your business that really matter, and then map the actions required in the event of an anomaly being detected. By being focused on these key metrics, and prioritising them, you reduce the noise to data ratio that is so overwhelming in business today.
How are you evolving your IT operations in response to the increasing demands of today's consumer?
In the past, we always tried to prevent failure but soon realised that our focus really needed to shift to building resilience in our IT operations. I work on the basis that there is potential for something to go wrong at any time, so it's critical that as a team we build and develop our infrastructure accordingly, and have the right insight, visibility and actions in place to minimise the customer impact of any performance issue.
Do you anticipate Artificial Intelligence and Machine Learning taking a bigger role in your business in the future?
Artificial Intelligence and Machine Learning will play a huge role in developing predictive models, from consumer trends and demands, to the types of personalised service and content consumers now expect, right through to identifying problems before they happen. The key for Loblaw is to adopt these new technologies and build an IT infrastructure that meets the growing demands of our customers so that we can continue to exceed their expectations.
Why are Agents of Transformation so critical to our future?
The rate of disruption and pace of change is increasing at an exponential rate. Unfortunately, many larger and well-established businesses suffer because they are too invested in doing things the way they have always been done, or from what is known as 'Innovator's Dilemma', where they try to protect their turf, which in turn hampers their ability to make step-change innovations. This leaves them open to attack from new entrants to the market and we have seen many established incumbents – who once seemed indestructible – disappear overnight.
Agents of Transformation are critical because they live and breathe innovation, challenge traditional ways of thinking and bring new ideas and approaches to the table. They are fundamental in driving the transformation that is required in today's highly competitive market.
What should organizations be doing in order to develop, nurture and support Agents of Transformation over the coming years?
People leave cultures not companies, so to attract and retain Agents of Transformation organizations must create a safe environment for these technologists to openly share ideas, have a curious mind and explore new ways of doing things. They need the freedom to challenge the status quo and to debate these changes without prejudice, and to know that failure is accepted as a learning opportunity and a natural consequence of innovation.
What are you likely to be focusing on over the next two years? Are there any exciting new innovation projects on the horizon?
Data is king, but what many companies are realising is that they are data rich but information (or rather insights) poor. It's easy to become overwhelmed with all the data, so the key is to bring in the right partners and technologies to help you make sense of it all, and identify the key metrics and data that enable the business to innovate. At Loblaw, we will continue to invest in this area so that we can derive actionable insights that will improve the overall customer experience. It's an exciting time.
"When people come to me with an idea, I encourage them to go ahead and do it! "
Augusto Dé Abreu
Ayman Assaf
Get the Handbook
Are you an Agent of Transformation already using AppDynamics? Join our Customer Advocacy Program.
Become an Agent of Transformation with real time application and business intelligence. Visit our website.
© AppDynamics 2018. All rights reserved
Privacy Policy Cookie Policy Terms of Use Security


We manufacture and supply highly acclaimed Treadle Irrigation Pumps in the international market. These types of Irrigation Water Pumps have discharge capacity of approximately 2000 to 2400 Ltrs per hour. They are suitable for irrigation up to the area of 2 Acers of land. Manufactured from the best quality raw materials like steel, our Irrigation Water Pumps are highly endurable and long lasting in nature. In addition to this, we are considered as an eminent Irrigation Water Pumps Manufacturer and one of the ace Exporters of the same.


In the United States, religion – in particular Christianity – is a driving force behind African-American culture. Under slavery and segregation, the black church provided both spiritual and social services to African-Americans.
Today, many African-Americans see anything short of embracing religion as not just heretical but a denial of one's very blackness. But a growing number of African-Americans openly don't believe in God or the church.
In this in-depth report, I look at how African American atheists are trying to make their voices heard to gain acceptance in their community.
A big, special thanks to scholar Sikivu Hutchinson and musician Landon Taylor and producer Roy Hurst. They're people you might not hear much of if it all in the story, but who were instrumental in making it all come together.
This entry was posted in Uncategorized on March 1, 2013 by sarahrichards2012.


text:
mainArmor/AFV
Minigun Barrel Replacements
RB Models M134 Minigun 6 x 7.62mm Barrels set for Minigun
by: Al LaFleche [ AJLAFLECHE ]
Back in the American Civil War, in the 1860s, the armies of the Union and Confederacy were looking for ways to increase firepower beyond the muzzle-loading rifled muskets of the time. Several less than successful creations came out. The best of the bunch was Richard Jordan Gatling's six-barreled crank operated gun. This early machine-gun was fed initially from a round magazine and in later iterations, straight magazines. It was the size of a small cannon, mounted on a caisson and prone to jamming. There was minimal traverse in the barrels. Its cumbersome nature prompted Lt. Col. Custer to leave his behind in the last days of his fateful expedition in June 1876. It was still in use in Cuba during the Spanish American War of the late 1890s, but soon was replaced by the early modern machine-guns from Maxim, Browning and others.
Fast-forward to the 1950s when GE developed the 20mm Vulcan Gatling Gun. They then scaled this down to 7.62 mm for use in helicopter gunships, such as the AH-1 Cobra. Other helicopters carried these in pods or door mounts. It was used in pods and fixed mounts in a number of aircraft, most famously in the AC-47 gunships. Gun truck crews scavenged and liberated these guns for use in their modified transports for convoy duty. Currently, these guns are used in naval patrol boats, on various wheeled vehicles and a can be set up on a tripod.
To date, all the M134 kits have been in plastic or resin, usually as part of a kit, though Legend's resin kits of the early XM134 and the more recent M134 with flash suppressor are sold as separate kits. All of these present the problem of molding six barrels as one piece of plastic or resin. Enter RB Models of Poland with their M134 brass barrel kit.
The kit consists of three each of two very slightly different barrels, two pins whose exact purpose is unclear, an optional flash suppressor with vents, and a ring extension for one of the barrel guides. These guides are represented with PE brass. There are three guides with a slit for three of the barrels. (One of these is a spare) and three more barrel guides, each a different size to be used small to large, front to rear.
The kit is packed in a zip lock bag. I got mine from an EBay dealer and it arrived very well packed. Lucky Model also caries this at a retail of about $10. There are no instructions with the kit, though Lucky Model has several photographs suggesting assembly.
One must first identify the three initial barrels…these have slightly more gap in the two middle flanges. You'll need magnifiers to identify these. These are attached into slits of two of the guides. I used Zap-A-Gap, but a more flexible adhesive would be better. Once these are locked into place, the remaining three barrels are added to the locator holes. A note of caution here: the holes are slightly undersized requiring a very small drill bit be used to increase their diameter. Test fitting before beginning assembly would be good. Learn from my difficulties. I'd strongly recommend using something to hold the tiny parts down, a commercial product called Dycem would work though I have some semi-adhesive pads from a show several years ago that I used. Also, I was working in a large tray to reduce the probability of dropping the tiny parts to the floor.
Once the second set of three barrels are secure, add the two front guides and the extender to the furthest back ring before attaching the barrels to the base ring. I added the shorter of the two pins to the inside of the base guide to help splay out the barrels to fit the base.
In working with this, I had to disassemble it about 2/3 of the way through as the barrels weren't aligning right. In doing this, I bent a couple of the first set of barrels, but was able to get them straightened using a set of needle nose pliers. In total, it took me maybe two hours to get this completed.
Is it worth the money, time and effort? The final results have a much more realistic appearance than any plastic or resin Minigun I've seen, so for me, yes.
Highs: Excellent representation of a six barreled gun
Lows: Fiddly parts, undersized holes in the guides, no real instructions included.
Verdict: Overall, a great improvement over any of the plastic or resin representations of the Minigun barrels.
Mfg. ID: 35B123
Suggested Retail: 4.54 Euro
Related Link: http://www.luckymodel.com/scale.aspx
NATIONALITY: United States
About Al LaFleche (AJLaFleche)
FROM: MASSACHUSETTS, UNITED STATES
Copyright ©2020 text by Al LaFleche [ AJLAFLECHE ]. All rights reserved.
Grumpyoldman
Nice review Al.
APR 16, 2012 - 01:50 PM
Thank you for the review on an item I have looked at several times.
ptruhe
Nice. Something for M163 Vulcan would be great. Pul
90designer
Hi, if you go to the RB website, you can view ( and download ) pics of the assembly - of ALL the RB barrels http://www.rbmodel.com/index.php?action=products&cat=c_bm&sub=35B Dave
AJLaFleche
Italeri's Vulcan gun is not bad.
ChrisDM
Hi Al, its an odd question but I happen to working on a scifi doohickey at the moment that has a multi barrel gun and its a bit ropey if you know what I mean. This oculd be a good replacement, but it depends on the size. Can you tell me the diameter at the base end of the RB models minigun? Thanks Chris


Speaking via video tape at the "Women in the World Summit" in New York, Yousufzai said she was thrilled to make the announcement. "Today I'm going to announce the happiest moment of my life. And that is the first grant of the Malala Fund. In Swat Valley, in my motherland, we are going to educate 40 girls. And I invite all of you to support Malala Fund and let us turn the education of 40 girls into 40 million girls." Actress Angelina Jolie introduced the teen and pledged to donate $200,000 U.S. dollars to the fund. "Thank you so much Angelina. And I would like to thank Tina Brown and the Women in the World Foundation.


Pictured is a selection from our Calcite range.
Calcite is comprised of calcium carbonate and occurs in a wide variety of colours, Madagascar has some of the most rich blue, orange and yellow varieties. It's faily low on the Mohs hardness scale but stable to handle although can easily be affected by weak acid solutions including vinegar. Rarer but still available are crystaline and specimens that exhibit 'twinning'.


text:
Denver Broncos @ Los Angeles Rams Live Thread & Game Information
By James McKinney@ConchPhinsFan Dec 25, 2022, 3:30pm EST
Share All sharing options for: Denver Broncos @ Los Angeles Rams Live Thread & Game Information
Photo by Dustin Bradford/Getty Images
The second game in the Christmas day slate of games sees the Denver Broncos travel west to California to take on the Los Angeles Rams. Both teams enter the week in last place in their division with no chance at this season's playoffs. The Broncos have had a disappointing season after trading for former Seattle Seahawks quarterback Russell Wilson and then giving him a giant contract to only see him and the team as a whole struggle through the entire season. Likewise, the Rams have also had a disappointing 2022 campaign, just one season removed from winning the Super Bowl, only to see their team in last place as the season's end nears. The Ram's issues almost all stem from a rash of injuries on the team including to their starting quarterback Matthew Stafford.
Please use this evening's thread to follow and discuss this evening's game as well as any of the other action from around the NFL this past weekend and as always your Miami Dolphins. Please remember to follow all site rules in the live threads as you would in any other post on The Phinsider. As always, please remember that SBNation is very strict on illegal game streams. Sharing, discussing, or requesting any illegal game streams may result in a temporary suspension from the site or a ban from the entire SBN platform.
Denver Broncos (4-10) 4th AFC West @ Los Angeles Rams (4-10) 4th NFC West
When: Sunday, December 25th, 4:30 PM EST
Where: Acrisure Stadium, Pittsburgh, Pennsylvania
Streaming: NFL Game Pass (Will be available after the live conclusion of the game)
Odds: Denver Broncos -3
Over/Under: 36


July 20, 2017 / - Today, Ibotta, the third most-used shopping app in the United States, announced the expansion of its Mobile Marketplace, adding a flurry of new mobile commerce partners within the app to help shoppers earn rewards on their everyday purchases. The new additions, powered by mobile partnership platform, Button, feature leading mobile brands such as Booking.com, 1-800-Flowers.com, Atom Tickets, CheapOair.com and eBags. Since the launch of Ibotta's Mobile Marketplace just months ago, the app's mobile shopping category has grown to 20+ brands, and will drive $500 million in sales for 2017.
Launched in 2012, Ibotta partners with leading brands and retailers to offer cash rewards on anything you buy, including groceries, electronics, clothing, gifts, home and office supplies, restaurant dining, and more. The company's Mobile Marketplace expansion comes on the heels of its comprehensive app relaunch, which included an improved, personalized user experience to help shoppers discover relevant deals and earn rewards faster than ever.
"Ibotta's goal is to be the starting point for a rewarded shopping experience, a single destination for shoppers everywhere," said Bryan Leach, Founder and CEO of Ibotta. "Through the expansion of Ibotta's Mobile Marketplace, consumers can find personalized content and rewards on virtually everything they might want to buy, all in a single mobile app, with the touch of a button."
Ibotta debuted its Mobile Marketplace category in 2016, partnering with mobile partnership platform, Button, to launch the first-ever, mobile partnership platform. On Button's platform, retailers can build partnerships designed to drive commerce – a channel that represents 20 percent of retailers' traffic in desktop, but before Button, was impossible to replicate in mobile or in retailers most valuable channel – their mobile apps.
"Button recognized that the performance marketing channel needed a mobile specific solution, and we've built what the most innovative retailers in the world have asked for," said Michael Jaconi, Co-founder and CEO of Button. "Retailers have been begging to replicate their affiliate channel in mobile, they've wanted to drive affiliate and partner traffic into their apps, and they want to tap into exclusive mobile only audiences. That is what Button's platform offers."
Ibotta now has more than 20 mobile brand partners, providing users with rewards on their mobile purchases across myriad shopping verticals including flower delivery, event and movie tickets, food and alcohol delivery, hotel and flight deals, music streaming, and ridesharing services.
Also announced today is a new opportunity for retailers to join forces with Ibotta and Button via affiliate network integrations. Only a few select merchants will be accepted into the first wave of the program; the application period opens today. Retailers need to verify that they satisfy the requirements of the program and apply at Ibotta.com/affiliate.
Those accepted into the program will be notified between July 27 and July 31, 2017. If retailers are interested, they should contact their affiliate network representatives and inquire about the opportunity.
1-800-FLOWERS®: "At 1-800-Flowers.com, we provide our customers with easy and convenient ways to deliver smiles, allowing them to engage with the brand through their preferred channel, including our mobile experience," says Amit Shah, Chief Marketing Officer at 1-800-Flowers.com. "We are excited to team up with Ibotta and Button to further enhance our customer experience and provide customers with rewards on gifts for all celebratory occasions."
Atom Tickets: "At Atom, customers are at the heart of everything we do, and we love rewarding them with exclusive movie offers," said Ameesh Paleja, CEO and co-founder, Atom Tickets. "By teaming up with Ibotta, we're able to bring our VIP movie experience to even more potential customers, and deliver a convenient mobile experience that allows movie lovers to earn cash rewards just by going to the theater."
Booking.com: "We're truly pleased to be part of Ibotta's Mobile Marketplace - it makes complete sense given the strong and continuous mobile growth that we observe through our loyal customers," says Motty Sasson, Head of Strategic Partnerships US East. "At Booking.com, we're on a mission to empower people to experience the world and provide the world's leading hotel reservation platform. This with a strong focus on convenience and a 'book now, pay later' model. The partnership with Ibotta helps us reach new customers and reward them with cash when booking their hotel stay."
eBags: "eBags strives to better our customers' journeys by helping them find the perfect bag or travel accessory," said Chris Seahorn, VP of Marketing for eBags. "We are excited that this partnership with Ibotta will help new shoppers discover our large selection of quality products - at great value - and reward them for shopping from their mobile devices wherever their travels take them."
Headquartered in Denver, CO, Ibotta ("I bought a...") is transforming the shopping experience by making it easy for consumers to earn cash rewards on everyday purchases through a single smartphone app. The company partners with leading brands and retailers to offer rewards on groceries, electronics, clothing, gifts, home and office supplies, restaurant dining, and more. Named one of Inc. magazine's Best Workplaces for 2017, Ibotta is the premier destination for rewarded shopping on mobile, and has paid out more than $230 million in cash back to its users. Launched in 2012, Ibotta has nearly 23 million downloads, and is one of the five most frequently used shopping apps in the United States.
Button (www.usebutton.com) connects the mobile economy, making it easy for consumers to discover and purchase what they want, when they want it - with the tap of a Button. The company provides the easiest way for mobile brands to connect with one another, facilitating discovery and transaction among consumers with a contextually-relevant experience. Current partners on the platform feature industry leaders such as Condé Nast, OpenTable, Hotels.com, Foursquare, and more.