To get a better idea of life behind the scenes and the people who are at the heart of our favourite spirits – we decided to launch a Meet the Maker micro series. For our final interview in the series, we caught up with Charles Maxwell. Having literally created hundreds of gins in his career at the helm of Thames Distillery, Charles is one of the few distillers in the world who only creates spirits for others and in doing so, is undeniably, one of the most experienced ginsmiths out there.
Gin Foundry – Hello Charles, thanks for agreeing to finish off the series with us. You come from a long line of distillers, but how long have you been distilling yourself and what made you choose it as a career?
Charles Maxwell – I joined the Finsbury Distillery Company ltd in 1976. That business had been my mother's family firm, and my 8th great grandfather one George Bishop (Bishop being my mother's maiden name) was apprenticed to a distiller in London in the 1680's and from that day to this we have been distilling gin in London.
What is your favourite part of making gin?
Creating new gin recipes, learning the different taste profiles that are achieved and enjoying drinking the result!
Creatively, you must find it exciting to be able to work on the development of so many gins. Have any really stood out as a gin that you are particularly proud about above the others?
To single out any individual gin would be invidious. Several have won gold and silver medals at the IWSC competition over the years. Each one has proved exciting to be involved with in its development.
Cheeky asking which was the favourite child but it was worth a go…. As the distiller who is responsible for the taste of the gin and not in control of other aspects of a brand (for example the investment, the look and feel, the marketing and PR etc..) – how much do you think the other elements of gin matter to the success of a brand? You must have made some amazing gins that are not doing particularly well and vice versa, some decent gins that have bloomed because of clever positioning.
Launching a new gin onto any market requires a well thought out business plan if it is going to succeed commercially just like any other venture. While the quality and integrity of the liquid is an essential part, if clear marketing and commercial development plans are not drawn up the brand is unlikely to survive.
You have a while to go before retirement, but given you make so many different gins and that you have been such a huge figure in the world of distilling and gin – do you ever think about what legacy you will leave behind? If so, what do you think (or hope) that would be?
Not certain about the "huge figure" bit, unless that is my waist line! It is wonderful being part of the current gin revival. My legacy, if there is one, will be that we have established a specialist business that can go on giving a unique service to those who wish to enter the world of gin created and produced in London.
It's that service that sets Thames apart. There are a lot of newbee distillers and new distilleries, many of which have small budgets and some without any formal training on apparatus. How tough is the learning curve to achieve consistency and how important are the base tools?
The new distillers who recognize they are on a steep learning curve, and understand how to inquire politely of those in the trade with the knowledge, find that they can make reasonably quick progress. It is a truism to say that each still has its own particular characteristics and who ever puts in a new one has to spend time learning how it will perform. As in any craft it is normally always worth investing in the best quality equipment you can afford.
Do you think many people underestimate what it takes to set up a distillery?
I am not certain people underestimate what it takes to set up a distillery, so much as underestimate the time, effort and expense involved in creating and building a brand. I use the analogy that in the same way people get carried away with the romantic idea of owning a country pub, some also approach the idea of owning a little distillery.
Some people get bizarrely snooty abut contract distilling. Why do you think people initially mistrust the authenticity of third party distilled gins when they are often better than gins made by less experienced distillers?
I would suggest that most of those who are being "snooty" are those who have invested in their own stills and are trying to create a point of difference in the market place. A contract distiller, like Thames, lives and dies on ensuring their clients get a quality product and that their recipes are kept exclusive. I would suggest that the smart parties are those who get their gins created and produced by a contract distiller and husband their resources for use in their marketing and sales drives.
In terms of distilling, so many brands hammer the message across that copper stills are best and the only way to make gin. As someone who uses two stills, neither made of copper, is there really a difference or is it just marketing?
As I have said earlier each still has its own characteristics and it is more important to understand them and the interaction of the various botanicals than to worry about the still being made of copper or stainless steel. Clearly copper stills are not "the only way to make gin". I would however suggest that whichever metal you start with it probably makes sense to stick with, unless you are looking to create a different character in your gin.
Having been in high demand for your services, you will be able to gauge the future more than anyone so finger in the air times… Do you think the category will contract in the coming years?
What is certain is that gin plays in the international drinks market and that it will evolve from where it is now. In some markets due to its very success it will possibly contract as it comes under increasing competitive pressure from other spirits and alcoholic drinks. meanwhile it may well find markets in which gin will take a larger share of the cake. What I do believe is that the smaller "craft", "artisanal"; or whatever title you like to give them; brands have a definite future as consumers look for points of difference which fortunately, gin can give them in the product and not just the packaging.
And lastly, what's your favourite way to enjoy gin? Cocktail, neat, G&T – do you have a tipple of choice?
Wet and cold! A well made gin and tonic is a wonderful drink, but then so is a dry martini or a negroni let alone a tom collins. The real fun is enjoying the different flavours and styles that are now so much more readily available.


Where do i login for my email if i bought a domain & web hosting?
Where do i configure that? Or is that something i consult to my web host? Or my domain host, go daddy?
It really depends on who you're hosted with.
So I would use http://mail.mysite.com to get my webmail.
But as I said it's different for every host.
Can I use two different domain names for one web host?
I bought two domain names and I want to point them both to the same web host. Basically, I have a website up at a web hosting place and I would like to point two domain names to it. I have the DNS addresses for my web hosting place, but can it share two domain names?
Yes it can. One will be the main domain, and the other will be an "add-on domain" it shouldn't cost you any extra. IMO, get a host that uses cpanal, its the best control panal out there, and worth the extra dollar or two you'll pay a month, by a LOT.
Help with finding a domain name and web host!?
I am putting up a new website and am looking for a reliable web host where I can get a domain name and hosting for a low cost at a reputable site. Please advise. Thank you!
Hi, I would recommend Hostamina.com. They provide unmatched reliable quality web hosting. You can get hosting starting at $4.99/month or even less than that if you pay annually (2 months free!). You can also buy a domain name there, and the charge for that is only once a year.
Hostamina Web Hosting – Quality Web Hosting You Can Rely On!
Why is it needed to transfer a domain name to a web host? How?
Domain obtained from Yahoo to a Web Host of another company.
So you bought a domain name through Yahoo. Now you need a place to put the name, and you have decided to use some Web Hosting company, other than Yahoo.
It's as if you had decided to buy a business, let's pretend it is called Lizzie's Laundry. But, you don't want to use the same building it was in when you bought it – you want to transfer it to some other building. So, of course at the new building you still need to pay rent and such. But anyway, you are transferring the name from the original place, to the new one.
It's like that – you get a better deal at the new place, so you want to do business there, not at the original place. So, you transfer the name.


text:
"""
Test class for Native IPMI power driver module.
"""

import mock
from oslo_utils import uuidutils
from pyghmi import exceptions as pyghmi_exception

from ironic.common import boot_devices
from ironic.common import driver_factory
from ironic.common import exception
from ironic.common import states
from ironic.conductor import task_manager
from ironic.drivers.modules import console_utils
from ironic.drivers.modules import ipminative
from ironic.drivers import utils as driver_utils
from ironic.tests.unit.conductor import mgr_utils
from ironic.tests.unit.db import base as db_base
from ironic.tests.unit.db import utils as db_utils
from ironic.tests.unit.objects import utils as obj_utils

INFO_DICT = db_utils.get_test_ipmi_info()

class IPMINativePrivateMethodTestCase(db_base.DbTestCase):
    """Test cases for ipminative private methods."""

    def setUp(self):
        super(IPMINativePrivateMethodTestCase, self).setUp()
        self.node = obj_utils.create_test_node(self.context,
                                               driver='fake_ipminative',
                                               driver_info=INFO_DICT)
        self.info = ipminative._parse_driver_info(self.node)

    def test__parse_driver_info(self):
        # make sure we get back the expected things
        self.assertIsNotNone(self.info.get('address'))
        self.assertIsNotNone(self.info.get('username'))
        self.assertIsNotNone(self.info.get('password'))
        self.assertIsNotNone(self.info.get('uuid'))
        self.assertIsNotNone(self.info.get('force_boot_device'))

        # make sure error is raised when info, eg. username, is missing
        info = dict(INFO_DICT)
        del info['ipmi_username']

        node = obj_utils.get_test_node(self.context, driver_info=info)
        self.assertRaises(exception.MissingParameterValue,
                          ipminative._parse_driver_info,
                          node)

    @mock.patch('pyghmi.ipmi.command.Command', autospec=True)
    def test__power_status_on(self, ipmi_mock):
        ipmicmd = ipmi_mock.return_value
        ipmicmd.get_power.return_value = {'powerstate': 'on'}

        state = ipminative._power_status(self.info)
        ipmicmd.get_power.assert_called_once_with()
        self.assertEqual(states.POWER_ON, state)

    @mock.patch('pyghmi.ipmi.command.Command', autospec=True)
    def test__power_status_off(self, ipmi_mock):
        ipmicmd = ipmi_mock.return_value
        ipmicmd.get_power.return_value = {'powerstate': 'off'}

        state = ipminative._power_status(self.info)
        ipmicmd.get_power.assert_called_once_with()
        self.assertEqual(states.POWER_OFF, state)

    @mock.patch('pyghmi.ipmi.command.Command', autospec=True)
    def test__power_status_error(self, ipmi_mock):
        ipmicmd = ipmi_mock.return_value
        ipmicmd.get_power.return_value = {'powerstate': 'Error'}

        state = ipminative._power_status(self.info)
        ipmicmd.get_power.assert_called_once_with()
        self.assertEqual(states.ERROR, state)

    @mock.patch('pyghmi.ipmi.command.Command', autospec=True)
    def test__power_on(self, ipmi_mock):
        ipmicmd = ipmi_mock.return_value
        ipmicmd.set_power.return_value = {'powerstate': 'on'}

        self.config(retry_timeout=400, group='ipmi')
        state = ipminative._power_on(self.info)
        ipmicmd.set_power.assert_called_once_with('on', 400)
        self.assertEqual(states.POWER_ON, state)

    @mock.patch('pyghmi.ipmi.command.Command', autospec=True)
    def test__power_off(self, ipmi_mock):
        ipmicmd = ipmi_mock.return_value
        ipmicmd.set_power.return_value = {'powerstate': 'off'}

        self.config(retry_timeout=500, group='ipmi')
        state = ipminative._power_off(self.info)
        ipmicmd.set_power.assert_called_once_with('off', 500)
        self.assertEqual(states.POWER_OFF, state)

    @mock.patch('pyghmi.ipmi.command.Command', autospec=True)
    def test__reboot(self, ipmi_mock):
        ipmicmd = ipmi_mock.return_value
        ipmicmd.set_power.return_value = {'powerstate': 'on'}

        self.config(retry_timeout=600, group='ipmi')
        state = ipminative._reboot(self.info)
        ipmicmd.set_power.assert_called_once_with('boot', 600)
        self.assertEqual(states.POWER_ON, state)

    def _create_sensor_object(self, value, type_, name, states=None,
                              units='fake_units', health=0):
        if states is None:
            states = []
        return type('Reading', (object, ), {
            'value': value, 'type': type_, 'name': name,
            'states': states, 'units': units, 'health': health})()

    @mock.patch('pyghmi.ipmi.command.Command', autospec=True)
    def test__get_sensors_data(self, ipmi_mock):
        reading_1 = self._create_sensor_object('fake_value1',
                                               'fake_type_A',
                                               'fake_name1')
        reading_2 = self._create_sensor_object('fake_value2',
                                               'fake_type_A',
                                               'fake_name2')
        reading_3 = self._create_sensor_object('fake_value3',
                                               'fake_type_B',
                                               'fake_name3')
        readings = [reading_1, reading_2, reading_3]
        ipmicmd = ipmi_mock.return_value
        ipmicmd.get_sensor_data.return_value = readings
        expected = {
            'fake_type_A': {
                'fake_name1': {
                    'Health': '0',
                    'Sensor ID': 'fake_name1',
                    'Sensor Reading': 'fake_value1 fake_units',
                    'States': '[]',
                    'Units': 'fake_units'
                },
                'fake_name2': {
                    'Health': '0',
                    'Sensor ID': 'fake_name2',
                    'Sensor Reading': 'fake_value2 fake_units',
                    'States': '[]',
                    'Units': 'fake_units'
                }
            },
            'fake_type_B': {
                'fake_name3': {
                    'Health': '0',
                    'Sensor ID': 'fake_name3',
                    'Sensor Reading': 'fake_value3 fake_units',
                    'States': '[]', 'Units': 'fake_units'
                }
            }
        }
        ret = ipminative._get_sensors_data(self.info)
        self.assertEqual(expected, ret)

    @mock.patch('pyghmi.ipmi.command.Command', autospec=True)
    def test__get_sensors_data_missing_values(self, ipmi_mock):
        reading_1 = self._create_sensor_object('fake_value1',
                                               'fake_type_A',
                                               'fake_name1')
        reading_2 = self._create_sensor_object(None,
                                               'fake_type_A',
                                               'fake_name2')
        reading_3 = self._create_sensor_object(None,
                                               'fake_type_B',
                                               'fake_name3')
        readings = [reading_1, reading_2, reading_3]
        ipmicmd = ipmi_mock.return_value
        ipmicmd.get_sensor_data.return_value = readings

        expected = {
            'fake_type_A': {
                'fake_name1': {
                    'Health': '0',
                    'Sensor ID': 'fake_name1',
                    'Sensor Reading': 'fake_value1 fake_units',
                    'States': '[]',
                    'Units': 'fake_units'
                }
            }
        }
        ret = ipminative._get_sensors_data(self.info)
        self.assertEqual(expected, ret)

    def test__parse_raw_bytes_ok(self):
        bytes_string = '0x11 0x12 0x25 0xFF'
        netfn, cmd, data = ipminative._parse_raw_bytes(bytes_string)
        self.assertEqual(0x11, netfn)
        self.assertEqual(0x12, cmd)
        self.assertEqual([0x25, 0xFF], data)

    def test__parse_raw_bytes_invalid_value(self):
        bytes_string = '0x11 oops'
        self.assertRaises(exception.InvalidParameterValue,
                          ipminative._parse_raw_bytes,
                          bytes_string)

    def test__parse_raw_bytes_missing_byte(self):
        bytes_string = '0x11'
        self.assertRaises(exception.InvalidParameterValue,
                          ipminative._parse_raw_bytes,
                          bytes_string)

    @mock.patch('pyghmi.ipmi.command.Command', autospec=True)
    def test__send_raw(self, ipmi_mock):
        ipmicmd = ipmi_mock.return_value
        ipminative._send_raw(self.info, '0x01 0x02 0x03 0x04')
        ipmicmd.xraw_command.assert_called_once_with(1, 2, data=[3, 4])

    @mock.patch('pyghmi.ipmi.command.Command', autospec=True)
    def test__send_raw_fail(self, ipmi_mock):
        ipmicmd = ipmi_mock.return_value
        ipmicmd.xraw_command.side_effect = pyghmi_exception.IpmiException()
        self.assertRaises(exception.IPMIFailure, ipminative._send_raw,
                          self.info, '0x01 0x02')

class IPMINativeDriverTestCase(db_base.DbTestCase):
    """Test cases for ipminative.NativeIPMIPower class functions."""

    def setUp(self):
        super(IPMINativeDriverTestCase, self).setUp()
        mgr_utils.mock_the_extension_manager(driver="fake_ipminative")
        self.driver = driver_factory.get_driver("fake_ipminative")

        self.node = obj_utils.create_test_node(self.context,
                                               driver='fake_ipminative',
                                               driver_info=INFO_DICT)
        self.info = ipminative._parse_driver_info(self.node)

    def test_get_properties(self):
        expected = ipminative.COMMON_PROPERTIES
        self.assertEqual(expected, self.driver.power.get_properties())
        self.assertEqual(expected, self.driver.management.get_properties())
        self.assertEqual(expected, self.driver.vendor.get_properties())

        expected = list(ipminative.COMMON_PROPERTIES)
        expected += list(ipminative.CONSOLE_PROPERTIES)
        self.assertEqual(sorted(expected),
                         sorted(self.driver.console.get_properties().keys()))
        self.assertEqual(sorted(expected),
                         sorted(self.driver.get_properties().keys()))

    @mock.patch('pyghmi.ipmi.command.Command', autospec=True)
    def test_get_power_state(self, ipmi_mock):
        # Getting the mocked command.
        cmd_mock = ipmi_mock.return_value
        # Getting the get power mock.
        get_power_mock = cmd_mock.get_power

        return_values = [{'powerstate': 'error'},
                         {'powerstate': 'on'},
                         {'powerstate': 'off'}]

        get_power_mock.side_effect = lambda: return_values.pop()

        with task_manager.acquire(self.context, self.node.uuid) as task:
            pstate = self.driver.power.get_power_state(task)
            self.assertEqual(states.POWER_OFF, pstate)

            pstate = self.driver.power.get_power_state(task)
            self.assertEqual(states.POWER_ON, pstate)

            pstate = self.driver.power.get_power_state(task)
            self.assertEqual(states.ERROR, pstate)
            self.assertEqual(3, get_power_mock.call_count,
                             "pyghmi.ipmi.command.Command.get_power was not"
                             " called 3 times.")

    @mock.patch.object(ipminative, '_power_on', autospec=True)
    def test_set_power_on_ok(self, power_on_mock):
        power_on_mock.return_value = states.POWER_ON

        with task_manager.acquire(self.context,
                                  self.node.uuid) as task:
            self.driver.power.set_power_state(
                task, states.POWER_ON)
        power_on_mock.assert_called_once_with(self.info)

    @mock.patch.object(driver_utils, 'ensure_next_boot_device', autospec=True)
    @mock.patch.object(ipminative, '_power_on', autospec=True)
    def test_set_power_on_with_next_boot(self, power_on_mock, mock_next_boot):
        power_on_mock.return_value = states.POWER_ON

        with task_manager.acquire(self.context,
                                  self.node.uuid) as task:
            self.driver.power.set_power_state(
                task, states.POWER_ON)
            mock_next_boot.assert_called_once_with(task, self.info)
        power_on_mock.assert_called_once_with(self.info)

    @mock.patch.object(ipminative, '_power_off', autospec=True)
    def test_set_power_off_ok(self, power_off_mock):
        power_off_mock.return_value = states.POWER_OFF

        with task_manager.acquire(self.context,
                                  self.node.uuid) as task:
            self.driver.power.set_power_state(
                task, states.POWER_OFF)
        power_off_mock.assert_called_once_with(self.info)

    @mock.patch('pyghmi.ipmi.command.Command', autospec=True)
    def test_set_power_on_fail(self, ipmi_mock):
        ipmicmd = ipmi_mock.return_value
        ipmicmd.set_power.return_value = {'powerstate': 'error'}

        self.config(retry_timeout=500, group='ipmi')
        with task_manager.acquire(self.context,
                                  self.node.uuid) as task:
            self.assertRaises(exception.PowerStateFailure,
                              self.driver.power.set_power_state,
                              task,
                              states.POWER_ON)
        ipmicmd.set_power.assert_called_once_with('on', 500)

    @mock.patch('pyghmi.ipmi.command.Command', autospec=True)
    def test_set_boot_device_ok(self, ipmi_mock):
        ipmicmd = ipmi_mock.return_value
        ipmicmd.set_bootdev.return_value = None

        with task_manager.acquire(self.context,
                                  self.node.uuid) as task:
            self.driver.management.set_boot_device(task, boot_devices.PXE)
        # PXE is converted to 'network' internally by ipminative
        ipmicmd.set_bootdev.assert_called_once_with('network', persist=False)

    @mock.patch('pyghmi.ipmi.command.Command', autospec=True)
    def test_force_set_boot_device_ok(self, ipmi_mock):
        ipmicmd = ipmi_mock.return_value
        ipmicmd.set_bootdev.return_value = None

        with task_manager.acquire(self.context,
                                  self.node.uuid) as task:
            task.node.driver_info['ipmi_force_boot_device'] = True
            self.driver.management.set_boot_device(task, boot_devices.PXE)
            task.node.refresh()
            self.assertEqual(
                False,
                task.node.driver_internal_info['is_next_boot_persistent']
            )
        # PXE is converted to 'network' internally by ipminative
        ipmicmd.set_bootdev.assert_called_once_with('network', persist=False)

    @mock.patch('pyghmi.ipmi.command.Command', autospec=True)
    def test_set_boot_device_with_persistent(self, ipmi_mock):
        ipmicmd = ipmi_mock.return_value
        ipmicmd.set_bootdev.return_value = None

        with task_manager.acquire(self.context,
                                  self.node.uuid) as task:
            task.node.driver_info['ipmi_force_boot_device'] = True
            self.driver.management.set_boot_device(task,
                                                   boot_devices.PXE,
                                                   True)
            self.assertEqual(
                boot_devices.PXE,
                task.node.driver_internal_info['persistent_boot_device'])
        # PXE is converted to 'network' internally by ipminative
        ipmicmd.set_bootdev.assert_called_once_with('network', persist=False)

    def test_set_boot_device_bad_device(self):
        with task_manager.acquire(self.context, self.node.uuid) as task:
            self.assertRaises(exception.InvalidParameterValue,
                              self.driver.management.set_boot_device,
                              task,
                              'fake-device')

    @mock.patch.object(driver_utils, 'ensure_next_boot_device', autospec=True)
    @mock.patch.object(ipminative, '_reboot', autospec=True)
    def test_reboot_ok(self, reboot_mock, mock_next_boot):
        reboot_mock.return_value = None

        with task_manager.acquire(self.context,
                                  self.node.uuid) as task:
            self.driver.power.reboot(task)
            mock_next_boot.assert_called_once_with(task, self.info)
        reboot_mock.assert_called_once_with(self.info)

    @mock.patch('pyghmi.ipmi.command.Command', autospec=True)
    def test_reboot_fail(self, ipmi_mock):
        ipmicmd = ipmi_mock.return_value
        ipmicmd.set_power.return_value = {'error': 'Some IPMI error'}

        self.config(retry_timeout=500, group='ipmi')
        with task_manager.acquire(self.context,
                                  self.node.uuid) as task:
            self.assertRaises(exception.PowerStateFailure,
                              self.driver.power.reboot,
                              task)
        ipmicmd.set_power.assert_called_once_with('boot', 500)

    def test_management_interface_get_supported_boot_devices(self):
        with task_manager.acquire(self.context, self.node.uuid) as task:
            expected = [boot_devices.PXE, boot_devices.DISK,
                        boot_devices.CDROM, boot_devices.BIOS]
            self.assertEqual(sorted(expected), sorted(task.driver.management.
                             get_supported_boot_devices(task)))

    @mock.patch('pyghmi.ipmi.command.Command', autospec=True)
    def test_management_interface_get_boot_device_good(self, ipmi_mock):
        ipmicmd = ipmi_mock.return_value
        ipmicmd.get_bootdev.return_value = {'bootdev': 'hd'}
        with task_manager.acquire(self.context, self.node.uuid) as task:
            bootdev = self.driver.management.get_boot_device(task)
            self.assertEqual(boot_devices.DISK, bootdev['boot_device'])
            self.assertIsNone(bootdev['persistent'])

    @mock.patch('pyghmi.ipmi.command.Command', autospec=True)
    def test_management_interface_get_boot_device_persistent(self, ipmi_mock):
        ipmicmd = ipmi_mock.return_value
        ipmicmd.get_bootdev.return_value = {'bootdev': 'hd',
                                            'persistent': True}
        with task_manager.acquire(self.context, self.node.uuid) as task:
            bootdev = self.driver.management.get_boot_device(task)
            self.assertEqual(boot_devices.DISK, bootdev['boot_device'])
            self.assertTrue(bootdev['persistent'])

    @mock.patch('pyghmi.ipmi.command.Command', autospec=True)
    def test_management_interface_get_boot_device_fail(self, ipmi_mock):
        ipmicmd = ipmi_mock.return_value
        ipmicmd.get_bootdev.side_effect = pyghmi_exception.IpmiException
        with task_manager.acquire(self.context, self.node.uuid) as task:
            self.assertRaises(exception.IPMIFailure,
                              self.driver.management.get_boot_device, task)

    @mock.patch('pyghmi.ipmi.command.Command', autospec=True)
    def test_management_interface_get_boot_device_fail_dict(self, ipmi_mock):
        ipmicmd = ipmi_mock.return_value
        ipmicmd.get_bootdev.return_value = {'error': 'boooom'}
        with task_manager.acquire(self.context, self.node.uuid) as task:
            self.assertRaises(exception.IPMIFailure,
                              self.driver.management.get_boot_device, task)

    @mock.patch('pyghmi.ipmi.command.Command', autospec=True)
    def test_management_interface_get_boot_device_unknown(self, ipmi_mock):
        ipmicmd = ipmi_mock.return_value
        ipmicmd.get_bootdev.return_value = {'bootdev': 'unknown'}
        with task_manager.acquire(self.context, self.node.uuid) as task:
            expected = {'boot_device': None, 'persistent': None}
            self.assertEqual(expected,
                             self.driver.management.get_boot_device(task))

    def test_get_force_boot_device_persistent(self):
        with task_manager.acquire(self.context, self.node.uuid) as task:
            task.node.driver_info['ipmi_force_boot_device'] = True
            task.node.driver_internal_info['persistent_boot_device'] = 'pxe'
            bootdev = self.driver.management.get_boot_device(task)
            self.assertEqual('pxe', bootdev['boot_device'])
            self.assertTrue(bootdev['persistent'])

    def test_management_interface_validate_good(self):
        with task_manager.acquire(self.context, self.node.uuid) as task:
            task.driver.management.validate(task)

    def test_management_interface_validate_fail(self):
        # Missing IPMI driver_info information
        node = obj_utils.create_test_node(self.context,
                                          uuid=uuidutils.generate_uuid(),
                                          driver='fake_ipminative')
        with task_manager.acquire(self.context, node.uuid) as task:
            self.assertRaises(exception.MissingParameterValue,
                              task.driver.management.validate, task)

    @mock.patch('pyghmi.ipmi.command.Command', autospec=True)
    def test_get_sensors_data(self, ipmi_mock):
        ipmicmd = ipmi_mock.return_value
        ipmicmd.get_sensor_data.return_value = None

        with task_manager.acquire(self.context,
                                  self.node.uuid) as task:
            self.driver.management.get_sensors_data(task)
        ipmicmd.get_sensor_data.assert_called_once_with()

    @mock.patch.object(console_utils, 'start_shellinabox_console',
                       autospec=True)
    def test_start_console(self, mock_exec):
        mock_exec.return_value = None

        with task_manager.acquire(self.context,
                                  self.node.uuid) as task:
            self.driver.console.start_console(task)

        mock_exec.assert_called_once_with(self.info['uuid'],
                                          self.info['port'],
                                          mock.ANY)
        self.assertTrue(mock_exec.called)

    @mock.patch.object(console_utils, 'start_shellinabox_console',
                       autospec=True)
    def test_start_console_fail(self, mock_exec):
        mock_exec.side_effect = iter(
            [exception.ConsoleSubprocessFailed(error='error')])

        with task_manager.acquire(self.context,
                                  self.node.uuid) as task:
            self.assertRaises(exception.ConsoleSubprocessFailed,
                              self.driver.console.start_console,
                              task)

    @mock.patch.object(console_utils, 'stop_shellinabox_console',
                       autospec=True)
    def test_stop_console(self, mock_exec):
        mock_exec.return_value = None

        with task_manager.acquire(self.context,
                                  self.node['uuid']) as task:
            self.driver.console.stop_console(task)

        mock_exec.assert_called_once_with(self.info['uuid'])
        self.assertTrue(mock_exec.called)

    @mock.patch.object(console_utils, 'stop_shellinabox_console',
                       autospec=True)
    def test_stop_console_fail(self, mock_stop):
        mock_stop.side_effect = iter([exception.ConsoleError()])

        with task_manager.acquire(self.context,
                                  self.node.uuid) as task:
            self.assertRaises(exception.ConsoleError,
                              self.driver.console.stop_console,
                              task)

        mock_stop.assert_called_once_with(self.node.uuid)

    @mock.patch.object(console_utils, 'get_shellinabox_console_url',
                       autospec=True)
    def test_get_console(self, mock_exec):
        url = 'http://localhost:4201'
        mock_exec.return_value = url
        expected = {'type': 'shellinabox', 'url': url}

        with task_manager.acquire(self.context,
                                  self.node.uuid) as task:
            console_info = self.driver.console.get_console(task)

        self.assertEqual(expected, console_info)
        mock_exec.assert_called_once_with(self.info['port'])
        self.assertTrue(mock_exec.called)

    @mock.patch.object(ipminative, '_parse_driver_info', autospec=True)
    @mock.patch.object(ipminative, '_parse_raw_bytes', autospec=True)
    def test_vendor_passthru_validate__send_raw_bytes_good(self, mock_raw,
                                                           mock_driver):
        with task_manager.acquire(self.context, self.node.uuid) as task:
            self.driver.vendor.validate(task,
                                        method='send_raw',
                                        http_method='POST',
                                        raw_bytes='0x00 0x01')
            mock_raw.assert_called_once_with('0x00 0x01')
            mock_driver.assert_called_once_with(task.node)

    def test_vendor_passthru_validate__send_raw_bytes_fail(self):
        with task_manager.acquire(self.context, self.node.uuid) as task:
            self.assertRaises(exception.MissingParameterValue,
                              self.driver.vendor.validate,
                              task, method='send_raw')

    def test_vendor_passthru_vendor_routes(self):
        expected = ['send_raw', 'bmc_reset']
        with task_manager.acquire(self.context, self.node.uuid,
                                  shared=True) as task:
            vendor_routes = task.driver.vendor.vendor_routes
            self.assertIsInstance(vendor_routes, dict)
            self.assertEqual(sorted(expected), sorted(vendor_routes))

    @mock.patch.object(ipminative, '_send_raw', autospec=True)
    def test_send_raw(self, send_raw_mock):
        bytes = '0x00 0x01'
        with task_manager.acquire(self.context,
                                  self.node.uuid) as task:
            self.driver.vendor.send_raw(task, http_method='POST',
                                        raw_bytes=bytes)

        send_raw_mock.assert_called_once_with(self.info, bytes)

    @mock.patch.object(ipminative, '_send_raw', autospec=True)
    def _test_bmc_reset(self, warm, expected_bytes, send_raw_mock):
        with task_manager.acquire(self.context,
                                  self.node.uuid) as task:
            self.driver.vendor.bmc_reset(task, http_method='POST', warm=warm)

        send_raw_mock.assert_called_once_with(self.info, expected_bytes)

    def test_bmc_reset_cold(self):
        for param in (False, 'false', 'off', 'n', 'no'):
            self._test_bmc_reset(param, '0x06 0x02')

    def test_bmc_reset_warm(self):
        for param in (True, 'true', 'on', 'y', 'yes'):
            self._test_bmc_reset(param, '0x06 0x03')

redpajama_set_name: RedPajamaGithub


Global crude oil demand will increase at a "healthy" pace next year and refiners will enjoy improved margins, according to Bakheet Al-Rashidi, who was appointed Kuwait's oil minister this week.
Demand will climb by 1.5 million barrels a day, Al-Rashidi said Thursday at his first meeting with reporters in his new role. That matches OPEC's own forecast for this year and next year.
Kuwait is the fifth-biggest producer in the Organization of Petroleum Exporting Countries, with output at 2.7 million barrels a day in November compared with 2.86 million barrels a day at the end of 2016, according to data compiled by Bloomberg. OPEC and its allies have agreed to cut output to drain a global surplus through the end of 2018.
Kuwait is conducting a study to possibly raise its production capacity to 4.75 million barrels a day by 2040, he said. The country is still planning to reach 4 million barrels a day in 2020.
Kuwait's capacity is currently 3 million barrels a day, according to data compiled by Bloomberg, while the country's own estimates put that at 3.15 million barrels a day excluding the neutral zone area shared with Saudi Arabia.
Persian Gulf oil producers including Kuwait are adding and expanding refineries to meet greater demand at home and make fuel for export. The Duqm refinery project in Oman, a joint venture between Oman and Kuwait, is seeking $5 billion in loans from banks, with financing expected to close in the first quarter, Al-Rashidi said.
Construction would begin in the second half and take 42 months to finish, he said. The refinery will use Kuwaiti crude.


text:
Krossobanen ist der Name einer Luftseilbahn in der norwegischen Stadt Rjukan südlich des Nationalparks Hardangervidda.

Geschichte
Die Pendelbahn ist die älteste Seilbahn Nordeuropas. Sie wurde 1928 von Adolf Bleichert & Co. aus Leipzig-Gohlis erbaut und war ein Geschenk der Firma Norsk Hydro an die Einwohner Rjukans, die sonst während des Winters in dem sehr engen und dunklen Vestfjordalen keine Sonneneinstrahlung hatten.

Die Talstation liegt auf 403 m, die Bergstation (Gvepseborg) auf 886 m. Die Fahrt dauert 4½ Minuten. An der Bergstation befindet sich ein Aussichtsturm.

Weblinks

 Krossobanen

Verkehrsbauwerk in Vestfold og Telemark
Luftseilbahn in Europa
Tinn
Seilbahn in Norwegen

redpajama_set_name: RedPajamaWikipedia


Hamburger Mary's is an open-air bar & grille for open-minded people, serving a full menu of tasty items… Big and juicy gourmet burgers, yummy apps, soups, salads and entrees, and an extensive bar menu featuring craft beers and cocktails.
Hamburger Mary's offers a flamboyant dining experience, along with nightly entertainment from our "Dining with the Divas" drag shows and charity "HamBingo Mary's" to MaryOke-Karaoke and trivia nights.
Great burgers in a fun atmosphere. Their bingo night is an experience all it's own.


text:
<?php

namespace ONGR\SettingsBundle\Tests\Unit\FlashBag;

use ONGR\SettingsBundle\FlashBag\DirtyFlashBag;

class FlashBagServiceTest extends \PHPUnit_Framework_TestCase
{
    /**
     * Check if service can be marked as dirty.
     */
    public function testDirty()
    {
        $service = new DirtyFlashBag();
        $service->setDirty();

        $this->assertTrue($service->isDirty());
    }

    /**
     * Check DirtyFlashBag::initialize marks service as dirty.
     */
    public function testInitialize()
    {
        $service = new DirtyFlashBag();
        $messages = [];
        $service->initialize($messages);

        $this->assertTrue($service->isDirty());
    }

    /**
     * Check DirtyFlashBag::add marks service as dirty.
     */
    public function testAdd()
    {
        $service = new DirtyFlashBag();
        $service->add('test', 'test');

        $this->assertTrue($service->isDirty());
    }

    /**
     * Check DirtyFlashBag::get doesn't mark service as dirty for non existent message.
     */
    public function testGet()
    {
        $service = new DirtyFlashBag();
        $service->get('test');

        $this->assertFalse($service->isDirty());
    }

    /**
     * Check DirtyFlashGag::get sets dirty for existent message.
     */
    public function testGetDirty()
    {
        $service = new DirtyFlashBag();
        $service->add('foo', 'baz');

        $service->get('foo');
        $this->assertTrue($service->isDirty());
    }

    /**
     * Check DirtyFlashBag::all marks service as dirty.
     */
    public function testAll()
    {
        $service = new DirtyFlashBag();
        $service->all();

        $this->assertTrue($service->isDirty());
    }

    /**
     * Check DirtyFlashBag::set marks service as dirty.
     */
    public function testSet()
    {
        $service = new DirtyFlashBag();
        $service->set('test', 'test');

        $this->assertTrue($service->isDirty());
    }

    /**
     * Check DirtyFlashBag::setAll marks service as dirty.
     */
    public function testSetAll()
    {
        $service = new DirtyFlashBag();
        $service->setAll(['test']);

        $this->assertTrue($service->isDirty());
    }
}


NOW OPEN at our new location at 151 E Jewett Blvd. in White Salmon!
After falling in love with the gorge, husband and wife Shawn Simmons and Jenessa VanDeHey founded Feast Market & Delicatessen. As parents of two small children, knowing where their food comes from is very important to them.
With a passion for delicious food and desire to live sustainably they created a place where people could find fresh, local and organic food. Feast is a neighborhood natural food store and deli committed to quality and creating community.
We are a small family owned style market, allowing us to be more connected to local farmers. We are proud of all of the products we offer in our grocery section, however we are much more than just a market.
We specialize in offering prepared foods as well as food made to order. Additionally we have a full service meat market and deli counter.


In an industry where time is truly money, reliability and equipment availability are essential. Each component must operate when needed as designed. Bodycote services meet these tough requirements.
Hydraulic components are often subjected to wear, especially sliding wear. In some instances, they will come into contact with the hydraulic fluid itself and this could cause problems if the components are not properly protected.
Drivetrains must allow for direction and gear changes, which mean its components must withstand high-torque and high-impact loads.
Any construction project has deadlines to meet and delays may result in monetary penalties. As a consequence, construction machinery, including engine components must be totally reliable to ensure continuous equipment operation. Engine components are designed to meet these needs and thermal processing is often a part of the manufacturer's critical specification.
Gears are a feature of all construction machines and equipment and have to be processed to exacting standards to ensure safe operation of the machine and a long working life. Thermal processes provide the necessary methods to create the correct properties needed. Often, finished machined gears need to be heat treated and in this instance, no or minimal distortion can be tolerated.


text:
Exhibition: (Mis)Identifying the Prophet
Individual Commentary: Postures of Humility
Moretto da Brescia
Christ Blessing Saint John the Baptist, c.1520–23, Oil on canvas, 66.9 x 94.7 cm, The National Gallery, London; Layard Bequest, 1916, NG3096, © National Gallery, London / Art Resource, NY
Open in image viewer
Postures of Humility
Commentary by
Jennifer Sliwka
Christ blesses his kinsman John who kneels before him wearing camel skins and bearing a reed cross, in a rocky landscape with a city just discernible in the far distance.
This highly unusual episode is not specifically mentioned in the Gospels and is not otherwise known in the history of art, making it exceptionally rare and, perhaps, especially in need of theological interpretation. Read against John 1:19–34, we may imagine that Jesus has descended the rocky path represented at the top of the composition towards John who has just uttered the words 'Behold the Lamb of God…' before falling to his knees in recognition of Jesus as Christ.
By representing John below Jesus and facing him in this posture of humility, Moretto da Brescia ensures Christ 'ranks' both above and 'before' him in visual terms. The representation of the river Jordan across the bottom of this composition recalls John's words: 'I came baptizing with water, that he might be revealed to Israel' (v.31) and might allude to Jesus's baptism by John. Interestingly, even as he makes a gesture of blessing, Christ appears to turn back towards the steep uphill path, perhaps a visual synecdoche for the difficult but virtuous journey he is about to take up, an allusion to the beginning of his public ministry.
In many ways, we, the beholders of this painting, become sole witnesses to this pivotal and otherwise private moment. The potential relationship between viewer and subject in this painting is clarified further when we note that the canvas has been cut down and the composition probably originally included a portrait of a kneeling patron in the right foreground. Today, as viewers of this fragmented canvas, we might take up the pose of the presumed absent patron and, in emulation of the kneeling Baptist, humble ourselves before the figure of Jesus Christ.
Penny, Nicholas. 2004. The Sixteenth Century Italian Paintings, vol. 1 (London: The National Gallery Company), pp. 150–153
19 And this is the testimony of John, when the Jews sent priests and Levites from Jerusalem to ask him, "Who are you?" 20He confessed, he did not deny, but confessed, "I am not the Christ." 21And they asked him, "What then? Are you Eliʹjah?" He said, "I am not." "Are you the prophet?" And he answered, "No." 22They said to him then, "Who are you? Let us have an answer for those who sent us. What do you say about yourself?" 23He said, "I am the voice of one crying in the wilderness, 'Make straight the way of the Lord,' as the prophet Isaiah said."
24 Now they had been sent from the Pharisees. 25They asked him, "Then why are you baptizing, if you are neither the Christ, nor Eliʹjah, nor the prophet?" 26John answered them, "I baptize with water; but among you stands one whom you do not know, 27even he who comes after me, the thong of whose sandal I am not worthy to untie." 28This took place in Bethany beyond the Jordan, where John was baptizing.
29 The next day he saw Jesus coming toward him, and said, "Behold, the Lamb of God, who takes away the sin of the world! 30This is he of whom I said, 'After me comes a man who ranks before me, for he was before me.' 31I myself did not know him; but for this I came baptizing with water, that he might be revealed to Israel."
The Journey to Moriah
Tobias and the Angel
Tobit 6-7
(Mis)Identifying the Prophet

redpajama_set_name: RedPajamaCommonCrawl


Specially designed BMP71 labels for the Food & Beverage processing industry.
Brady Toughwash labels have been specially designed with the Food & Beverage processing industry in mind. For use with the Brady BMP71 label printer. It has been engineered to withstand the rigorous wash down process in a Food and Beverage facility and features an acrylic adhesive with a top-coated polyester film. It is also ideal for safety and facility identification.
CLICK HERE to view the Brady B-855 Polyester material technical data sheet.


text:
Wealth How
Variable Annuities Vs. Mutual Funds
Individuals who are planning for retirement are on the lookout for investments that not only yield better returns, but are relatively risk-free. The popular options, at present, are mutual funds and annuities and here, we shall try to understand the difference and similarities in both these investment options.
Home / Uncategorized / Variable Annuities Vs. Mutual Funds
The concepts of variable annuities and mutual funds are quite similar to each other, by the virtue of general mechanism and overall working of the investment and returns. Though the working of the two is quite similar, and the rate of return offered by both types of investments is almost the same, there is a subtle line of difference between these.
How do Variable Annuities Compare to Mutual Funds?
Would you like to write for us? Well, we're looking for good writers who want to spread the word. Get in touch with us and we'll talk...
In comparing variable annuities with mutual funds, it is first important to understand the definitions and basic structure of both these types of investments. A mutual fund is said to be an investment vehicle, which is made with the help of a pool of money which is contributed by several members. The pool is sometimes made up of several shares. So basically it's a large contributed sum of money which the fund managers, systematically invest into several sources that range from companies, corporations, stock markets and money markets.
Mutual funds have an option of reinvesting the returns. The mutual fund company shares the profits made from the investments with the owners of the shares or mutual fund investors. The investment contribution is either a one time payment, or is done in a set of several installments. The repayments or returns are however, done with the help of several payments. In case of reinvestment of the funds, a specified lock-in period is prescribed, before which the share or contribution can be withdrawn.
Now this is the most important part, the returns of a mutual fund are subject to market risks and even if the portfolio of investments is managed by professional fund managers, the returns are always in proportion with the portfolio performance, hence basically a mutual fund is completely subject to all market risks.
An annuity, on the other hand, is principally a contract of insurance wherein the annuitant or the owner of the annuity makes certain payments to the company which like in the case above, invest into professionally managed investment destinations. The company repays the annuity owner or contributor the returns on the basis of periodic intervals.
Now in the case of fixed annuities, the returns are fixed and predetermined. However, in case of variable annuities, the individual repayment is made up of Guaranteed Minimum Income Benefits, meaning that this sum is paid to the annuitant irrespective of the portfolio's performance. The second part of the returns is compromised of what is known as a bonus. This bonus depends upon the portfolio performance. Thus in short, the returns are partially subject to market risks.
There are equal number of pros and cons of variable annuities, if you compare them with mutual funds. One big advantage of variable annuities is that they have a great death benefit, meaning that the annuitant's surviving relatives receive a set of returns which are subject to withdrawals from the annuity, if any.
Here is a table depicting the differences in the two types investments and their features that distinguish them from one another.
Particulars of Comparison Variable Annuity Mutual Fund
Type of investment Quasi-insurance Investment fund
Returns Semi-variable Subject to market risk and variable
Appropriate investor age 40 years or above Below 40 years
Term /average time period Mainly long term, reaching about 10 years Found in all time periods, short, long and medium
Withdrawal Permitted till a certain percentage Permitted but after a stipulated lock in period
Tax implication Chiefly tax differed, but taxed upon returns Returns taxes as capital gains
Rate of return Quite low as compared to mutual funds Higher than mutual funds
Level of risk Less risky than mutual funds More risky than annuity
Guarantee of income Guarantee of income till a certain point No guaranteed income
Death Benefit Assured death benefit No death benefit
Though you can take help of the aforementioned table, points of comparison and other factors, calculating the rate of return and then assessing and making a decision, always works out.
Get Updates Right to Your Inbox
Sign up to receive the latest and greatest articles from our site automatically each week (give or take)...right to your inbox.
Get Updates →
Further Insights
These 15 Billionaires Who Live Frugally Give a Powerful Message
7 Different Types of Taxes That You Pay
How Does Western Union Work?
The Key Differences Between Color of Title and Claim of Right
Exploring the website?
Our site includes quite a bit of content, so if you're having an issue finding what you're looking for, go on ahead and use that search feature there!
We hope you enjoy this website. We've created informative articles that you can come back to again and again when you have questions or want to learn more!
Copyright © Wealth How & Buzzle.com, Inc.
6789 Quail Hill Pkwy, Suite 211 Irvine CA 92603


After graduation, you typically have a six month grace period before you have to pay back your loans. Boy do those six months FLY. Word to the wise, if you can start making payments beforehand, do it. This saves you money, as it is not subjected to interest. Interest rates may be low based on your loan arrangement but on $50,000 worth of loans, there's a lot of interest to be paid. Trust me, I know. When I make my monthly payments and see more than half going to interest, I'm ready to toss my laptop every time.


On Saturday December the 9th we will be joining the Friends of Birley Spa at their event at the The Sportsman Inn, Main St, Sheffield S12 4LA starting at 1:30pm.
We will have a table set up at — Come down and have a chat with us. We will have our paper petition with us and our members will be there with all the information on our campaign.


Trout Unlimited hosted their sixth annual Fly Fishing for Veterans Day Saturday at the pond at Rolater Park, 13 Old Cedartown Road, Cave Spring. The event was open to all veterans. There were loaner fly rods and instructors for those who wanted to learn fly casting. The creek was open for fishing throughout the day.


text:
Lutheran Women's Missionary League California Nevada Hawaii
LWML CNH
Mission & Mites
Mission Grants Current
Mites News
Mission Grants Archive
Conventions & Retreats >
Regional Event April 2022
District Convention
The Joyful Servant Newsletter
Christian Life Line
Scholarships and Funds >
Current Scholarship Recipients
Scholarship Recipients-Archive
Bylaws, Policies & Standing Rules
Info for New Executive Committee Members and Zone Presidents
Zone 11 News
by Dinnie Kysar, Zone 11 Secretary
"Continuing God's Mission in Unusual Times" was the theme for the Zone 11 zoom event held on November 6 and 13. There was time for small groups, for singing, and for listening to two speakers. Thirty-four people attended.
Pastor Bob Smith, serving as interim pastor at Messiah Lutheran, 'Ewa Beach, spoke on prayer. Prayer is not a technique. There are no rules. Prayer is centered around a relationship with Jesus. Stop, rest, relax – Jesus is listening. He has written two books: Keep Me from Evil, Harm and Fear (2004) and Keep Me and Keep All (2011).
Pastor Uchel Naito from Good Shepherd, Honolulu spoke on the history of the Palauan congregation in Honolulu and its relationship with Good Shepherd. It all started with one lady from Good Shepherd who met a lady from the Palauan community. A relationship formed and resulted in Bible studies for Palauans. By 2004 a missionary arrived in Hawaii from Palau and he became a Lutheran pastor for the Palauan congregation.
Following the zoom events, participants' comments were enthusiastic about seeing so many beloved ones in Christ all at once. Carol's prayer (she joined from Hong Kong) was "may God continue to bless all the LWML work you do for it assists to proclaim the Gospel all over the world". Sharon Self remembered how Our Savior Lutheran Church, Pacifica, CA supported a man training to be a pastor at the seminary – that man was Pastor Les Self, who is currently serving as interim pastor at Good Shepherd, Honolulu. Avis commented that the participants' experiences noted during the small group Ice Break session expanded her thinking about God's mission for each of us. Pastor Bob Smith's presentation offered lots of room for us to grow.
Convention Planning
Gospel Outreach
Pastoral Counselor's Message
Special Focus Ministries
The comments and opinions expressed herein on this website do not necessarily reflect the beliefs and point of view of the Lutheran Women's Missionary League or The Lutheran Church--Missouri Synod. Statements are made exclusively by the author(s) and appear as written and have not been subjected to the Lutheran Women's Missionary League or The Lutheran Church--Missouri Synod doctrinal review process.
Unless otherwise indicated, Scripture quotations are taken from The Holy Bible, English Standard Version(R) (ESV(R)) Copyright © 2001 by Crossway, a publishing ministry of Good News Publishers. All rights reserved.


I recently had the pleasure of building a fairly involved embedded application using a Cypress EZ-BLE module. However, I didn't have a robust hardware test platform to assist in the process. I did tolerably well using the Cypress BLE Pioneer kit, but the kit has some inherent limitations that prevented thorough testing of all of the project's features.
First, the BLE Pioneer kit doesn't expose all of the BLE evaluation module's pins via accessible headers. Multiple pins are routed to hardware components such as the SW2 user button and RGB LED. This makes it hard to test external signals on these pins, or even to connect a logic analyzer in many cases.
Second, the PSoC 5LP providing debugging and USB-to-UART bridge via the standard "KitProg" firmware has its own limits. The debug interface can't go above 1.6 MHz (painful when you're reflashing a 256k part all the time). UART communication doesn't support flow control, non-standard baud rates, or any baud rate above 115200.
Third, testing a second module required constantly switching debugger connections between two devices, or swapping back and forth between two plug-in evaluation boards. I built a custom breakout board for the second module used for testing, but this too has some limitations. It has no built-in debugger or USB-to-UART bridge, and the design (obviously) doesn't match exactly with the BLE Pioneer kit. This introduces extra variables into some test results.
In short, it was tedious and inefficient. The BLE Pioneer board is excellent in most respects, but not as a comprehensive hardware test platform for the project I worked on. I don't think it should change; that would make it less valuable for much more typical use cases. But the fact remains that I need something better going forward.
I've never focused heavily on test-driven-development before, and some hiccups in this project revealed just how important it is. Since I have a plenty of future development to do with this same hardware, I have therefore put in some time (hooray for holiday weekends!) to create a platform perfectly suited for automated testing and debugging. I've never created this kind of thing before, although I have seen a few lying on coworkers' desks. This post explains my design choices and how I intend to implement a complete embedded test setup.
Once it's working as intended, I will make the design available for anyone else who happens to be building with Cypress EZ-BLE modules (which, frankly, are pretty great).
The board is not small at 7.5 x 5.5 inches. Given the board's purpose, I'm not concerned with size—if anything, it needs to be big enough to allow easy physical access to all important signals, sometimes at multiple points. While I normally design for minimum component count and small size, this board uses all through-hole parts, plenty of headers, and off-the-shelf Cypress evaluation kits. My primary goal here is to make all testing possible without using jumper wires or swapping hardware in and out.
The board has a mirrored layout, including two of each of the important pieces. This allows master/slave testing (my requirement), or A/B testing between different designs, or just two identical units operating simultaneously in the same vicinity. Of course, you can also only plug in one set of parts and leave the other sockets empty.
I replicated a few features of the BLE Pioneer kit for convenience, namely the SW1 reset and SW2 user button and the RGB LED. However, I also broke out all of these same signals to header pins and connections to the PSoC 5LP.
2x CYBLE-XXXXXX-EVAL modules (I used CYBLE-212019-EVAL @ $20/ea): these provide the DUTs (Device Under Test), BLE connectivity, etc.
2x CY8CKIT-059 PSoC 5LP Prototyping Kits @ $10/ea: these provide flexible GPIO connections to the BLE modules, and communicate back to a host PC through USB-provided virtual serial port.
2x CYUSBS232 USB-UART LP Reference Design Kits @ $20/ea: these provide fully configurable UART communication to the BLE module, and communicate back to a host PC through a USB-provided virtual serial port.
1x CY8CKIT-002 PSoC MiniProg3 Program and Debug Kit @ $89: this provides a powerful and fast debugger that works with the PSoC 5LP kits and the EZ-BLE modules.
All told, that's $40 + $20 + $40 + $89 = $189 for all the kits. Other components are negligible in terms of cost.
Another notable feature of the hardware design is the 5-way rotary switch at the bottom, which is connected to four 74HC4066 bilateral analog switch ICs. This selectively connects the MiniProg3's clock, data, reset, and Vtarg signals to one (or none) of the four programmable kits on the board. Being able to switch quickly and easily between programming targets with a single debugger will be wonderfully convenient.
Aside from the huge collection of headers, the only other components on the board are a few LEDs, buttons, and a 5V to 3.3V regulator.
The image above shows prevalence of standard 0.1″ pitch headers everywhere on the board. Some headers are necessary for plugging in each evaluation board, but the majority of them allow external access or internal connectivity between the PSoC 5LP and BLE module or USB-to-UART bridge and BLE module. I like this approach for the flexibility that it provides, although it means you need 100+ jumpers for a full complement of internal connections. I may opt for DIP switches in a later revision, but I'll have to think about how that might affect usability after I go through the next round of development.
In addition—and this is another tremendous convenience—every BLE module pin is broken out to a front-of-board row of labeled pins for simple logic analyzer (or other) connectivity. This solves one of my biggest headaches during the previous development phase. I hate having sprawling jumper wires everywhere going to random analyzer leads. Ugh.
This post is labeled "Part 1" for a reason. I have placed a prototype order for the test PCB, and I'm currently waiting on that; I expect to receive it about 10 days from now. In the meantime, I'll be working on the firmware/software portions of the test setup. Each of the PSoC 5LP kits will manage GPIO control and monitoring, reporting back to the host PC as directed via a simple binary protocol. The main application logic will reside on the host PC, implemented using Python and PySerial. With all four USB-provided virtual serial ports, the test software will be able to do anything it wants.
Stay tuned for another update after the PCB arrives.


text:
Media and creative industries
Independent report
CMA report to DCMS LHM and IDNM - 28 June 2019
Report to the Secretary of State for Digital, Culture, Media and Sport on the relevant merger situation and substantial lessening of competition by Mr. Sultan Muhammad Abduljadayel and Wondrous Investment Holdings L.P. of Independent Digital News and Media Limited and Lebedev Holdings Limited
Department for Digital, Culture, Media & Sport
PDF, 109KB, 17 pages
If you use assistive technology (such as a screen reader) and need a version of this document in a more accessible format, please email enquiries@culture.gov.uk. Please tell us what format you need. It will help us if you say what assistive technology you use.
Report to the Secretary of State for Digital, Culture, Media and Sport on the relevant merger situation and substantial lessening of competition by Mr. Sultan Muhammad Abduljadayel and Wondrous Investment Holdings L.P. of Independent Digital News and Media Limited and Lebedev Holdings Limited.
The report covers:
Written Ministerial Statement on Secretary of State's 'minded to' intervene decision.
Ofcom report to DCMS LHM and IDNM - 21 August 2019
DCMS letter to Lebedev Holdings Limited
DCMS Letter to Parties
Written Ministerial Statement by the Secretary of State Jeremy Wright
Acquisition of 30% stake in Lebedev Holdings Limited (owner of the Evening Standard)
UK and the Commonwealth


text:
Kawakami Gensai
Kawakami Gensai (河上彦斎, 1834-1871), one of the four great hitokiri of the Bakumatsu period of 19th century Japan. It is said that he could be mistaken for a girl at first glance, but that his nature was the complete opposite of his appearance; he was a cold, calculating man said to be the most dangerous of the four.
Kawakami was famous for cutting down Sakuma Syouzan in broad daylight with his unique, lightning-fast Furanui style of Kenjutsu. This style is also known as Shiranui-ryu. Whether he was responsible for other assassinations is still a mystery. After the Meiji restoration ended the era of the samurai, Kawakami's ideas about isolationism conflicted with those of the government's, and he was tried on false charges and executed in the fourth year of the Meiji era (1871).
The character Himura Kenshin from the anime and manga Rurouni Kenshin/Samurai X was loosely based on Kawakami.
http://sword.ne.jp/swordsmen/bushi/gensai.htmlja:河上彦斎
Retrieved from "https://academickids.com:443/encyclopedia/index.php/Kawakami_Gensai"
Categories: Japanese swordsmen
This page was last modified 22:38, 18 May 2005.


Lucas Wallmark and Nikolaj Ehlers recently put their talent on display at the 2015 World Junior Championship, while forward Zach Nastasiuk is having his best season offensively in the OHL to this point of the 2014-15 season. All three players are featured in this week's Prospect Impressions feature that gathers up some recent, noteworthy NHL prospect highlights.
The Carolina Hurricanes boast a deep and talented prospect pool down the middle, with Lucas Wallmark's creativity and improving playmaking ability at the forefront. Wallmark, a fourth round pick of the Hurricanes in the 2014 NHL Draft, has been honing his craft with Luleå of the SHL. Known more for his ability to create offense off of the rush, Wallmark showed his goal-scoring prowess recently for Sweden at the 2015 World Junior Championship.
The Owen Sound Attack have received consistent, gritty leadership from their captain Zach Nastasiuk. The Detroit Red Wings prospect (drafted in the second round, 2013) has been a key veteran for the Attack. Nastasiuk's ability was on display this week as he factored into all three goals in a 3-1 victory over the Peterborough Petes.
Nikolaj Ehlers electrified a nation during the recent World Junior Championship, and the Winnipeg Jets are hoping that he will soon do the same for them. The ninth overall pick in the 2014 NHL Draft tops the charts this week with a display of speed and finishing ability in a 3-2 shootout victory over Drummondville.
Nik Ehlers offensive creativity is, in a word, breathtaking!! What an electrifying player!!!
Article compiled by Dave Hahn, who will be presenting the Prospect Impressions feature each week.


Even in the 21st century, cowboys and indians still hold a strong fascination for little boys and girls. Apart from wearing dressing up outfits, toy guns & holster sets, cowboy hats and playing with toy rifles there's nothing better for the wild west fans that getting out their collection of toy cowboys and indians figures and doing battle all over the bedroom floor.
Papo and Schleich are well known for their super detailed figurines, and both companies make a terrific selection of toy cowboys and indians figures complete with all their various weaponry like bows and arrows, tomahawks, rifles and lassos. That's not enough of course as every indian needs to attack the cowboy wagon train and steal all the gold inside or ambush them around the campfire. Schleich make some of these great accessories as well as indian canoes and tents. Le Toy Van have a wonderful cowboy fort all ready for a major ambush.
Not to be outdone, Playmobil has a whole range of cowboy and indian toy figures to go with their forts and other accessories, and many other companies have less detailed figures available in larger bagged assortments, often complete with scenery and horses.
Dinosaurs, Dogs, Dragons, Fantasy, Farmyard, Horses, Kings & Queens, Knights & Princesses, Pets, Pirates, Sea Life, Soldiers, Wild Animals.


(Gibraltar, November 2, 2018) – Argus Insurance is again raising money for Charity in Gibraltar!
Please come and enjoy one of the delicious cakes that will be on sale and buy a raffle ticket to help raise funds for local, children's charities Research into Childhood Cancer (RICC) and Wobbles.
Everyone is invited to come and support this worthy fund raising activity.


text:
Home/Animals and Sound/Effects of Sound/Determine if a sound affects a marine animal
Determine if a sound affects a marine animalChris Knowlton2020-02-06T12:51:53-05:00
How do you determine if a sound affects a marine animal?
There are many factors that influence whether a sound source affects any marine animal. How loud the source is, what frequencies it transmits, where it will be used, and what species might be in the area are all factors that need to be assessed. This process is called ecological risk assessment[1]EPA. (1998). Guidelines for Ecological Risk Assessment (No. EPA/630/R095/002F). Washington, D.C.: U.S. Environmental Protection Agency.[2]EPA. (1992). Framework for Ecological Risk Assessment (No. EPA/630/R-92/001). Washington, D.C.: U.S. Environmental Protection Agency.. The steps of this scientific process are illustrated in the following diagram. The first step is to define the problem. This involves determining what might cause effects. The next stage involves two steps, estimating the probability of being exposed to the problem and, based on that exposure, determining the types of ecological effects that are expected. Based on these results, the risk can be estimated.
Schematic of risk assessment procedures[3]EPA. (1998). Guidelines for Ecological Risk Assessment (No. EPA/630/R095/002F). Washington, D.C.: U.S. Environmental Protection Agency.[4]EPA. (1992). Framework for Ecological Risk Assessment (No. EPA/630/R-92/001). Washington, D.C.: U.S. Environmental Protection Agency.
This general model is used in many types of risk assessments in air or underwater. An example is how a specific underwater sound source could affect a particular marine species. Scientists begin by asking:
What are the characteristics of the sound (e.g. level, frequency, and rise time) at different distances from the source?
Where are marine animals likely to be located relative to the source?
Which species in that area can detect these sounds?
By combining the answers to the questions above, scientists can make an estimate to answer the questions below. The potential effects of sound level on animals will be used as an example.
What are the sound levels to which these animals are likely to be exposed?
If the sounds are within the animals' hearing range, the sounds may have an effect. The sounds could interfere with an animal's ability to hear important sounds, cause the animal to alter its behavior, or physically impair its hearing. The scientists then ask:
What effects might these sound levels have on the animals?
Humpback whales are commonly sighted in nearshore waters near Kauai, Hawaii during the winter months. Photo courtesy of Ann Zoidis.
Scientists use data on the way in which the animals respond to similar sounds, sound levels, and the context of exposure to estimate how much the sound might affect their behavior. Exposure to very loud sounds might cause temporary or permanent hearing damage. There has been some research to determine what sound levels and signal durations may affect marine animals (see What are the potential effects of sound on marine mammals? and What are the potential effects of sound on marine fishes?)
It is important to use rigorous scientific methods to answer questions about how sounds might affect marine animals. An example below is from the North Pacific Acoustic Laboratory's (NPAL) Acoustic Thermometry of Ocean Climate (ATOC) Project on the risk assessment for humpback whales.
1. What is the level of sound at different distances and depths as sound travels away from the source?
The first step is to determine the sound field of a source. The sound field is the level or intensity of sound at different distances and depths as the sound travels away from the source. (For more detailed information on how sound travels, see Why does sound get weaker as it moves?). There are many propagation models that predict how sound travels away from a source. Environmental parameters that are used in these propagation models include the geographic location, the time of year that the source will be used, physical oceanography, water depth, and properties of the seafloor and sea surface.
The following figure shows the level of sound at different distances and depths as the sound traveled away from the NPAL/ ATOC source towards the island of Kauai. Sound traveled in all directions away from the source, but only the slice related to the humpback whale example is shown. The NPAL/ATOC, moored on the seafloor at a depth of approximately 800 meters (2600 feet), approximately 14.8 kilometers (8 nautical miles) north of Kauai, had a source level of 195 underwater dB at 1 meter and operated at a frequency of 75 hertz. The colors in the picture show the sound level decreasing as sound moves away from the sound source. In addition, the level of sound varies with both water depth and distance from the source.
In the picture, the sound source (with a source level of 195 underwater dB at 1 meter) is indicated with an arrow. The colors show the predicted received levels at various distances and depths. The picture shows the sound level decreases with distance from the sound source. For more information on propagation modeling, please see Jensen, Kuperman, Porter, and Schmidt, 2011.
2. Where are marine animals likely to be located relative to the source?
Humpback whale distribution. The blue dots show where humpback whales were sighted near Kauai, Hawaii during January to April 2001. The inner and outer lines around Kauai show where the water is 100 fathoms (600 feet or 183 meters) and 1000 fathoms (6,000 feet or 1,830 meters) deep, respectively. The humpback whales were often sighted in nearshore water, less than 100 fathoms deep. The red dot north of Kauai shows the location of the NPAL/ATOC source.
Scientists must also consider how the animals are distributed throughout the area and how their distribution changes throughout the year. For species that might be in the area, the important factors to consider are their distribution patterns (for example, are they found close to shore, far out at sea, near seamounts, at upper or lower water depths?), their density or abundance (how many of them might be in the area?), their swim speed (how fast would they be moving compared to the source?), their movement patterns (do they swim in a straight line, or are they milling around?), and their dive patterns (how much time do they spend at the surface, what depths do they dive to and for how long?). The answers to these questions give a picture of how the animals are distributed throughout the area. Scientists cannot predict precisely where individual animals will be located; therefore they must make estimates of the likelihood that animals will be in certain locations.
The distribution of humpback whales sighted near Kauai, Hawaii, during January to April 2001, are shown in the picture to the left. The illustration shows that humpback whales were found in nearshore waters of less than 100 fathoms (183 meters or 600 feet) deep.
3. Which species in the area can detect these sounds?
Species differ in their hearing abilities. To determine whether or not sound of a specific frequency can be detected at a given level, scientists need to know the sensitivity to the frequencies that the animal can hear, which are called the hearing thresholds. The section, What can animals hear?, provides more information about hearing studies in marine animals.
Scientists have not measured hearing directly in many marine mammal species, including the example species used here, humpback whales. Using information from high resolution computed tomography (CT) imaging and direct anatomical measurements, scientists have estimated the hearing of humpback whales to range from approximately 20 Hz to 33 kHz, with best sensitivity near 3 kHz. [5] Tubelli, A. A., Zosuls, A., Ketten, D. R., & Mountain, D. C. (2018). A model and experimental approach to the middle ear transfer function related to hearing in the humpback whale ( Megaptera novaeangliae ). The Journal of the Acoustical Society of America, 144(2), 525–535. https://doi.org/10.1121/1.5048421. These values are consistent with data from vocalization studies of humpback whales. Humpback whales make three types of vocalizations that range from about 50 Hz up to 10 kHz, so it is very likely that they can hear at the frequency of the NPAL/ATOC source transmissions. Scientists were able to conduct hearing threshold tests on false killer whales and Risso's dolphins to determine their sensitivity to the NPAL/ATOC source [6]Au, W. W. L., Nachtigall, P. E., & Pawloski, J. L. (1997). Acoustic effects of the ATOC signal (75 Hz, 195 dB) on dolphins and whales. The Journal of the Acoustical Society of America, 101(5), 2973–2977. https://doi.org/10.1121/1.419304.. They found that these toothed whales can just barely hear the NPAL/ATOC source at the frequency and source level of its transmissions.
4. What are the sound levels to which these animals are likely to be exposed?
The next step is to combine the sound field prediction with the marine animal data. An example of this modeling can be seen in the figure below.
In the picture, the sound source (with a source level of 195 underwater dB at 1 meter) is indicated with an arrow. The colors show the predicted received levels at various distances and depths. The two black diamonds are marine mammals that are predicted to be in the area while the source is transmitting. For more information on propagation modeling, please see Jensen, Kuperman, Porter, and Schmidt, 2011.
The sound source is indicated with an arrow. The gray area represents the sea floor. The two black diamonds are humpback whales that are predicted to be in the area while the source is transmitting. By combining the model of the sound field with the probable locations of the marine animals, the amount of sound energy to which the animals might be exposed can be estimated.
5. What effects might these sound levels have on the animals?
The final step is to estimate the potential impacts of the sound exposure. Exposure to sounds that are very loud compared to the hearing threshold can cause temporary or permanent hearing damage. Sounds added to the animal's environment may interfere with the animal's ability to hear important sounds, such as calls from other animals. This is called masking. Some sounds may also disturb the animal and cause it to change its behavior. Responses can be influenced by a diverse suite of environmental, biological, and operational factors (i.e., context of exposure)[7]Ellison, W. T., Southall, B. L., Clark, C. W., & Frankel, A. S. (2012). A New Context-Based Approach to Assess Marine Mammal Behavioral Responses to Anthropogenic Sounds: Marine Mammal Behavioral Responses to Sound. Conservation Biology, 26(1), 21–28. https://doi.org/10.1111/j.1523-1739.2011.01803.x.. Factors such as group composition (e.g., a mother-calf pair versus a single, large, adult male), spatial orientation (e.g., a source moving towards versus away from the animal), or behavior at time of exposure (e.g., an animal engaged in deep foraging dives versus resting near the surface) may affect the probability and severity of a behavioral response. Responses to sounds may vary dramatically, from no response at all, to minor, momentary reactions, to profound changes in behavior.
Because there were little data available in the mid 1990's on the potential effects of the NPAL/ATOC source, scientists conducted research during the ATOC Project. Studies were designed to discover if there might be changes in distribution and abundance of humpback whales[8]Mobley, J. R., Grotefendt, R. A., Forestell, P. H., & Frankel, A. (1999). Results of Aerial Surveys of Marine Mammals in the Major Hawaiian Islands (1993-1998): Report to the Acoustic Thermometry of Ocean Climate Marine Mammal Research Program (ATOC MMRP). Ithaca, NY: Cornell University Bioacoustics Research Program.[9]Frankel, A. S., & Clark, C. W. (2002). ATOC and other factors affecting the distribution and abundance of humpback whales (Megaptera novaeangliae) off the north shore of Kauai. Marine Mammal Science, 18(3), 644–662. https://doi.org/10.1111/j.1748-7692.2002.tb01064.x., behavioral reactions of northern elephant seals[10]Costa, D. P., Crocker, D. E., Gedamke, J., Webb, P. M., Houser, D. S., Blackwell, S. B., … Le Boeuf, B. J. (2003). The effect of a low-frequency sound source (acoustic thermometry of the ocean climate) on the diving behavior of juvenile northern elephant seals, Mirounga angustirostris. The Journal of the Acoustical Society of America, 113(2), 1155–1165. https://doi.org/10.1121/1.1538248., behavioral responses of humpback whales[11]Frankel, A. S., & Clark, C. W. (2000). Behavioral responses of humpback whales ( Megaptera novaeangliae ) to full-scale ATOC signals. The Journal of the Acoustical Society of America, 108(4), 1930–1937. https://doi.org/10.1121/1.1289668.[12]Frankel, A. S., & Clark, C. W. (1998). Results of low-frequency playback of M-sequence noise to humpback whales, Megaptera novaeangliae , in Hawai′i. Canadian Journal of Zoology, 76(3), 521–535. https://doi.org/10.1139/z97-223., behavioral responses of fishes[13]Klimley, A. P., & Beavers, S. C. (1998). Playback of acoustic thermometry of ocean climate (ATOC) -like signal to bony fishes to evaluate phonotaxis. The Journal of the Acoustical Society of America, 104(4), 2506–2510. https://doi.org/10.1121/1.423756., changes in vocalizations of humpback whales, and hearing sensitivities of two dolphin species[14]Au, W. W. L., Nachtigall, P. E., & Pawloski, J. L. (1997). Acoustic effects of the ATOC signal (75 Hz, 195 dB) on dolphins and whales. The Journal of the Acoustical Society of America, 101(5), 2973–2977. https://doi.org/10.1121/1.419304..
There were no obvious or measurable effects as a result of exposure to the NPAL/ ATOC sound source. After extensive statistical analyses, subtle effects were found to be correlated with increasing received sound levels, such as a slight increase in the distance and time between successive humpback whale surfacings [15]Frankel, A. S., & Clark, C. W. (2000). Behavioral responses of humpback whales ( Megaptera novaeangliae ) to full-scale ATOC signals. The Journal of the Acoustical Society of America, 108(4), 1930–1937. https://doi.org/10.1121/1.1289668.[16]Frankel, A. S., & Clark, C. W. (1998). Results of low-frequency playback of M-sequence noise to humpback whales, Megaptera novaeangliae , in Hawai′i. Canadian Journal of Zoology, 76(3), 521–535. https://doi.org/10.1139/z97-223..
The content on DOSITS is based on well understood scientific principles, peer-reviewed literature, and high-quality sources of scientific data. Independent experts who specialize in underwater acoustics have reviewed the material in this section.
Animals > Potential effects of sound on marine mammals
Animals > Potential effects of sound on marine fishes
Animals > How do you measure a marine mammal's reaction to sound?
Science > What sounds can we hear?
Science > What sounds can animals hear?
Science > Why does sound get weaker as it travels?
Science > Characterize sound > Intensity
Audio Gallery > Humpback whale
Audio Gallery > Risso's dolphin
Audio Gallery > Killer whale
Resources > Scientific Method
Office of Naval Research. (2001). Final Environmental Impact Statement for the North Pacific Acoustic Laboratory, May 2001 (p. 400). Arlington, VA: Office of Naval Research.
University of Washington, Applied Physics Laboratory. North Pacific Acoustic Laboratory (NPAL) Project/Acoustic Thermometry of Ocean Climate Project.
Jensen, F. B., Kuperman, W. A., Porter, M. B., & Schmidt, H. (2011). Computational Ocean Acoustics. Springer New York. https://doi.org/10.1007/978-1-4419-8678-8.
⇡1, ⇡3 EPA. (1998). Guidelines for Ecological Risk Assessment (No. EPA/630/R095/002F). Washington, D.C.: U.S. Environmental Protection Agency.
⇡2, ⇡4 EPA. (1992). Framework for Ecological Risk Assessment (No. EPA/630/R-92/001). Washington, D.C.: U.S. Environmental Protection Agency.
⇡5 Tubelli, A. A., Zosuls, A., Ketten, D. R., & Mountain, D. C. (2018). A model and experimental approach to the middle ear transfer function related to hearing in the humpback whale ( Megaptera novaeangliae ). The Journal of the Acoustical Society of America, 144(2), 525–535. https://doi.org/10.1121/1.5048421.
⇡6 Au, W. W. L., Nachtigall, P. E., & Pawloski, J. L. (1997). Acoustic effects of the ATOC signal (75 Hz, 195 dB) on dolphins and whales. The Journal of the Acoustical Society of America, 101(5), 2973–2977. https://doi.org/10.1121/1.419304.
⇡7 Ellison, W. T., Southall, B. L., Clark, C. W., & Frankel, A. S. (2012). A New Context-Based Approach to Assess Marine Mammal Behavioral Responses to Anthropogenic Sounds: Marine Mammal Behavioral Responses to Sound. Conservation Biology, 26(1), 21–28. https://doi.org/10.1111/j.1523-1739.2011.01803.x.
⇡8 Mobley, J. R., Grotefendt, R. A., Forestell, P. H., & Frankel, A. (1999). Results of Aerial Surveys of Marine Mammals in the Major Hawaiian Islands (1993-1998): Report to the Acoustic Thermometry of Ocean Climate Marine Mammal Research Program (ATOC MMRP). Ithaca, NY: Cornell University Bioacoustics Research Program.
⇡9 Frankel, A. S., & Clark, C. W. (2002). ATOC and other factors affecting the distribution and abundance of humpback whales (Megaptera novaeangliae) off the north shore of Kauai. Marine Mammal Science, 18(3), 644–662. https://doi.org/10.1111/j.1748-7692.2002.tb01064.x.
⇡10 Costa, D. P., Crocker, D. E., Gedamke, J., Webb, P. M., Houser, D. S., Blackwell, S. B., … Le Boeuf, B. J. (2003). The effect of a low-frequency sound source (acoustic thermometry of the ocean climate) on the diving behavior of juvenile northern elephant seals, Mirounga angustirostris. The Journal of the Acoustical Society of America, 113(2), 1155–1165. https://doi.org/10.1121/1.1538248.
⇡11, ⇡15 Frankel, A. S., & Clark, C. W. (2000). Behavioral responses of humpback whales ( Megaptera novaeangliae ) to full-scale ATOC signals. The Journal of the Acoustical Society of America, 108(4), 1930–1937. https://doi.org/10.1121/1.1289668.
⇡12, ⇡16 Frankel, A. S., & Clark, C. W. (1998). Results of low-frequency playback of M-sequence noise to humpback whales, Megaptera novaeangliae , in Hawai′i. Canadian Journal of Zoology, 76(3), 521–535. https://doi.org/10.1139/z97-223.
⇡13 Klimley, A. P., & Beavers, S. C. (1998). Playback of acoustic thermometry of ocean climate (ATOC) -like signal to bony fishes to evaluate phonotaxis. The Journal of the Acoustical Society of America, 104(4), 2506–2510. https://doi.org/10.1121/1.423756.
⇡14 Au, W. W. L., Nachtigall, P. E., & Pawloski, J. L. (1997). Acoustic effects of the ATOC signal (75 Hz, 195 dB) on dolphins and whales. The Journal of the Acoustical Society of America, 101(5), 2973–2977. https://doi.org/10.1121/1.419304.


From now through the end of the year, visit the Lone Star Flight museum to tour humankind's greatest aerial feats in history. This 130,000 square foot facility has a renowned flying collection of historic aircraft, a high-tech aviation learning center, and plenty of hands-on exhibits. Their mission: to preserve and honor the history of aviation in Texas.
We don't want to spoil the experience, so we encourage you to visit once, twice, or as often as you like. Visit daily, but check the Lone Star Flight Museum website for the museum hours as they can vary by season. Get admission for 50% off the regular price and pay just $10 (normally $20).
Learn more about the daily aviation exhibits at the Lone Star Flight Museum here.


Located in Arkansas, Hot Springs National Park is well-known for its thermal pools—some with water temperatures nearing 143°F. The park's landscape consists of rugged mountain slopes, creeks, valleys, and old-growth forests that support a rich ecosystem of animal and plant life, such as mosses, liverworts, grasses, and shrubs. Many bird species can be found in Hot Springs, including the Great Blue Heron, Golden Eagle, Red-tailed Hawk, American Kestrel, Ruby-throated Hummingbird, Greater Roadrunner, and Great Horned Owl, as well as numerous woodpeckers, warblers, and vireos.


Gorgeous, balmy weather has officially got a hold on Devon - and it's got everyone in the party mood.
The sunshine is pouring down on the beautiful South West and we're doing everything we can to make the most of it.
In fact, it's only going to get HOTTER with temperatures expected to climb to 3OC - making Devon as hot if not hotter than dazzling Barcelona.


Book New Park Manor online.
Located in the heart of the New Forest, the New Park Manor is a welcoming retreat within the National Park. The in-house Stag Restaurant offers rustic British dishes with a European touch alongside a carefully chosen menu for children.
There are no example menus for New Park Manor.