Banks and other FX providers are adapting to an increasingly regulated environment: The foreign exchange landscape is indeed changing. Many big banks have shut down proprietary trading desks, and some have lost star traders to hedge funds. Regulatory changes and increased scrutiny are shifting FX trading volume away from the interbank market and toward electronic platforms. Margins have narrowed as the system becomes more commoditized. Telephone trading and chat rooms have gone quiet.
Although the FX market remained vibrant and liquid throughout the financial crisis, the recent extended period of record-low volatility is raising concern that the changing regulatory mix is depressing interbank volumes, says George Saravelos, currencies analyst at Deutsche Bank. The lower transaction costs from electronic trading may also be reducing volatility, he says.
Deutsche Bank shut down its proprietary FX trading desk in London in December 2012. Early this year, Kevin Rodgers, the bank's London-based global head of FX, let it be known that he would retire in June to focus on academic and musical/theatrical interests. As of early October, a replacement had not yet been named.
Citi, another one of the world's largest FX banks, lost its two top FX officials this year. London-based Anil Prasad, global head of FX and local markets, left to form his own hedge fund, to be replaced by Nadir Mahmud, who was head of global markets for Asia-Pacific. And Jeff Feig, managing director and global head of G10 FX at Citi, left the bank in June to join Fortress Investment Group, a New York–based global investment manager, where he is co-head of the liquid-markets business, which includes the firm's macro funds.
the changes, but enhancing confidence in the market is crucial, and the industry will adapt to embrace these recommendations.
Though none of these personnel changes has been linked to the widening investigation into alleged manipulation of the FX market, more than 30 traders at leading FX banks have been fired or suspended in the past 12 months. This purge has cast a pall over the market.
The shrinking number of dedicated interbank participants and a growing herd mentality could lead to sudden, unexpected shifts in exchange rates. David Rodriguez, quantitative strategist at DailyFX, a news and analysis portal owned by FXCM, says: "The dollar tumbled and the Japanese yen surged [on August 6] as an aggressive wave of selling led the dollar to its worst single-day loss against the yen in four months. The dollar's exchange rate fell sharply in the typically quiet period after the European market close. Traders initially suspected a 'fat finger trade' was to blame—someone had mistakenly placed an especially large sell order. But it turned out to be simply panic selling which forced many nervous speculators to exit their leveraged positions." The unexpected volatility underlines the risks below the surface, as FX markets' overall volatility falls to near-record lows, Rodriguez says. "Clearly, many traders fear the next major move is just around the corner, and any especially crowded trades seem at risk, as speculators will flee at the first sign of danger," he says.


The Care Quality Commission (CQC) quality reports that follow visits by inspectors to both our hospices in July 2018, are available below.
St Julia's Hospice Focused Report.
Mount Edgcumbe Hospice Focused Report.


Professionals in the cold chain can agree on a universal truth: automation is the future. At Lineage, we embrace automation as an opportunity to further ensure efficiency, food safety and sustainability in our customers' extended supply chains – and we have made the investment and commitment to prove it.
Welcoming the world's most prestigious and respected cold chain companies to the Lineage family runs deep in our organization's DNA. With every acquisition, we integrate new best practices and new expertise to deliver value to our customers – and our acquisition of Partner Logistics in 2017 was no exception. Dutch-based Partner Logistics was Europe's leading cold storage provider and world's largest automated cold storage company. The opportunity was tremendous – build the scale, harness the technology, leverage the team's expertise and solidify Lineage as the global market leader in automation.
As the global leader in temperature-controlled automation, Lineage is committed to applying thought leadership and best practices in automation to accelerate efficiency and enhance customer experience.
Under construction: a fully automated expansion in Sunnyvale, Texas.
Harnessing the most advanced robotics and computer vision, the expansion to our Sunnyvale, Texas facility will set a new standard in food distribution. The facility's Automated Storage and Retrieval technology will move product seamlessly through a nine-level, 30-meter-tall interior space, allowing 3x the storage density with 50% of the power consumption of a manual warehouse storing the same product. Most notably, Lineage's Sunnyvale expansion is the first warehouse in North America to fully automate temperature-controlled distribution to retailers—one of the most challenging and complex profiles to operate.
Want to see progress in real-time? Check out our onsite construction camera in Sunnyvale, Texas.


Plotline: Who is Minding Luke?
Tonight Claire and Phil work to hold down their parental responsibilities and their jobs. Phil notes that he's been doing this for a long time: I've been juggling family and work for 22 years – just juggling for 30. And he wonders how Claire has managed to master it all so quickly.
In spite of her new position as boss of her dad's company, Claire still manages to pack the kids' lunches, pick up their clothes from the laundry, and buy presents for their friends. She even whips-up homemade ice cream for the family and cupcakes for a bake sale. By the end we see that she's actually focusing on her new job at work while a guy from marketing is handling things at home.
Claire (lamenting): I'm so damn busy trying to be the perfect mom and the perfect boss, but I'm outsourcing the one job that means the most to me, and I really miss it.
Meanwhile, Luke continues to go in the wrong direction. A few months back he got caught drinking with his buddies. Weeks later he took the family car without permission or a driver's license. And tonight he takes a couple more wrong turns: skipping school and downloading a picture of a naked girl.
Claire and Phil are focused on doing things for their kids – tasks that, frankly, the kids should mostly be doing for themselves by now. And with both parents busy doing things that aren't really their responsibility any more, they miss something important that is. They're not paying enough attention to what Luke is up to.
Claire and Phil need to be doing more parental monitoring of Luke's activities and behavior. This isn't about prying and spying. Instead, it's about 1) the rules parents have for their teen's behavior, 2) the actions they take to keep track of their teen, and 3) and the way they respond when their teen breaks the agreed upon rules.
Make and discuss your rules with your teen.
–	Talk with your teen about your rules and winning their cooperation for following the rules by talking about what's in it for them.
Keep track of your teen.
–	Talk with your teen about their plans with their friends – where they're going and what they're going to do. If they're going to a friend's house, ask if a parent will be present.
–	Set expectations that your teen is to keep you informed, calling you if their plans change or if they're going to be late.
–	Make sure your teen knows how to reach you at all times.
–	Pay attention to how your teen spends money.
–	Get to know your teen's friends – especially their boyfriend or girlfriend. And get to know the parents of your teen's friends.
–	Pay attention to your teen's behavior and mood at home; if you see anything that concerns you, discuss it.
–	Talk with your teen's teachers, aunts, uncles, and other adults who know your teen. Ask them to share what they've observed about your teen's mood, their behavior, and their friends.
Respond when your teen breaks the rules.
–	Give consequences that fit the infraction and make sense to your teen.
–	Give your teen the support they need to learn from their mistakes.
–	Define a way for your teen to re-earn your trust.
–	Work to mend any frayed connections with your teen. You can still do fun things together while keeping the consequences in place.
Your connectedness to your teen matters! In fact, a growing body of research indicates that all parental efforts to monitor teen behavior are much more effective and efficient when parents are connected to their teens.
Plus as our kids get older, they will be making more and more decisions when we're not around to monitor them. This means that our power is increasingly in our influence. And if we let monitoring become the main focus of our relationships with our teens, we won't have the influence we hope to have.
So try to spend as much time on your connection with your teen as you do on making and enforcing rules. The closeness and fun you share with your teen helps recharge your parenting batteries. And this in itself will help promote connection between the two of you.
Below are some ways to show your teen that they're valued and cared about. Consider adding some of these to your routine.
–	Make time to stop by your teen's room just to chat and listen. Make it a habit to knock before going into their room.
–	Note what they're doing well and pay them a genuine compliment at least once a day.
–	Text them to offer encouragement before tests and games or just out of the blue to let them know you're thinking about them.
–	Plan a menu and cook a favorite meal together.
–	Notice when they enter the house or the room and greet them.
–	Ask for their help on a project.
–	Go to a movie together, and do dessert afterwards to talk about it.
–	Do a physical activity together such as hiking, biking, or skating. Invite one of their friends and the friend's parent to join you.
–	Read the same book and then offer to take them to lunch to talk about it.
–	Choose a weekly show as "your show" to watch together.
–	Strive to have 5 positive interactions with your teen for every 1 negative interaction.


Suggestions of activities to help your pupils prepare for interviews.
There are a wide range of activities that can help individuals prepare for interviews. The Interview tool is a good place to start for young people in school. We suggest that you combine this with other activities to help individuals be as well prepared as possible.
Below are four areas you could focus on.
Confidence in an interview is a must. Getting used to the idea of talking out loud can help. You could use crib cards to pick random topics for individuals to talk about for a short period of time. This could help them get used to answering questions they might not be prepared for in an interview and improve communication skills in general.
Exploring body language at interviews would help individuals understand the importance of showing confidence. You could use role-play to enact a series of interview situations, e.g. waiting to be called, shaking hands, sitting opposite interviewer and leaving the room, with individuals playing out a range of different postures/actions and analysing these.
The Interview tool is great for those at school or those wanting to experience a competency-based approach, but for others it might be worth setting up realistic mock interviews with employers or even role play in groups. These interviews could be filmed and played back to individuals – an uncomfortable but worthwhile way to increase self-awareness and enable proper reflection!
A common complaint from employers is that interviewees haven't found out enough about the employer or role before they turn up. We've created an activity with to introduce the importance of doing some research to individuals.
Competency-based interviews are becoming more common. It could be worth spending some time on how to prepare for these with individuals, e.g. analysing a specific job description to extract competencies and for each one preparing a STAR response.
Our information about interviews will also help with introducing these topics.
You could try asking individuals to think about an interview scenario from the point of view of the employer. It may also be worthwhile creating a role-play activity where individuals take on an interviewer role and assess interviewees. This exercise could be extended to include the whole application process.
Reflecting on a previous interview experience and what could be improved for the next time can also be very valuable. If young people don't have any interview experience, they could reflect on their mock interview experience. This could be made easier and more effective by filming the interview and playing it back.
Find out about our Interview tool and how it can help your pupils prepare for a competency based interview.


js-stellar-sdk exposes the TransactionBuilder class from js-stellar-base. There are more examples of building transactions here. All those examples can be signed and submitted to Stellar in a similar manner as is done below.
// Create, sign, and submit a transaction using JS Stellar SDK.
//    https://www.stellar.org/laboratory/ under the heading "Quick Start: Test Account"
//    either through Node.js or in the browser.
// That site exposes a global StellarSdk object you can use.
// To run this code in the Chrome, open the console tab in the DevTools.
// The hotkey to open the DevTools console is Ctrl+Shift+J or (Cmd+Opt+J on Mac).
// The source account is the account we will be signing and sending from.
// sure to also change the horizon hostname.
// Transactions require a valid sequence number that is specific to this account.
// We can fetch the current sequence number for the source account from Horizon.
// Right now, there's one function that fetches the base fee.
// e.g.: `fetchCheapFee`, `fetchAverageFee`, `fetchPriorityFee`, etc.
// as explained above (look for StellarSdk.Network).
// submit the transaction into the network for us.
Let's say you want to look at an account's transaction history. You can use the transactions() command and pass in the account address to forAccount as the resource you're interested in.
js-stellar-sdk provides streaming support for Horizon endpoints using EventSource. You can pass a function to handle any events that occur on the stream.
Try submitting a transaction (via the guide above) while running the following code example.
// the beginning of time).
For more on streaming events, please check out the Horizon responses documentation and this guide to server-sent events.


How far can entrepreneur-focused training take you?
Pretty far, according to Sahand Seifi, co-founder of HeyOrca!, a startup focused on social media collaboration tools for marketing agencies.
Interested in starting his own business one day, Mr. Seifi signed up for Memorial's Entrepreneurship Training Program in 2011 while working towards a master's degree in computer science.
Student Fresh, an early version of the company Mr. Sahand started with business undergrad and HeyOrca! co-founder Joe Teo, focused on connecting freelance students with local companies.
Student Fresh was based out of the Launch Pad space at the Genesis Centre, but the duo soon realized that they needed to pivot their business idea if they wanted to build a sustainable company.
The pair describe 2015 as the year they validated the business model for HeyOrca!. It took them almost six months to come up with the name, which reflects the social media industry they're in. Having secured $650,000 in seed funding at the end of 2015, the company is ramping up their operations and growing the sales of its marketing collaboration platform.
From left are Joe Teo and Sahand Seifi of HeyOrca!. The whale is used as a "conche" at meetings.
So far, their efforts are paying off. HeyOrca!'s sales are increasing by 50 per cent month over month, which, according to Mr. Seifi, is the growth track they want to maintain.
The company now employs 14 staff, many of whom are graduates of Memorial. They have a multicultural team with seven countries represented. Mr. Seifi says the best part of running his startup is working with young, talented people.
This fall, Memorial is making it easy for students like Mr. Seifi and Mr. Teo to get the training they need to launch their own businesses and turn their dreams into reality. If you're a graduate student with a few hours to spare, you may want to look into Memorial's Entrepreneurship Training Program (ETP).
ETP is open to full-time graduate students who have a business idea they want to pursue. The program brings students face-to-face with entrepreneurs, funding agencies and business experts who give students the advice and training they need to start a company. The program runs over 16 weeks with a certificate of completion awarded at the end.
To increase the number of startups on campus, Mr. Seifi believes it's imperative to connect aspiring entrepreneurs with key people who can give them the right advice. That was one of the benefits of ETP, which helped guide him. He'd also like to see more opportunities for interdisciplinary collaboration on campus.
To find out more about Memorial's Entrepreneurship Training Program, please visit here. The deadline to apply is Monday, Oct. 17.
ETP is delivered by the School of Graduate Studies, the Internationalization Office, the Faculty of Business Administration and Student Life, with financial support from the Atlantic Canada Opportunities Agency.
Libby Carew facilitates the Entrepreneurship Training Program at Memorial. She can be reached at ecarew@mun.ca.
Joe Teo and Sahand Seifi of HeyOrca!.


text:
News Sports GametimePA Business Lifestyle Obituaries E-Edition Legals
Hanover's Franklin House Tavern closes permanently, according to its Facebook page
The tavern's owners say they do not know what they will do with the building.
Ted Czech
Hanover Evening Sun
Calling it "the end of an era," the Franklin House Tavern, a longtime Hanover restaurant and bar, announced its closing on Sunday.
"It is with a heavy heart that we are announcing that the Franklin House Tavern has closed permanently," read the statement on the tavern's Facebook page.
The statement continues, "The liquor license has been placed in safekeeping with the PLCB (Pennsylvania Liquor Control Board). We have no clue what we are going to do with the building."
"To our customers ... thank you. The Zeigler family thanks you for 61 years of loyalty.. There are no words to adequately express what knowing you has brought to our lives."
More:'Heroic actions': TrueNorth CEO praises employee killed during intruder break-in
More:Photos: Susquehanna River overflows onto Riverfront Park, Columbia Park
"To all the people who've ever worked at the Franklin House ... Thank you. We love you and will always consider you a part of our family."
According to a post earlier this month, the tavern, located at 300 N. Franklin St., had expected to close temporarily and then re-open: "When we close tonight, we will be closed for 3 weeks to comply with Gov. Wolf's latest order."
No reason was given for the permanent closing.
Ted Czech is a multi-platform crime/emergency journalist with The York Daily Record. He can be reached at tczech@ydr.com, at 717-771-2033 or on Twitter at @TedCzechYDR
Jobs Cars.com Louisville Homes Classifieds Education Reviewed 10Best Reach Local
© 2021 www.eveningsun.com. All rights reserved.

redpajama_set_name: RedPajamaCommonCrawl


text:
"""
Tests for L{idavoll.backend}.
"""

from zope.interface import implements
from zope.interface.verify import verifyObject

from twisted.internet import defer
from twisted.trial import unittest
from twisted.words.protocols.jabber import jid
from twisted.words.protocols.jabber.error import StanzaError

from wokkel import iwokkel, pubsub

from idavoll import backend, error, iidavoll

OWNER = jid.JID('owner@example.com')
OWNER_FULL = jid.JID('owner@example.com/home')
SERVICE = jid.JID('test.example.org')
NS_PUBSUB = 'http://jabber.org/protocol/pubsub'

class BackendTest(unittest.TestCase):

    def test_interfaceIBackend(self):
        self.assertTrue(verifyObject(iidavoll.IBackendService,
                                     backend.BackendService(None)))

    def test_deleteNode(self):
        class TestNode:
            nodeIdentifier = 'to-be-deleted'
            def getAffiliation(self, entity):
                if entity.userhostJID() == OWNER:
                    return defer.succeed('owner')

        class TestStorage:
            def __init__(self):
                self.deleteCalled = []

            def getNode(self, nodeIdentifier):
                return defer.succeed(TestNode())

            def deleteNode(self, nodeIdentifier):
                if nodeIdentifier in ['to-be-deleted']:
                    self.deleteCalled.append(nodeIdentifier)
                    return defer.succeed(None)
                else:
                    return defer.fail(error.NodeNotFound())

        def preDelete(data):
            self.assertFalse(self.storage.deleteCalled)
            preDeleteCalled.append(data)
            return defer.succeed(None)

        def cb(result):
            self.assertEquals(1, len(preDeleteCalled))
            data = preDeleteCalled[-1]
            self.assertEquals('to-be-deleted', data['nodeIdentifier'])
            self.assertTrue(self.storage.deleteCalled)

        self.storage = TestStorage()
        self.backend = backend.BackendService(self.storage)

        preDeleteCalled = []

        self.backend.registerPreDelete(preDelete)
        d = self.backend.deleteNode('to-be-deleted', OWNER_FULL)
        d.addCallback(cb)
        return d

    def test_deleteNodeRedirect(self):
        uri = 'xmpp:%s?;node=test2' % (SERVICE.full(),)

        class TestNode:
            nodeIdentifier = 'to-be-deleted'
            def getAffiliation(self, entity):
                if entity.userhostJID() == OWNER:
                    return defer.succeed('owner')

        class TestStorage:
            def __init__(self):
                self.deleteCalled = []

            def getNode(self, nodeIdentifier):
                return defer.succeed(TestNode())

            def deleteNode(self, nodeIdentifier):
                if nodeIdentifier in ['to-be-deleted']:
                    self.deleteCalled.append(nodeIdentifier)
                    return defer.succeed(None)
                else:
                    return defer.fail(error.NodeNotFound())

        def preDelete(data):
            self.assertFalse(self.storage.deleteCalled)
            preDeleteCalled.append(data)
            return defer.succeed(None)

        def cb(result):
            self.assertEquals(1, len(preDeleteCalled))
            data = preDeleteCalled[-1]
            self.assertEquals('to-be-deleted', data['nodeIdentifier'])
            self.assertEquals(uri, data['redirectURI'])
            self.assertTrue(self.storage.deleteCalled)

        self.storage = TestStorage()
        self.backend = backend.BackendService(self.storage)

        preDeleteCalled = []

        self.backend.registerPreDelete(preDelete)
        d = self.backend.deleteNode('to-be-deleted', OWNER, redirectURI=uri)
        d.addCallback(cb)
        return d

    def test_createNodeNoID(self):
        """
        Test creation of a node without a given node identifier.
        """
        class TestStorage:
            def getDefaultConfiguration(self, nodeType):
                return {}

            def createNode(self, nodeIdentifier, requestor, config):
                self.nodeIdentifier = nodeIdentifier
                return defer.succeed(None)

        self.storage = TestStorage()
        self.backend = backend.BackendService(self.storage)
        self.storage.backend = self.backend

        def checkID(nodeIdentifier):
            self.assertNotIdentical(None, nodeIdentifier)
            self.assertIdentical(self.storage.nodeIdentifier, nodeIdentifier)

        d = self.backend.createNode(None, OWNER_FULL)
        d.addCallback(checkID)
        return d

    class NodeStore:
        """
        I just store nodes to pose as an L{IStorage} implementation.
        """
        def __init__(self, nodes):
            self.nodes = nodes

        def getNode(self, nodeIdentifier):
            try:
                return defer.succeed(self.nodes[nodeIdentifier])
            except KeyError:
                return defer.fail(error.NodeNotFound())

    def test_getNotifications(self):
        """
        Ensure subscribers show up in the notification list.
        """
        item = pubsub.Item()
        sub = pubsub.Subscription('test', OWNER, 'subscribed')

        class TestNode:
            def getSubscriptions(self, state=None):
                return [sub]

        def cb(result):
            self.assertEquals(1, len(result))
            subscriber, subscriptions, items = result[-1]

            self.assertEquals(OWNER, subscriber)
            self.assertEquals(set([sub]), subscriptions)
            self.assertEquals([item], items)

        self.storage = self.NodeStore({'test': TestNode()})
        self.backend = backend.BackendService(self.storage)
        d = self.backend.getNotifications('test', [item])
        d.addCallback(cb)
        return d

    def test_getNotificationsRoot(self):
        """
        Ensure subscribers to the root node show up in the notification list
        for leaf nodes.

        This assumes a flat node relationship model with exactly one collection
        node: the root node. Each leaf node is automatically a child node
        of the root node.
        """
        item = pubsub.Item()
        subRoot = pubsub.Subscription('', OWNER, 'subscribed')

        class TestNode:
            def getSubscriptions(self, state=None):
                return []

        class TestRootNode:
            def getSubscriptions(self, state=None):
                return [subRoot]

        def cb(result):
            self.assertEquals(1, len(result))
            subscriber, subscriptions, items = result[-1]
            self.assertEquals(OWNER, subscriber)
            self.assertEquals(set([subRoot]), subscriptions)
            self.assertEquals([item], items)

        self.storage = self.NodeStore({'test': TestNode(),
                                       '': TestRootNode()})
        self.backend = backend.BackendService(self.storage)
        d = self.backend.getNotifications('test', [item])
        d.addCallback(cb)
        return d

    def test_getNotificationsMultipleNodes(self):
        """
        Ensure that entities that subscribe to a leaf node as well as the
        root node get exactly one notification.
        """
        item = pubsub.Item()
        sub = pubsub.Subscription('test', OWNER, 'subscribed')
        subRoot = pubsub.Subscription('', OWNER, 'subscribed')

        class TestNode:
            def getSubscriptions(self, state=None):
                return [sub]

        class TestRootNode:
            def getSubscriptions(self, state=None):
                return [subRoot]

        def cb(result):
            self.assertEquals(1, len(result))
            subscriber, subscriptions, items = result[-1]

            self.assertEquals(OWNER, subscriber)
            self.assertEquals(set([sub, subRoot]), subscriptions)
            self.assertEquals([item], items)

        self.storage = self.NodeStore({'test': TestNode(),
                                       '': TestRootNode()})
        self.backend = backend.BackendService(self.storage)
        d = self.backend.getNotifications('test', [item])
        d.addCallback(cb)
        return d

    def test_getDefaultConfiguration(self):
        """
        L{backend.BackendService.getDefaultConfiguration} should return
        a deferred that fires a dictionary with configuration values.
        """

        class TestStorage:
            def getDefaultConfiguration(self, nodeType):
                return {
                    "pubsub#persist_items": True,
                    "pubsub#deliver_payloads": True}

        def cb(options):
            self.assertIn("pubsub#persist_items", options)
            self.assertEqual(True, options["pubsub#persist_items"])

        self.backend = backend.BackendService(TestStorage())
        d = self.backend.getDefaultConfiguration('leaf')
        d.addCallback(cb)
        return d

    def test_getNodeConfiguration(self):
        class testNode:
            nodeIdentifier = 'node'
            def getConfiguration(self):
                return {'pubsub#deliver_payloads': True,
                        'pubsub#persist_items': False}

        class testStorage:
            def getNode(self, nodeIdentifier):
                return defer.succeed(testNode())

        def cb(options):
            self.assertIn("pubsub#deliver_payloads", options)
            self.assertEqual(True, options["pubsub#deliver_payloads"])
            self.assertIn("pubsub#persist_items", options)
            self.assertEqual(False, options["pubsub#persist_items"])

        self.storage = testStorage()
        self.backend = backend.BackendService(self.storage)
        self.storage.backend = self.backend

        d = self.backend.getNodeConfiguration('node')
        d.addCallback(cb)
        return d

    def test_setNodeConfiguration(self):
        class testNode:
            nodeIdentifier = 'node'
            def getAffiliation(self, entity):
                if entity.userhostJID() == OWNER:
                    return defer.succeed('owner')
            def setConfiguration(self, options):
                self.options = options

        class testStorage:
            def __init__(self):
                self.nodes = {'node': testNode()}
            def getNode(self, nodeIdentifier):
                return defer.succeed(self.nodes[nodeIdentifier])

        def checkOptions(node):
            options = node.options
            self.assertIn("pubsub#deliver_payloads", options)
            self.assertEqual(True, options["pubsub#deliver_payloads"])
            self.assertIn("pubsub#persist_items", options)
            self.assertEqual(False, options["pubsub#persist_items"])

        def cb(result):
            d = self.storage.getNode('node')
            d.addCallback(checkOptions)
            return d

        self.storage = testStorage()
        self.backend = backend.BackendService(self.storage)
        self.storage.backend = self.backend

        options = {'pubsub#deliver_payloads': True,
                   'pubsub#persist_items': False}

        d = self.backend.setNodeConfiguration('node', options, OWNER_FULL)
        d.addCallback(cb)
        return d

    def test_publishNoID(self):
        """
        Test publish request with an item without a node identifier.
        """
        class TestNode:
            nodeType = 'leaf'
            nodeIdentifier = 'node'
            def getAffiliation(self, entity):
                if entity.userhostJID() == OWNER:
                    return defer.succeed('owner')
            def getConfiguration(self):
                return {'pubsub#deliver_payloads': True,
                        'pubsub#persist_items': False}

        class TestStorage:
            def getNode(self, nodeIdentifier):
                return defer.succeed(TestNode())

        def checkID(notification):
            self.assertNotIdentical(None, notification['items'][0]['id'])

        self.storage = TestStorage()
        self.backend = backend.BackendService(self.storage)
        self.storage.backend = self.backend

        self.backend.registerNotifier(checkID)

        items = [pubsub.Item()]
        d = self.backend.publish('node', items, OWNER_FULL)
        return d

    def test_notifyOnSubscription(self):
        """
        Test notification of last published item on subscription.
        """
        ITEM = "<item xmlns='%s' id='1'/>" % NS_PUBSUB

        class TestNode:
            implements(iidavoll.ILeafNode)
            nodeIdentifier = 'node'
            nodeType = 'leaf'
            def getAffiliation(self, entity):
                if entity is OWNER:
                    return defer.succeed('owner')
            def getConfiguration(self):
                return {'pubsub#deliver_payloads': True,
                        'pubsub#persist_items': False,
                        'pubsub#send_last_published_item': 'on_sub'}
            def getItems(self, maxItems):
                return [ITEM]
            def addSubscription(self, subscriber, state, options):
                self.subscription = pubsub.Subscription('node', subscriber,
                                                        state, options)
                return defer.succeed(None)
            def getSubscription(self, subscriber):
                return defer.succeed(self.subscription)

        class TestStorage:
            def getNode(self, nodeIdentifier):
                return defer.succeed(TestNode())

        def cb(data):
            self.assertEquals('node', data['nodeIdentifier'])
            self.assertEquals([ITEM], data['items'])
            self.assertEquals(OWNER, data['subscription'].subscriber)

        self.storage = TestStorage()
        self.backend = backend.BackendService(self.storage)
        self.storage.backend = self.backend

        d1 = defer.Deferred()
        d1.addCallback(cb)
        self.backend.registerNotifier(d1.callback)
        d2 = self.backend.subscribe('node', OWNER, OWNER_FULL)
        return defer.gatherResults([d1, d2])

    test_notifyOnSubscription.timeout = 2

class BaseTestBackend(object):
    """
    Base class for backend stubs.
    """

    def supportsPublisherAffiliation(self):
        return True

    def supportsOutcastAffiliation(self):
        return True

    def supportsPersistentItems(self):
        return True

    def supportsInstantNodes(self):
        return True

    def registerNotifier(self, observerfn, *args, **kwargs):
        return

    def registerPreDelete(self, preDeleteFn):
        return

class PubSubResourceFromBackendTest(unittest.TestCase):

    def test_interface(self):
        resource = backend.PubSubResourceFromBackend(BaseTestBackend())
        self.assertTrue(verifyObject(iwokkel.IPubSubResource, resource))

    def test_preDelete(self):
        """
        Test pre-delete sending out notifications to subscribers.
        """

        class TestBackend(BaseTestBackend):
            preDeleteFn = None

            def registerPreDelete(self, preDeleteFn):
                self.preDeleteFn = preDeleteFn

            def getSubscribers(self, nodeIdentifier):
                return defer.succeed([OWNER])

        def notifyDelete(service, nodeIdentifier, subscribers,
                         redirectURI=None):
            self.assertEqual(SERVICE, service)
            self.assertEqual('test', nodeIdentifier)
            self.assertEqual([OWNER], subscribers)
            self.assertIdentical(None, redirectURI)
            d1.callback(None)

        d1 = defer.Deferred()
        resource = backend.PubSubResourceFromBackend(TestBackend())
        resource.serviceJID = SERVICE
        resource.pubsubService = pubsub.PubSubService()
        resource.pubsubService.notifyDelete = notifyDelete
        self.assertTrue(verifyObject(iwokkel.IPubSubResource, resource))
        self.assertNotIdentical(None, resource.backend.preDeleteFn)
        data = {'nodeIdentifier': 'test'}
        d2 = resource.backend.preDeleteFn(data)
        return defer.DeferredList([d1, d2], fireOnOneErrback=1)

    def test_preDeleteRedirect(self):
        """
        Test pre-delete sending out notifications to subscribers.
        """

        uri = 'xmpp:%s?;node=test2' % (SERVICE.full(),)

        class TestBackend(BaseTestBackend):
            preDeleteFn = None

            def registerPreDelete(self, preDeleteFn):
                self.preDeleteFn = preDeleteFn

            def getSubscribers(self, nodeIdentifier):
                return defer.succeed([OWNER])

        def notifyDelete(service, nodeIdentifier, subscribers,
                         redirectURI=None):
            self.assertEqual(SERVICE, service)
            self.assertEqual('test', nodeIdentifier)
            self.assertEqual([OWNER], subscribers)
            self.assertEqual(uri, redirectURI)
            d1.callback(None)

        d1 = defer.Deferred()
        resource = backend.PubSubResourceFromBackend(TestBackend())
        resource.serviceJID = SERVICE
        resource.pubsubService = pubsub.PubSubService()
        resource.pubsubService.notifyDelete = notifyDelete
        self.assertTrue(verifyObject(iwokkel.IPubSubResource, resource))
        self.assertNotIdentical(None, resource.backend.preDeleteFn)
        data = {'nodeIdentifier': 'test',
                'redirectURI': uri}
        d2 = resource.backend.preDeleteFn(data)
        return defer.DeferredList([d1, d2], fireOnOneErrback=1)

    def test_unsubscribeNotSubscribed(self):
        """
        Test unsubscription request when not subscribed.
        """

        class TestBackend(BaseTestBackend):
            def unsubscribe(self, nodeIdentifier, subscriber, requestor):
                return defer.fail(error.NotSubscribed())

        def cb(e):
            self.assertEquals('unexpected-request', e.condition)

        resource = backend.PubSubResourceFromBackend(TestBackend())
        request = pubsub.PubSubRequest()
        request.sender = OWNER
        request.recipient = SERVICE
        request.nodeIdentifier = 'test'
        request.subscriber = OWNER
        d = resource.unsubscribe(request)
        self.assertFailure(d, StanzaError)
        d.addCallback(cb)
        return d

    def test_getInfo(self):
        """
        Test retrieving node information.
        """

        class TestBackend(BaseTestBackend):
            def getNodeType(self, nodeIdentifier):
                return defer.succeed('leaf')

            def getNodeMetaData(self, nodeIdentifier):
                return defer.succeed({'pubsub#persist_items': True})

        def cb(info):
            self.assertIn('type', info)
            self.assertEquals('leaf', info['type'])
            self.assertIn('meta-data', info)
            self.assertEquals({'pubsub#persist_items': True}, info['meta-data'])

        resource = backend.PubSubResourceFromBackend(TestBackend())
        d = resource.getInfo(OWNER, SERVICE, 'test')
        d.addCallback(cb)
        return d

    def test_getConfigurationOptions(self):
        class TestBackend(BaseTestBackend):
            nodeOptions = {
                    "pubsub#persist_items":
                        {"type": "boolean",
                         "label": "Persist items to storage"},
                    "pubsub#deliver_payloads":
                        {"type": "boolean",
                         "label": "Deliver payloads with event notifications"}
            }

        resource = backend.PubSubResourceFromBackend(TestBackend())
        options = resource.getConfigurationOptions()
        self.assertIn("pubsub#persist_items", options)

    def test_default(self):
        class TestBackend(BaseTestBackend):
            def getDefaultConfiguration(self, nodeType):
                options = {"pubsub#persist_items": True,
                           "pubsub#deliver_payloads": True,
                           "pubsub#send_last_published_item": 'on_sub',
                }
                return defer.succeed(options)

        def cb(options):
            self.assertEquals(True, options["pubsub#persist_items"])

        resource = backend.PubSubResourceFromBackend(TestBackend())
        request = pubsub.PubSubRequest()
        request.sender = OWNER
        request.recipient = SERVICE
        request.nodeType = 'leaf'
        d = resource.default(request)
        d.addCallback(cb)
        return d

redpajama_set_name: RedPajamaGithub


text:
Q: Class of multiple items I have a class Company, and a class Tax. Depending on the country where the company is being created, I create multiple Tax Objects for this Company. For example, if the country is Norway, I need to create 4 tax objects by default.
Now to have this structure, I firstly created a class for each distinct Tax that I have. Those for example are two taxes that I have:
class TaxNorway11 extends Tax {

    public function __construct($companyID, $config = []) {
        $this->name = 'Tax 11.00%';
        $this->percentage = 11;
        $this->company = $companyID;
        parent::__construct($config);
    }
}

class TaxNorway12 extends Tax {

    public function __construct($companyID, $config = []) {
        $this->name = 'Tax 12%';
        $this->percentage = 12;
        $this->company = $companyID;
        parent::__construct($config);
    }
}

Then I created a TaxFactory that checks the $country and creates the Tax Objects accordingly:
class TaxFactory {

    public function build() {

        switch ($country) {
            case self::NORWAY_ID:
                $tax11 = new TaxNorway11($this->companyID);
                $tax15 = new TaxNorway15($this->companyID);
                $tax12 = new TaxNorway12($this->companyID);
                $this->taxes = array($tax11, $tax12, $tax15);
                break;

        }

        return $this->taxes;
    }
}

I have multiple countries though, and thus I will end up creating many classes, one for each Tax Object. My Question is, is there a way by which I can create a class made of a list, for example NorwayTaxes that will have all the taxes for Norway. This is specially since every time I create a company there I will have to use the full list, so it seems that its a better way to organize the code?

A: As I see it, you are breaking the OCP there. You have hard-coded configuration in your classes. Also, the company is not a part of. Taxes get applied to the income and/or revenue of the company.
Instead of making a one class per each country per each tax, you should create classes, that exhibit a common taxing behavior. For example, you create a class (which implements Taxation interface) for applying tax of a defined percentage, with specified "exempt amount". And then you will have another class with the same interface, that applies percent-based tax with fixed "max amount". That would mean, you only need two classes. You just initialize them with specific constructor parameters.
Also, this approach will let you keep a categorized list of taxes in your database and configure, which taxes get applied for a specific company in each country.

redpajama_set_name: RedPajamaStackExchange


Great chif very positive and frendly nice an modernd sandwich shop!
Yummy! Definitely will go back, lots of intriguing dishes I can't wait to try!
Very wide selection on the menu and very delicious food. Great service and very friendly.
Welcoming, efficient, great food selection, great atmosphere, all around great spot!
Such a find! Never knew this cafe was here; can't wait to return. Thanks, Nift!
Service was awesome, food was not bad!
the staff was very nice, the restaurant is cute, and the food was good!
I liked the food a lot!
Got a chicken pesto and Arancini from Cafe Quattro, they are both delicious!! Staffs are also very friendly that i will definitely come back!
Very friendly staff! Pretty good pizza, short wait.
Great spot with friendly service and amazing food always.
Friendly people and good menu. Thanks!
Food was good I ordered the pasta dish, didn't get to finish because the was a piece of steel wool in my pasta which cut my tongue. I went back to inform the owner but not to complain. Just wanted to give them a heads up to change their scrubber. Over all food is good and staff is nice.
The staff is friendly and the food tastes great!!
From the moment I walked in, I knew from the organization and cleanliness of the store and the efficiency and attentiveness of the employees, that the food would be excellent. I will be back and I am so happy I have discovered this place.
Love Caffe quattro, will definitely go back!
Very tasty chicken parm sandwich.
Cafe Quattro is a local business for me, and this was the first time I've eaten there. The service was fast and friendly, and I appreciated that the space is really clean. The sandwich I had was decent, though not amazing. (sorry!) It's certainly a place I'll check out though if I need a quick bite every now and then. Thanks, Nift and Cafe Quattro!
It was excellent! The sandwiches are amazing!
Superb pizza--I can't believe how big a "small" pizza is. Great, friendly staff, too.
It was delicious and the customer service was wonderful!
The 18" pizza is absolutely amazing! I've never had such a great (and huge) pizza!
Delicious! Very friendly staff and amazing food!
Outstanding! Fantastic! Great food and very reasonable price. Very friendly and cozy place. Definitely will go back again.
The boy behind the counter was cute!!
Yummy food and wonderful service.
The proprietor was a really lovely, friendly guy! Very welcoming!
Friendly customer service. Love the pasta there!
Great! Quick service, friendly staff. Sandwich was a little hard to eat and the pizza wasn't cooked enough, but overall food was tasty.
Pizza was delicious and was ready super quick! They have a good variety of options on the menu and is reasonably priced.
Both options that Nift provided were in my neighborhood. The one I chose was not super close and while it was great to experience it, it probably will not become a regular spot due to the location of it.
Sandwich was just okay. I wouldn't go back but, it was nice to try.
Nice to try a new cafe! Ordered the spinach salad with chicken, nothing extraordinary but I was happy with it.
I used my Nift Gift for Cafe Quattro! The food was great! I enjoyed the chicken pesto panini and I will consider coming back there for lunch! Thank you!
Please provide better customer service Agatha and Ryan. You are prejudice by nature and should keep a more open mind.
Super friendly at the register.
Ordered a sub and it was really tasty. I will definitely be back!
Cafe Quattro is excellent! Not only is the food delicious, but the staff is so pleasant and friendly to be around. We absolutely love it! We would highly recommend this place to everyone.
It was excellent! Thank you!
Love heading there for lunch, always fast and delicious!
Great service and food !
Extremely friendly staff. Great service. Great pizza.
Always great food and customer service!
Visited but did not get the discount because takeout order was placed via the Slice app. Owner took my name and promised me the discount on my next visit. Dough was a bit though and chewy. (We live next to Pico and love their thin crust pizza.) We had the chicken and pesto topping. It was very tasty.
Never been disappointed at Cafe Quattro!
Cafe Quattro was absolutely delicious! I want planning on going there for lunch, but decided to give it a try thanks to my Nift gift card. The food was great! I tried the diavolo pasta and I loved it! They give you a huge portion and the prices are reasonable. I brought my coworkers with me and they all loved their meals as well!
Food was good. Great customer service.
The food was excellent and fresh, Thanks.


text:
Q: Pull data from a webpage to use To give some background, I sell Lego parts online. The order total when you place the order is based on the price of the parts you purchased, and the shipping costs.
Shipping costs vary depending on the weight of the order, and the country of shipment.
I am not a techie buff, and thats why I need some help. I know the basics, but not much else, though I'd love to learn and I've been trying around with this for days before coming here.
The source code of an order page, the only place where you can see the weight is this:
Estimated Weight of Order:	2.17oz   61.44g

It is the same for every single order.
So, I know where the data I want is.
What I need help with is, coding something that pulls the data out of this webpage (say it's inside a webpage called order.com/order.asp and the document contains a bunch of other data apart from the weight) and exporting a shipping price based on the weight it inputed. I don't know whether you can do this with PHP or Python, etc.
I would have on my server a... say a table with the shipping costs based on weight. Now, what I needed, would be to take that bit of data from the order.com website into my own server. (On my own server process the weight data that I took, match it with the shipping cost, pull out invoices, etc). The weight data is in the order page, always on a line like the one I posted on the question. I just read about web scraping. Maybe some PHP that looks into the order page till it finds the line with the weight, and pulls out the weight?
Many, many, many thanks for your help, and I apologize in advance if I sound too uninformed, which I am. I really need a detailed explanation.
Gerald
*TL;DR*Two webpages. One is in my server and one isn't. The one that isn't in my server (order.asp), has this line:
Estimated Weight of Order:	XX.XXoz   XX.XXg

I need something that I can put in my server, queries the weight from the page that isn't on my server (order.asp page) and matches the weight with a shipping price that I would have on my page (as a table or maybe with ifs).
There will be different order pages (order1.asp order2.asp order3.asp) with different weights. The script or whatever should do that for ea. wpage.
Thanks.

This would be the source code of an example page that I would need to take the weight of. Removed some sensitive info.

 <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">

 <META HTTP-EQUIV="IMAGETOOLBAR" CONTENT="NO">

 <LINK REL="STYLESHEET" TYPE="text/css" HREF="/stylesheet.css?13">

 <LINK REL="STYLESHEET" HREF="/lytebox/lytebox.css?13" TYPE="text/css" MEDIA="screen" />

  Order #3953198

Order Summary

  Order Date:

  Nov 20, 2013 17:12

  Payment By:

  PayPal.com

  Payment In:

  Euro

  Order Status:

  Shipped

  Changed:

  Nov 22, 2013 14:15

  Total Items:

  24

  Unique Items (Lots):

  2

  Invoiced:

  Nov 21, 2013 08:56

  Shipping Method:

  Registered
By default, with tracking number and insured up to 30 euros only.

  Order Total:

  EUR 8.92

  Shipping:

  EUR 4.85

  Insurance:

  EUR 0.00

  Additional Charges 1:

  EUR 0.00

  Additional Charges 2:

  EUR 0.00

  Credit:

  EUR 0.00

  Grand Total:

  EUR 13.77

  Orders in this Store:

  1

Items in Order

Image	Condition	Item Description	Lots	Qty	Left	Price	Total	Weight

Batch #1

Submitted on Nov 20, 2013 17:12

*	New	Light Bluish Gray Wheel 31mm D. x 15mm Technic
AB4	 	12	X	EUR 0.11	EUR 1.32	38.16g

*	New	Light Bluish Gray Tile, Modified 4 x 4 with Studs on Edge
AJ2	 	12	X	EUR 0.633	EUR 7.596	23.28g

Batch Total:	2	24		 	EUR 8.92	61.44g

Order Total:	2	24		 	EUR 8.92

Estimated Weight of Order:	2.17oz   61.44g

Contact your buyer about this order

This order will be purged from the BrickLink website on May 20, 2014.

Back to Orders | Show Temporary Checkboxes | Show Categories | Consolidate Batches | My Settings
Hide Qty Left in My Inventory | Hide Item Weight | Show My Cost | Show Only Items in Order | Edit Order

A: It's a little tough to write full-blown code without looking at the page you wish to scrape, but you should be able to use the following code to get what you want. The code below reads in a file called "html.txt", finds all orders in that text file, finds the total weight values in ozs and grams, and writes that data to an output file called foundWeights.txt. To run the code, just save your html in a text file called "html.txt", save the code below in a file called "findweights.py", and then put both of those files in the same folder. Then, open a shell or a terminal window, navigate to that folder, and type "python findweights.py" and momentarily a text file will appear in the same folder with your data in it.
html = open("html.txt").read()
out = open("foundWeights.txt", "w")

#split html on order number
legoOrders = html.split("Order #")

for order in legoOrders[1:]:
  print order
  orderNumber = order.split("<")[0]

  weightString = order.split('Estimated Weight of Order:	')[1]
  splitWeightString = weightString.split('   ')
  splitStringFinal = splitWeightString[1].split("<")

  grams = splitStringFinal[0]
  ozs = weightString.split('&nbsp')[0]

  out.write(str(orderNumber) + "\t" + str(grams) + "\t" + str(ozs) + "\n"

Outfile is tab-separated (Order #, grams, ozs):
3953198 61.44g  2.17oz


3.7L V6 Technical Discussions Any questions about the new engine, transmission, exhaust, tuners/CAI, or gearing can be asked here!
Placed my order last week for a ceramic coated set.
Hey Windy, I check AM and they said shipment for BBK shorties would start late March. It's the 2nd week of April already lol! Have you heard if AM has them in stock?
How hard of an install is it to do yourself if you don't have a lift, anyone know?
I would say it would be pretty difficult. I've heard that installing them requires you to lift the engine a tad bit to get into the manifolds. I can only imagine how difficult that would be from the ground. Installing them yourself might be more time consuming and less $$$, but you'll have the experience at the end of the day. Is it worth it? I say it is. But if your kinda impatient, i'd bring it to a performance shop.
I am on AM notify me when it is in list, for the shorties.
I would like to say, I am starting where the air comes in and working back.
tune cai , tb next headers.
Bummer. Oh well its not like I have the money to order them right now anyway.
I don't mind doing the work and learning haha but if you have to lift the engine, I don't have a way to do that. Just from looking tho it seems like there is a decent amount of room. I have jack stands and ramps to lift it up some that way, I just meant I didn't have a lift.
Lift the engine on a V6? Hmm...didn't look like it, but I guess I'll find out!
I'm sorry I was looking a video and recalling it from memory. The video was for the 5.0 not the v6. So it would make sence if you didn't have to.
Update...called AM....looks like another 3 weeks on the ceramic coated ones.
On the good news side, all the intake side pieces for my project have arrived, and since I ordered my tuner from them and have free tunes for life, I ordered a set of tunes for just those parts. Now I just need some time alone in the garage!


Romans, never forget that government is your medium! Be this your art:-to practice men in habit of peace, generosity to the conquered, and firmness against aggressors.
Imagine there's no countries, it isn't hard to do; nothing to kill or die for, and no religion too. Imagine all the people living life in peace.
To be feared is to fear: no one has been able to strike terror into others and at the same time enjoy peace of mind.


Underworld figures and crooks engaged in illegal activity are among those nominated by some political parties to contest the forthcoming local government elections on Saturday February 10.
Movenpick GM George Koumendakos lighting the oil lamp.
"We have compiled a list of names of candidates and found that several underworld figures and corrupt businessmen engaged in illegal activity have been given nomination this time to contest the polls," said the Executive Director of the People's Action for Free & Fair Elections (PAFFREL) Rohana Hettiarachchi addressing the Sunday Times Business Club (STBC) meeting at the Movenpick Hotel at Kollupitiya Colombo 3 on Tuesday.
It was the first meeting of the STBC at its new 'home', Movenpick supported by NDB and the discussion was on: "Elections and new processes".
Explaining the nitty gritty details of the local government polls, he said if a political party gets valid votes amounting to 40,000 and if 20 members are to be elected, the total valid votes have to be divided by the 20 members to get a figure of 2000 votes to elect one member.
He said with the introduction of the new electoral system the voters will come to know of their representatives. Each electorate will have their own representative who will be compelled to deliver on their election pledges.
However the disadvantage of the system was that there is no preferential vote. He said the Colombo Municipality this time will have more than the double the number of members with support coming from businessmen.
He said the biggest issue this time was bribing the voters. "Gas cookers, grinders, shoes, books, cement, wall clocks, diaries, etc have been distributed. The matter will be brought to the notice of the Commissioner General of Elections. We have reported 47 cases of government vehicles and state buildings being used for election related work," he said, adding: "We salute the police, the election commission and state officials this time for their dedication.
Member of the Election Commission and the former Legal Draftsman, Nalin Abeysekera said from 1947-1977 the municpal elections in Sri Lanka was held where every municipality was divided into wards and the candidates were not nominated by a political party but was proposed by a resident of the ward. The ballot paper only indicated the name of the person and the symbol and not a political party.
The candidate who got the highest number of votes was elected to that ward. The most important thing was that there was a personal connection between the member and the voter. However this system was changed from 1977 with the introduction of the Proportional Representation system with no election to the ward.
Mr. Abeysekera said in 1987 the system was again changed when people could vote for a candidate nominated by the party by casting a preferential vote. The party that got the highest number of votes then elected the candidates submitted by the party. But the political party elected the Mayor and the Deputy Mayor of that municipality. The disadvantage of that system was that there was no link between the candidate and the voter. The voter did not know whom they should approach when there was a problem in the local government area.
He said unlike in the previous years the votes this time will be counted at the polling stations.
Asoka Obeyesekere, Executive Director at the Transparency International Sri Lanka (TISL) said that the Election Commission has been mandated to decide on the women quota which is not going to be an easy task.
He said the people this time view the local polls as a national election as it is driven by political parties. Some candidates have even advertised themselves in the social media by their better-known nicknames to connect with voters in the area.
In a traditional first-past-the-post prior to 1977 people had an idea that a vote can be wasted. But under the new system the vote will be counted and ballot paper has been made easier.
On the other hand candidates are more concerned on the calculation of their votes, particularly from the lists, he said.
Two city hotels up for sale?


SWAT, or Successful Women Aligning Together, is a growing group of dynamic women that support one another in business as well as in personal growth and development. At meetings, members network and build relationships, meet other professional women, learn marketing techniques. Lunch time meetings are in Bradenton, Lakewood Ranch, Manasota and Nokomis and evening events and socials are throughout Manatee County. For more information, contact Dr. Robyn 941-962-0884 or director@swatnetworking.com.


This pair is only two of the four chairs we picked up at a second-hand shop that begged to have something unique designed for them. We love to find unusual pieces of furniture on which we can combine our talents.
The peacocks were originally a stained-glass design that we redesigned & recreated in cloth. They were then appliquéd onto the cream color upholstery fabric with decorative stitching before being custom upholstered to fit the chairs.


Photo courtesy Larnelle FosterJohnny Shelton, Larnelle Foster and Katie Shelton headed to the movies to challenge their perspectives and get out of their comfort zones.
Have you ever had a moment in your life when you avoided something? I have. I avoid the dishes. I avoid the mail. I avoid going to the movies with someone else. I go to the movies most of the time by myself. I admit it: I am afraid of what I will see and avoid the shock of what someone else could say in response. I agree to see movies that I don't want to see because I don't want to offend someone. And I rarely invite anyone to go and see what I want to see.
A movie is also an awkward date—even with your parents. But I realized recently what I avoid the most is my real response to something I just saw. I want to be agreeable. But I also want to tell the truth. And yet, do any of us go out in the world and live what we felt in a movie?
I went to the movies today with Katie and Johnny Shelton of The Mixtapes. (Shout out to them and their band!) We went to see Black Panther. Other than it not being lost on me that I never actually go to the movies with anyone other than my father, they let me know they had just seen Peter Rabbit with the kids the day before. Oh, Larnelle, oh. And here we go to see Black Panther. We watched the movie.
After the movie I had to use the bathroom, and I also cried. Another reason I watch movies alone. There were moments in the movie that were hard for me.
Eventually the three of us were sitting in the very nice Alamo Drafthouse to chat. We picked a table in the middle of the room. Clarity. This was never supposed to be a movie review. And it isn't. And Katie, Johnny and I don't get to spend the day together often.
We talked about the movie. We talked about positive and strong women in a movie, about the underdog and what that really means to us, about how now there are changing images of what we saw growing up.
Katie and Johnny met in high school in Missouri. I grew up in Evanston, Illinois. But here we sit in Springfield talking about Black Panther. But more importantly, we are looking at the things that, as children, we didn't see. I never saw many superhero movies with people who looked like me in them. Katie never saw women being so well represented as powerful and beautiful. Johnny found solace in Kurt Vonnegut as a child but is happy to see that there doesn't have to be a superhero that is always white with a white sidekick.
The biggest part for me: Two other people enriched my life today. I'm not going to stop going to the movies alone. (I cried so much at one I had to take my own intermission.) But an action hero, or a woman, or an underdog, or a silent partner who is thoughtful and deliberate might just be a person to go to the movies with sometimes. It's special beyond belief.
We asked someone to take a photo of us at the end of our time, and the lovely woman said: "You guys look just like a band!" Wink.


THE CLASSIC MYHERIN FOREST STAGE AND THE SPECTACULAR ASPHALT TEST AROUND THE ROCKY GREAT ORME HEADLAND RETURN TO THE ITINERARY FOR AN ENDURANCE-FOCUSED WALES RALLY GB (12 – 15 NOVEMBER).
Other highlights in the route for the 13th and final round of the FIA World Rally Championship include more than 130km without service in Friday's opening leg and night stages in Saturday's marathon of almost 17 hours.
The route shows few changes from 2014, although the Clocaenog Forest stages have been omitted due to wind farm work in the complex.
Deeside will again host the single service park and after a Thursday evening start ceremony in Llandudno, drivers will head into mid-Wales on Friday for six stages, with only a mid-leg tyre change in Newtown breaking up the action.
Myherin and its dramatic wind farm landscape returns to the route, a favourite stage of both Jari-Matti Latvala and Elfyn Evans. "I'm particularly pleased to see the return of Myherin. It's one of those stages that epitomises Welsh rallying and is a real pleasure to drive," said Evans.
A 5am start on Saturday heralds a 109km loop of stages without service, including two passes through the classic Dyfi and Gartheiniog tests. That is followed by almost 33km of action in darkness.
Sunday is based entirely in north Wales and includes the short blast around the picturesque but tricky Great Orme coastline, before ending with the live TV Power Stage alongside Brenig reservoir.
Drivers face 19 stages covering 312.16km.


When we told Alex about the possible end of the world he did got a bit scared. Quickly he put on his special camouflage.
What to do in Las Palmas while you wait for that Santa Claus to arrive and you wait for the new year. Maybe there will even be a big apocalypse. Well, fortunately life here is not so complicated. We simply wait for the things to come eating some tapas, drinking some Tropical and a nice Mojito and enjoying a nice concert in the sun. Even the little once was enjoying himself.
From Spain we wish everyone a very nice Christmas!


text:
Francisco Colom
Francisco is an architect who has practiced in Spain, Azerbaijan, the United Arab Emirates, and the United States. He joined MASS in 2018 as a Harvard Fellow and is now an Associate at the Boston office.
Francisco holds a Master in Design Studies with Distinction from the Harvard University Graduate School of Design and a Bachelor and Master of Architecture with Highest Distinction from the University of Alicante, where he was appointed as Honorary Professor of the Department of Architectural Design. At Harvard, his thesis looked at how the conservation of modernist colonial architecture represents an imposition of Western scientific knowledge as the universal model of reality and advocated the transition of architecture and design to practices rooted in a global ecology of knowledges.
Francisco is the recipient of the Fundacion La Caixa Fellowship for Postgraduate Studies, the European Union Tempo Project Scholarship, the Harvard Eduard Sekler Fellowship, and the Harvard GSD Community Service Fellowship. He is Editor at More Than Green, a multimedia platform for education on creative sustainability, and Obl/que, a journal at the intersection of critical theories, conservation, and design. Francisco's work has been exhibited at the 15th and 16th Venice Architecture Biennale.


When he's not running MYOB, Tim Reed is likely to be found kicking a football with his children, reading about quantum computing or horse riding to clear his head.
Sitting around the family dining table as a child, Tim Reed would listen intently to his father's tales about his string of businesses in regional Victoria – the highs, the lows and money matters. The nightly discussions gave him an affinity for small business that still informs his actions today as CEO of business management software provider MYOB, a company that prides itself on helping businesses better manage their financial affairs. The three pillars of knowledge his father passed on were: dream big, don't forget the fine detail, and never neglect cash flow.
At age 15, Reed's wish came true, working as a waiter in a family-run restaurant and wedding reception estate called Kenloch in Olinda, in Victoria's Dandenong Ranges. He was lucky to come under the tutelage of its owner Kath Martin, a woman with a "hard head and a big heart". Martin instilled in Reed the importance of people management.
Through his high school and university days, Reed kept his job at Kenloch, graduating to managing about 50 staff, running dining rooms and being master of ceremonies (MC) at weddings.
Armed with such experience and a commerce degree, he went travelling before landing in the United States in 1994 for a stint that was to shape his destiny. Then, in his 20s, he graduated from a two-year Harvard Business School MBA course as a Baker Scholar – a designation given to only the top 5 per cent of the class – and headed to Silicon Valley, just as the internet and web browser Netscape became the rage.
"They were exciting times," recalls Reed, who went on to hold senior management roles in sales, marketing, product management and finance with a number of US companies. What intrigued him the most in the US was venture capital – a new concept to him at the time – and its power to drive early-stage businesses.
The experience taught Reed the importance of investing in ideas and pursuing educated risks while limiting potential downsides, should something go wrong.
"That's something we do at MYOB now all the time as we are thinking about re-architecting the database on one of our platforms, or whatever it might be," says Reed, who became CEO in 2008 after spending five years as a general manager in one of the company's divisions.
"If you are going to build something different and do something differently, then you need to bring together different people – people who think differently and approach things differently," he says.
Today, Reed oversees a MYOB accounting software powerhouse with about 1700 employees and, in May, the company reported annual revenue for 2017 of A$416 million, up 12 per cent on the previous year.
For all his success as a leader, though, Reed admits to being dissatisfied with most of what he does. Although he does not dwell on the past, he is conscious that he and MYOB can always be doing better to help businesses with tasks such as reducing manual data entry and accelerating cash flow.
Professional Development: The Strategic Manager. Gain the tools to develop an enduring strategy for your organisation under the guidance of experienced business executives. Learn how to evolve your personal leadership style.
Such self-analysis is typical of Reed's desire to keep learning about business and, indeed, himself as an individual. He reads avidly to stay up to speed with trends such as artificial intelligence (AI) and quantum computing, or to learn from the insights of thought leaders. Among others, he values the thinking of John Hagel, a renowned Deloitte consultant based in Silicon Valley, who has written about terrain-based strategy versus trajectory-based strategy. The former typically sees leaders focusing on the present environment and seeking to build a sustainable competitive advantage at some stage in the future. The latter (Hagel's preferred approach in times of accelerating change) starts with a view of the future and works back to the implications for action in the present.
"That really changed the way I thought about strategy," Reed says. He is conscious, too, that a business is likely to fare better if it has a CEO with a healthy body and mind. Accordingly, he exercises three to four times a week, makes a point of kicking a football or shooting hoops with his three children on weekends, and takes time out to watch his beloved Geelong Cats play in the AFL (Australian Football League).
A quick glimpse at the MYOB website and its blog Pulse suggests that Reed is not your typical CEO. Rather than carefully crafted corporate messages, he writes about the virtues of the AFL's Auskick program for children, praises mothers for their contribution to society and business, and stresses the importance of sharing and listening.
In his day job, Reed finds listening to be particularly crucial in helping small-to-medium enterprises (SMEs). His motivation comes partly from remembering his father's stresses and successes, and also from a belief that smaller enterprises are a source of great innovation and game-changing ideas.
As MYOB grows, Reed is conscious of the trade-offs between having greater scale and potentially becoming less agile and innovative. To overcome that tension, he insists that everybody within the company – and even customers and partners – must clearly sense what the business stands for, its values and why it operates; that is, "MYOB exists to help businesses succeed".
"For me, if you can paint that picture of what you're trying to achieve, then what you're doing is empowering a huge number of people – both inside and outside the business – to help you get there," Reed says.
Always with one eye on the future, Reed expects the next evolution in cloud accounting will feature online platforms that automatically capture and collate relevant business data so business owners can, with minimal manual input, hand over the bulk of accounting administrative tasks to trusted bookkeepers and accountants.
"That's pretty exciting, because what we do know is that the greatest gift you can give a small business owner is time," Reed declares.
No doubt his father would approve.
With more than 400,000 online subscribers, MYOB is one of the clear leaders in cloud accounting.
Tim Reed admits that the transition to online platforms has been a test for himself and the company. Early iterations of MYOB's online products in the late 1990s and early 2000s failed abjectly, while another attempt when Reed took over as CEO a decade ago also hit obstacles. The leadership team underestimated the difference between building on-premise software versus online software.
With an increasing number of consumers embracing MYOB's online software, the boss can reflect on what it takes to transform a business. His staff use and understand online applications; a new cohort of tech specialists complements traditional strengths around domain knowledge relating to accounting software. The business's rough patch also forced Reed to consider and draw on his own, personal attributes.
MYOB CEO Tim Reed lists the characteristics he admires most in leaders.


The Arcopedico LS Fuschia is a high-quality anatomically-designed women's comfort shoe that is hand-made in Portugal.
The Arcopedico LS Red is a high-quality anatomically-designed women's comfort shoe that is hand-made in Portugal. The Arcopedico LS is a simple everyday casual walking shoe that fits almost any foot shape. The knitted upper of the Arcopedico LS is breathable and allows for many forefoot issues such as hammer toes, corns, bunions, metatarsalgia, Morton's neuroma and calluses. The Arcopedico LS Red is also great for people with diabetes, arthritis and neuropathy because of the adjustability of fit and the soft breathable upper. The hallmark of all Arcopédico shoes can be seen in two fundamental design principles: the "barefoot" upper–a soft, non-binding design that that conforms to the top of the foot to allow circulation and all-day comfort–and the patented, metal-free twin arch-support soles (made from molded polyurethane), which protect the foot arch and allow the distribution of bodyweight through the entire plantar surface. In 2011, Arcopédico introduced the patented Lytech® material to the line, an innovative, ultra-light blend of polyurethane and Lycra®, which allows the shoes to be easily packed for traveling (shoe pairs weigh as little as 10.9 oz.) and machine-washed. Arcopédico's Lytech shoes are also BioCalce Certified, introducing an eco-friendly, vegan, water-resistant and biodegradable option for Arcopédico customers.
Lightweight, as little as 10.9 oz.
Even a practice dance shoe!
The Allsorts is a casual walking shoe that will keep you walking throughout the entire day. The Allsorts also has a full length removable orthotic footbed and a thick polyurethane outsole which adds durability and serves as a great shock absorber taking pressure off your knees and joints.


Sadly, this isn't true. And it's not the best medical advice. There have been several studies over the years that looked at metallosis in the body derived from metal-on-metal hip components. The first incident of metallosis from MoM hip implants was reported in 1971. Since then, doctors have been reporting the higher incidence of metallosis in patients who received MoM artificial hip implants. Several scholarly studies have been conducted, including a recent one whose results were published this month examining the impact of metallosis on the cells of patients.


text:
COMPARTMENTATION AND
EXTERIOR INSTALLATIONS
A. COMPARTMENTATION
3A1. General. A modern submarine contains, in addition to the mechanisms required to operate it on the surface, a multitude of operating machinery and tanks required to enable it to dive, surface, and proceed submerged. This fact makes it one of the most compact vessels afloat. Yet the submarine is designed and arranged along simple and logical lines, and in spite of the seeming confusion of valves, lines, and apparatus, everything in the submarine is situated to insure the maximum of speed and efficiency. (See FigureA-1.)
The modern fleet type submarine consists of a superstructure and a hull surrounded for the most part by various fuel and water ballast tanks. The pressure hull, designed to withstand the sea pressure, houses most of the ship's machinery and provides the living quarters for the officers and the crew. It is divided into eight watertight compartments, separated by pressure bulkheads provided with watertight pressure resistant doors. The ninth compartment, the conning tower, in the shape of a cylinder placed on its side, is located above the control room and connects with the control room through the access hatch.
The compartments, in turn, are divided by means of the platform deck into upper and lower sections, which contain the spaces housing the various equipment and providing the necessary facilities for the submarine's officers and crew.
3A2. Forward torpedo room. The foremost compartment in the submarine is the forward torpedo room (See Figure 3-1.), located between frames 16 and 35. The forward torpedo room contains six torpedo tubes in its forward bulkhead; torpedo racks on its port and starboard sides, immediately adjacent to the torpedo tubes for carrying spare torpedoes; torpedo loading hatch overhead; and torpedo handling equipment. Four of the torpedo tubes, Nos. 1, 2, 3 and 4, are above the platform deck, while tubes Nos. 5 and 6 are below the platform deck. The sonar gear, underwater log, and an access hatch to the escape trunk are also located in the forward torpedo room.
The following is a list of the more important equipment located in the forward torpedo room:
1. Hydraulic pump and ram for bow plane tilting
2. Hydraulic motor for windlass and capstan and bow plane rigging
3. Impulse charging manifolds (port and starboard)
4. Torpedo tube blow and vent manifold
5. Torpedo tube drain manifold
6. Torpedo gyro regulators
7. Blow and vent manifold for normal fuel oil tanks No. 1 and No. 2
8. Blow and vent manifold for No. 1 sanitary tank
9. Blow and vent manifold for fresh water tanks No. 1 and No. 2
10. Officers' head
11. Bunks and lockers for crew (usually at least 10 men)
12. High and low external compartment air salvage valves
13. Compartment air salvage (internal)
14. Oxygen flasks
15. Sound-powered telephones
16. Bow buoyancy vent operating gear
17. No. 1 main ballast tank vent operating gear
Figure 3-1. Forward torpedo room.
Figure 3-2. Forward battery compartment.
3A3. Forward battery compartment. (See Figure 3-2.) The forward torpedo room is separated from the forward battery compartment by a watertight bulkhead and door. The lower part of the forward battery compartment houses the 126 forward battery cells. The upper section of the compartment contains the officers' quarters, the chief petty officers' quarters, and the yeoman's office. The entire forward battery compartment is located between frames 35 and 47. The officers' quarters provide wardroom and staterooms for the ship's officers, sleeping accommodations for the chief petty officers, and officers' showers and pantry.
Also located in the forward battery compartment are:
1. Ventilation supply lines
2. Ventilation exhaust lines
3. Bulkhead flappers
4. Main ballast tanks No. 2A-2B vent operating gear
5. Battery blowers
6. External salvage air connections (one high and one low)
7. Compartment internal salvage air connections
8. Oxygen flask
9. Sound-powered telephones
3A4. Control room. (See Figures 3-3, 3-4, and 3-5.) Going aft, the compartment immediately adjoining the forward battery compartment is called the control room. It is located between frames 47 and 58 and is the main control center of the submarine. The control room contains:
Starboard side forward-aft:
1. Electric circuits and switchboard (IC switchboard)
2. High-pressure air manifold
3. 225-pound air manifold
4. 600-pound main ballast tanks blowing manifold
5. 10-pound main ballast tanks blowing manifold
6. Auxiliary power switchboard
7. Main ballast tanks Nos. 2A and 2C
Port side forward-aft:
1. Gun access batch
2. Oil supply tank
3. Signal ejector
4. Hydraulic air-loading manifold
5. Negative tank inboard vent
6. Hydraulic manifold
7. Bow and stern plane diving station
8. Trim manifold
9. Main ballast tanks Nos. 2B and 2D emergency vents
Centerline forward-aft:
1. Steering stand
2. Master gyro
3. Pump room hatch
4. Periscope wells
6. Radar mast
In the overhead:
1. High and low external compartment air salvage
2. Internal compartment air salvage
3. Ventilation supply and exhaust lines
5. Oxygen flasks
In the pump room:
1. Hand and hydraulic operating gear for negative flood
2. High pressure air compressors
3. Low-pressure blower
4. Drain pump
5. Trim pump
6. Vacuum pump
7. IMO pumps
8. Hydraulic accumulator
9. Air-conditioning machines
10. Refrigeration machine
11. IC motor generators
Figure 3-3. Control room (starboard side) and radio room
Figure 3-4. Control Room
Figure 3-5. Pump Room
The after section of the control room is occupied by the radio room which houses the transmitting and receiving radio apparatus, and radio direction finder. The engine induction and ship's supply outboard valve operating gear is located in the radio room overhead.
Access to the radio room is from the control room, which is in turn is accessible from the officers' quarters passageway forward, crew's mess hall aft, and the conning tower access hatch overhead.
3A5. Conning tower. The compartment immediately above the control room is the conning tower. (See Figure 3-6.) It is the main navigation and firing control station for the submarine. The conning tower contains the periscopes and the periscope hoist equipment, the radio direction finder, the sonar equipment, the radar equipment, the torpedo data computer (TDC), the gyro repeater, the conning tower steering stand, and the various pressure gages and indicators.
The conning tower connects with the control room through a watertight hatch. This is designated as the lower conning tower hatch. The upper conning tower hatch provides access to the bridge from the conning tower. The conning tower also has a ventilation exhaust connection and its own air-conditioning coil. Since the conning tower is the commanding officer's battle station, all communication lines include the conning tower in their circuits.
3A6. After battery compartment. The compartment aft of the control room is the after battery compartment (See Figure 3-7.), located between frame 58 and frame 77. It houses the after battery with its 126 cells below the platform deck. The battery cells are connected to the exhaust system by ducts leading to the battery blowers. The forward end of the after battery space, below decks, also contains the cool and the refrigerating rooms and the ammunition magazine. Above the platform deck, the after battery compartment contains the crew's galley, mess hall, and the crew's sleeping quarters.
The more important equipment in the after battery compartment consists of emergency vents for safety tank, FBT No. 3 and No. 4; hand-operated flood valves for FBT No. 3 and No. 4; main vent operating gear for safety tanks, MBT No. 2C and 2D, FBT No. 3A and 3B, FBT No. 4A and 4B, and FBT No. 5A and 5B; the hydrogen-detecting apparatus; the blow and vent manifold for fuel ballast tanks No. 3A and 3B, 4A and 4B. The galley equipment, scuttlebutt, battery exhaust blowers, and the radio receiver for the crew are also located in the after battery compartment.
The after part of the after battery compartment contains the crew's bunks (usually 36) with individual lockers for each bunk and a medicine locker. Separated from it by a non-watertight bulkhead and a door are the crew's head, showers, washing machine, and lavatories.
The after battery compartment is provided with an external high and low compartment salvage air valve.
3A7. Forward engine room. The forward engine room (See Figure 3-8.) is located between frames 77 and 88, and houses No. 1 and No. 2 main engines. The main engines extend from below the platform deck into the engine room space, with No. 1 main engine on the starboard side and No. 2 main engine on the port side. The main generators, No. 1 and No. 2, are below decks aft of the main engines beneath the platform deck, and are directly connected to them.
The forward engine room houses the vapor compression distillers, fuel oil pump (standby), lubricating oil pump (standby), engine air inboard induction hull valve, and various main engine starting and stopping controls.
Figure 3-6. Conning tower
Figure 3-7. After battery compartment and crew's quarters.
Figure 3-8. Forward engine room
The forward engine room also contains the following:
1. High and low external compartment air salvage connection
2. Internal compartment air salvage connection
3. Hull ventilation supply valve
4. Supply blower
5. Exhaust blower
8. Sound-powered telephone
9. Fuel oil purifier
10. Lubricating oil purifier
3A8. After engine room. The after engine room (See Figure 3-9), located between frames 88 and 99, is similar in many respects to the forward engine room. It houses the No. 3 and No. 4 main engines and main generators.
In addition, the after engine room houses the auxiliary generator and the auxiliary diesel engine, both of which are located entirely below the platform deck.
The upper space of the after engine room houses the after engine air inboard induction hull valve, the high and low external compartment air salvage connection, the internal compartment air salvage valve, the lubricating oil and the fuel oil purifiers and the pumps. The compartment also contains:
1. Standby fuel oil pump
2. Standby lubricating oil pump
3. Air-conditioning unit
4. Hull supply lines (ventilation)
5. Access hatch
3A9. Maneuvering room. (See Figures 3-10 and 3-11.) The upper section of the maneuvering room, frames 99 to 107), contains the maneuvering control stand, indicators, gages, lathe, crew's head, auxiliary switchboard, remote control for engine shutdown, oxygen flask, high and low external compartment air salvage, internal compartment air salvage, maneuvering room induction hull valve, hull supply lines, and bulkhead flappers.
The lower part of the maneuvering room is called the motor room and has the Nos. 1, 2, 3, and 4 main motors. The four main motors are directly connected with the two reduction gears. The main motors Nos. 1 and 3 are directly connected with the reduction gear No. 1, and the main motors Nos. 2 and 4 are directly connected with reduction gear No. 2. The reduction gears in turn are connected with the propeller shafts.
The circulating water pumps and the lubricating oil pumps are also located in the motor room.
3A10. After torpedo room. The aftermost compartment on the submarine is the after torpedo room (See Figure 3-12), located between frame 107 and 125. Unlike the forward torpedo room, it contains only four torpedo tubes in its after bulkhead. However, it also has the torpedo racks, torpedo handling equipment, and spare torpedoes.
The after torpedo room has one impulse charging manifold, torpedo tube blow and vent manifold, torpedo gyro regulators, and the torpedo tube firing indicator and controls. It also contains the escape and rescue hatch, the torpedo loading hatch overhead, the hydraulic steering rams and pump, the stern place tilting mechanism, the torpedo tube drain manifold, the crew's bunks and lockers, the ventilation supply line, the bulkhead flappers, the oxygen flasks, the emergency air connection for escape hatch, the high and low external air salvage connections, the internal compartment air salvage, and a sound-powered telephone.
Figure 3-9. After engine room
Figure 3-10. Maneuvering room above platform deck
Figure 3-11. Motor room
B. EXTERIOR INSTALLATIONS
3B1. General.The exterior view of the submarine presents a very low silhouette. This is due primarily to the fact that the submarine is designed to have a low center of gravity for stability and is normally two-thirds submerged as she rides on the surface.
The exterior hull of the submarine has a cylindrical shape, which gradually tapers forward of frame 35 and aft of frame 107, becoming the bow of the superstructure and the rounded stern. (See FigureA-2.)
The superstructure deck, called the main deck, extends virtually from the tip of the bow to frame 124 near the stern. The deck is generally level. Beginning about the midship section it rises gradually in the direction of the bow, to a height of approximately 12 feet above the water line. The freeboard of the after end of the main deck is about 4 feet.
The main deck is attached to the exterior hull by means of the framing and rounded sides. Limber holes in the sides allow sea water to enter all the hollow spaces in the superstructure and the deck when diving, and drain off when the submarine is surfacing.
The midship section of the main deck is occupied by the conning tower, which is surmounted by the bridge deck, with periscope shears, periscopes, radio compass loop, and radar antenna.
The after section of the bridge deck contains the ship's pelorus, one 20-mm anti-aircraft gun and after ammunition ready locker, while the forward section of the bridge may have either a 20-mm or a 40-mm anti-aircraft gun, depending upon the particular ship. Two ammunition ready lockers are located in the lower part of the conning tower superstructure, one forward and one aft. The gun access trunk is located forward and one aft. The gun access trunk is located forward of the conning tower and is provided with a hatch opening onto the main deck.
The forward section of the deck contains the 5"/25 wet type gun, galley access hatch, after engine room access hatch, after torpedo loading hatch, after rescue and escape hatch, marker buoy, and capstan.
The bow is equipped with six torpedo tube shutters, three on the port and three on the starboard side, and the bow diving planes.
The underside of the hull contains ballast tank flooding ports and underwater sound heads.
The after end of the ship, on the underside, is equipped with the four stern torpedo tubes, two on the port and two on the starboard side, port and starboard propeller struts, propellers, stern diving planes, and the rudder.
Copyright © 2004 Historic Naval Ships Association
Version 1.10, 22 Oct 04