text:
Q: Leetcode claims that exception is not handled which I handled I am trying to solve Dynamic Programming questions from leetcode. Started from the easiest ones. Fibonacci. I handled the IndexOutOfRangeException and tried my code with different values on my computer. But when I submit it, leetcode says:
Runtime Error
Unhandled exception. System.IndexOutOfRangeException: Index was outside the bounds of the array.
At Solution.Fib(Int32 n)
At __Driver__.Main(String[] args)

Here is the code:
public class Solution
{
    public int Fib(int n)
    {
        int[] table = new int[n + 1];

        // Seed the trivial answer.
        table[1] = 1;

        // Iterate and fill further positions based on current values.
        for (int i = 0; i < n; i++)
        {
            try
            {
                table[i + 2] = table[i] + table[i + 1];
            }
            catch (IndexOutOfRangeException ex)
            {
                // Out of array bounds.
            }
        }

        return table[n];
    }
}

A: Thanks to the people at the comments, I noticed I forgot handle the cases with n<1.
public class Solution
{
    public int Fib(int n)
    {
        if (n < 1)
        {
            return 0;
        }

        int[] table = new int[n + 1];

        // Seed the trivial answer.
        table[1] = 1;

        // Iterate and fill further positions based on current values.
        for (int i = 0; i < n; i++)
        {
            try
            {
                table[i + 2] = table[i] + table[i + 1];
            }
            catch (IndexOutOfRangeException ex)
            {
                // Out of array bounds.
            }
        }

        return table[n];
    }
}

Thanks to the Klaus from the comments n - 1 instead of n will also avoid the IndexOutOfRangeException exception so I don't have to use try catch anymore.
for (int i = 0; i < n - 1; i++){
    table[i + 2] = table[i] + table[i + 1];
}

A: Your return could be triggering that because it is outside the try/catch.  Based on your logic, I don't see how you would actually get IndexOutOfRangeException there, but it could be a code quality scanner that isn't happy.
Another possibility is that because your logic will always get IndexOutOfRangeException within the try/catch, the system is upset because you didn't actually 'handle' the catch, just ignored it.

redpajama_set_name: RedPajamaStackExchange


While the winter skies may be gray outside, the walls of VCAM showcase bright blue textiles in an end-of-semester exhibition The Power of Words, an exploration in traditional Japanese indigo dyeing by the students in the "Advanced Japanese" course.
At first glance, it may seem unexpected for a course in Japanese language-learning to include such an artistic element of visual culture as indigo dyeing, but Lecturer in Japanese Kimiko Suzuki emphasized the overlap between this art form and education in Japanese language for students in her "Advanced Japanese" class.
Kimiko Suzuki and her course "JNSE 201A: Advanced Japanese: The Power of Words" present the exhibition "The Power of Words," which showcases indigo-dyed textiles made by students in the course.
Kimiko Suzuki introduces her class and their work at the opening of "The Power of Words," which showcases indigo-dyed textiles made by students in the course.
Scott Kozarski '21 explains the process of dyeing the textile at "The Power of Words" exhibition opening reception.
Students in the course "JNSE 201A: Advanced Japanese: The Power of Words" present the exhibition "The Power of Words," which showcases indigo-dyed textiles made by students in the course.
Jill Zimmerman '19 describes how they dyed the textiles.
A close-up of the indigo-dyeing patterns at the exhibition's opening.
With support from Suzuki's friends and owners of rikumo Kaz and Yuka, the John B. Hurford '60 Center for the Arts and Humanities, the Bi-Co Japanese Program, and a grant from the Luce Initiative for Asian Studies and the Environment, the exhibition, which is on view through December 10, marks a unique connection between art and language for the students involved.
Lin also wants to emphasize that the lessons learned in "Advanced Japanese" extend beyond the exhibition and represent a fulfilling culmination of her Japanese studies at Haverford.
For the Haverford community, Suzuki echos her student's sentiment in encouraging Bi-College students to explore the Japanese program and hopes the indigo-dyed textiles reflect the heart and passion that went into creating and learning about the work.
Photos by Olivia S. Wong '21.


...in Chemistry. I currently work for the US Army Crime Lab as a Forensic Chemist in the Trace Evidence branch. It's just like CSI minus all the action and awesome technology. I have been employed there for 5 years and love it. I have been tutoring students on the side for several years and it has been nothing but a positive experience for me. I look forward to working with you soon.


I am using koken for a photography blog, but I'd like to expand the database and functionality. Is there a way to add custom fields to essays and images?
I read through most of the documentation but I couldn't find infos on extending the database, adding fields to the backend image management, adding custom template tags and things like that.
Most importantly I want to add to the database a new category system table that supports hierarchical category trees. But I can't find any documentation on how to add database models to the database itself, neither to the backend of koken.


You'll watch Danson capture stunning seascapes on the Cornwall coast in southwest England—a gorgeous area bordered by the Celtic Sea to the north and west, and by the English Channel to the south.
For this outing Danson is blessed by some fantastic light, as he discusses several things you can do to improve results while shooting in the great outdoors. In the description beneath the video, Danson lists the gear he uses for most of his landscape photography.
Danson's approach is all about patience, and he explains that once you've found a composition, it's time to take a deep breath and "wait for the light." Outdoor scenes are constantly changing, and it's often amazing how a good shot can be transformed into a great one in less than an hour's time.
One less conventional aspect of Danson's approach is how he uses the large screen on his smartphone, rather than his camera's LCD or viewfinder, to study the landscape before him and narrow down his compositional opportunities. He also carefully considers whether he wants the foreground or the sky to be the most element in his image.
Check out the video for Danson's other simple tips. Following his advice can pay big dividends in your results, and greatly increase your odds of success. You can find more helpful videos on Danson's YouTube channel, and in an earlier tutorial in which he demonstrates how to take awesome photos in awful weather.


Record 377/2271 Cary Memorial Library 2016. All rights reserved.
Abstract Letter, dated April 3, 1925, from C.A. Flanagan, Senior Vice Department Commander and Marshal, Spanish War Division, to Veterans, enlisting men for participation in the Lexington parade. Sent as an enclosure to Worthen.05.07.62.


First, just use React 🙂 You will notice bugs, pain points, etc.
Then, I encourage you to try helping people in the Issues section. A lot of those are just support requests or misunderstandings, but some are legitimate bugs. Even helping verify those bugs and creating minimal reproducing examples is a hugely valuable contribution. Answering React questions on StackOverflow is also a great contribution and grows your experience with the library.
Finally, keep track of the "good first issue" label in the repository. We use them to tag issues that we think are good entry points into helping with React.


Chennai: Reacting strongly to Prime Minister Narendra Modi's tweet on dynasty politics, Congress General Secretary for eastern Uttar Pradesh Priyanka Gandhi Vadra today said that the BJP has systematically attacked every institution in last five years.
"BJP has systematically attacked every institution in last five years. Including institution of which you are a part of (media). The Prime Minister should stop thinking that people are fools and understand that they see through all this," she said.
"Satta jiske sar par chad jati hai, unko galatfaimiyan ho jati hai. (People get disillusioned when a political dispensation tries to influence them)," she added. "Firstly they said that it is easy to mislead the people, and secondly whoever speaks against them are afraid of them. We are not afraid of them no matter how much they exploit us. We will keep fighting against them," she said.


Faeries vs. Darklings is a puzzle game with epic battles between Faeries and the evil Darklings - beings of shadows who want to transform all forests into pieces of their own twisted dimension. Help the Faeries to succeed by becoming a powerful Mage, gathering magical power and summoning more Faeries into the battle.
Pick your side to conquer the world - Faeries or Darklings. Unlock new powers and islands as you progress in more than 30 stages.
Invite your friends to be a part of your Mage Guild and unlock powerful spells to use against the invaders. Use magical ingredients to boost your Faeries and your spells. Increase your Mage level by gaining experience after each battle, and unlock new enemies and new forests that will challenge your summoning skills!
A unique puzzle game for Facebook, mixing fast match-3 puzzle gameplay with strategy, combat and friends' ladders. Great production values and quality, published by Atari.
Faeries vs. Darklings is a puzzle game with epic battles between Faeries and the evil Darklings - beings of shadows who want to transform all forests into pieces of their own twisted dimension. Help the Faeries to succeed by becoming a powerful Mage, gathering magical power and summoning more Faeries into the battle. Invite your friends to be a part of your Mage Guild and unlock powerful spells to use against the invaders. Use magical ingredients to boost your Faeries and your spells. Increase your Mage level by gaining experience after each battle, and unlock new enemies and new forests that will challenge your summoning skills!


text:
// Copyright 2002-2011, University of Colorado
package phet;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileFilter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.net.URL;
import java.net.URLDecoder;
import java.security.AccessControlException;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
import java.util.jar.JarOutputStream;
import java.util.jar.Manifest;
import java.util.logging.Logger;
import java.util.regex.Pattern;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import java.util.zip.ZipOutputStream;

/**
 * FileUtils is a collection of file utilities.
 * Copied from svn/phetcommon on Oct 27, 2014 by @samreid
 */
public class FileUtils {

    private static String DEFAULT_ENCODING = "utf-8";
    private static final Logger logger = Logger.getLogger( FileUtils.class.getName() );

    private FileUtils() {
    }

    /**
     * Gets the basename of a file.
     * For example /tmp/foo.jar has a basename of foo.
     *
     * @param file
     * @return
     */
    public static String getBasename( File file ) {
        String fullname = file.getName();
        String basename = null;
        int index = fullname.indexOf( '.' );
        if ( index == -1 ) {
            basename = fullname;
        }
        else {
            basename = fullname.substring( 0, index );
        }
        return basename;
    }

    /**
     * Determines if a file has a specified suffix.
     * The suffix is case insensitive.
     * You can specify either "xyz" or ".xyz" and this will do the right thing.
     *
     * @param file
     * @param suffix
     * @return
     */
    public static boolean hasSuffix( File file, String suffix ) {
        if ( !suffix.startsWith( "." ) ) {
            suffix = "." + suffix;
        }
        return file.getName().toLowerCase().endsWith( suffix );
    }

    //See also copies in updater and flash-launcher; deep copies since those subprojects cannot take in all of phetcommon.

    /**
     * Gets the JAR file that this class was launched from.
     */
    public static File getCodeSource() {
        URL url = FileUtils.class.getProtectionDomain().getCodeSource().getLocation();
        try {
            //TODO: consider using new File(URL.toURI) when we move to 1.5
            return new File( URLDecoder.decode( url.getFile(), "UTF-8" ) );//whitespace are %20 if you don't decode with utf-8, and file ops will fail.  See #1308
        }
        catch( UnsupportedEncodingException e ) {
            e.printStackTrace();
            try {
                return new File( URLDecoder.decode( url.getPath(), "UTF-8" ) );
            }
            catch( UnsupportedEncodingException e1 ) {
                e1.printStackTrace();
                return new File( url.getPath() );
            }
        }
    }

    /**
     * Is the code source a JAR file?
     *
     * @return
     */
    public static boolean isJarCodeSource() {
        //TODO: bad style to write code that depends on exceptions
        try {
            return isJar( FileUtils.getCodeSource() );
        }
        catch( AccessControlException ace ) {
            return false;
        }
    }

    /**
     * Is the file a JAR?
     *
     * @param file
     * @return
     */
    public static boolean isJar( File file ) {
        //TODO: bad style to write code that depends on exceptions
        try {
            JarFile jarFile = new JarFile( file ); // throws IOException if not a jar file
            jarFile.close(); // don't rely on finalize to close
            return true;
        }
        catch( IOException e ) {
            return false;
        }
    }

    public static File getTmpDir() {
        File file = new File( System.getProperty( "java.io.tmpdir" ) );
        file.mkdirs();
        return file;
    }

    public static String loadFileAsString( File file ) throws IOException {
        return loadFileAsString( file, DEFAULT_ENCODING );
    }

    public static String loadFileAsString( File file, String encoding ) throws IOException {
        InputStream inStream = new FileInputStream( file );

        ByteArrayOutputStream outStream;

        try {
            outStream = new ByteArrayOutputStream();

            int c;
            while ( ( c = inStream.read() ) >= 0 ) {
                outStream.write( c );
            }
            outStream.flush();
        }
        finally {
            inStream.close();
        }

        return new String( outStream.toByteArray(), encoding );
    }

    public static void filter( File inputFile, File outputFile, HashMap map ) throws IOException {
        filter( inputFile, outputFile, map, DEFAULT_ENCODING );
    }

    public static void writeString( File outputFile, String text, String encoding ) throws IOException {
        writeBytes( outputFile, text.getBytes( encoding ) );
    }

    public static void writeString( File outputFile, String text ) throws IOException {
        writeString( outputFile, text, DEFAULT_ENCODING );
    }

    public static void writeBytes( File outputFile, byte[] bytes ) throws IOException {
        outputFile.getParentFile().mkdirs();
        FileOutputStream outputStream = new FileOutputStream( outputFile );
        try {
            outputStream.write( bytes );
        }
        finally {
            outputStream.close();
        }
    }

    public static String replaceFirst( String body, String find, String replacement ) {
        int indexOfFindText = body.indexOf( find );

        if ( indexOfFindText != -1 ) {

            String before = body.substring( 0, indexOfFindText );
            String after = body.substring( indexOfFindText + find.length() );

            body = before + replacement + after;
        }

        return body;
    }

    public static String replaceAll( String body, String find, String replacement ) {
        // quick shortcut for identity functions
        if ( find.equals( replacement ) ) {
            return body;
        }

        // now we keep track of the index the last replacement occurred at, so that we don't create infinite loops.
        int previousIndex = -1;
        int index = body.indexOf( find );

        while ( index > previousIndex ) {
            String before = body.substring( 0, index );
            String after = body.substring( index + find.length() );
            body = before + replacement + after;

            previousIndex = index;
            index = body.indexOf( find, previousIndex );
        }

        return body;
    }

    public static String filter( HashMap map, String file ) {
        Set set = map.keySet();
        for ( Iterator iterator = set.iterator(); iterator.hasNext(); ) {
            String key = (String) iterator.next();
            String value = (String) map.get( key );

            file = replaceAll( file, "@" + key + "@", value );
        }
        return file;
    }

    public static void filter( File source, File destFile, HashMap filterMap, String encoding ) throws IOException {
        String text = loadFileAsString( source, encoding );
        String result = filter( filterMap, text );
        writeString( destFile, result, encoding );
    }

    public static void delete( File file ) {
        delete( file, false );
    }

    public static void delete( File file, boolean verbose ) {
        if ( file.isDirectory() ) {
            File[] children = file.listFiles();

            for ( int i = 0; i < children.length; i++ ) {
                delete( children[i], verbose );
            }
        }
        if ( verbose ) {
            System.out.println( "Deleting: " + file.getAbsolutePath() );
        }
        file.delete();
    }

    public static void copyTo( File source, File dest ) throws IOException {
        dest.getParentFile().mkdirs();
        copyAndClose( new FileInputStream( source ), new FileOutputStream( dest ), true );
    }

    public static void copy( InputStream source, OutputStream dest, boolean buffered ) throws IOException {
        //TODO: buffering is disabled until file truncation issue is resolved
        buffered = false;
        if ( buffered ) {
            source = new BufferedInputStream( source );
            dest = new BufferedOutputStream( dest );
        }

        int bytesRead;

        byte[] buffer = new byte[1024];

        while ( ( bytesRead = source.read( buffer ) ) >= 0 ) {
            dest.write( buffer, 0, bytesRead );
        }
    }

    public static void copyAndClose( InputStream source, OutputStream dest, boolean buffered ) throws IOException {
        copy( source, dest, buffered );
        source.close();
        dest.close();
    }

    public static void unzip( File zipFileName, File targetDir ) throws IOException {
        unzip( zipFileName, targetDir, new FileFilter() {
            public boolean accept( File file ) {
                return true;
            }
        } );
    }

    public static void unzip( File zipFileName, File targetDir, FileFilter filter ) throws IOException {
        ZipFile zipFile = new ZipFile( zipFileName );

        Enumeration enumeration = zipFile.entries();

        while ( enumeration.hasMoreElements() ) {
            ZipEntry entry = (ZipEntry) enumeration.nextElement();

            String name = entry.getName();

            if ( filter.accept( new File( targetDir, name ) ) ) {
                if ( entry.isDirectory() ) {
                    new File( targetDir, name ).mkdirs();
                }
                else {
                    File targetFile = new File( targetDir, name );

                    targetFile.getParentFile().mkdirs();

                    InputStream source = zipFile.getInputStream( entry );
                    FileOutputStream fileOutputStream = new FileOutputStream( targetFile );

                    copyAndClose( source, fileOutputStream, false );
                }
            }
        }
        zipFile.close();
    }

    public static void jarSingleFile( File rootDir, File file, ZipOutputStream zipOutputStream ) throws IOException {
        if ( file.isDirectory() ) {
            File[] f = file.listFiles();
            for ( int i = 0; i < f.length; i++ ) {
                if ( !f[i].getAbsolutePath().endsWith( "MANIFEST.MF" ) ) {
                    jarSingleFile( rootDir, f[i], zipOutputStream );
                }
            }
        }
        else {
            String path = file.getAbsolutePath().substring( rootDir.getAbsolutePath().length() );
            path = path.replace( '\\', '/' );
            while ( path.startsWith( "/" ) ) {
                path = path.substring( 1 );
            }
            JarEntry zipEntry = new JarEntry( path );
            zipOutputStream.putNextEntry( zipEntry );

            FileInputStream inputStream = new FileInputStream( file );
            copy( inputStream, zipOutputStream, false );
            inputStream.close();

            zipOutputStream.closeEntry();

        }
    }

    public static void zip( File[] filenames, File dest ) {
        // These are the files to include in the ZIP file

        // Create a buffer for reading the files
        byte[] buf = new byte[1024];

        try {
            // Create the ZIP file
            ZipOutputStream out = new ZipOutputStream( new FileOutputStream( dest ) );

            // Compress the files
            for ( int i = 0; i < filenames.length; i++ ) {
                FileInputStream in = new FileInputStream( filenames[i] );

                // Add ZIP entry to output stream.
                out.putNextEntry( new ZipEntry( filenames[i].getName() ) );//flattens packages

                // Transfer bytes from the file to the ZIP file
                int len;
                while ( ( len = in.read( buf ) ) > 0 ) {
                    out.write( buf, 0, len );
                }

                // Complete the entry
                out.closeEntry();
                in.close();
            }

            // Complete the ZIP file
            out.close();
        }
        catch( IOException e ) {
            e.printStackTrace();
        }

    }

    public static void jar( File dir, File dest ) throws IOException {
        JarOutputStream jarOutputStream = new JarOutputStream( new FileOutputStream( dest ), new Manifest( new FileInputStream( new File( dir, "META-INF/MANIFEST.MF" ) ) ) );
        jarSingleFile( dir, dir, jarOutputStream );
        jarOutputStream.close();
    }

    //http://www.exampledepot.com/egs/java.util.regex/Escape.html
    public static String quote( String name ) {
        if ( name.toLowerCase().indexOf( "\\e" ) > 0 ) {
            throw new RuntimeException( "Quote method will fail" );
        }
        return "\\Q" + name + "\\E";
    }

    public static void main( String[] args ) throws IOException {
        System.out.println( replaceAll( replaceAll( replaceAll( "@WOW@ This is a @TEST@ with @THINGS@", "@WOW@", "Yay!" ), "@TEST@", "successful test" ), "@THINGS@", "the replaceAll() function." ) );
    }

    public static void testUnzip() throws IOException {
        final Pattern excludePattern = Pattern.compile( quote( "quantum-tunneling" ) + "[\\\\/]localization[\\\\/]" + quote( "quantum-tunneling" ) + ".*\\.properties" );

        unzip( new File( "C:\\Users\\Sam\\AppData\\Local\\Temp\\soluble-salts40662.jar" ), new File( "C:\\Users\\Sam\\AppData\\Local\\Temp\\soluble-salts40662-test-unzip-8" ), new FileFilter() {
            public boolean accept( File file ) {
                return !excludePattern.matcher( file.getAbsolutePath() ).find();
            }
        } );
    }

    public static void addPrefix( File file, String prefix ) throws IOException {
        writeString( file, prefix + loadFileAsString( file ) );
    }

    public static void download( String urlAddress, File file ) throws FileNotFoundException {
        file.getParentFile().mkdirs();
        try {
            OutputStream outputStream = new BufferedOutputStream( new FileOutputStream( file ) );
            InputStream inputStream = new URL( urlAddress ).openConnection().getInputStream();
            byte[] data = new byte[2048];
            int read = 0;
            while ( ( read = inputStream.read( data ) ) != -1 ) {
                outputStream.write( data, 0, read );
            }
            inputStream.close();
            outputStream.close();
        }
        catch( IOException e ) {
            e.printStackTrace();
        }
    }

    public static void copyRecursive( File src, File dest ) throws IOException {
        if ( src.isDirectory() ) {
            //never copy .svn metadata
            if ( !src.getName().equals( ".svn" ) ) {
                dest.mkdirs();
                logger.fine( "Created: " + dest.getAbsolutePath() );
                File[] f = src.listFiles();
                for ( int i = 0; i < f.length; i++ ) {
                    File child = f[i];
                    copyRecursive( child, new File( dest, child.getName() ) );
                }
            }
        }
        else {
            copyTo( src, dest );
            logger.fine( "Copied to: " + dest.getAbsolutePath() );
        }
    }

    public static void copyToDir( File src, File dstDir ) throws IOException {
        copyTo( src, new File( dstDir, src.getName() ) );
    }
}

redpajama_set_name: RedPajamaGithub


text:
Q: Sidekiq enqueueing jobs, not dequeueing them For some reason, Sidekiq isn't running any jobs for me. It can enqueue them perfectly fine, but it never moves them off the queue.
I've confirmed that redis is running:
ps aux | grep redis
root      2756  0.0  0.0 140612  2656 ?        Sl   Sep03   0:36 redis-server *:6379
root      7489  0.0  0.0 110284   840 pts/0    S+   09:19   0:00 grep redis

I've confirmed that Sidekiq is running:
ps aux | grep sidekiq
root      6732  0.1  1.9 2527436 148000 ?      Sl   09:04   0:03 sidekiq 3.2.1 CompleteSet-Rails [0 of 25 busy]
root      7901  0.0  0.0 110280   840 pts/0    S+   09:44   0:00 grep sidekiq

I started Sidekiq using:
bundle exec sidekiq -d -e production -L log/sidekiq.log

I've confirmed that it is adding jobs to the queue:
Sidekiq.redis { |r| r.lrange "queue:default", 0, -1 }.length
=> 70
UserMailer.delay.reset_password(User.third)
=> "9fc420a5b21224e5b264b9e9"
Sidekiq.redis { |r| r.lrange "queue:default", 0, -1 }.length
=> 71

I'm not using custom worker classes, and I'm not trying to use a custom .yml or .rb config file. Any ideas why it's not executing jobs?
EDIT:
I did notice that options doesn't return any queues. Could that have something to do with it?
Sidekiq.options
=> {:queues=>[], :labels=>[], :concurrency=>25, :require=>".", :environment=>nil, :timeout=>8, :error_handlers=>[], :lifecycle_events=>{:startup=>[], :quiet=>[], :shutdown=>[]}}

A: I didn't explicitly set it to check log/sidekiq.yml, or config/initializers/sidekiq.rb, but it was checking them anyway. In the initializer file, I had it set to only read from a queue called production, but because I was using Mailer.delay.whatever, it was writing to the default queue, even though I had it configured to use production only. If you want to change which queue you write to, either use a custom worker, or use Mailer.delay(queue: name) to put it on the queue you want.


text:
Planets: Pluto—ray 1 (non-sacred)
SummaryOverviewRulershipsDignities
J Ray 1 (non-sacred planet)
Method: Reach into the depths, clear the way through esoteric death
Rulerships:
Orthodox: Scorpio Esoteric: Pisces Hierarchical: Pisces
Dignities:
Exaltation: Aries Pisces Fall: Libra Virgo Detriment: Taurus
Paired planet (Ray 1):
J A cross surmounted by a semicircle cradling a small circle.
Pluto triangles:
Choose a triangle… Aries-Pluto-GreatbearEarth-Mars-PlutoTaurus-Pluto-EarthVenus-Jupiter-PlutoVenus-Uranus-PlutoVulcan-Earth-Pluto
Pluto: general information
Although astronomers re-classified Pluto as a "dwarf planet", planetary scientists still consider it—along with other Kuiper belt objects like Eris—a planet. As astrologers we may consider the classification irrelevant since so much mythological and sybmolic lore has accrued since its discovery, and even smaller planets are used by contemporary astrologers (Pluto is the largest Kuiper belt object discovered so far). Jyotish (Indian sidereal) astrology doesn't use Uranus, Neptune or Pluto. However, in esoteric astrology, Pluto is definitely part of the scheme as a planet symbolising the destructive aspect of the first ray…
My idea of destructivity corresponds with Walter Benjamin's… essay titled "The Destructive Character", in which he said "The destructive character is cheerful and friendly and knows only one motto: make room". And there is no particular moral value whatsoever in that […] no good and evil, no apocalyptic alternative motives associated with it. No war and no destructive wrath, there is nothing more than the need thereby recognised (Notwendigkeit) you need to change (or you're in danger) that for… anything new to emerge, the preconditions must first be created, the old must be eliminated, room must be made, and that's simply why destruction is needed. —Blixa Bargeld, Einstürzende Neubauten band member, citing Walter Benjamin's text (originally published in the Frankfurter Zeitung, 20th November 1931)
Pluto as a non-sacred planet has the role of connecting human life in the three worlds to the "liberating destruction" aspect of Ray 1 (see Aries-Pluto-GreatBear), in contrast to the way Vulcan on the same ray works to create and forge anew in the space that Pluto clears. However, until inner awareness or "spiritual growth" begins, people tend to "move within their horoscopes" so Ray 1 "and the will aspect is latent but unexpressed" (EA 66).
At the human level it is present from the earliest spark of awareness to the dissolving of the individual human personality, the process that marks the end of experience in the the three worlds of purely personal endeavour. The non-sacred nature of Pluto means that its sphere of operation is entirely within the bounds of the human personality as it learns and grows through the three worlds or the material, emotional and mental facets of the developing self. The whole journey from the cycles of experience of the Mutable cross to the final personal third initiation on the Cardinal cross is summed up:
Pluto is one of the five non-sacred planets that condition humanity during the long cycle of "reincarnations and periods of manifestation":
The Sun (veiling a planet)
The Moon (veiling a planet)
The Earth itself
(EA 53)
In slightly dated language, the passage below descibes how the solar plexus chakra governing our personal emotional response can pass through the "burning ground" during the growth process (see Pluto and the initiatons, below) an experience that can also be apparent in Pluto's exoteric rulership of Scorpio:
…Mars and Pluto function in connection with the sacral centre (Mars) and the solar plexus (Pluto). This latter planet becomes active in the life of [those] "becoming alive in the higher sense, [when our] lower nature passes into the smoke and darkness of Pluto, who governs the lesser burning ground, in order that [we] may live in truth in the higher land of light." (EA 78)
Pluto therefore works throughout the journey taken during the first three strictly personal initiations of the material, emotional and mental worlds. During this time,
…the influence of the sacred planets becomes increasingly effective, until after the final and fifth initiation the non-sacred planets have no effect, though the initiate wields their energies potently… (EA 53)
So the role of Pluto evolves as we move through the "three worlds of human endeavour" and our journey moves us around the three crosses as the learning process progresses.
Spiritual will, Vulcan, Pluto, and the pointers of the Great Bear
In the passage below, Pluto is called an "esoteric planet" along with Vulcan, although the presumption is that this doesn't mean it's a sacred planet:
Within our solar system, Vulcan and Pluto are expressions or custodians of this first ray energy and are, as I have told you, esoteric planets. The first indication of the true spiritual will only begins to manifest upon the Path of Discipleship … Vulcan and Pluto are related to the two Pointers and are only now beginning, in any definite and clear manner, to affect human response. (EA 96)
The path of this spiritual will as it comes to our planet is via: the pointer Merak, Aries, Vulcan/Pluto, and Shamballa.
The two pointers in the Great Bear (pointing to the Pole Star) are connected to self-will and spiritual will:
Dubhe: nearest to the Pole Star
connected to Pluto, "expressive of a lower aspect of the will, which—in speaking of humanity—we call self-will"
Merak: furthest from the Pole Star
connected to Vulcan, "a great reservoir or focal point for divine energy, carrying out [cosmic] purpose"
Aries as "the will to create or to manifest" is the primary transmitter of First Ray energy to the two planets in our solar system, and Shamballa as "the Custodian of the Plan for our planet" (Earth's "head chakra") is the agent of transmission, stepping it down to a human level. (EA 195-196)
Also see: Vulcan-Earth-Pluto and interlinked triangles (EA 482-483) plus other triangles including the pointers.
Pluto: Rulerships
Orthodox: Scorpio
Esoteric: Pisces
Hierarchical: Pisces
Orthodox: Scorpio ⇧
The main concept behind Pluto's rulership of Scorpio is one of "esoteric death", i.e. the ending of all that hinders the expansion of our awareness:
In Scorpio there is the death of the personality, with its longings, desires, ambitions and pride. (EA 214)
…the death of forms must eventuate leaving the disciple free; the dissolution of old group structures of thought, embodying worn-out ideas and ideals must necessarily supervene; crystallised old forms must dissolve and disappear, but in their place the undying spirit—impressed by revelation and sensitive to the emerging new concepts of truth—will create the needed new forms of appropriate expression. (EA 260)
Scorpio via Pluto is thus regarded as the "sign of discipleship" or of all those who are "ready for the fusion brought about through the influence of the sacred planets". The idea is that the death of hindering personality traits "is definitely brought about by the soul…"—the inner self thus liberates us by revealing personal limitations so that we can move beyond them and leave their remains to sink into the depths. The feeling at these times is one that echoes the traditional role of Pluto as one of regeneration and rebirth after trial and experiencing the depths. The "dissolution and detachment" (EA 538) mentioned in connection with the Eigth House are part of this experience.
Esoteric: Pisces ⇧
Pluto is one of the esoteric rulers of the Mutable Cross, and as one of four influential planets at the time of transition to the Fixed Cross, so presides over that critical initial transition at the initiation of the inner growth process. The trials of personality death are softened under Pisces by the action of Ray 2, creating a desire to break free from personal limitations into a more inclusive consciousness.
the lure of the probationary path with… transference to the Fixed Cross… begins really in Pisces (EA 126-127)
Two major rays express themselves through the rulers of Pisces, orthodox and esoteric: The first Ray of Will or Power, focussed through Pluto, and the second Ray of Love-Wisdom. (EA 126-127)
The duality of both the ray and the sign (two fishes) implies a distinction between the dying personality and the awakening inner self, which peels away from the purely personal identifications that pinion us "between the pairs of opposites". We can then begin to escape imprisonment (12th House) towards the wider consciousness of the soul.
The combination of the Piscean element with Rays 1 and 2 suggests the adaptive and often hidden "will of water"—the need to keep flowing around obstacles and to fill the depths and hollows in order to simply keep going and resist being defeated by problems.
Hierarchical: Pisces ⇧
The death mentioned in Esoteric Astrology in connection with Pluto refers to the dissolution of forms that limit or constrain the expanding inner self or—on a wider scale—the collective consciousness of humanity. Because "Pluto or death never destroys the consciousness aspect" (EA 126-127) this is a process of liberation. On a planetary scale and when working through Pisces, this Plutonic transformative power can stimulate regenerative global changes through an initial process of destruction, a kind of tidal clearing of the land for new growth:
death as the Great Releaser, shattering the forms that bring death to that which is embodied (from EA 545)
Pisces, through its ruler, Pluto… necessitated the triumph of death… leading to the dissolution of the form… frequently the death or ending of old forms of civilisations which cyclically come and go; of religious teaching when it does not serve the need of the spiritual nature of the people (as is today the case); of educational processes which fail to educate the developing nature… and serve only to delude and imprison. (EA 545)
On an individual level, part of the work of Pluto is to "cut the thread which binds the two opposing lives together". In Pisces, the exalted Venus can then "reunite the severed lives but with no binding thread" (EA 130) meaning that the inner self is no longer led by the personal needs of the individual, but instead responds freely to an expanded inner consciousness. When a sufficient critical mass is reached within individuals across the globe, or within a nation—and it doesn't need to be a majority—the mass change can be triggered.
Pluto decanates
(To follow) The decanates in Esoteric Astrology are not given consistently. They are sometimes reversed and other times given in the familiar direction. Current research aims to provide a coherent system that ensures consistency and reduces ambiguity, while adhering to the basic tenets of the esoteric decanates as well as the "reversal of the wheel". Alan Leo's decanates tend to follow the traditional method (i.e. the rulers of each sequential sign by element), yet Alice Bailey often replaces these, sometimes with Sephirial's planets, and at other times with fresh esoteric replacements.
For now, decanates are covered under the "Details" tab in each sign.
Pluto Dignities
Exaltation: Aries Pisces
Fall: Libra Virgo
Detriment: Taurus
Exaltation in Aries ⇧
The relation of Pluto to Ray 1 in Aries is obvious as a force of raw will. It is significant here that beginnings (Aries) and endings (Pisces) are points at which the liberating destruction of Ray 1 is essential. (more to follow)
Exaltation in Pisces ⇧
Pluto is also given exaltation in Pisces by some astrologers, hinting at its esoteric rulership in that sign. (more to follow)
Fall in Libra ⇧
The influence of Pluto is dampened in Libra, where balance and a sense of equilibrium enable the crucial "turning point" in evolution. As with Pluto, the disruptive influence of Ray 1 is not conducive to the necessary balance and temporary peace of the "turning-point".
Fall in Virgo ⇧
Vulcan is the esoteric ruler of Virgo, where the constructive influence of Ray 1 "falls" or descends into the material realm to give body to the inner self. Pluto's destructive Ray 1 influence would disturb the Virgoan gestation of the inner being.
Detriment in Taurus ⇧
In Taurus the constructive influence of Ray 1 provides direction and the desire to forge ahead, so the destructive Ray 1 effect of Pluto as a non-sacred planet is detrimental to Taurean purpose. In Taurus, Pluto would exaggerate the more agressive side of Ray 1, and the "bull-headed" traits known to orthodox astrology.
About Esoteric AstrologyWho is this for?Key concepts

redpajama_set_name: RedPajamaCommonCrawl


Resources are not endless and what we produce and consume has a significant impact on our environment. In this context design has a decisive role to play. Two European projects help designers to work with ecodesign for greater sustainability.
Creating products and services that do not negatively affect the environment and climate is the foundation of ecodesign. Several dimensions must be considered: creating the conditions for minimal waste, taking social aspects into consideration, and observing human rights. A designer's decisions largely determine what environmental impact the resulting products and services will have. It is therefore important to include this aspect from the planning stage in order to create design that is sustainable and circular.
Many people are requesting the knowledge and tools to enable them to work with ecodesign. Several concepts are available, such as Cradle to Cradle and Circular Product Design. These encompass ways of thinking and methods that foster a more sustainable approach. The conditions for using them vary, but the need of greater expertise within fields that are not always included in traditional design educations, both in the areas of technology and materials science, unites them.
A study done by SVID this spring concludes that one of the topics businesspeople think about most regarding the move to sustainability is how to combine ecodesign with profitability. The companies further wish to study the examples of other players in closely related business activities in order to see how they can work in a way that is both sustainable and financially successful.
At the economic level, the task is not only to ensure the profitability of one's own products but also to consider issues such as the banks' attitude to new business models. This was demonstrated, for example, by a project in the Netherlands that involved developing street lighting for bicycle paths. Circular, long-term design plans and business models turned out to be difficult to implement when the banks did not want to work with long-term time frames. In this situation, predecessors and good examples are necessary.
The complex nature of ecodesign also lies in understanding and shaping behaviour patterns. Design choices affect – and are affected by – consumer behaviour. Let us take the mobile phone as an example. Today mobile phones contain a tiny amount of gold. From a sustainability perspective, it might be a good choice to increase the amount of gold in the phones so that recycling becomes more economically sustainable. The problem is that most phones are not currently returned for recycling – so an increased amount of gold would not necessarily have a positive effect but would instead be negative. Herein lies a dilemma: should we start with new designs, new recycling technologies or new solutions for collecting end-of-life products?
We need cross cooperation's to bring out best solutions to be achieved, and let consumers successfully be informed about what they should consider, when making their own choices.
Just as in the above-mentioned case of the telephones, it is not always apparent what is the right decision. Tools, knowledge about them, and data all help. To make the correct design decision about such factors as the choice of materials, designers can use Life Cycle Assessment (LCA) tools. Sometimes it can turn out that more – not less – material is preferable if this leads to altered behaviour.
Let us take food waste as one example. If we add more packaging material to extend the food's shelf life, make the product recloseable, and reduce portion size, this can have a positive effect on the amount of food waste. Recent calculations done at Karlstad University showed that the extra material needed to package two half loaves of bread instead of one whole loaf corresponded to one-tenths of a slice of bread. But to be able to answer whether this was the most sustainable alternative, it had to be compared with how much less bread was wasted thanks to the smaller packets – and this information was not available. This indicates the need for more knowledge about consumption patterns, better data collection, and better exchange of information between various parties.
Inrego is one successful example of a business concept that combines sustainability, behaviour change and profitability. The company collects used IT equipment such as mobile phones, refurbishes them and resells them. If a product cannot be mended or does not meet the criteria for being sold, it is sent to a "rescue station" where the material can be sorted and matched to other components before being combined to form new products.
Inrego has been profitable since it was founded in 1995 despite a difficulty of obtaining more of the products that can be reused. Services designed to simplify and encourage greater reuse are badly needed and help to create sustainable behaviour patterns. The companies that offer solutions to reinforce this change will benefit both the environment and their own finances.
With examples such as reuse, recycling and changing consumer patterns, there is a great need for new design solutions. Two European projects are underway that aim to develop and disseminate knowledge about ecodesign to companies, designers and university students.
"EcoDesign Circle" is a joint venture between various design organisations and universities in countries around the Baltic Sea, and particularly targets SMEs. The project aims to help create jobs for tomorrow's markets by increasing the resources and capacity for including environmental aspects in design. The development of new ecodesign products will facilitate the step towards a circular economy, and the work is aimed at both businesspeople and educational institutions. A new platform will be launched in the form of a sustainability guide featuring tools, methods, networks and learning resources for students and others to use in their education. In order to spread knowledge about the innovation potential that exists with ecodesign, there is also a focus on joint ventures and various communicative activities in order to increase awareness and transparency about much-needed behavioural change.
"Circular Design: Learning for Innovative Design for Sustainability" is a project that will help to increase the supply of and demand for ecodesigned projects and services on the market. The project is run mainly by various European universities. The development of training materials and sustainability strategies for innovative design will increase the sustainable consumption choices and provide new business opportunities for both third-level educational institutions and industries in Europe. Universities, design centres and companies will cooperate in the project to increase sustainable design and to identify possibilities for sustainable products, services and business opportunities.
These types of collaborative process will accelerate the great need for sustainable solutions in design. Among other things, there is a need for strategies and for the design training of students, faculty members and companies. At the same time, we can see how the growing number of innovative solutions in the wake of digitalisation is contributing to this development. Concerns that the sustainability aspects will not be profitable are being dispelled as the regions that are investing in renewable and environmentally beneficial solutions are proving to be economically successful. New research, more knowledge, and more innovations are leading to sustainable business models and a healthier world. The trend is hopeful!
A collective concept in which, thanks to design solutions, products and services are created without negatively impacting the environment and the climate. The aim of ecodesign is to create the conditions for minimal or zero waste when a product is consumed, and to lead the work towards a circular process.
The Cradle to Cradle principle involves the fact that our social development and product development have much to gain from resembling ecological systems in which energy and materials are "used" effectively and cyclically instead of being "used up" and creating waste.
This involves designing products whose production and consumption cause the least possible impact. What remains after the product is used can be returned to the manufacturer, reused by the consumer, or returned to nature in a way that does not negatively impact the environment.
The aim is to promote the sustainable consumption and production of products and services in Europe.
It involves 13 partners, European universities, design centres and companies in Catalonia (Spain), Ireland, the Netherlands and Sweden. The Swedish partners are Linköping University, Habermann Design & Development and SVID.
Funded by Erasmus+, the European Union programme for education, training, youth and sport within the field of social entrepreneurship and pedagogical innovation.
A three-year project that aims to increase knowledge about ecodesign among the Baltic region's small and medium-size enterprises, designers and design organisations. The work is led by SVID in collaboration with Green Leap at KTH Royal Institute of Technology together with design organisations and universities in Germany, Estonia, Lithuania, Poland and Finland.
Funded by the Interreg Baltic Sea Region and the European Regional Development Fund.
The article is writen by Anna Velander Gisslén and Renee Wever and is published in Swedish Design Research Journal no 1, 2017.


Below are links to available on-line information related to the Tomales Bay watershed. The pages at the links below are maintained by others, and may change over time.
Please Contact Us to report broken or missing links.
See Who We Are for a list of our Members and links to their websites.
Students and Teachers Restoring A Watershed (STRAW) – A project of Point Blue Conservation Science, STRAW engages local teachers and their students in hands-on habitat restoration or conservation projects.


text:
Q: Sending Queries to a table in RMySQL, using R variables I am trying to write data I have created in R and stored in arrays to MySQL table. Currently this is how I am doing it,
for(z in 1:60){
  dbSendQuery(
    mydb,
    "insert into minutely_predictions(id,server_pred, server_hi, server_lo, os_pred, os_hi, os_lo, sessions_id) values(server__id,server_pred[i],server_hi[i],server_lo[i],os_pred[i],os_hi[i],os_lo[i],sesh_id)"
  )
}

I'm getting MySQL syntax errors, is there a way to pass the variables I am trying to pass from R into MySQL?
Thanks.

A: Consider the best practice of parameterization and avoid string concatenation or interpolation of variables to SQL statements.
# PREPARED STATEMENT WITH QMARK PLACEHOLDERZ
sql <- "insert into minutely_predictions(
            id, server_pred, server_hi, server_lo,
            os_pred, os_hi, os_lo, sessions_id)
        values (?, ?, ?, ?, ?, ?, ?, ?)"

# ITERATE THROUGH ARRAYS AND BIND PARAMS
for(i in 1:60) {
    stmt <- dbSendStatement(mydb, sql)
    dbBind(
        stmt,
        list(
            server__id, server_pred[i], server_hi[i], server_lo[i],
            os_pred[i], os_hi[i], os_lo[i], sesh_id
        )
    )
    dbClearResult(stmt)
}

Note: above may only work if using the preferred RMariaDB (replacement of legacy RMySQL).

A: I was able to fix it by using the function sprintf and storing the variable that way, hopefully this may help others in the future.
queryform = "insert into table(parameters) values('%d' .....)"
query = sprintf(queryform, value[1])
send = dbSendQuery(mydb,query)


The community is invited to clean out their medicine cabinets and drop off old or unused prescription and over-the-counter medication at Kristen's Pharmacy, 197 Albert Street South, Southampton. Everyone who drops off medication from Nov. 16 to 23, 2018 will receive a $5.00 Foodland Gift Card, while supplies last.
The Medication Misuse awareness campaign promotes the proper disposal and storage of medication and aims to reduce the amount of circulating unused/expired medication (especially opioid pain relievers). Unused medication should always be returned to a pharmacy for proper disposal.
· 1 in 10 students (Grade 7-12) have used a prescription opioid pain reliever (e.g. Percocet, Percodan, Tylenol 3, Demerol and codeine) for non-medical purposes in the past year.
· 55% of teens who indicated they had misused prescription opioids said they took them from a parent or sibling.
· Non-medicinal use of over-the-counter cough and cold medicine by students in Grades 7-12 has increased to 9.2% from 6.4%.


text:
Data science builds bridges
Collaborative data science enhances discoveries by Carolina's computer scientists, biostatisticians and health care professionals.
Scott Jared, The Well, Monday, October 19th, 2020
(Illustration by UNC Creative)
University Research Week, Oct. 19-23, is an annual celebration of Carolina's research excellence and an effort to increase participation by students, of all levels, in research activity. #UNCResearchWeek
Carolina's faculty, researchers and scientists continue to tear down silos and build bridges by sharing data.
Silos from years past have rapidly disappeared from the University's academic landscape over the past decade. Increasingly, through interdisciplinary collaborations, researchers across campus have used data science to enhance each other's discoveries and help people in their everyday lives.
"Data science is the most important work we can do," said Vice Chancellor for Research Dr. Terry Magnuson. "Our researchers and faculty are generating so much data, and there's a need for expertise to analyze that data. That includes artificial intelligence and the ability to use data to come to conclusions and generate hypotheses."
Terry Magnuson
Many of Carolina's natural scientists, social scientists and humanists are finding new ways to use data in the digital age, and various committees are participating in formulating what a data science initiative at Carolina should be. "That effort relies on people who develop new algorithms and new ways of analyzing data and people who apply data science to solve problems," Magnuson said.
By generating foundational data, large-scale access to data and funding opportunities, Magnuson said, the outcome will be convergent research, collaboration and innovation aimed at solving the world's major problems.
"Enriches the whole process and our findings"
At the Carolina School of Nursing, Assistant Professor Saif Khairat's data science collaborations are, among many things, helping to deliver health care in rural North Carolina and to assess the benefits of telehealth in prisons. For Khairat, collaboration and data science go together.
"Multi or interdisciplinary data science work is where the world is going. No longer will a group of computer scientists or a group of clinicians or a group of business-minded folks do a project on their own," said Khairat, who also is a core faculty member at the highly interdisciplinary Carolina Health Informatics Program. "I do this day in, day out, so I need representatives from every discipline to participate. That enriches the whole process and our findings."
Khairat was one of about 100 faculty, staff and students who were part of feasibility planning for a new Data Science @ Carolina initiative, a pan-University committee charged with charting the pedagogy, practice and application of data science at UNC-Chapel Hill.
"When the Data Science Initiative subcommittees met, we had people from the law school, school of medicine, nursing, liberal arts, and we had such an enriching conversation. I defined data science in a way that is so different from someone in sociology or journalism. Some of their definitions were completely different than mine and had never crossed my mind, and I was like, 'Yeah, that makes a lot of sense.'"
The bridges of interdisciplinary data science cross to all corners of campus. Here's a look at a few.
AURA: the virtual nurse
In Carolina's Computer Science Department, Assistant Professor Shahriar Nirjon asked: "After surgery, how could patients replace much or all of post-operative, in-home care with a device that reminds them to take medicine, to eat or drink appropriately or to perform other activities prescribed by physicians?"
The answer may be wireless fidelity waves commonly known as WiFi.
In the AURA lab, Tamzeed Islam reviews a video clip of testing. (Jon Gardiner/UNC-Chapel Hill)
Nirjon and his collaborators have partnered on an NIH-funded project called AURA (Connecting Audio and Radio Sensing Systems). They will create an in-home system in which voice-assistant devices such as Amazon Echo and Google Home simultaneously collect and process WiFi data to help patients improve their care, decrease costs and relieve caregiving families.
The team includes fellow computer science Assistant Professor Mohit Bansai and an in-home testing team directed by School of Nursing Associate Professor Lixin "Lee" Song. Song is also a Lineberger Cancer Center fellow with expertise in health care delivery through mobile devices, symptom management and family-based cancer research.
Shahriar Nirjon
Lixin Song
AURA's foundation is wireless signals, which we constantly interrupt through walking, talking, eating and daily activities, said Nirjon. The interruptions take unique shapes that Nirjon's team capture as data and catalog with a unique identifier in a database.
As a patient moves around at home, a router transmits identifiers to a voice-assistant device programmed to recognize them. The device then tells the patient at appropriate times to do something like drink more, take medicine, change a dressing or move around more. The router also senses and records radio frequencies of the patient's movements to personalize and refine the database based on rules set by doctors and nurses.
"The idea is to make embedded-systems intelligence that runs learning algorithms. These sensing systems would be capable of learning, adapting and evolving," Nirjon said.
The virtual nurse can also store a patient's health records for the entire care team's use.
Song's team will transition the work from Nirjon's lab in Brooks Hall to tests with patients and their caregivers.
"With health care costs increasing and technologies rapidly developing, patients go home earlier and sicker," Song said. "A lot of caregiving burdens fall on family members who often are not well prepared for the tasks that professionals have been providing. By developing AURA as an inexpensive tool, we hope to better triage patients based on the severity of their symptoms and complications, provide support from different sources and improve the quality of lives of cancer patients and their caregivers as well as reduce emergency room use and readmission."
AURA's interdisciplinary aspect shows in Song's team, which includes Dr. Matthew Nielsen, a genitourinary cancer surgeon at UNC Health; biostatistician Xianming Tan at the Gillings School of Global Public Health; Rebecca S. McElyea, a UNC Health wound, ostomy and continence nurse and part-time researcher at the School of Nursing; and Shenmeng Xu, a 2019 doctoral graduate of the School of Information and Library Science and nursing intern postdoc.
The AURA team hopes to eliminate the need for patients to wear multiple monitors for, say, oxygen levels or air quality or heart rate. Such devices, Nirjon said, run advanced machine-learning algorithms that send data on a delayed round trip to a server for processing then back to the patient. "Even if it is a few milliseconds, it's still a significant delay sometimes."
Nirjon foresees a real-time system that erases those milliseconds, predicts a heart attack or asthma attack then releases a medication to stop it.
In Carolina's computer science department, Shahriar Nirjon's lab members (l-r) Yubo Luo, Bashima Islam, Shiwei Fang and Tamzeed Islam are developing a smart device that learns a surgery patient's movements and could replace some in-person post-surgery care. (Jon Gardiner/UNC-Chapel Hill)
Safer medication prescriptions for veterans and the elderly
At the Eshelman School of Pharmacy, Associate Professor Carolyn Thorpe has been mining health care data gold for most of the past decade. She looks at data to find the best use of medications for geriatric populations, especially those with complex and chronic conditions.
Beginning in 2012, in collaboration with her spouse, Joshua Thorpe, also an associate professor of pharmacy at UNC-Chapel Hill, Thorpe was part of one of the first research teams to analyze data from a national Veterans Administration (VA) medical record database that includes Medicare Part D prescription drug records. Their study showed that obtaining medications from multiple health systems can lead to the prescribing of too many medicines for a single participant and more than double the odds of exposure to a potentially unsafe medication, wch might cause adverse effects and harmful interactions.
Joshua Niznik
Carolyn Thorpe
Interdisciplinary data analysis is key to other Thorpe-led studies. With Joshua Niznik, assistant professor in the UNC School of Medicine and Eshelman School of Pharmacy, Thorpe and her colleagues are looking at the effects of discontinuing or decreasing the intensity of cholesterol, blood pressure and diabetes medications for patients who are approaching the end of life. For instance, does decreasing medications alter health outcomes such as being hospitalized for a heart attack?
"Our study focuses on nursing home residents who have multiple chronic conditions, many of whom are really frail and only have a couple of months or maybe a year or two of life left," said Thorpe. "Many have advanced dementia and we're interested in seeing how their chronic diseases are being managed and whether or not we can back off on some of their medications without causing harm."
The study includes veterans throughout America and links data from the comprehensive physical, psychological and functional health assessment done when patients are admitted to a nursing home to their medication record.
In another study of Medicare beneficiaries in nursing homes, Niznik and Thorpe used datasets to examine the effects of discontinuing anti-dementia medications in patients who had already progressed to advanced dementia, and might not benefit from continued treatment. They found that discontinuing these medications was associated with a reduced risk of serious falls and did not increase the overall risk of negative events, such as hospitalizations or emergency room visits. They also determined that behavorial symptoms of dementia did not increase.
Delivering health care to North Carolina's rural and low-income areas
Exhibit A for informatics expert Khairat's passion for increasing health care access for vulnerable populations? The 5,000 patients in rural, low-income areas of North Carolina who received medical care through a the new UNC Virtual Urgent Care service that he's helping to perfect through data analysis.
With a background in computer science, health policy management and health informatics, Khairat has worked in data science and informatics with the schools of medicine, nursing, information and library science and computer science department.
Saif Khairat
Now, he's working with doctors and nurses at the UNC Health Virtual Care Center to evaluate the virtual service, which offers patients an on-demand talk with a physician either by phone or online.
Among the data collected from the first group of patients, the top diagnoses showed that people with urinary tract infections, ear pain and sinus infection tended to want a consultation by talking over a phone instead of going online. Also, males are more likely to prefer phone to online. The data show that the service saves people time traveling, time in waiting rooms and money.
But most interesting to Khairat was what he calls "reachability," meaning the urgent care team provided care to people in parts of the state where UNC Health does not have physical presence.
About 5,000 people used the service after UNC Health promoted the service in rural areas on the state's four compass points through various ways including billboards and a targeted push to 12,000 people.
"We used data science methods like geospatial analysis to run zip-code-level analysis," Khairat said. "Who are these people? What are they known for? We found some zip codes were under the poverty line or had no access to health care or no Internet broadband connection."
Khairat also looked at how the virtual care affected health disparities in areas with high concentrations of American Indians, African Americans and mothers with children who receive food stamps. "These are really vulnerable populations in rural areas, people that typically don't have any access," Khairat said.
About 75% of participants chose a phone call for the virtual consultation. "Some people said things like 'I have to drive up to the bridge just to get a cell signal, let alone a video feed.' That tells you that maybe they're not equipped with an Internet connection or even a video camera," Khairat said.
A follow-up survey included the question: What would you have done if this service was not available to you? "Delay my care" was the number one answer, topping the options of visiting an emergency room, urgent care or primary physician's office.
"That makes us happy to know that this way of offering care helps and we will keep improving it," Khairat said.
Learn more about University Research Week
Categories Research


text:
The Art and Making of Aquaman
Written By: Mike Avila, Jason Momoa, James Wan
Immerse yourself in the art and making of Aquaman, the movie chronicling Arthur Curry's path to a future reign as King of the Seven Seas.
The Art and Making of Aquaman takes readers behind the scenes of the highly anticipated 2018 Warner Bros. Pictures film based on the popular DC character. Featuring previously unseen photographs and breathtaking concept art, this book is a must-have for any fan. Witness the epic journey of Aquaman, a Super Hero who struggles to accept his heritage as undersea royalty in his first solo film
Trim Size: 11 x 10
Mike Avila, Author: Mike Avila is the author of The Art and Making of Aquaman and an Emmy Award–winning TV producer and journalist who has worked for NBC, CBS, and ABC. As a digital journalist, he has covered entertainment, writing about film, television, and comic books for outlets such as SFX, SYFY Wire, and the Hollywood Reporter.
Celestial Gallery [Oversized Edition]
Ian Shive: The National Parks Blank Boxed Notecards
Sideshow: Fine Art Prints


Meaning and definitions of Eucharist, translation in Marathi language for Eucharist with similar and opposite words. Also find spoken pronunciation of Eucharist in Marathi and in English language.
What Eucharist means in Marathi, Eucharist meaning in Marathi, Eucharist definition, examples and pronunciation of Eucharist in Marathi language.


This is the approach we take to managing customers after injury or who have musculoskeletal symptoms – it's about helping them get better as quickly as possible via quick and easy access to clinicians focussed on their physical and psychological recovery.
To get the best outcomes, customers need to know they are getting the most appropriate support and treatment tailored to their injury or problem. We have a breadth of knowledge and experience across private medical insurance and bodily injury liability claims that helps us understand and demonstrate how to ensure the most appropriate and cost effective use of healthcare interventions. We can then focus on helping customers get better quicker at the same time as driving cost effective outcomes for clients.
Intervening as early as possible to offer the right treatment, at the right time to drive the right outcome.
Drawing on our experience to deliver support and treatment that drives tangible clinical and commercial outcomes.
Providing consistent clinical case management for our customers when they need it.
Early intervention is the key focus of our healthcare strategy. By supporting our customers at an early stage we increase the likelihood of a prompt recovery and enable our customers to return to work and their daily activities at the earliest opportunity.
Being able to promote more effective clinical case management, reduced absenteeism, and improved wellbeing can only be achieved when you have confidence in your provider. All three of these benefits are core to our service.
Contact us if you'd like more information about the clinical case management services for corporate clients or the options available for individuals.
Find out more about BacktoBetter - the independent clinical case management service for all musculoskeletal conditions (such as back, neck, muscle or joint pain). This service is included with all our company PMI policies - Solutions for 2-249 employee schemes, Optimum for 250+ employee schemes and GuideWell, our open referral PMI for 250+ employee schemes.
There is more information available for patients and their families about this condition.
Visit our customer cancer area.


text:
articles351-400
Communication Workers Union & Others v Mobile Telephone Networks (Pty) Ltd
Written by Gary Watkins
Labour Court, May 2003
This decision is of interest because it appears to be only the second that deals with the application of the Protected Disclosures Act, 26 of 2000 (the PDA). An interim order had been granted in terms of which the employer was interdicted from proceeding with disciplinary action against the employee and his union until the final determination of the unfair labour practice dispute referred to the CCMA. The union and the employee had sought relief on the basis that the pending disciplinary hearing and the suspension were occupational detriments in terms of the PDA.
On the return day, the company sought to have the interim order discharged. It did so primarily on the basis that the employee had not qualified for protection under the PDA.
The Court held that the purpose of the PDA is to protect an employee, whether in the private or public sector, from being subjected to any occupational detriment on account of having made a protected disclosure. The PDA encourages employees to disclose criminal or irregular conduct in the workplace, and protects employees against reprisals as a result of these disclosures.
A "disclosure" is defined in the PDA as any disclosure of information regarding any conduct by an employer, or an employee of that employer, which is made by an employee who has reason to believe that the information concerned shows amongst other reasons that a criminal offence has been committed or that a person has failed to comply with any legal obligation. An "occupational detriment" is broadly defined to include any disciplinary action, harassment, intimidation, or other disadvantage.
The employee had alleged that a particular recruitment agency was the sole agency supplying temporary employees to his office. He circulated e-mail to MTN staff questioning the company's recruitment procedures, and suggested that the arrangement between the agency and the company was irregular. He later received a notice of suspension, and was told to attend a disciplinary hearing. The charges against him were numerous, including an allegation that he had intentionally and deliberately circulated e-mail "insinuating that management of MTN are corrupt and/or colluding with various employment agencies in corrupt activities."
The Court had to decide whether his communications constituted a protected disclosure as defined by the PDA. If the Court granted a final order, MTN would be precluded from proceeding with a disciplinary enquiry on the basis that the threat of an enquiry was an occupational detriment.
The Court referred to Grieve v Denel (Pty) Ltd (2003) 24 ILJ 551(LC), the only other reported case dealing with the PDA. In that case, the Court found that the disclosure made was clearly indicative of a breach of legal obligations and possibly criminal conduct on the part of the employer concerned. In the present case, the Court considered that the only information proffered by the employee was a statement that the agency was being used as a sole agency to supply temporary staff. He had offered no information indicating impropriety on the part of MTN management, and the emails he circulated contained no more than the expression of a subjective opinion. This was not "information" for the purposes of the PDA.
The Court also held that a connection must be shown between the disclosure and the occupational detriment, and if this can be proved, then the protections of the PDA should apply. In addition, to be protected, a disclosure must be made in accordance with a procedure authorised by the employer. By failing to comply with MTN's procedure, the employee was not covered by the PDA's provisions.
The applicants failed to establish a clear right. The rule and temporary interdict was discharged with costs.
The PDA will no doubt feature more regularly in Labour Court proceedings. Its protections are far-reaching, but its provisions are complex. Expert advice is recommended in "whistle blower" disputes.
Warning: count(): Parameter must be an array or an object that implements Countable in /home/gwdhmoih/public_html/templates/gk_news2/html/com_k2/templates/default/item.php on line 176
Protected Disclosures Act
Gary Watkins
BA LLB
C: +27 (0)82 416 7712
T: +27 (0)10 035 4185 (Office)
Website: www.workinfo.com
Protected Disclosures Act 26 of 2000
Recent labour Court rulings that affect the employment relationship
Durban Metropolitan Council and SAMWU obo Lootzy.(1998) 7 ARB 6.9.5
Mzeku & others v Volkswagen SA (Pty) Ltd
NEHAWU v University of Cape Town and Fry's Metals (Pty) Ltd v NUMSA
Latest from Gary Watkins
Consolidated Directions on Occupational Health and Safety Measures in certain workplaces as at 11 June 2021
More in this category: « Beware dodgy Aids insurance products Organisational change: good news from the front lines »


New Santa Ana | Project SELF/Crowell & Moring intern gets a full ride to Georgetown Univ.
Project SELF/Crowell & Moring intern gets a full ride to Georgetown Univ.
SANTA ANA, CA- Segerstrom High School senior Jonathan Espinoza was introduced to the legal professional field through the Project SELF (Summer Employment in Law Firm) program as a summer 2011 intern, an experience that has guided him toward the ultimate goal of earning a Juris Doctor. Jonathan has been awarded a summer 2012 internship at the White House and full ride offer to Georgetown University for fall of 2012.
"Project SELF gave me an outstanding opportunity, and opened my eyes to a world of possibilities," says Jonathan Espinoza.
Espinoza, 17, resident of Santa Ana, participated in Project SELF as an intern at Crowell & Moring in Irvine for a paid, eight-week internship that offered the opportunity to learn basic office skills, participate in a day in court and work alongside professional lawyers.
Project SELF, a non-profit program, is a collaboration between the Orange County Bar Foundation (OCBF) and the Orange County Chapter of the Association of Legal Administrators (OC-ALA).
Espinoza is also the chair of the City of Santa Ana Youth Commission, a representative for the City of Santa Ana Parks and Recreation Board, and is involved at Segerstrom High School as president of the Segerstrom High School Band and Pageantry, and a member of Segerstrom High School Site Council.
For more information about Project SELF, contact Nancy Garcia, OCBF Associate Director, at (714) 480-1925 ext. 108 or at ngarcia@ocbarfoundation.org.
Media inquiries contact Jess Block, Media Relations, at 909-706-8525 or JessBlockPR@gmail.com or Jonathan Espinoza at (714) 675-4201 or jonathan.espinoza94@gmail.com.
ABOUT PROJECT SELF: Project SELF (Summer Employment in Law Firm) provides minority high school juniors the opportunity to have an eight-week paid summer internship at a law firm while gaining valuable educational and work experience. The program is a collaboration between two non-profits: the Orange County Bar Foundation (OCBF) and the Orange County Chapter of the Association of Legal Administrators (OC-ALA). The Orange County Bar Association (OCBA) assisted in Project SELF's inception and has continued to support the program. Since inception in 1995, 561 students have participated in Project SELF.
Santa Ana Youth Commission Member Jonathan Espinoza has been accepted to the prestigious Georgetown University – and he got a scholarship too!
Espinoza attends Segerstrom Fundamental High School, where is a member of their school band. He is graduating next spring.
Espinoza has been involved in the community for years. He previously served on the Santa Ana Parks and Recreation Commission and he has been actively involved in a number of political campaigns as well. I know he worked very hard on State Senator Lou Correa's last campaign.
I have known Espinoza for some time and have been very proud to see him learning and succeeding. You just know that he has a great future ahead.
Kudos to Jonathan. Georgetown is very prestigious and this is quite an accomplishment. I am very proud of him and wish him well.
I just hope he remembers to come home after graduation. We need young leaders like him here in Santa Ana.
Thanks for the support, Art! No doubt will come back to Santa Ana to keep serving the community once I graduate. Ultimate goal is to open a foundation that gives FULL Scholarships to students here in Santa Ana, and to give them a family. I know the struggles, they aren't easy, but anything is possible in the land of opportunity.
I know how much you have suffered but rest assured my friend in the end your success will feel even better for having gone through such tough times.
I will never forget cleaning toilets and stripping wax off floors with my dad. It was awful work but he taught me to take pride in everything you do – a lesson I have never forgotten.
God bless amigo! You will do us all proud at Georgetown!
Just make sure that it is not financed by taxing others.
The Georgetown may be prestigious but it produces bolsheviks who like to redistribute the wealth.


text:
Home » Keep Calm & Carry On: New Federal White-Collar Overtime Rules Still Not Released
Keep Calm & Carry On: New Federal White-Collar Overtime Rules Still Not Released
U.S. Department of Labor Headquarters
By Daniel Schwartz on March 17, 2016
Posted in Human Resources (HR) Compliance, Laws and Regulations, Legislative Developments, Wage & Hour
Over the last few days, Twitter has been a-twittering with buzz that the Department of Labor has sent the final overtime rules to the OMB.
This is the equivalent of one department sending another one an e-mail with the new rules. Why? Because it's just the next step in getting the rules approved. But nothing more than that. Moreover, this step always happens in the issuance of regulations.
And here's the really important point: We still don't know what these final rules will be.
So ask yourself, is it really worth getting excited about one department sending the rules to another?
That said, SHRM had some additional information from a speaker at a conference this week about when we can actually expect to see the new rules:
At the SHRM Employment Law & Legislative Conference yesterday, Tammy McCutchen, an attorney with Littler in Washington, D.C., and a former administrator of the DOL's Wage and Hour Division, advised attendees to keep an eye on reginfo.gov, which tracks government agencies' regulatory actions as they are submitted for review to OMB. Sure enough, the rule appeared on the site late March 14.
At the conference, McCutchen told attendees she believed the rule would work its way quickly through OMB and most likely be published by July 7, and take effect on Labor Day, Sept. 5. Alternatively, she said, the rule would be published the Friday before Labor Day, Sept. 2, to take effect Nov. 1—just prior to Election Day.
If you recall, I first reported on the timing of this back in November 2015. In that post, I reported on what I heard at the ABA Labor & Employment Law conference — "late 2016".
Despite all the Twitter posts this week: Things are still on target.
For employers in Connecticut, this is really wait-and-see territory. First, we don't know what the new overtime rules are going to be. And second, Connecticut has it's own rules and we will need to analyze the interaction between existing state laws and these new federal overtime regulations.
Remember: Keep Calm & Carry On.
Tags: exemption, federal, omb, overtime, release, timing, usdol, white collar
Balazs Busznyak, Unsplash
Connecticut Legislative Preview: What's Left to Regulate?
Minnie Zhou, Unsplash
Congress Passes Spending Bill With Employment Law Provisions Tucked Inside
niu niu, Unsplash
Four Things Employers Should Do To Get Ready for Clean Slate Law


A unique tattoo shop and art gallery located in the heart of downtown New Cumberland. Tattoo artist Steve Skelly specializes in black and gray portrait tattoos and provides high-quality, professional designs for each client's unique needs. The shop also features tattoo and portrait artist Pat Hanley.
Fine artist Tamara Weiss creates whimsical, multi-dimensional compositions in 2D frames and features flowing lines, vivid colors, and subtle plays on light and shadow.


text:
Q: Enable inline javascript in LESS I would like to use inline js in my less files but I get the following message:

Inline JavaScript is not enabled. Is it set in your options?

How can I enable that?

A: I had same problem, I use webpack with less loader, I needed to add javascript option in less loader config:
{
        test: /\.less$/,
        use: [{
            loader: "style-loader"
        }, {
            loader: "css-loader"
        }, {
            loader: "less-loader",
            options: {
                javascriptEnabled: true
            }
        }]
}

I found in the sourcecode of less compiler: https://github.com/less/less.js/blob/3.x/bin/lessc
that they parse js less option in this way:
        case 'js':
            options.javascriptEnabled = true;
            break;
        case 'no-js':
            console.error('The "--no-js" argument is deprecated, as inline JavaScript ' +
                'is disabled by default. Use "--js" to enable inline JavaScript (not recommended).');
            break;

So you should probably use '--js' in a static compilation ( command line ) or 'javascriptEnabled: true' in a dynamic compilation ( like webpack loader ) to enable javascript.

A: If you're using the lessc the cli interface then you just need --js on the end.
lessc --js ./styles/theme.less ./styles/theme.css

A: Just to update the accepted answer,
From 3.11.1, if you use just options, it will throw :

ValidationError: Invalid options object. Less Loader has been
  initialized using an options object that does not match the API
  schema.
   - options has an unknown property 'javascriptEnabled'. These properties are valid:    object { lessOptions?, prependData?,
  appendData?, sourceMap?, implementation? }

In less@3.11.1, it's not just options that should be used, but lessOptions like this :
{
    test: /\.less$/,
    use: [{
        loader: "style-loader"
    }, {
        loader: "css-loader"
    }, {
        loader: "less-loader",
        options: {
          lessOptions: {
             javascriptEnabled: true
          }
        }
    }]
}

A: I got this problem when using the newest version of less. Then I switched to version 2.7 and I had it fixed.

A: Inline JavaScript was disabled by default for security concerns. What was happening is that online generators would sometimes allow configuration of Less variables that they then interpreted directly.
This was vulnerable to code injection, meaning that JavaScript could be injected into a Less style sheet that ran on a server directly.
For this reason, inline JavaScript has been deprecated (set to false by default in 3.x), and the replacement for that is the @plugin syntax and using a proper JS plugin. - (See: http://lesscss.org/features/#plugin-atrules-feature)
Yes, you can still set compilation options to javascriptEnabled: true, but this is not considered best practice for style sheets. In general, your style sheet should not have JS in it. It's better to use a plugin.

A: Yes to everything that @matthew-dean and @davide-carpini said... but for anyone looking for the Grunt-LESS code snippet here you go:
  less: {
      dev: {
          options: {
              paths: ['Content/less'],
              plugins: [
                  new(require('less-plugin-autoprefix'))({
                      browsers: ['last 2 versions']
                  }),
                  new(require('less-plugin-clean-css'))({
                      sourceMap: true,
                      advanced: true
                  })
              ],
              relativeUrls: true,
              javascriptEnabled: true
          },
          files: {
              'Content/less/site.css': 'Content/less/site.less'
          }
      }
  },

this is working for my implementation using "grunt-contrib-less": "^2.0.0" ... your mileage may vary

A: I had the same problem but in vue-cli 4 + iVueUi theme customization. Maybe somebody has same troubles like me. And that's solution:
Create or use existing vue.config.js file at the root of your project. And add this code (or partically add) into it.
module.exports = {
    css: {
        loaderOptions: {
            less: {
                javascriptEnabled: true
            }
        }
    }
};

But remember that js is disabled by default for security reasons. So that's at your own risk.

A: Updated: May 2020

For less-loader version 6.1.0^.
In "less-loader" version 6.1.0^ they made breaking changes to the loader that, if you used something like Ant Design (or other LESS and JS loaders) you would nomally add the javascriptEnabled: true flag to the "options" object in your Webpack configuration.
In version 6.1.0^ this was change to be placed in the lessOptions object under the options configuration for the less loader. Here is the solution I used, that works for my Webpack configuration bundle.
module: { rules: [{
    test: /\.less$/,
    use: [
        { loader: "style-loader" },
        { loader: "css-loader" },
        {
            loader: "less-loader",
            options: {
                lessOptions: {
                    javascriptEnabled: true,
                }
            }
        }
    ]
}]}

Notice that the javascriptEnabled flag is not under the top-level options object, but it, instead, under the lessOptions sub-object. That is the latest updated standard as of less-loader version 6.1.0^.

A: as i was using craco and craco-less and also customizing ant design's variable through my .less file ,modifying craco.config.js like below fixed my problem:
const CracoLessPlugin = require('craco-less');

module.exports = {
    plugins: [
        {
            plugin: CracoLessPlugin,
            options: {
                lessLoaderOptions: {
                    lessOptions: {
                        javascriptEnabled: true,
                    },
                },
            },
        },
    ],
}

A: For any Vite 3 users out there, the following is how I enabled inline javascript for a project with less/react.
import { defineConfig } from "vite";
import react from "@vitejs/plugin-react";

// https://vitejs.dev/config/
export default defineConfig({
  plugins: [react()],
  css: {
    preprocessorOptions: {
      less: {
        javascriptEnabled: true,
      },
    },
  },
});

However, inline javascript is a deprecated feature on less (link)

False by default starting in v3.0.0. Enables evaluation of JavaScript inline in .less files. This created a security problem for some developers who didn't expect user input for style sheets to have executable code.


Panoptic Automation Solutions Engineering Department undertakes all projects with an emphasis on quality and maintaining both schedule and budget to meet our customer's needs.
We have years of experience helping companies achieve their goals and meet budget requirements.
Barry Becker is the President and Founder of Panoptic Automation Solutions. By assembling an incomparable team of project managers, technical specialists, designer/drafters and natural leaders, Barry recognized the paramount significance of letting Panoptics execution and quality of work set precedence for automation standards in Western Canada. Barry held a number of high level management roles for ConocoPhillips and Devon Energy before forming Panoptic and understands firsthand the expectations of an automation consulting firm in the eyes of the client. Barry's responsibilities include managing the company's corporate finances, staying heavily involved in project management and project controls while maintaining a consistent interface with our clients.
Barry holds his red seal Journeyman certification in both Instrumentation and Electrical.
Brandon Russell is the System Applications and Site Services Manager of Panoptic Automation Solutions and was one of Panoptics first key hires. Brandon has personally executed and managed projects from field RTU installations to 40,000+ bbl/d SAGD facilities. With a successful career in Alberta oil and gas automation, Brandon has extensive knowledge of a variety of control systems, practical experience and leads his team of specialists by example. Brandons responsibilities at Panoptic include managing day to day project execution tasks, managing Panoptics resource allocation, interfacing with clients and providing Panoptics business unit with ongoing progress.
Brandon is a SAIT graduate of the Instrumentation Engineering Technology program.
Originally from Burlington, Ontario, Shane Spencer moved to Calgary in 2009 with ABB as the demand for skilled automation professionals continued to escalate. Upon joining Panoptic Automation Solutions, Shane quickly worked his way up to Team Lead of System Applications and has become the foundation for technical knowledge on all ABB projects Panoptic has encountered. By developing training programs and providing on-site training for Panoptic employees and clients alike, Shane has helped established Panoptic as a primary ABB resource in Western Canada. Shane has experience in an assortment of systems and industries from pulp and paper, utilities, chemical and oil and gas.
Shane is graduate from Mohawk College with a Bachelor of Applied Technology in Process Automation.
Brad Rhodes has more than 30 years experience in the Supply Chain Management & General Business Management working in both the automotive industry and the Oil and Gas industry. Brad's Competence is diverse in nature; Experience in leadership, strategy and planning, negotiations, tender, evaluate and award, requisition to pay, supplier and contract management, warehousing and inventory, processes and management systems including compliance, follow up, performance management, key stakeholder relations, and mentorship. Brad brings a strong understanding in project management, process and controls, finance, economics, business value propositions, Canadian bid and contract law. A fair and pragmatic approach with focus on collaboration and high quality satisfaction and delivery is essential. Brad's experience allows him to bring a very professional, organized approach to all his work. His belief is to focus on delivery, but equally important is the culture of how that delivery is achieved; behaviors are very important to successful sustainable value contribution.