text:
|By Llewellyn Campbell Douglass (llewie2) on Tuesday, December 04, 2001 - 6:20 pm: Edit Post
Excellent speech with excellent ideas ! Warfare is so easy and so negative. It only destroys. What we need is a new and expanded Peace Corps as S. Shriver proposes. Only postive actions would result. I amd my family fully support such a concept.
Llewellyn Campbell Douglass - Tunisia 84-86
|By ktgaudette on Friday, February 22, 2002 - 6:32 am: Edit Post
CIA Futurist Report--even their most optimistic scenario assumes the FAILURE of the Peace Corps 3 Principles--in 3rd World and in USA!!!
Self-fulfilling counter-visionary Prophecy?
In an unclassified National Intelligence Council study, Alternative Global Futures:2000-2015,
cosponsored by the US Department of
State and the CIA, several dozen government and nongovernment specialists in a wide range of fields developed the following scenarios for the future:
Scenario One: Inclusive Globalization:
A virtuous circle develops among technology, economic
growth, demographic factors, and effective governance, which enables a majority of the world's people to benefit from globalization...A minority of the world's people¡ªin Sub-Saharan Africa, the Middle East, Central and South Asia, and the Andean region¡ªdo not benefit from these positive changes, and internal conflicts persist in and around those countries left behind.
Scenario Two: Pernicious Globalization
Global elites thrive, but the majority of the world's population fails to benefit from globalization. Technologies not only fail to address the problems of developing countries but also are exploited by negative and illicit networks and incorporated into destabilizing weapons. The global economy splits into
three: growth continues in developed countries; many developing countries experience low or negative per capita growth, resulting in a growing gap with the developed world; and the illicit economy grows dramatically.
Scenario Three: Regional Competition
Regional identities sharpen in Europe, Asia, and the Americas, driven by growing political resistance in Europe and East Asia to US global preponderance and US-driven globalization and each region's increasing preoccupation with its own economic and political priorities....Given the preoccupation of the three major regions with their own concerns, countries outside these regions in Sub-Saharan Africa, the
Middle East, and Central and South Asia have few
places to turn for resources or political support. Military conflict among and within the three major regions does not materialize, but internal conflicts increase in and around other countries left behind.
Scenario Four: Post-Polar World
US domestic preoccupation increases as the US economy slows, then stagnates. Economic and political tensions with Europe grow...Over time, these geostrategic shifts ignite longstanding national rivalries among the Asian powers, triggering increased military preparations and hitherto dormant or covert WMD programs....Given the priorities of Asia, the Americas, and Europe, countries outside these regions are marginalized, with virtually no sources of political or financial support.


text:
From PostgreSQL wiki
See PgNotificationHelper and the JavaDoc of the class below for an fuller explanation of the function of this Java/JDBC code and why you might want to use it.
The code below is available for anybody to use in their own app. It is preferred, but not required, that the @author comment be retained. Beware that it is not as well tested as PgNotificationHelper and doesn't yet have a full test suite, so caution is advised.
import java.awt.EventQueue; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; import java.util.Collection; import java.util.Collections; import java.util.Enumeration; import java.util.HashSet; import java.util.List; import java.util.Properties; import java.util.Set; import org.postgresql.PGNotification; /** * PgNotificationPoller uses PgNotificationHelper to monitor the database * for events of interest. * * PgNotificationPoller requires a dedicated JDBC connection, which it * creates using a properties map and manages its self. It will attempt to * reconnect if this connection is lost, and will do its best to handle * problems appropriately. Any exceptions from the database will logged * via java.util.logging and will be acted on if possible, but not re-thrown. * * If you want to use your own JDBC connection, use PgNotificationHelper * directly and be prepared to deal with SQLExceptions if and when they arise. * * Note that this class will only function correctly with a post-8.1.x JDBC * driver because of changes to notification polling. * * @author Craig Ringer <firstname.lastname@example.com> */ // // TODO / ideas list: // // - Support changing of connection props without notification loss, by maintaining // old conn until new one successfully established (?). // // - Support advisory lock management too // // - Let someone grab the connection and do some work on it, holding it exclusively // until they hand it back to us. // public class PgNotificationPoller { public static final String PG_DRIVER_CLASS = "org.postgresql.Driver"; public static final String P_STATUS = "status"; /** * Status describes what the poller is currently doing. * * The stopped state indicates that it's not currently listening for notifications, * and the listening state indicates that is is listening for notifications. */ public enum Status { STOPPED, LISTENING; } /** * If the PostgreSQL JDBC driver could not be loaded, this exception is thrown. */ public static class DriverNotFoundException extends RuntimeException { public DriverNotFoundException(String message, Throwable e) { super(message, e); } } /** * Listener interface to be implemented by classes that are interested * in hearing about PostgreSQL `NOTIFY' events, and in the status of * the polling task. * * Exceptions thrown by listeners will be caught, logged, and ignored. * It is still highly recommended that you avoid letting exceptions propagate * out of your listeners in the first place. */ public static interface PgNotificationListener { /** * Reports that one or more NOTIFY events have been received by the poller. * * Self-notifications will be delivered, so if you wish to exclude them * or identify them, test `receivingBackendPid' against * `PGNotification.getPid()' for each notification to see if the sending * and receiving backend pid are the same. * * @param poller Poller that received the NOTIFY * @param receivingBackendPid pid of backend that recieved the notification. Test against notices.getPid() to eliminate self notifications. * @param notices Read-only list of notification event(s) */ void notified( PgNotificationPoller poller, long receivingBackendPid, List<PGNotification> notices ); /** * Reports a change in poller status, such as a disconnect or reconnect. * You may need to query the database to catch up on changes here, * as a disconnect or reconnect implies that notifications may have * been lost. * * @param poller Poller that disconnected/reconnected * @param oldStatus Status transitioned from * @param newStatus Status transitioned to * @param targetStatus Status seeking */ void pollerStatusChanged( PgNotificationPoller poller, Status oldStatus, Status newStatus, Status targetStatus ); /** * A LISTEN has been executed on the database, and NOTIFY events for that * name will now be received. * * @param poller Poller that added the listen * @param names Read-only collection of name(s) newly LISTENed */ void listenersAdded( PgNotificationPoller poller, Collection<String> names ); /** * An UNLISTEN has been executed on the database, and NOTIFY events for that * name will no longer be received. * * '*' will never be passed as a name. Instead, individual * listenRemoved(...) calls will be made. * * @param poller Poller that added the listen * @param names Read-only collection of name(s) newly UNLISTENed */ void listenersRemoved( PgNotificationPoller poller, Collection<String> names ); } /** * Adapter for PgNotificationListener in case you're only interested in a subset * of the events. Other events are ignored. * * {@inheritDoc} */ public abstract static class PgNotificationAdapter implements PgNotificationListener { /** {@inheritDoc} */ @Override public void notified( PgNotificationPoller poller, long receivingBackendPid, List<PGNotification> notices ) { } /** {@inheritDoc} */ @Override public void pollerStatusChanged(PgNotificationPoller poller, Status oldStatus, Status newStatus, Status targetStatus) { } /** {@inheritDoc} */ @Override public void listenersAdded(PgNotificationPoller poller, Collection<String> names) { } /** {@inheritDoc} */ @Override public void listenersRemoved(PgNotificationPoller poller, Collection<String> names) { } } /** * A single object may listen for exceptions thrown by the * JDBC connction used by the poller's worker thread. It must implement * this interface. */ public interface PgNotificationExceptionListener { /** * If any exceptions are thrown while working with the JDBC connection, * this callback will report them. This may be useful for handling bad * usernames/passwords, consistently unreachable servers, etc. * * It's mainly here so that you can log issues. * * The poller / worker will act on the exception as best as it can, generally * by re-trying its work or if the connection looks dead trying to create a * new one. You cannot directly control that, but may supply new credentials * or stop() / start() the poller service if needed. It is safe to do so from * this callback. * * The JDBC connection on which the exception was thrown is provided on * the off chance it may be required. It will not be used by the poller * before this method returns, as this method's execution blocks the * poller worker thread, so it's technically safe to execute work on it. * Nonetheless, you should really avoid doing anything with it if at * all possible. * * @warning Do not permit exceptions to be thrown by your implementation of this method. * * @warning This method is called synchronously on the poller's worker thread. * It should schedule any time consuming work to be done later and return * promptly. Delayed work must not use the passed connection. * * @param poller poller whose worker caught the exception * @param conn Connection in use when the exception was thrown * @param message Message from poller worker indicating what it was doing at the time * @param exc SQLException thrown */ void sqlExceptionEncountered( PgNotificationPoller poller, Connection conn, String message, SQLException exc ); /** * A listener let an exception propagate up to the worker thread's event * dispatch methods. The exception will be ignored, but this callback is * invoked with it first to make it possible to track down such issues. * * @param poller Poller whose worker had a listener throw the exception * @param message Message from the poller about the problem * @param listener The guilty party - the object that threw * @param exc Exception thrown by the listener */ void listenerExceptionEncountered( PgNotificationPoller poller, String message, PgNotificationListener listener, Throwable exc ); } private final ConnectionPoller poller = new ConnectionPoller(); private int pollDelayMs = 1000; // TODO backoff private int reconnectDelayMs = 30000; private int validityTestDelayMs = 10000; private int validityTestTimeoutSeconds = 30; /** * Create a new poller without any connection parameters. * * The poller will begin in the `STOPPED' state and will not attempt to * start polling until connnection details are passed via * setConnectionProperties. * * @throws DriverNotFoundException if jdbc driver not loadable */ public PgNotificationPoller() { testDriverPresent(); poller.start(); } /** * Create a new poller with the supplied JDBC URL and connecton properties map. * * The poller will begin in the STOPPED state, but will immediately begin * trying to transition to LISTENING by bringing up a JDBC connection. If * connection fails, it will be retried periodically. * * @param url JDBC URL to connect with * @param map JDBC properties map to use for credentials and conn params * @throws DriverNotFoundException if jdbc driver not loadable */ public PgNotificationPoller(String url, Properties map) { this(); setConnectionProperties(url, map); } /** * Create a new poller with the supplied JDBC URL and connecton properties map. * * The poller will begin in the STOPPED state, but will immediately begin * trying to transition to LISTENING by bringing up a JDBC connection. If * connection fails, it will be retried periodically. * * @param url JDBC URL to connect with * @param username PostgreSQL username * @param password PostgreSQL password * @throws DriverNotFoundException if jdbc driver not loadable */ public PgNotificationPoller(String url, String username, String password) { this(); setConnectionProperties(url, username, password); } /** * Request a change of connection details, using the new parameters passed. * * If the new parameters differ from those the current connection (if any) * is using, the current connection (if any) will be dropped and the * poller will begin trying to establish a new connection if the target * status is LISTENING. * * This call does not change the target status, so the poller will remain * stopped if stop() has been called or it has never been started. * * @warning A call to this method may cause notifications to be missed during the connection change-over. * * @param url JDBC URL to connect with * @param map JDBC properties map to use for credentials and conn params */ public void setConnectionProperties(String url, Properties map) { if (map == null) throw new NullPointerException("Connection properties map may not be null"); if (url == null) { throw new NullPointerException("URL may not be null"); } poller.setNewConnectionProperties(url, map); start(); } /** * As setConnectionProperties(String url, Properties map) but with username * and password supplied directly instead of via the properties map. * * @warning A call to this method may cause notifications to be missed during the connection change-over. * * @param url JDBC URL to connect with * @param username PostgreSQL username * @param password PostgreSQL password */ public void setConnectionProperties(String url, String username, String password) { Properties props = new Properties(); if (username != null) props.setProperty("user", username); if (password != null) props.setProperty("password", password); setConnectionProperties(url, props); } /** * PgNotificationPoller must periodically check the JDBC connection's receive * buffer to see if it has received any notifications. Report how frequently * the poller is currently checking for notifications. * * @see #setPollDelayMs * * @return delay between polls for notifications, in milliseconds */ public int getPollDelayMs() { return pollDelayMs; } /** * PgNotificationPoller must periodically check the JDBC connection's receive * buffer to see if it has received any notifications. While this operation * doesn't create any client/server communication it's still not entirely free, * so the frequency with which notifications are polled for should be adjusted * to the app's needs and the rate at which notifications are expected to arrive. * * @see #getPollDelayMs * * @param pollDelayMs delay between polls for notifications, in milliseconds */ public void setPollDelayMs(int pollDelayMs) { if (pollDelayMs <= 0) { throw new IllegalArgumentException("Poll delay must be > 0"); } this.pollDelayMs = pollDelayMs; } /** * How long the poller will wait between reconnect attempts if conn lost. * * @see #setReconnectDelayMs * * @return Delay in ms between connect attempts */ public int getReconnectDelayMs() { return reconnectDelayMs; } /** * If the poller's connection drops, it will delay a configurable number * of milliseconds before each try to re-establish it after the first * attempt. * * @see #getReconnectDelayMs * * @param delayMs Delay in ms between connect attempts */ public void setReconnectDelayMs(int delayMs) { if (delayMs <= 0) { throw new IllegalArgumentException("Reconnect delay must be > 0"); } this.reconnectDelayMs = delayMs; } /** * The poller perioidcally checks whether the connection is alive. Report * how long it waits between checks. * * @see #setValidityTestDelayMs * * @return Delay in ms between connection validity checks */ public int getValidityTestDelayMs() { return validityTestDelayMs; } /** * Merely polling for notifications is not sufficient to detect if the * connection has broken; an explicit check that produces client/server * chat is required. * * If set to zero, no validity checking is done. * * The default is 10 seconds. * * @see #getValidityTestDelayMs * * @param freqMs Delay in ms between connection validity checks */ public void setValidityTestDelayMs(int delayMs) { if (delayMs < 0) { throw new IllegalArgumentException("Validity test delay must be >= 0"); } this.validityTestDelayMs = delayMs; } /** * How long to wait before giving up on a validity test. * * @see #setValidityTestTimeoutSeconds * * @return how long to wait for connection validity test */ public int getValidityTestTimeoutSeconds() { return validityTestTimeoutSeconds; } /** * When testing for connection validity a timeout helps avoid the poller * blocking forever on dead tcp/ip connections. This reports how long it * waits before giving up on the connection, dropping it, and starting * to establish a new one. * * @see #getValidityTestTimeoutSeconds * * @param timeout */ public void setValidityTestTimeoutSeconds(int timeout) { if (timeout < 0) { throw new IllegalArgumentException("Timeout must be >= 0 seconds"); } this.validityTestTimeoutSeconds = timeout; } /** * Ask the poller to poll for notifications as soon as it is next able to. * If it's idle and waiting, it will poll immediately, though this call will * not block until the poll is completed. * * Calling pollNow() on a poller in the STOPPED state (whether due to a * stop() call, never having been started, or due to a pending reconnect * after a connection break) has no effect, and false is returned. * * @return true if the pollNow request was acted on, false if it could not be */ public boolean pollNow() { return poller.pollNow(); } /** * Report the current state of the poller. * * The poller may be trying to (re)connect, in which case its state will * be STOPPED even though it's trying to transition to the target state * LISTENING. Similarly, if it's just been asked to stop, it might be * LISTENING even though it's in the process of switching to STOPPED. * * getStatus() tells you whether, at this particular instant, the * poller is receiving notifications. * * @return poller status */ public Status getStatus() { return poller.status; } /** * Report the status the poller is trying to be in, which may or may not * be the same as its currents status. * * If getTargetStatus() consistently reports listening, but getStatus() * consistently reports stopped, it's likely that there's an issue establishing * a connection. Check getLastException() for hints on what might be wrong. * * See getStatus() for details. * * @see #stop * @see #start * @see #getStatus * * @return target status of poller */ public Status getTargetStatus(){ return poller.pub_targetStatus; } /** * Register an object's interest in hearing about notifications received, * poller state changes, and names added to or removed from the list being * monitored. * * @see #removeNotificationListener * * @param listener New object to receive notification events */ public void addNotificationListener(PgNotificationListener listener) { // poller.listeners is thread-safe poller.listeners.add(listener); } /** * Remove an object from the list of objects interested in hearing about * notification-related events. * * If the passed object is not in the current listener list, no action * is taken. * * @see #addNotificationListener * * @param listener Object to stop notifying. */ public void removeNotificationListener(PgNotificationListener listener) { // poller.listeners is thread-safe poller.listeners.remove(listener); } /** * Clear the list of object to be informed when notifications arrive, state * changes, etc. * * @see #removeNotificationListener * @see #addNotificationListener */ public void clearNotificationListeners() { // poller.listeners is thread-safe poller.listeners.clear(); } /** * Add the passed name, which must be a legal PostgreSQL identifier, to the * set of notifications that should be LISTENed to. * * This call won't block waiting for the addition to take effect. Objects * listening for notification events will receive a listenersAdded call when * the change has been applied by the worker thread. Until then, notifications * on this name may not be received. * * If the target status is STOPPED, this call will not transition it to * LISTENING, so it will have no effect until start() is called. * * @see #unlisten * @see #unlistenAll * @param name PostgreSQL identifier to LISTEN for notifications on */ public void listen(String name) { poller.addListenedName(name); } /** * Remove the passed name from the list of notifications that should be * LISTENed to. * * This call won't block waiting for the removal to take effect. Objects * listening for notification events will receive a listenersRemoved call when * the change has been applied by the worker thread. It is possible that * notifications for this name may be received in the mean time. * * If the target status is STOPPED, this call will not transition it to * LISTENING, so it will have no effect until start() is called. * * If the name is not currently on the list of names to be listened to, * this call has no effect. * * @see #listen * @see #listenAll * @param name PostgreSQL identifier to stop listening for notifications on */ public void unlisten(String name) { poller.removeListenedName(name); } /** * Remove all names name from the list of notifications that should be * LISTENed to, leaving the poller listening for no notifications at all. * * This call won't block waiting for the removal to take effect. Objects * listening for notification events will receive a listenersRemoved call when * the change has been applied by the worker thread. It is possible that * notifications may be received in the mean time. * * @see #listen * @see #unlisten */ public void unlistenAll() { poller.clearListenedNames(); } /** * Stop listening for notifications and close down the JDBC connection * used for listening. * * If the target status is already STOPPED, this call has no effect. * * This call won't block waiting for the change to take effect. Objects * listening for notification events will receive a listenersRemoved call * and a statusChanged call once the shutdown takes effect. It is possible that * notifications may be received in the mean time. * * @see #getTargetStatus */ public void stop() { poller.setTargetStatus(Status.STOPPED); } /** * Begin listening for notification events if not already doing so. If * necessary, a new JDBC connection will be created to listen on, using * credentials supplied in the ctor or in setCredentials. * * If the target status is already LISTENING, this call has no effect. * * @see #getTargetStatus */ public void start() { poller.setTargetStatus(Status.LISTENING); } /** * @see PgNotificationExceptionListener * @see #setPgNotificationExceptionListener * @return current exception listener */ public PgNotificationExceptionListener getPgNotificationExceptionListener() { return poller.exceptionListener; } /** * Register an exception listener which will be informed of all * SQLExceptions encountered during the operation of the worker * thread. * * It's recommended that you set the listener once during * poller setup and leave it. * * @see PgNotificationExceptionListener * * @param newExceptionListener */ public void setPgNotificationExceptionListener(PgNotificationExceptionListener newExceptionListener) { poller.exceptionListener = newExceptionListener; } /** * Test to see if the JDBC driver is present and loadable, and thow * DriverNotFoundException if not. * * @throws DriverNotFoundException if jdbc driver not loadable */ private void testDriverPresent() { try { Class.forName(PG_DRIVER_CLASS); } catch (ClassNotFoundException e) { throw new DriverNotFoundException("Couldn't load JDBC driver " + PG_DRIVER_CLASS, e); } } private class ConnectionPoller extends Thread implements PgNotificationHelper.PgNotificationListener { // Simple threading rules: // If a var is prefixed by `pub' it must only ever be accessed while the ConnectionPoller // monitor is held. No database operations may be performed while the ConnectionPoller monitor is held. // Variables not prefixed by `pub' must never be updated by direct external triggers such as // outside method calls. // `status' must only ever be changed by method private and internal to ConnectionPoller and running // on the ConnectionPoller thread, or things will break horribly. private Status status = Status.STOPPED; // targetStatus must only ever be set by outside callers via setTargetStatus(...). private Status pub_targetStatus = Status.STOPPED; private final Set<PgNotificationListener> listeners = Collections.synchronizedSet( new HashSet<PgNotificationListener>() ); private final PgNotificationHelper helper = new PgNotificationHelper(); private JDBCStatementTimeout connValidTimer; private Connection conn; private Properties connProperties, pub_newConnProperties; private String url, pub_newUrl; // Timestamps recording last time of poll and last time of reconnect // so that we can honour our delay parameters. Note that these get // updated even if the attempted operation fails. private long lastPollTimeMs, lastReconnectTimeMs, lastValidityTestMs; // Object to be told about any SQLExceptions we hit. private PgNotificationExceptionListener exceptionListener; private final Set<String> pub_namesToListenTo = new HashSet<String>(); // *ONLY* test or set this while holding the monitor for namesToListenTo private boolean pub_namesToListenToChanged = false; public ConnectionPoller() { super("PgNotificationPoller$ConnectionPoller"); setDaemon(true); helper.addNotificationListener(this); lastPollTimeMs = 0; lastReconnectTimeMs = 0; JDBCStatementTimeoutThread timeoutThread = new JDBCStatementTimeoutThread(); connValidTimer = timeoutThread; timeoutThread.start(); } @Override public void run() { // Vars to hold copies of state boolean needsReconnect, runStart_namesToListenToChanged; final Set<String> runStart_namesToListenTo = new HashSet<String>(); String runStart_url; Properties runStart_properties; Status runStart_targetStatus; // Lifetime loop while (true) { checkConnWaitTimerStatus(); // Lock and examine externally-writable state to decide what to do. // Some state may need to be copied to permit updates to it // to run concurrently with the database work done in this thread. synchronized(this) { if (pub_newUrl == null || pub_newConnProperties == null) { // Should never be the case if we're actually run() throw new IllegalStateException("newUrl and/or newConnProperties must never be null if run() called"); } // See if there is any work to do, and if there is not, sleep // until there is. needsReconnect = false; runStart_namesToListenToChanged = pub_namesToListenToChanged; // WARNING: runStart_namesToListenTo may not be copied, unless pub_namesToListenToChanged . // otherwise it will be empty and should not be relied on. runStart_namesToListenTo.clear(); runStart_url = pub_newUrl; runStart_properties = pub_newConnProperties; runStart_targetStatus = pub_targetStatus; try { if (status == Status.STOPPED && pub_targetStatus == Status.STOPPED) { // We're stopped. Sleep until woken by state change. this.wait(); // Re-check to see what to do now continue; } else if (status == Status.STOPPED && pub_targetStatus == Status.LISTENING) { // Needs reconnect, but we're rate limited. Make sure we // sleep to honour the rate limit if needed. needsReconnect = true; } else if (status == Status.LISTENING && pub_targetStatus == Status.STOPPED) { // We've been asked to drop the connection. No sleep needed, continue // execution immediately. } else if (status == Status.LISTENING && pub_targetStatus == Status.LISTENING) { if ( !pub_newUrl.equals(url) || !pub_newConnProperties.equals(connProperties)) { // Have connection properties changed? If so, we'll need to reconnect. needsReconnect = true; } else if (pub_namesToListenToChanged) { // Names to listen to have changed. We'll apply the changes // immediately without waiting the poll delay. // // First, copy names to listen to to reflect current state runStart_namesToListenTo.addAll(pub_namesToListenTo); // Now that we've recorded our intentions, we can mark that // we've seen the changes so far. If something goes // wrong acting on them, we'll relisten() or reconnect, // so the helper will get updated one way or the other. pub_namesToListenToChanged = false; } else { // We're just polling. Delay if necessary before executing poll. long delayMs = (lastPollTimeMs + pollDelayMs) - System.currentTimeMillis(); if (delayMs > 0) { this.wait(delayMs); // Make sure nothing has changed while we waited, // such as a pollNow() call or the like. continue; } } } else { // Unreachable without coding error throw new IllegalStateException("Unreachable code reached, programmer error - new state(s) added?"); } if (needsReconnect) { long delayMs = (lastReconnectTimeMs + reconnectDelayMs) - System.currentTimeMillis(); if (delayMs > 0) { // Make sure nothing has changed while we waited this.wait(delayMs); continue; } } } catch (InterruptedException e) { // We were woken by something. Re-check state. continue; } } // end of synchronized(this) block // (From here on, we no longer hold our monitor and may *NOT* // safely access the pub_ variables). // We're now acting on our earlier decisions. If the public // state changes we won't know, and it's too late to do anything // about it. It'll get caught next go-around. if (needsReconnect) { // By clearing the connection we'll ensure that // status is Status.STOPPED if it wasn't already. clearConnection(); } // Now see if we need to drop the connection or to connect // (in the latter case, possibly due to just having dropped // the connection above). if (status != runStart_targetStatus) { switch (runStart_targetStatus) { case LISTENING: if (status == Status.STOPPED) { connect(runStart_url, runStart_properties); } break; case STOPPED: if (status == Status.LISTENING) { clearConnection(); } break; } } // Now, if we're in the target status (possibly due to work // just done above), perform the real work. if (status == runStart_targetStatus) { switch (status) { case LISTENING: if ( validityTestDelayMs > 0 && (System.currentTimeMillis() - lastValidityTestMs > validityTestDelayMs) ) { // Time to make sure the connection is still here if (!testConnection()) { // Connection is broken and has been cleared, return to go and do not collect $200 continue; } } if (runStart_namesToListenToChanged) { updateListeners(runStart_namesToListenTo); } // Now, if we didn't break something by updating listeners, poll() if (status == Status.LISTENING) poll(); break; case STOPPED: /* do nothing */ break; } } } } //------------------ THE FOLLOWING MAY *ONLY* BE CALLED FROM THE ConnectionPoller thread ------------------// private void reportSQLException(String msg, SQLException e) { final PgNotificationExceptionListener el = exceptionListener; if (el != null) { el.sqlExceptionEncountered(PgNotificationPoller.this, conn, msg, e); } } private void reportListenerException(String msg, PgNotificationListener l, Throwable e) { final PgNotificationExceptionListener el = exceptionListener; if (el != null) { el.listenerExceptionEncountered(PgNotificationPoller.this, msg, l, e); } } // Returns true if ok, false if problem // not synchronized, must not access pub members private boolean poll() { assert(status == Status.LISTENING); assert(Thread.currentThread().equals(this)); try { lastPollTimeMs = System.currentTimeMillis(); helper.poll(); return true; } catch (SQLException e) { reportSQLException("Polling for notifications failed, will try to reconnect", e); return false; } } // Returns true if ok, false if problem // not synchronized, must not access pub members private boolean testConnection() { assert(status == Status.LISTENING); assert(Thread.currentThread().equals(this)); lastValidityTestMs = System.currentTimeMillis(); if (isConnValid(validityTestTimeoutSeconds)) { return true; } clearConnection(); return false; } private void checkConnWaitTimerStatus() { assert(Thread.currentThread().equals(this)); // Ensure that no statement is being waited on. If there is one, // something has gone horribly wrong, since this should only be // called from run() when we're clean and about to go around again. assert( ! connValidTimer.isWaiting() ); } /** * Test if the connection is valid and return true if so. * * Should use Connection.isValid() ... if Pg actually implemented it. * * @param timeoutSeconds delay before giving up on connection * @return true if test statement succeeded, false if failed or timeout */ private boolean isConnValid(int timeoutSeconds) { assert(Thread.currentThread().equals(this)); if (conn == null) return false; try { final Statement stmt = conn.createStatement(); connValidTimer.statementStarting(stmt, timeoutSeconds); try { stmt.execute("SELECT 1;"); } finally { SQLException exc = connValidTimer.statementDone(stmt); stmt.close(); if (exc != null) { reportSQLException("Error cancelling timed-out connection validity test statement", exc); } } return true; } catch (SQLException e) { reportSQLException("Connection validity test statement failed", e); return false; } } // always succeeds in clearing connection // not synchronized, must not access pub members private void clearConnection() { assert(Thread.currentThread().equals(this)); try { helper.setConnection(null); } catch (SQLException e) { reportSQLException("Problem while unlistening from probably broken connection", e); } try { if (conn != null) conn.close(); } catch (SQLException e) { reportSQLException("Problem while closing probably broken connection", e); } conn = null; setStatus(Status.STOPPED); } // not synchronized, must not access pub members private void connect(String newUrl, Properties newProperties) { assert(Thread.currentThread().equals(this)); if (conn != null) clearConnection(); try { assert(status == Status.STOPPED); lastReconnectTimeMs = System.currentTimeMillis(); conn = DriverManager.getConnection(newUrl, newProperties); conn.setAutoCommit(true); conn.setReadOnly(true); conn.setTransactionIsolation(Connection.TRANSACTION_READ_COMMITTED); // Will relisten as part of connect helper.setConnection(conn); url = newUrl; connProperties = newProperties; setStatus(Status.LISTENING); } catch (SQLException e) { reportSQLException("Could not connect to listening channel", e); // Do nothing. Our status hasn't changed, and we'll try // to reconnect again in a bit. } } // not synchronized, must not access pub members private void setStatus(final Status newStatus) { assert(Thread.currentThread().equals(this)); final Status oldStatus = status; this.status = newStatus; notifyStatusListeners(oldStatus, newStatus); } private void notifyStatusListeners(final Status oldStatus, final Status newStatus) { assert(Thread.currentThread().equals(this)); final Status targetStatus = pub_targetStatus; if (oldStatus != newStatus) { EventQueue.invokeLater(new Runnable() { @Override public void run() { for (PgNotificationListener l : listeners) { try { l.pollerStatusChanged(PgNotificationPoller.this, oldStatus, newStatus, targetStatus); } catch (Throwable t) { reportListenerException("PgNotificationListener.pollerStatusChanged(...)", l, t); } } } }); } } @Override public void listenersAdded(PgNotificationHelper helper, final Collection<String> names) { assert(Thread.currentThread().equals(this)); EventQueue.invokeLater(new Runnable() { @Override public void run() { for (PgNotificationListener l : listeners) { try { l.listenersAdded(PgNotificationPoller.this, names); } catch (Throwable t) { reportListenerException("PgNotificationListener.listenersAdded(...)", l, t); } } } }); } @Override public void listenersRemoved(PgNotificationHelper helper, final Collection<String> names) { assert(Thread.currentThread().equals(this)); EventQueue.invokeLater(new Runnable() { @Override public void run() { for (PgNotificationListener l : listeners) { try { l.listenersRemoved(PgNotificationPoller.this, names); } catch (Throwable t) { reportListenerException("PgNotificationListener.listenersRemoved(...)", l, t); } } } }); } // returns true if all ok, false if conn problem // not synchronized, must not access pub members private boolean updateListeners(Set<String> namesToListenTo) { assert(status == Status.LISTENING); assert(Thread.currentThread().equals(this)); // Copy and clear records of what to do next Set<String> toAdd = null, toRemove = null; boolean clearAll = false; if (namesToListenTo.isEmpty()) { clearAll = true; } else { toAdd = new HashSet<String>(namesToListenTo); toAdd.removeAll(helper.getListenedNames()); toRemove = new HashSet<String>(helper.getListenedNames()); toRemove.removeAll(namesToListenTo); } // then update the helper, now that we've released the namesToListenTo lock // and can thus perform database work without blocking anybody trying // to change the list of names to listen to. try { if (clearAll) { helper.unlistenAll(); } else { for (String l : toRemove) { helper.unlisten(l); } for (String l : toAdd) { helper.listen(l); } } } catch (SQLException e) { // Something went wrong while doing our update work. reportSQLException("Failed to update listens on helper, trying to relisten", e); // Reset the helper to a clean state, supplying the list of names // we expect it to have since we don't know what state it landed up in. try { // TODO: Be smarter with notifications here // TODO: Notify people here helper.relisten(namesToListenTo); } catch (SQLException e2) { reportSQLException("Failed to relisten(), re-setting connection. Notify events may be lost.", e2); clearConnection(); return false; } } return true; } //------------------ THE FOLLOWING MAY *NOT* BE CALLED FROM THE ConnectionPoller thread ------------------// /** * Tell the poller that its desired status has changed. * @param newStatus New status to seek */ public synchronized void setTargetStatus(Status newStatus) { assert(!Thread.currentThread().equals(this)); this.pub_targetStatus = newStatus; notifyAll(); } /** * Inform the poller that the desired connection properties have * changed. If the new and old properties actually differ, this will * trigger a reconnect. * * @param map New properties map, which is copied for storage */ public synchronized void setNewConnectionProperties(String url, Properties map) { assert(!Thread.currentThread().equals(this)); this.pub_newUrl = url; this.pub_newConnProperties = copyPropertiesIncludingDefaults(map); } public synchronized void addListenedName(String name) { assert(!Thread.currentThread().equals(this)); pub_namesToListenTo.add(name); pub_namesToListenToChanged = true; } public synchronized void removeListenedName(String name) { assert(!Thread.currentThread().equals(this)); pub_namesToListenTo.remove(name); pub_namesToListenToChanged = true; } public synchronized void clearListenedNames() { assert(!Thread.currentThread().equals(this)); pub_namesToListenTo.clear(); pub_namesToListenToChanged = true; } public synchronized boolean pollNow() { lastPollTimeMs = 0; notifyAll(); return status == Status.LISTENING; } //------------------ The following may be called from any thread ------------------// // They must not modify any locals at all and must not even access them unless // they are guaranteed thread-safe, like `listeners'. @Override public void notified(PgNotificationHelper helper, final long receivingBackendPid, final List<PGNotification> notices) { EventQueue.invokeLater(new Runnable() { @Override public void run() { for (PgNotificationListener l : listeners) { try { l.notified(PgNotificationPoller.this, receivingBackendPid, notices); } catch (Throwable t) { reportListenerException("PgNotificationListener.notified(...)", l, t); } } } }); } } /** * Copy the properties map `input' into a new properties map. * Any default properties maps are merged into the new map first, so that * the returned map is a single properties map containing all the properties * of the whole defaults inheritance tree. * * The result from calling getProperty(...) on the new map will be the same * as on the old map. * * This operation is really, really not fast. * * @param input * @return */ private static Properties copyPropertiesIncludingDefaults(Properties input) { Properties newProps = new Properties(); for (Enumeration e = input.propertyNames(); e.hasMoreElements(); ) { final String key = (String) e.nextElement(); newProps.setProperty(key, input.getProperty(key)); } return newProps; } }
import java.sql.SQLException; import java.sql.Statement; /** * A service capable of registering a statement for cancellation after * a timeout and of later cancelling that timer if informed that the * statement has finished. * * @author Craig Ringer <email@example.com> */ public interface JDBCStatementTimeout { /** * Start waiting on the statement `stmt'. * * @param stmt Wait for this statement to finish * @param timeoutSeconds for this long */ void statementStarting(final Statement stmt, final int timeoutSeconds ); /** * Report that the statement `stmt' has finished or failed. It may have * failed due to our own cancellation request. * * @param stmt Statement to remove from waiting list * @return null unless task was cancelled and cancellation threw, in which case that exception */ SQLException statementDone(Statement stmt); /** * @return true if and only if waiting for one or more statements */ boolean isWaiting(); }
import java.sql.SQLException; import java.sql.Statement; /** * A fairly stupid statement timeout class, capable of tracking * only one statement at a time. * * @author Craig Ringer <firstname.lastname@example.com> */ public class JDBCStatementTimeoutThread extends Thread implements JDBCStatementTimeout { private Statement waitingFor; private SQLException lastException; long timeRemainingMs; long endMillis; public JDBCStatementTimeoutThread() { setName(JDBCStatementTimeoutThread.class.getName()); setDaemon(true); } @Override public synchronized void run() { while (true) { try { wait(); } catch (InterruptedException e) { // re-check if there's something to do and reloop if not } while (waitingFor != null && timeRemainingMs >= 0) { timeRemainingMs = endMillis - System.currentTimeMillis(); try { wait(timeRemainingMs); } catch (InterruptedException e) { // recheck and continue } } lastException = null; // done waiting or interrupted. Did we time out, or did the task finish? if (waitingFor != null) { // whoops, timeout! try { try { waitingFor.cancel(); } finally { waitingFor = null; } } catch (SQLException e) { // Not running on the main worker thread so we can't // safely call reportSQLException(...). Note it down // so the main worker thread can check and report // it later. lastException = e; } } } } @Override public synchronized void statementStarting(final Statement stmt, final int timeoutSeconds ) { if (waitingFor != null) throw new IllegalStateException("Already waiting for completion of statement " + waitingFor); waitingFor = stmt; timeRemainingMs = timeoutSeconds * 1000; endMillis = System.currentTimeMillis() + timeRemainingMs; notifyAll(); } @Override public synchronized SQLException statementDone(Statement stmt) { if (waitingFor != null && waitingFor != stmt) { throw new IllegalStateException("Statement reported as done, " + stmt + ", was not statement waited for " + waitingFor); } SQLException lastExc = lastException; waitingFor = null; lastException = null; notifyAll(); return lastExc; } @Override public boolean isWaiting() { return waitingFor != null; } }
This code originally by Craig Ringer <email@example.com>, to whom all the great many bug complaints and curses should be directed.

subset: commoncrawl


text:
|"Are you a wizard or not?"
The title of this article is conjectural. Although it is based on canonical information, the actual name is a conjecture and may be supplanted at any time by additional information released from canonical sources. If this occurs, please move this page to the appropriate title.
In early November 1981, a number of celebrations were held by wizards to celebrate what they believed to be the fall of the Dark Wizard Lord Voldemort. These celebrations were held without regard for the International Statute of Wizarding Secrecy, resulting in various Muggles noticing oddities.[1]
As Vernon Dursley went about his business on 1 November, 1981, he noticed a number of odd activities. An unusual number of strange people wearing cloaks were gathered in the streets near his workplace, Grunnings. That evening on the news, there were reports of shooting stars and hundreds of owls flying everywhere since sunrise.
Minerva McGonagall mentioned these oddities to Albus Dumbledore, who did not seem bothered by them and suggested that they attend one of the gatherings. McGonagall considered the whole business irresponsible, particularly the shooting stars in Kent that she suspected were the work of Dedalus Diggle.[1]
For her part, Millicent Bagnold, British Minister for Magic at the time, chose not to take any action against the festivities, stating "I assert our inalienable right to party."[2]
- Harry Potter and the Philosopher's Stone (First appearance)
- Pottermore (Mentioned only)
Notes and references
- ↑ 1.0 1.1 Harry Potter and the Philosopher's Stone, Chapter 1 (The Boy Who Lived)
- ↑ Pottermore introduction for Ravenclaws (transcription available here)


text:
0 Members and 1 Guest are viewing this topic.
THere will be a final 9 for certain.
looking like this for the version this year....Swope-1-Double Mando-Long Position Key Hole OB2-Short-Need hay bales, OB circle around the green, and bales to force placement shot-Bales 3 High3-Long pin before road, Keyhole OB style4-Holes #4-5 long, ob tighter than last year all along the right, inside of #5 bench5-first hole by house, road OB, and to the right, "water OB", no double mando, long pin6-Tee by stop sign road entrance to zoo, straight shot back green drop off-(We need a pad poured here)7-teeing by fence, open fairway towards pin last year, using "water" OB-pin placement moved (Pad & Pin needed)8-tee by light pole, OB right-(Pad & Pin needed)-Trees need to be raised9-6 Short10-7 Island Rules, Double Mando11-8 Long-OB Clubhouse area12-Tee #9 to #11 Blue Pin-Mando Tree to left13-#12 to pin by the road behind rock14-#13 Long, OB teeing from "island" rules, DZ=Short Pad if not inbounds15-#14 long Pad to #15 island16-Tee from Gregory corner to long #16 pin, OB aligns the fairway (need pad)17-to #15 Blue placement18-Short pad to #10 Blue placement, OB aligns the fairwayRocks are ONPDGA Tent by #3 long all weekend...Final 91234 (to 5)5-76-87-9 Short (need to move pin)8-14 long pad to long pin #14 (need to move pin)9-18 Long pad-Blue placement (need to move pin) OB will be on sides, but not behind pin, it will align with the regular SWG13.This isn't set in stone yet, but it is pretty darn close to what this is going to be looking like.


text:
WALLKILL, N.Y. — A baby has been born inside an upstate New York Walmart store.
According to media reports, a woman went into labor around 8 p.m. Thursday at the Walmart in the Orange County town of Wallkill, 65 miles north of New York City.
The Times Herald-Record of Middletown reports that a store manager confirmed the birth. Customers helped deliver the baby just before paramedic arrived.
Information on the gender of the baby or parents wasn't available.
The store manager says more information will be released Friday.


text:
September 19, 2013
TOS CO-CHAIR: Creator and Sentinel Executive Publisher Danny Bakewell Sr. announced Congresswoman Karen Bass as a co-chair for the 8th annual Taste of Soul. "I want to congratulate Danny Bakewell, Sr. for the huge success that Taste of Soul has become. In only eight years it has become the largest family festival in the city bringing hundreds of thousands of people together on Crenshaw to celebrate our community," Rep. Bass released in a statement.


text:
- Williston State College Home
- >
- News & Events
- >
- TrainND welcomes $150,000 gift from Statoil towards construction of new Williston Training Facility
News Feed
TrainND welcomes $150,000 gift from Statoil towards construction of new Williston Training Facility
Tuesday, April 1st, 2014
Posted by TrainND; On behalf of StatOil
TrainND welcomes $150,000 gift from Statoil towards construction of new Williston Training Facility
WILLISTON, N.D. - As a part of its commitment to the Williston Basin, Statoil is pleased to announce a Diamond Level pledge of $150,000 over three years towards the construction of the new TrainND-Northwest Center in Williston.
TrainND has embarked on an ambitious $7.5 Million capital campaign to build a 19,750 square foot state-of-the art regional workforce training and education center that will provide Northwest North Dakotans access to the technical skills and training they need to meet the current and future needs of the state's oil and gas industry, as well as other critical professions such as nursing, management, IT, manufacturing, and childcare to name a few.
"TrainND is extremely pleased to receive this pledge from Statoil. We are proud to have a contribution of this magnitude from a company that prioritizes our 'safety first' mantra and is very active in the community. It is our hope that others will follow suit and also make a pledge," says Deanette Piesik, CEO of TrainND.
Torstein Hole, head of Statoil's US onshore group says, "As part of our commitment to safety, the community and responsible operations in the Williston Basin, Statoil is very excited and proud to be a part of helping to bring this new training facility to life. This center will enable current and future generations to gain skills in areas critical to the growth and diversification of North Dakota's economy."
About TrainND
TrainND-Northwest provides training for ND business and industry enhancing their ability to compete globally. We provide documentation of training to our companies, through employee transcripts, safety passport books, safety training cards, certifications, etc. In the event your business is audited or if you need a copy of a past record, we can provide that information.
In Fiscal Year 2013, the four Train ND regions provided training for 1,489 companies. And of these companies, 45% returned for additional training. 23,935 employees participated in one of the many training sessions held throughout the state. In addition, the business sector ranked the satisfaction level provided in the training sessions at 99%.
About Statoil
Statoil is a major operator in the Williston Basin, following its 2011 acquisition of leading Bakken player, Brigham Exploration. Statoil now holds approximately 312,000 net acres in the Basin, producing around 50,000 barrels of oil equivalent per day, and also operates in the Eagle Ford and Marcellus shale plays.
Statoil is an international energy company with operations in 33 countries. Building on 40 years of experience from oil and gas production on the Norwegian continental shelf, we are committed to accommodating the world's energy needs in a responsible manner, applying technology and creating innovative business solutions. We are headquartered in Stavanger, Norway with approximately 23,000 employees worldwide, and are listed on the New York and Oslo stock exchanges.
For more about the Statoil donation, please contact Deanette Piesik at 701.774.4246, email@example.com or Lauren Shane, Senior Consultant Communication, US onshore, at 713.918.8200, email@example.com. If interested in any information about WSC, please call 701.774.4200, visit www.willistonstate.edu , or stop by 1410 University Ave.


text:
Working for Ofsted
Launched as the Office for Standards in Education, Children's Services and Skills in April 2007, Ofsted's reach is extensive and spans inspection and regulation of children's services and inspection of education and skills for learners of all ages. You can find out all about us at our website.
Our work touches the lives of millions of people in England every day. One in every three people uses the services we inspect or regulate, or the information we provide.
We are passionate about raising standards and improving lives. Whether it's focusing on issues of national importance through inspection, investigating complaints about care, or working to spread good practice and celebrate outstanding achievement, what drives us is the knowledge that what we do really makes a difference.
Ofsted is a good employer, with Investors in People accreditation, and offers competitive employment packages. We employ staff in a wide range of jobs – from inspectors to editors, IT specialists, policy advisers, data analysts, accountants and administrators – based in our four offices in London, Bristol, Manchester and Nottingham and working from home.
For more information and current job opportunities, visit www.careers.ofsted.gov.uk.


text:
Dodgers fans can talk about what might be. Angels fans can talk about what might have been.
When the rosters for Major League Baseball's All-Star game were announced Saturday afternoon, the National League team included Dodgers left-hander Clayton Kershaw for the third consecutive season and the American League team included outfielder Mike Trout for a second consecutive time.
The Dodgers might also get a second player into action because rookie sensation Yasiel Puig and slugger Adrian Gonzalez are among five NL players in the balloting for the final spot on the NL team.
Puig has played only 31 major league games, but he fueled the Dodgers' surge from the NL West cellar and became the first player to be selected as his league's player of the month in his first month in the majors since the award was instituted in 1958. He has a .407 batting average and eight home runs, and picked up an on-camera jolt of support from Fox analyst Harold Reynolds, who closed the network's televised selection show by saying Puig had his vote and then chanted his name.
In the regular fan voting, Puig received 842,915 write-in votes, the most since Pittsburgh shortstop Freddy Sanchez got 856,685 in 2006.
To make the roster, Puig will have to win the vote over one of his mentors, Gonzalez, who started Saturday batting .300 and led the Dodgers in runs, hits, doubles, home runs and runs batted in. Washington shortstop Ian Desmond, Atlanta first baseman Freddie Freeman and San Francisco outfielder Hunter Pence are also on the NL final-player ballot.
Voting for the final roster spots in each league will take place in the next five days. Fans can vote at MLB.com, club Internet sites and by mobile phone.
As for the Angels, they can watch Trout and several exes: Among the NL All-Stars are two former Angels prospects who left in trades for veteran pitching. Arizona left-hander Patrick Corbin was sent away in a deal for Dan Haren; Milwaukee shortstop Jean Segura left in a package that netted Zack Greinke for a few months.
Corbin has a record of 9-1 and an earned-run average of 2.49. Segura started Saturday with a .321 batting average.
Detroit outfielder Torii Hunter, whom the Angels decided to dump in favor of free agent Josh Hamilton, is also an All-Star, as is Matt Harvey, whom the Angels drafted in 2007 but failed to sign. Harvey, a New York Mets right-hander, will probably be the NL's starting pitcher. He has a record of 7-2 with a 2.27 ERA for credentials, and the All-Star game will be played July 16 at Citi Field, home of the Mets.
Harvey led all NL pitchers in the player voting. Kershaw, who has a 7-5 record and a major league-leading 1.93 ERA, was second.
Trout, who began Saturday batting .314 with 20 stolen bases and 13 home runs among 42 extra-base hits, received the second-most fan votes among American League outfielders behind Baltimore's Adam Jones. Trout led the players' voting.
Last season, Trout was chosen to the team as a reserve. "Definitely means a lot more to start the game, to be mentally prepared that you're going to be starting the game," Trout said Saturday before the Angels played the Boston Red Sox. "Last year I got to come in off the bench, and just the experience I had last year was unbelievable."
Trout, 21, and Washington outfielder Bryce Harper, 20, are the first position players younger than 22 to start the same All-Star game since Al Kaline and Frank Robinson in 1956. Meanwhile, New York Yankees closer Mariano Rivera, 43, is an All-Star for the 13th time, second among pitchers behind Hall of Famer Warren Spahn, a 17-time selection.
AL Central leader Detroit led all teams with six All-Stars, including right-hander Max Scherzer, who is the first MLB pitcher to start a season with a record of 13-0 since Roger Clemens in 1986. St. Louis paced the NL with five selections, including starters Yadier Molina at catcher and Carlos Beltran in the outfield.
Division leaders Pittsburgh, Atlanta and Arizona did not place a player in the NL's starting lineup.
Times staff writer Jim Peltz contributed to this report.
writer Jim Peltz contributed to this report.


text:
This is entry number one…why I should become the next food blog star!
I started blogging because I was inspired by all of the other blogs out there. They had recipes that I wanted to try and amazing photos to go with them. There were also stories from the heart about their lives and how that day's adventures brought them to making or baking that food. I wanted that. I wanted a way to share what I bake and the stories behind them. I think my blog is unique because I share a lot of tips and tricks along with the recipe. I know I don't have the best photos, but I try to post the best I've got. I also share other baking and foodie adventures in the world of food that takes place in the city of San Francisco. I think I am very lucky to have found such a great city to explore and live in. Overall, my blog is about my adventures in food and baking and I love to share what I've learned and what I know.
I have learned a lot about blogging and about baking since I first started this blog, which is just another plus. I joined the Daring Bakers in January, and have been loving the challenges because it keeps my mind open beyond the desserts I know. I love getting the prospective of bloggers from around the world. We all have our challenges when it comes to baking, whether it's ingredients, time, or lack of knowledge or skills. It is nice to have a group of people to share these challenges with and learn from each other.
I think everyone likes to bake and learn the right steps and techniques to do so. I think my blog does that because of the tips and tricks that I put in when I am making something. I try to write the blog post the day that I am baking the product (sometimes even while it's in the oven!) so that what I did is fresh in my mind. When I make mistakes, I share them. Sometimes I've made mistakes into masterpieces…I try to get creative and use the product instead of just throwing it away.
I like to use all of a product. When I buy some ingredient specifically for one cake, I try to use the leftovers right away in something else so that the product that I bought does not get thrown in the back of my pantry and then eventually thrown out. That is another way that I set myself apart from the other bloggers. I use what I have on hand a lot of the time. As a single, young woman, living in the very expensive city of San Francisco, I have learned to use what I've got. This helps me think creatively and to think out of the box.
I really like blogging and I hope that my readers enjoy learning about baking and reading about my adventures in baking and with food in general. I've recently started posting food related articles that have caught my attention over the weeks of each month. I started doing this because I wanted to share what I thought was an interesting trend or something interesting about the world of restaurants and chefs. There are so many different "foodie" things happening, that I think my blog is a good way to share what I think are the most interesting things going on.
I have written a review for a new recipes website, and for new cookware and bake ware. I have had the opportunity to interview a chef and write about that experience. I also have been involved in various bake sales and have baked for many different causes. I have been to food festivals and tasted desserts served at many different restaurants. I like to share these adventures as well because they are just as important as sharing the recipes I have tried. It lets my readers into my life and shows allows them to learn more about me and about what I am involved with in my everyday life.
I get inspired by the other bloggers and the articles that I read every day and there are so many recipes that I have bookmarked that I have yet to try (and blog) about. I look forward to finding what I want to bake next and get my camera ready and just getting down and dirty with some flour, sugar, and butter (and probably some chocolate). I hope that I inspire my readers and get them as excited about baking as I do!


text:
FY03 Heritage and Preservation
Detroit Symphony Orchestra (consortium), $75,000
To support workshops and performances during the National Association of Negro Musicians' (NANM) 2004 convention. The Detroit Symphony Orchestra (DSO) and NANM will host the six-day national convention and present youth sessions, panel discussions, a scholarship competition, and concerts of jazz, gospel, choral and orchestral music.
Eclipse Chamber Orchestra, $10,000
To support the compact disc recording of works by composer Mark Adamo. The compact disc will feature music commissioned during the composer's tenure as composer-in-residence with the chamber orchestra and will be recorded on the Naxos label.
Louisiana Philharmonic Orchestra, $25,000
To support a concert program exploring the connection between the city of New Orleans and the Harlem Renaissance. Through a collaboration with the New Orleans Museum of Art and Tulane University's Amistad Research Center, three concert performances will include an exhibition of works by Harlem artists and educational activities.
Grants to Related Organizations:
Columbia College Chicago (on behalf of Center for Black Music Research), $25,000
To support a symposium and performance celebrating the 20th anniversary of the Center for Black Music Research. Artistic Director Coleridge-Taylor Perkinson will moderate an open panel discussion with five composers of African descent and conduct a performance by the New Black Music Repertory Ensemble.


text:
Image via Wikimedia Commons user Pens Through My Lens
The Sabres entered the 2012 season with high expectations. New owner Terry Pegula infused the franchise with cash which allowed management to add Christian Ehrhoff, Ville Leino, Robyn Regehr, and the contract of Ales Kotalik (he spent 2012 in the Czech Republic). The combined cap hit of the guys who stayed in the league (Ehrhoff, Leino, and Regehr) was $12.52 million.
Unfortunately, despite the injection of cash, the Sabres fell out of the playoffs.
Buffalo drank the poisonous cocktail of being soft, being terrible at faceoffs, and banking on big years from numerous guys with significantly elevated shooting percentages. Some red flags should have been obvious, but this is a team that was still too talented to end up where they did.
Making It Rain
The Pegula era started with a bang. The combined cap hit for the Sabres big three acquisitions was a reasonable 12 million dollars, but in the strange universe that houses the NHL salary cap, the Sabres actually committed 38 million in real dollars for just the first two years of those three guys. 18 million was committed to Ehrhoff, 12 million to Leino, and presumably 8 million to Regehr. Needless to say, that's a lot of cheddar.
In total Ehrhoff picked up 40 million dollars over a ten year deal. Reactions to the deal were generally ok, but skeptical of the length. Ehrhoff missed 16 games to injury, but in the 66 games he played he was almost exactly what the Sabres should have expected. His powerplay production dropped, but his even strength points/60 rose from .82 in 2011 to .97 in 2012. 2012 wasn't a season that would change your opinion on Ehrhoff one way or the other. If you liked the deal when it was signed you still should. If you didn't, nothing happened that should change your opinion either.
The Sabres got exactly what they should have expected from Regehr also. Regehr's defensive reputation is well known, but the inability to move the puck out of your own end can overshadow any player's defensive contributions. This example from Dave Tippett never gets old, and is appropriate any time a defensive defenseman is the topic of discussion :
"We had a player that was supposed to be a great, shut-down defenseman. He was supposedly the be-all, end-all of defensemen. But when you did a 10-game analysis of him, you found out he was defending all the time because he can't move the puck.
"Then we had another guy, who supposedly couldn't defend a lick. Well, he was defending only 20 percent of the time because he's making good plays out of our end. He may not be the strongest defender, but he's only doing it 20 percent of the time. So the equation works out better the other way. I ended up trading the other defenseman."
As KuklasKorner pointed out last August, Regehr had a poor zone start adjusted Corsi, and in similar ice time with the Sabres his Corsi continued to drop (from -3.62 to -10.88). Regehr might still be good defensively, but the amount of time he spends defending is going to be a problem going forward for the Sabres.
Another problem going forward is Ville Leino, and the Sabres should have seen it coming.
Betting On Shooting Percentage Spikes
Leino's breakout year with the Philadelphia Flyers came out of nowhere. Prior to 2011, he had 20 points in 68 career games In 2011 Leino played in 81 games, netting 19 goals and 53 points. Two pieces of information should have been significant red flags for Buffalo. Leino saw heavily sheltered minutes with the Flyers, and his production benefitted from a shooting percentage spike.
Outside of the Flyers fourth liners, Leino faced the lowest Corsi Relative Quality of Competition among Flyers forwards. 62.3% of Leino's faceoffs were in the offensive zone which was ten percentage points higher than any other Flyer, and only 12 players in the league got more favorable zone starts among forwards who played in at least 50 games. The heavily sheltered minutes he saw in Philadelphia signalled that his production was somewhat of a mirage.
Leino's shooting percentage spike should have given the Sabres pause as well. Prior to the 2011 season Leino had a respectable 11.7% shooting percentage. During his breakout 2011 season he saw it jump to 16.7%. Shooting percentages are volatile for sure, but Leino's short track record should have been a big enough red flag to cause the Sabres some concern before handing out 27 million dollars over six years. The shooting percentage spike combined with the sheltered minutes made this contract dangerous the moment it was signed.
Drew Stafford was attacked by the shooting percentage monsters in 2012 too. Coming off of a season that saw him score 52 points in 62 games (including 30 goals), expectations were high. He was very good last year, but scoring 10 less goals in 20 more games is bound to leave observers disappointed. The main culprit is the huge drop in Stafford's shooting percentage. It fell to 8.8% from 17.8% from 2011 to 2012. If it rebounds to nearer to his career average of 12.1% and he sustains a similar shots/60 he could be in for a big season.
Building Depth At Center
The Sabres center corps is significantly different heading into the 2013 season. Out are Derek Roy and Paul Gaustad. In are Steve Ott and Cody Hodgson. The Sabres also spent first round picks on centers Zemgus Girgensons and Mikhail Grigorenko. Grigorenko, widely considered a top three talent in the draft, could make the Sabres out of camp.
The Sabres needed a makeover up the middle. They finished 19th in the NHL in faceoff % as a team. Coming into this offseason, the only forward on the Sabres roster who took more than 200 draws and won more than 50% of those was Roy. Steve Ott (55.5%) will help, but the Sabres need a center in the top six to step forward to really stem the faceoff failure tide.
As important as faceoffs are, the stable of centers the Sabres have acquired are in town to put goals in the board. Hodgson was on a 42 point pace at the time of his trade from Vancouver, and slipped to a 33 point pace in Buffalo. Grigorenko scored 85 points in 59 games for the Quebec Remparts (an NHL equivalence of 35.4), and Girgensons was a point per game player in the USHL. They both give the Sabres a bright scoring future up the middle that should begin making an impact sooner than later.
Defending Ryan Miller
Ryan Miller had an up and down season in net for the Sabres. The signature event of his season was when Milan Lucic of the Boston Bruins cleaned his clock as Miller tried to play a puck way out of his crease. The hit spurred the Sabres into action after the season to add some toughness to the roster. As a rsult, Buffalo should have plenty of frontier justice in supply with the additions of Ott and John Scott.
Scott isn't what you would call a "good" hockey player. He's on a roster for the purpose of protecting the stars by acting as a deterrent to cheap shots like the one levied by Lucic on Miller. Whether or not that actually works is up for debate, but the Sabres are hoping Scott's presence will make Eastern Conference bunkmates think twice before running one of their key players.
The addition of Ott further solidified the Sabres defense of Miller. He and Patrick Kaleta will form the basis for one of the most annoying lines in recent memory. Annoying doesn't necessarily translate into being tough, but this duo has shown a willingness to drop the gloves in the past. Buffalo will be much tougher to play against in 2013, but it remains to be seen how much this will impact the standings.
The Sabres could go either way in 2013. They focused on getting tougher, and they improved the upside of their center position significantly for the future. The biggest addition for the 2013 season though was Steve Ott. They appear to be banking on internal improvements from their forwards to improve the offense, and they did little to address the defense. If the Sabres young forwards take a step forward as a group they could find themselves back in the playoffs. If not, they will once again be on the outside looking in.
Follow Josh and NHLNumbers on Twitter.


text:
Words by Tim Martinez
Photos by Seu Trinh
Videography by Joe Aivizian
When I was asked to serve as Jart Skateboards' tour manager, I couldn't refuse (especially because they were paying me). The Jart tour consisted of six of Europe's finest pros headed to Los Angeles for three weeks. Since I'm a native skater of the L.A. area for too many years to mention, I knew we'd have a blast skating some popular spots and unknown gems, like the 60 Freeway banks we used to skate in the 80s (it's funny how spots regain popularity).
The first task of managing and arranging the tour was to find adequate lodging for the team. Let me start by saying that finding affordable housing for six skaters ain't easy, especially in and around the Hollywood area.
(SIDE NOTE: if you're planning an L.A. skate trip, stay in Hollywood because it's central to everything and chances of getting robbed and shot are a lot lower.)
So with the wonder and ease of Craigslist I was fortunate enough to find a nice/brave lady named Donna who more than obliged us renting us two rooms in the downstairs of her Hollywood Hills house, a.k.a. mini paradise.
[This photo was taken minutes after seeing twenty cops and two gangsters go heads up. The ghetto bird was flying extremely low and it would mess with most people's concentration. Bastien Salabanzi just happens to know exactly what and how to do it. Kickflip Backside Tailslide in a few tries and without insoles.]
I think the house was a little too amazing because everyone got real comfortable there and it became next to impossible to drag the skaters away from the pool table, swimming pool, view of L.A., garden, comfy bedding… you get the picture. Throw in a couple of dancing show girls that were occupying the upstairs(which would venture down for a swim occasionally) and you've got a recipe for some heavy chilling.
Once the pad was situated I called up Seu (our TWS photog) and asked him if he was down to hang and shoot some photos of our tour. When he asked, "Where are you touring?" I replied Los Angeles. We both immediately started laughing because no company makes a tour of just Los Angeles (although with the amount of spots in L.A it totally makes sense). In the 90s, an L.A. tour consisted of taking the bus from USC to Lockwood to the Santa Monica Courthouse. I knew Seu was good for the trip because he's an L.A. veteran with a deep bag of spots.
[Anyone that has ever been to this ditch in Burbank will know that it is a cheese grater and close to vertical. I hope everyone has a chance to see this monster and recognize how gnarly just rolling in is. Ivan Rivado throws a whopper of a Frontside 360 in this beast.]
So we had legit housing and a great photographer. The only thing left to do was pick up the team. However, it seemed that the good 'ol boys in Texas weren't so sure about letting Eero, Ivan, and Bastien into the country and held them up in customs for a bit. Fortunately, they eventually let them get on to Los Angeles albeit a few hours late. Welcome to America!
The team consisted of JM Roura (Pro/ EU Team Manager), Eero Anttila, Ivan Rivado, Orlando Acosta, Bastien Salabanzi, and JP Troullier. I must also mention that Danny Gonzalez officially became the first American pro for Jart somewhere near the beginning of the trip so he popped into the scene as well.
Thus we come to the skateboarding portion of our story. There is something really refreshing about hanging out with a bunch of European skaters (in and outside of America). It's probably that they're not warped by corporate America. It's almost as if skateboarding mainstream culture hasn't infiltrated their skate life (I can pretty much guarantee most of these guys don't know about Sheckler's new rap album). These dudes just skate.
[Orlando Acosta was like a kid in a candy store here in the U.S. Him being the kid, the spots being the candy. A sweet trick on a very old spot: Frontside Late Shove-It.]
I remember the first day skating, we hit downtown. We skated in the blazing heat and these dudes were demolishing every damn spot we hit. I could tell that they were amped on skating in L.A. They just wanted to schralp (yeah I said it, schralp)!
Due to the fact that 99% of the readers are unfamiliar with Jart's pros, I'll briefly fill you in on each. First off, Roura. This poor guy blew his knee out four months prior to the tour, but being the TM he punked it and came out to support and manage the team. He is also a beast and couldn't stay off the skateboard. He shredded way harder than I did and my knee is fine. He was jamming on the mini, tailsliding banks, and he even threw a crail on the famous Ramada banks. Then we've got Ivan, or as we like to call him "heartthrob". Mainly because he looks like he belongs in a teeny bop magazine with his perma tan, refusal to ever wear a shirt, and extremely white teeth (sounds gay, but true). Ivan eats spots for breakfast. Put one in front of him and see what happens. San Pedro watch out. Third on the list is JP Troullier. The dude is asleep at the wheel. He looked damn good every time he flicked his board. Proper with a capital Pop. I'd have to say though my favorite was Orlando. He easily had everyone on the team by a few years but he skated and ripped like he was the youngest pouring with blood sweat and gnar everywhere! Have you heard of Eero? Are you really good at skate video games? Well Eero is that good at skateboarding. Does this guy miss tricks? Doubt it. Finally we had Bastien. There is nothing I can write that would justify the amazing talent of this kid. Super nice guy and a real pleasure to watch murder spots. Good to see Bastien killing it as hard as ever. Oh, we can't forget Danny. Again, it's hard to put words to his skating. Just always expect the unexpected from him. All in all the Jart team is force to be reckoned with, as I am sure you will find out in the near future (big plans).
[I don't know what possessed us to roll out to Norwalk in the blazing heat mid day, mid summer. Ivan Rivado battled heat stroke to claim the coveted Backside Nose Pick. (This should also explain the pantless filmer in the background. No funny business here).]
I can't forget to mention our filmer Joe Aivizian who was nicknamed "Ecuador" even though he's Armenian, go figure. Joe's antics kept the mood light and smiles on the faces, usually.
As far as spots are concerned, I'd like to state this as an actual statistic for the records. We checked out a minimum of 10 spots a day for 20 days straight. You do the math and ask yourself if you've ever skated that many spots in your life.
I think the most "L.A. experience" we had was when we were skating the handrail at Hazard Park near downtown (Hazard as in one of the oldest gangs in Los Angeles). Needless to say the park is sketchy. So there we were setting up the cameras, warming up, and skating. All of a sudden the ghetto bird gets really low right overhead and two gangsters appear from the bushes and start fighting. Seconds after the fight begins, close to 15 police officers tackle the two guys while some lady with five kids comes running down the hill screaming at the cops. Talk about being at the wrong place at the wrong time. After everything had settled, some random gangster kid rolls up on us and starts sweating us, talking mad sh-t, and threatening us. He leaves and then reappears only to apologize and then he bounces out again. Once everything blew over and the cops and gangsters were out of sight Orlando kickflips boardslides the rail and Bastien kickflip back tails it. How's that one for the books?
[Orlando Acosta conquers the Highland Park bump. This is one of those spots that gets gnarlier and grimier over time. Frontside Alley-Oop Kickflip.]
I guess the thing that surprised me the most about the Jart team is that not once in 24 days did anyone want to hit the town partying. Which is a testament to how fresh the house was, but also a reflection of how motivated these guys were to skate. It could also be that they got so stoned every night they couldn't even talk much less stroll down Hollywood blvd and try to mack it to some random birds in broken English.
Fortunately no one was seriously injured. Bastien however awoke one morning to find he had a swollen knee and he couldn't even walk on it. After a doctor visit and some reassurance that everything was cool he went home early to his one-month old son for some chilling and recovery.
To say the trip was a success is an understatement. Everything was perfect. We got to rep the team and the brand, hand out free product, hit skate parks, street spots, famous spots, new spots, and we got tons of footy and photos. What more could you want from a tour?
Oh, by the way Jart (or Jarto) means "crazy" in Basque – I'm sure you're all wandering. Now stop asking, these dudes are mucho Jart!
[Eero Anttila cracking the Hardest Flip of all.]


text:
- Home
- Editor's Desk
- Features
- Columns
- Arts & Culture
- Special Editions
- Advertising
Tuesday May 21, 2019; 09:29 am EDT
Sometimes it's catching
It was a few minutes past sundown, but the failing light still burnished the water's surface, making it glow like molten metal. What little wind there had been had died, leaving the water flat. Conditions were perfect for top-water fishing. But it was late. If the fish were going to show, they had better come soon.
I had been missing the surface bite so completely that I felt as if I had become a Jonah. I had stopped partnering lest I subject friends to the same fate. The day before, the day after, this river or that; it didn't matter because whenever and wherever I was, the fish — at least legal-sized fish — weren't.
Live-lining remains the most reliable way of getting nice rockfish. The False Channel is holding the best sizes, though Podickery Point and the Bay Bridge sometimes surprise anglers. Live-lining should continue hot until we get a few cold spells, sending the best baits, Norfolk spot, on their way to more southern waters. Gum Thickets has been excellent at times, as has Bloody Point and the area south of Poplar Island for bluefish and Spanish mackerel as well as rock. The Thomas Point area has had some good top-water action for rockfish. But in general the surface bite has been difficult to anticipate.
Hunting Dates
Ducks: Oct. 13 thru 20
I launched a fast, flat cast toward the edge of the grass in a lovely cove that hadn't given me a striper the past two seasons. I was desperate now, and this was the last place to try along this particular shoreline before darkness. The areas I had worked earlier had proved barren.
I was throwing a black Stillwater plug, my favorite brand and color for this time of day. As it reached the end of its flight, I thumbed the spool lightly so that the lure landed straight away in the water, ensuring the plug's hooks didn't foul my leader.
Only one good striper had given me a tumble recently, and that was a week earlier. It showed as big around as my leg as it smashed my plug in two feet of water and made a couple of good runs before I lost it. This long string of fishless mornings and evenings followed that loss.
I chugged the lure hard, and the effort shot a twinge of pain through my tired shoulder. Swimming the popper slowly along for a few feet, I then chugged it again. It disappeared in a boil of water. That was so unexpected that I didn't react. I didn't need to. The pressure on my line was instant and heavy. I had hooked up at last.
Feeling the bite of the treble and recognizing that its prey was suddenly its captor, the fish came out of the water sideways. Scarcely touching down, it launched into the air again, shaking its head against the lure wedged in its jaw.
Four jumps later, the striped acrobat abandoned that tactic for deep water. My drag sang a song that I hadn't heard in far too long as the beast shot out of the shallows. Keeping my rod low and to the side, I let it run.
I worked the fish first from one angle then another. Short-stroking and then plunging my rod deep in the water as the fish crossed underneath my skiff's hull, I paid strict attention to the striper's moves.
The net was next to me. When my fish finally surfaced nearby, there was no last-minute drama. I led him into its folds and then into the ice. It was a nice six-pounder, thick and healthy.
My breath was coming quickly. Squinting into the darkening shadows, I sent my next cast back toward the same area, again lightly thumbing the spool as the lure touched down.
Curiously I could see no splash as it landed. As I threw my reel into gear and tightened my line to begin working the plug, I understood why. There was immediate and solid resistance. A fish had eaten my lure as it fell.
This fight was different than the first. No aerial display. This rascal went right to work trying to rub the lure out on the bottom. I could feel the vibrations up the line as it scraped my leader and popper along the floor of the cove.
I had to relax the rod pressure for a few long seconds until the crafty devil finally backed out of the crevice it had found. Then I cinched it back up, and the fight resumed.
The striper was a twin of the first. I soon had them nestled together in my fish box. Amazingly, the next four casts resulted in four more fish, all close in size to the first two.
I was relieved and happy as I started back to the ramp. With the luck I'd been having, I didn't know that I'd be feeling this way again anytime soon.


text:
PiP's 40% Rye w/ Caraway Meets Hanseata's Seeds and a Restless dabrownman
After having such good luck with Phil's no stress recipe for 40% Rye and Caraway, I was additionally inspired by hanseata's seeded loaf's. So, I thought I would try to marry up the two and take on my requirement for more whole grain and less white flour. I was hoping that by adding some spelt and farro home ground berries to the rye replacing some of the white and adding some anise and fennel to the caraway, this new concoction would be a decent bread. Plus, another important test, I could try out for the first time my new 'double Y chicken foot' slash!!!!
I also got a new way to final prove these ill shaped breads with a new bamboo containment thing-a-majig that has some doohickey handles for the containment challenged like myself. Don't laugh. This thing, what ever it is, cost a buck. We can't sleep at night worrying about these contraptions and they are real issues for us !!! The used, so much better than new, parchment paper is the crowning achievement of getting the loaves out of the trash bag and into the oven without disfiguring oneself unnecessarily - by hot oven.
The loaves sprang nicely. The crust was crisp, crunchy yet chewy. The taste of the bread was more earthy and more to my liking as expected. The crumb wasn't quite as open as before probably due to the extra 20% whole grains in place of the white - but still OK. The slash produced a wide flatish gash where the loaf pooled through lazily. No ears - so fancy pants still needs some work before the double chicken foot slash is a keeper.
The disappointment was that I replaced some of the caraway seeds with the anise and fennel and the resulting seed taste was too slight and muddied. I was too chicken to go for a bold taste with these seeds. Don't you be !!! It would be much better just adding the same grams of anise and fennel as the caraway. I think it would be perfect that way - if it didn't kill you of course ;-)
Here are some more pics...
I really like it that you can make these breads in half a day if you have some decent rye sour built all the time. Next time, and there will be one if only the for the double Y chicken foot slashs' sake, More seeds will be boldly incorporated. I think I am still making progress.
Thanks again Phil and hanseata.


text:
Congratulations to Ian Scott MRICS from Lambert Smith Hampton for winning this year's Property Agency (Residential & Commercial) award.
A very astute and personable professional who brings exceptional drive and passion for advancing the PRS (Private Rented Sector) field as a specialism and to the surveying industry generally.
Rather than treading the 'well worn' path Ian has taken a brave step to specialise in a less developed sector. Unlike some young surveyors who receive advice from senior colleagues with decades of experience, Ian has worked hard to develop a strong understanding of his market and subsequently become one of the most knowledgeable PRS specialist outside of London.
Thus, he has been incredibly successful in developing a list of high profile clients and is single-handedly facilitating transactions in excess of £110 million.
Ian is the embodiment of the RICS ethics and professional standards, always acting with integrity and encouraging other to do so, providing high standards of service, acting in a way that promotes trust in the profession and taking responsibility for his own and colleagues actions.
Ian sets himself high standards but also provides encouragement and support to ensure colleagues stick to them. His astuteness and level of judgement in all situations are remarkable for a young surveyor.


text:
Available ebook formats: epub mobi pdf lrf pdb html
Emma Hillman never plans her stories. She just lets the characters have fun and hopes the ending will make sense. It usually does.
She lives in Paris with a husband, a toddler and two loud pets. She speaks several languages but only reads books in English because she says it sounds better. She's been running her fiction web site for years and has made many friends and fans across the world, and is very thankful for their continued support and inspiration.
Between working full-time and taking care of her family and house, she can be found reading fiction, cooking or watching Playhouse Disney - don't ask.


text:
Sponsored by: Rotary Club of Toronto Eglinton
For information about starting a Special Olympics program in another sport or community, please contact the Program Manager at Special Olympics Ontario.
Related Information
NTSC Sponsors
Click logo to link to sponsor website
A portion of all sponsorship fees supports financially disadvantaged children and youths.
North Toronto Soccer Club provides recreational, competitive and skills development programs to 5,100 community youth.
For information on becoming a sponsor, please click here.


text:
(Phoenix, Ariz. – Sept. 22, 2008) Attorney General Terry Goddard today announced a settlement with Hyundai of Tempe LLC (Hyundai of Tempe) resolving allegations that the company employed deceptive advertising in a solicitation sent to thousands of Arizona consumers.
According to court documents, Hyundai of Tempe mailed a flyer in June 2007 announcing that consumers would receive 100 percent of the base Manufacturer's Suggested Retail Price ("MSRP") on their 2005 or older vehicle they used as a trade-in on their purchase or lease of a "like or upgraded" 2007 or 2008 Hyundai automobile from Hyundai of Tempe. The advertisement contained statements in smaller type at the bottom of the page which stated "Trade-in allowance not to exceed current NADA book retail value" and "your current vehicle must be in safe operating condition with normal wear and tear. The only adjustments will be made for mileage and reconditioning."
Goddard alleged that these statements were misleading because the "NADA book retail value" is based on a vehicle's mileage and overall condition and therefore effectively negated the more prominent "100% Reimbursement" message. According to court documents, no consumer could receive 100 percent of his or her base MSRP on a trade-in since deductions would be taken for mileage and overall condition.


text:
The COOLPIX S30 is a camera designed for the family. It?s water and shockproof so no worries. Capture your world with stills and movies.
A camera to go everywhereFamilies now have a camera to take wherever they go. Waterproof and shockproof, the COOLPIX S30 is ideal for everything from poolside fun to playground action. A 10.1 MP sensor produces top quality images, ideal for printing and sharing. The 3x wide-angle lens frames clear memories of all the important people and moments in your life.
Ready for actionWaterproof, shockproof**Drop it, toss it, throw it in the pool. The S30 survives and lives to take the photo! Go underwater to create photos and movies at depths down to about 9.8 feet (3 meters). It's also shockproof to withstand drops of up to about 2.6 feet.
Super simple to useEasier than riding a bike!Get super simple camera operation with the S30. You'll love the oversized buttons designed to make it easy to create photos and movies. And an easy-to-understand menu makes photography a breeze.
Fun for allCreative touches that inspireHave fun personalizing the photos you take. There are a number of creative options such as Selective Color that will inspire your creativity. The best part, immediately see how the chosen effect alters an image! View it all on the large and sharp 2.7-inch LCD monitor.
Movie making made easyHD (720p) movies with soundA simple press of the movie record button and cue the action. You will love playing director and recording the action! Touch a button and start recording. Memorable moments are saved in HD (720p). Show the family what you just filmed by viewing on the 2.7-inch LCD monitor, or save for later and gather around to watch on an HDTV or computer. Best yet, upload to the Web to share.
Share the magicIn-camera slideshows with musicInstantly review and laugh over the pictures and movies of the day with the easy slideshow mode. Select playback effects and built-in music to accompany your show - fun to share with friends and family. Connects easily to an HDTV via the HDMI port. Share the sights and sounds of your adventure.
Portraits made easy!When your subject smiles the camera automatically takes the shot... easy!
Images are sharp and clearElectronic VR Image Stabilization minimizes the effects of camera shake for sharper, clearer images.
Make close-up magicWith the S30 get as close as 2 inches from your subject for a new close-up view of your world.
Just aim and shootUse Easy Auto mode for the times when you simply wish to enjoy the moment. Relax and let the camera do all the work. Just turn on the camera and press the shutter!


text:
Media Production Photography creates original and copy photographs for use in Classroom Instruction, Research, and the administrative mission of the University. We offer photography for documenting events, faculty, staff and student accomplishments, and research.
- Image Conversion (Scanning & Copy)
- Location Photography
- Poster Printing (Large format)
- Portraits of Faculty and Staff
- Studio Photography
- Poster Session Output Resources and Links
Related Service Links
- Printing Flyers and Posters
- Campus Graphic Design Guidelines
- Stock Photos and Logos for use in University Publications
- Photographs taken of Students at Commencement


text:
REBECCA Cast Set to Start Rehearsals on October 1?
As BroadwayWorld reported last week, REBECCA's lead producer Ben Sprecher recently confirmed the receipt of new financial commitments from investors to alleviate the $4.5 million gap in the musical's budget. Now according to the New York Times, the cast of the show has been notifoed that rehearsals will indeed begin on Monday, October 1.
Actors Equity's Nick Wyman told NYT: "No one has said the words to me that the money is in the bank, but I would bet on the show taking place. Does he have the money right now? I don't know. Will he have it by Monday morning? I bet he will. He has been confident that we'll have the money."
REBECCA, the new musical based on the classic novel by Daphne Du Maurier novel, previously delayed the start of its rehearsals by two weeks due to the death of a key investor responsible for a $4.5 million investment pool in the production. REBECCA was scheduled to begin rehearsals Monday, September 10 prior to an October 30 first preview and November 18 premiere at the Broadhurst Theatre. Revised first preview and opening night dates will be announced shortly.REBECCA features original book and lyrics by Michael Kunze, music by Sylvester Levay, English book adaptation by two-time Tony Award winner Christopher Hampton (Sunset Boulevard), English lyrics by Hampton and Kunze, and direction by Tony Award winner Michael Blakemore (Kiss Me, Kate; City of Angels; Noises Off) and Francesca Zambello (Little Mermaid). Multiple Tony-nominated director/choreographer Graciela Daniele (Ragtime) will create the musical staging for the show. Scenic design is by Peter J. Davidson, costumes by Jane Greenwood, lighting by Mark McCullough, sound by Peter Fitzgerald, hair & wig design by Tom Watson and special effects by Gregory Meehand projections by Sven Ortel. Musical direction and supervision is by Kevin Stites.The cast of REBECCA features Jill Paice as "I", Ryan Silverman as Maxim DeWinter, Karen Mason as Mrs. Danvers, James Barbour as Jack Favell, Howard McGillin as Frank Crawley, Donna English as Beatrice de Winter, Henry Stram as Ben and Nick Wyman as Giles.REBECCA is a new musical drawn from the classic Daphne Du Maurier novel about love and obsession reaching from beyond the grave. In this romantic thriller, Maxim de Winter brings his new wife ("I") home to his estate of Manderley. There she meets the intimidating housekeeper Mrs. Danvers, who had a very special relationship with Maxim's first wife, the beautiful Rebecca, who died a year earlier in a boating accident. The young woman discovers Manderley is a house of devastating secrets, and The Mystery of Rebecca may be the greatest of them all as she finds the strength to challenge Mrs. Danvers and save her marriage. REBECCA had its world premiere in 2006 at Vereinigte Buhnen Wien in Vienna, where it played to sold-out houses for more than three years. Vastly successful productions of REBECCA have also played Budapest, Hungary; Bucharest, Romania; Helsinki, Finland; Stuttgart, Germany; St. Gallen, Switzerland and at the Imperial Theatre in Tokyo.


text:
Please click any of the listed topics below for a detailed explanation of that topic. If you still have unanswered questions or need additional assistance, please visit the ProBoards Support Board.
It's free and takes less than 30 seconds.
By signing up I agree that I am 13+ years old and agree to the Terms of Service.