text:
"""
Test the VCCS authbackend.
"""

import os
import time
import bcrypt
import pkg_resources
import simplejson as json

import vccs_auth
from vccs_auth.vccs_authbackend import AuthBackend, VCCSLogger
import ndnkdf

import pyhsm
import struct

import cherrypy
import cptestcase

from common import FakeCredentialStore

class TestAuthBackend(cptestcase.BaseCherryPyTestCase):
    def setUp(self):
        debug = False
        datadir = pkg_resources.resource_filename(__name__, 'data')
        self.config_file = os.path.join(datadir, 'test_config.ini')
        self.config = vccs_auth.config.VCCSAuthConfig(self.config_file, debug)
        self.credstore = FakeCredentialStore()
        self.kdf = ndnkdf.NDNKDF(self.config.nettle_path)
        self.keys = {0x2000: str('2000' * 16).decode('hex'),
                     0x2001: str('2001' * 16).decode('hex'),
                     }
        self.hasher = vccs_auth.hasher.VCCSSoftHasher(self.keys, vccs_auth.hasher.NoOpLock())
        self.logger = VCCSLogger('test_authbackend', self.config)

        #cherrypy.root = AuthBackend(self.hasher, self.kdf, self.logger, self.credstore, self.config)

        self.authbackend = AuthBackend(self.hasher, self.kdf, self.logger, self.credstore,
                                       self.config, expose_real_errors = True)
        cherrypy.tree.mount(self.authbackend, '/')
        cherrypy.engine.start()

        self.bcrypt_salt1 = '$2a$08$Ahy51oCM6Vg6d.1ScOPxse'

    def tearDown(self):
        cherrypy.engine.exit()

    def _bcrypt_hash(self, plaintext):
        bcrypt_hashed = bcrypt.hashpw(plaintext, self.bcrypt_salt1)
        return bcrypt_hashed[len(self.bcrypt_salt1):]

    def test_bad_request(self):
        """
        Verify bad requests are rejected
        """
        response = self.request('/')
        self.assertEqual(response.output_status, '404 Not Found')

    def test_bad_request2(self):
        """
        Verify bad requests are rejected (right URL, no param)
        """
        response = self.request('/authenticate', return_error = True)
        self.assertIn('Failed parsing request', response.body[0])

    def test_auth_request_wrong_version(self):
        """
        Verify auth request with wrong version is rejected
        """
        a = {'auth': {'version': 9999,
                      'user_id': 'ft@example.net',
                      },
             }
        j = json.dumps(a)
        response = self.request('/authenticate', request = j, return_error = True)
        self.assertIn('Unknown request version : 9999', response.body[0])

        # try again with blinding
        self.authbackend.expose_real_errors = False
        response = self.request('/authenticate', request = j, return_error = True)
        self.assertEqual(response.output_status, '500 Internal Server Error')

    def test_auth_missing_data(self):
        """
        Verify auth request with missing data is rejected
        """
        for req_field in ['version', 'user_id', 'factors']:
            a = {'auth': {'version': 1,
                          'user_id': 'ft@example.net',
                          'factors': [],
                          },
                 }
            del a['auth'][req_field]
            j = json.dumps(a)
            response = self.request('/authenticate', request = j, return_error = True)
            self.assertIn("No '{!s}' in request".format(req_field), response.body[0])

    def test_auth_request1(self):
        """
        Verify correct authentication request
        """
        H1 = self._bcrypt_hash('plaintext')
        a = {'auth': {'version': 1,
                      'user_id': 'ft@example.net',
                      'factors': [
                          {'type': 'password',
                           'H1': H1,
                           'credential_id': '4711',
                           }],
                      },
             }
        j = json.dumps(a)
        response = self.request('/authenticate', request = j, return_error = True)
        res = json.loads(response.body[0])
        expected = {'auth_response': {'version': 1,
                                      'authenticated': True,
                                      },
                    }
        self.assertEqual(res, expected)

    def test_auth_request2(self):
        """
        Verify correct authenticate request with incorrect password
        """
        H1 = self._bcrypt_hash('textplain')
        a = {'auth': {'version': 1,
                      'user_id': 'ft@example.net',
                      'factors': [
                          {'type': 'password',
                           'H1': H1,
                           'credential_id': '4711',
                           }]
                      },
             }
        j = json.dumps(a)
        response = self.request('/authenticate', request = j, return_error = True)
        res = json.loads(response.body[0])
        expected = {'auth_response': {'version': 1,
                                      'authenticated': False,
                                      },
                    }
        self.assertEqual(res, expected)

    def test_auth_request3(self):
        """
        Verify authenticate request without credentials
        """
        a = {'auth': {'version': 1, 'user_id': 'ft@example.net',
                      'factors': [],
                      },
             }
        j = json.dumps(a)
        response = self.request('/authenticate', request = j, return_error = True)
        print "RESPONSE {!r}: {!r}".format(response.status, response.body)
        self.assertEqual(response.output_status, '501 Not Implemented')
        self.assertEqual(response.body, [])

    def test_auth_request4(self):
        """
        Verify authenticate request with imaginary credential type
        """
        a = {'auth': {'version': 1,
                      'user_id': 'ft@example.net',
                      'factors': [{'type': 'promise'}],
                      },
             }
        j = json.dumps(a)
        response = self.request('/authenticate', request = j, return_error = True)
        print "RESPONSE {!r}: {!r}".format(response.status, response.body)
        self.assertEqual(response.output_status, '200 OK')
        res = json.loads(response.body[0])
        expected = {'auth_response': {'version': 1,
                                      'authenticated': False,
                                      },
                    }
        self.assertEqual(res, expected)

    def test_auth_request5(self):
        """
        Verify correct authentication request but with unknown credential
        """
        H1 = self._bcrypt_hash('plaintext')
        cred_id = '9898'
        a = {'auth': {'version': 1,
                      'user_id': 'ft@example.net',
                      'factors': [
                          {'type': 'password',
                           'H1': H1,
                           'credential_id': cred_id,
                           }],
                      },
             }
        j = json.dumps(a)
        response = self.request('/authenticate', request = j, return_error = True)
        print "RESPONSE {!r}: {!r}".format(response.status, response.body)
        self.assertEqual(response.output_status, '500 Internal Server Error')
        self.assertIn('Unknown credential: {!r}'.format(cred_id), response.body[0])

    def test_add_creds_request1(self):
        """
        Verify correct add_credentials password request
        """
        H1 = self._bcrypt_hash('foobar')
        cred_id = '4720'
        a = {'add_creds': {'version': 1,
                           'user_id': 'ft@example.net',
                           'factors': [
                               {'type': 'password',
                                'H1': H1,
                                'credential_id': cred_id,
                                }],
                           },
             }
        j = json.dumps(a)

        # make sure credential does not exist in credstore
        self.assertIsNone(self.credstore.get_credential(cred_id))

        response = self.request('/add_creds', return_error = True, remote_hp = '127.0.0.127:50001',
                                request = j)
        print "RESPONSE {!r}: {!r}".format(response.status, response.body)
        res = json.loads(response.body[0])
        expected = {'add_creds_response': {'version': 1,
                                           'success': True,
                                           },
                    }
        self.assertEqual(res, expected)

        cred = self.credstore.get_credential(cred_id)
        print "CRED {!r}".format(cred)
        self.assertEqual(cred.id(), cred_id)
        self.assertEqual(cred.status(), 'active')
        self.assertGreater(cred.iterations(), 20000)

    def test_add_creds_request2(self):
        """
        Verify correct add_credentials OATH request
        """
        key_handle = self.config.add_creds_oath_key_handles_allow[0]
        test_key = str('aa' * 20).decode('hex')
        nonce = '010203040506'.decode('hex')
        flags = struct.pack('< I', pyhsm.defines.YSM_HMAC_SHA1_GENERATE)
        aead = pyhsm.soft_hsm.aesCCM(self.keys[key_handle], key_handle, nonce,
                                     test_key + flags, decrypt = False)
        cred_id = '4740'
        a = {'add_creds': {'version': 1,
                           'user_id': 'ft@example.net',
                           'factors': [{'aead': aead.encode('hex'),
                                       'credential_id': cred_id,
                                       'digits': 6,
                                       'nonce': nonce.encode('hex'),
                                       'key_handle': key_handle,
                                       'oath_counter': 0,
                                       'type': 'oath-hotp',
                                      }],
                           }
             }
        j = json.dumps(a)

        response = self.request('/add_creds', return_error = True, remote_hp = '127.0.0.127:50001',
                                request = j)
        print "RESPONSE {!r}: {!r}".format(response.status, response.body)
        res = json.loads(response.body[0])
        expected = {'add_creds_response': {'version': 1,
                                           'success': True,
                                           }
                    }
        self.assertEqual(res, expected)

        cred = self.credstore.get_credential(cred_id)
        print "CRED {!r}".format(cred)
        self.assertEqual(cred.id(), cred_id)
        self.assertEqual(cred.type(), 'oath-hotp')

    def test_add_creds_request3(self):
        """
        Verify add_credentials from wrong source IP
        """
        a = {'add_creds': {'version': 1,
                           'user_id': 'ft@example.net',
                           'factors': [],
                           },
             }
        j = json.dumps(a)

        response = self.request('/add_creds', return_error = True, remote_hp = '127.128.129.130:50001',
                                request = j)
        print "RESPONSE {!r}: {!r}".format(response.status, response.body)
        self.assertEqual(response.output_status, '403 Forbidden')

    def test_add_creds_request3b(self):
        """
        Verify add_credentials OATH request with unknown key handle
        """
        key_handle = self.config.add_creds_oath_key_handles_allow[0]
        test_key = str('aa' * 20).decode('hex')
        nonce = '010203040506'.decode('hex')
        flags = struct.pack('< I', pyhsm.defines.YSM_HMAC_SHA1_GENERATE)
        aead = pyhsm.soft_hsm.aesCCM(self.keys[key_handle], key_handle, nonce,
                                     test_key + flags, decrypt = False)
        cred_id = '4740'
        a = {'add_creds':
                 {'version': 1,
                  'user_id': 'ft@example.net',
                  'factors': [
                      {'aead': aead.encode('hex'),
                       'credential_id': cred_id,
                       'digits': 6,
                       'nonce': nonce.encode('hex'),
                       'key_handle': key_handle + 55,
                       'oath_counter': 0,
                       'type': 'oath-hotp',
                      }],
                  },
             }
        j = json.dumps(a)

        response = self.request('/add_creds', return_error = True, remote_hp = '127.0.0.127:50001',
                                request = j)
        print "RESPONSE1 {!r}: {!r}".format(response.status, response.body)
        self.assertIn('Add OATH credentials key_handle {} not in allowed list'.format(key_handle + 55),
                      response.body[0])
        self.assertEqual(response.output_status, '500 Internal Server Error')

    def test_add_creds_request3c(self):
        """
        Verify add_credentials OATH request with incorrect AEAD
        """
        key_handle = self.config.add_creds_oath_key_handles_allow[0]
        nonce = '010203040506'.decode('hex')
        aead = ('aa' * 32).decode('hex')
        cred_id = '4740'
        a = {'add_creds': {'version': 1,
                           'user_id': 'ft@example.net',
                           'factors': [{'aead': aead.encode('hex'),
                                        'credential_id': cred_id,
                                        'digits': 6,
                                        'nonce': nonce.encode('hex'),
                                        'key_handle': key_handle,
                                        'oath_counter': 0,
                                        'type': 'oath-hotp',
                                        },
                                       ],
                           },
             }
        j = json.dumps(a)

        response = self.request('/add_creds', return_error = True, remote_hp = '127.0.0.127:50001',
                                request = j)
        print "RESPONSE1 {!r}: {!r}".format(response.status, response.body)
        self.assertIn('AEAD integrity check failed', response.body[0])
        self.assertEqual(response.output_status, '500 Internal Server Error')

    def test_add_creds_request4(self):
        """
        Verify correct add_credentials password request with more than one factor

        More than one factor is currently not allowed, as it is not specified how
        error handling would work (one factor succeeds, next does not).
        """
        H1 = self._bcrypt_hash('foobar')
        cred_id = '4750'
        a = {'add_creds': {'version': 1,
                           'user_id': 'ft@example.net',
                           'factors': [{'type': 'password',
                                        'H1': H1,
                                        'credential_id': cred_id,
                                        },
                                       {'type': 'password',
                                        'H1': H1,
                                       'credential_id': 'some-other-string',
                                        },
                                       ],
                           },
             }
        j = json.dumps(a)

        response = self.request('/add_creds', return_error = True, remote_hp = '127.0.0.127:50001',
                                request = j)
        print "RESPONSE {!r}: {!r}".format(response.status, response.body)
        self.assertEqual(response.output_status, '501 Not Implemented')

    def test_add_creds_request5(self):
        """
        Test adding credential that already exists
        """
        H1 = self._bcrypt_hash('foobar')
        cred_id = '4711'
        a = {'add_creds': {'version': 1,
                           'user_id': 'ft@example.net',
                           'factors': [{'type': 'password',
                                        'H1': H1,
                                        'credential_id': cred_id,
                                        },
                                       ],
                           },
             }
        j = json.dumps(a)

        response = self.request('/add_creds', return_error = True, remote_hp = '127.0.0.127:50001',
                                request = j)
        print "RESPONSE1 {!r}: {!r}".format(response.status, response.body)
        self.assertIn('Test already have credential with id {!r}'.format(cred_id), response.body[0])
        self.assertEqual(response.output_status, '500 Internal Server Error')

        # try again with blinding
        self.authbackend.expose_real_errors = False
        response = self.request('/add_creds', return_error = True, remote_hp = '127.0.0.127:50001',
                                request = j)
        print "RESPONSE2 {!r}: {!r}".format(response.status, response.body)
        self.assertEqual(response.output_status, '500 Internal Server Error')
        self.assertEqual(response.body, [])

    def test_revoke_creds_request1(self):
        """
        Verify correct revoke_creds request
        """
        H1 = self._bcrypt_hash('foobar')
        cred_id = '4721'
        a = {'add_creds': {'version': 1,
                           'user_id': 'ft@example.net',
                           'factors': [{'type': 'password',
                                        'H1': H1,
                                        'credential_id': cred_id,
                                        },
                                       ],
                           },
             }
        j = json.dumps(a)

        # make sure credential does not exist in credstore
        self.assertIsNone(self.credstore.get_credential(cred_id))

        response = self.request('/add_creds', return_error = True, remote_hp = '127.0.0.127:50001',
                                request = j)
        res = json.loads(response.body[0])
        expected = {'add_creds_response': {'version': 1,
                                           'success': True,
                                           }
                    }
        self.assertEqual(res, expected)

        cred = self.credstore.get_credential(cred_id)
        print "ADDED CRED {!r}".format(cred)
        self.assertEqual(cred.status(), 'active')

        # Now, revoke the credential we added
        a = {'revoke_creds': {'version': 1,
                              'user_id': 'ft@example.net',
                              'factors': [{'reason': 'Just testing',
                                           'reference': '',
                                           'credential_id': cred_id,
                                           },
                                          ],
                              }
             }
        j = json.dumps(a)
        response = self.request('/revoke_creds', return_error = True, remote_hp = '127.0.0.127:50001',
                                request = j)
        res = json.loads(response.body[0])
        expected = {'revoke_creds_response': {'version': 1,
                                              'success': True,
                                              },
                    }
        self.assertEqual(res, expected)

        revoked = self.credstore.get_credential(cred_id, check_revoked = False)
        print "REVOKED CRED {!r}".format(revoked)
        self.assertEqual(revoked.status(), 'revoked')
        got_info = revoked.revocation_info()
        print "REVOCATION INFO: {!r}".format(got_info)
        expected_info = {'timestamp': got_info.get('timestamp'), # copy since it is a timestamp
                         'client_ip': '127.0.0.127',
                         'reason': 'Just testing',
                         'reference': '',
        }
        self.assertEqual(revoked.revocation_info(), expected_info)
        # check the timestamp
        now = int(time.time())
        self.assertGreater(got_info.get('timestamp'), now - 10)
        self.assertLess(got_info.get('timestamp'), now + 1)

        with self.assertRaises(vccs_auth.credential.VCCSAuthCredentialError):
            # make sure an exception is raised for revoked credential without check_revoked=False
            self.credstore.get_credential(cred_id)

    def test_revoke_creds_request2(self):
        """
        Verify revoke_creds for unknown credential
        """
        H1 = self._bcrypt_hash('foobar')
        cred_id = u'0'
        a = {'revoke_creds': {'version': 1,
                              'user_id': 'ft@example.net',
                              'factors': [{'reason': 'Just testing',
                                           'reference': '',
                                           'credential_id': cred_id,
                                           },
                                          ],
                              },
             }
        j = json.dumps(a)

        response = self.request('/revoke_creds', return_error = True, remote_hp = '127.0.0.127:50001',
                                request = j)
        print "RESPONSE1 {!r}: {!r}".format(response.status, response.body)
        self.assertIn('Unknown credential: {!r}'.format(cred_id), response.body[0])
        self.assertEqual(response.output_status, '500 Internal Server Error')

        # try again with blinding
        self.authbackend.expose_real_errors = False
        response = self.request('/revoke_creds', return_error = True, remote_hp = '127.0.0.127:50001',
                                request = j)
        print "RESPONSE2 {!r}: {!r}".format(response.status, response.body)
        self.assertEqual(response.output_status, '500 Internal Server Error')
        self.assertEqual(response.body, [])

    def test_revoke_missing_data(self):
        """
        Verify revoke request with missing data is rejected
        """
        for req_field in ['credential_id', 'reason', 'reference']:
            a = {'revoke_creds': {'version': 1,
                                  'user_id': 'ft@example.net',
                                  'factors': [{'reason': 'Just testing',
                                               'reference': '',
                                               'credential_id': 4750,
                                               },
                                              ],
                                  },
                 }
            del a['revoke_creds']['factors'][0][req_field]
            j = json.dumps(a)
            response = self.request('/revoke_creds', return_error = True, remote_hp = '127.0.0.127:50001',
                                    request = j)
            self.assertIn("No '{!s}' in credential to revoke".format(req_field), response.body[0])

    def test_revoke_creds_request3(self):
        """
        Verify revoke_creds from wrong source IP
        """
        a = {'revoke_creds': {'version': 1,
                              'user_id': 'ft@example.net',
                              'factors': [],
                              },
             }
        j = json.dumps(a)

        response = self.request('/revoke_creds', return_error = True, remote_hp = '127.128.129.130:50001',
                                request = j)
        print "RESPONSE {!r}: {!r}".format(response.status, response.body)
        self.assertEqual(response.output_status, '403 Forbidden')


3 nice grass carp out this week for Ian and Jon on swim 11, a 33lb and a 35lb as well as 2 36lb mirrors to give them news PBs. All in all 16 fish between them on a mixture of Mainline Cell and MTC garlic boilies. The catch reports are incomplete this week as there are some missing.
A difficult week's fishing this week, the guys really had to work hard with very little reward. Swim 11 did well though for Wout and Jonas with 16 fish to 51lb 8oz.
The fishing remains tricky with the fish very inactive generally. But some nice fish out for Peter on swim 11 who managed 17 fish to 49lb on squid and scopex boilies. 4 fish for the chalet swim, Kristof and Michael to 33lb on a mixture of fruity boilies.
The biggest fish this week came from the chalet swim (though no photos, sorry) they landed 5 fish including 32lb, 34lb, 39lb, 43lb and 48lb 6oz, all on scopex boilies. Steve on swim 11 landed 9 fish to 38lb, again no photos.
Only 4 anglers this week on the chalet and swim 10 and a total of 12 fish between them. Martin and David on 10 had 9 fish to 54lb including a nice grass carp and a 44lb mirror. Remco and Robert on the chalet swim had 3 fish, a 29lb, 35lb and 41lb.
Tigernuts over a bed of boilies did the business this week for Philippe and Margot on swim 11. He had 10 fish to 41lb whilst the Schouten family in the chalet had 6 runs and 3 fish, also on tigernuts, to 35lb.
It was our turn for a PB this week, 19 people at the BBQ on Wednesday. Lovely to see so many regular guests alongside some newbies so it was a lovely evening. More importantly some stunning fish out and some new PBs for the anglers, namely Klaus on swim 4 with a 42lb, 1 of 3 fish for him the other 2 a 31lb and a 30lb all on tigernuts again. Brad on swim 1 has a new PB with a 32lb mirror he landed also on tigernuts. Stefan on swim 8 landed not 1 but 2 mirrors at 51lb to give him a new PB, and a total of 21 fish including a 46lb and 5 over 30lb. Also on swim 8 Thomas landed 20 fish, also on tigernuts, including 9 over 30lb, 2 at 43lb, and a 49lb 8oz. Andre and Hendrik on 6 and 7 had 15 fish between them including 8 over 30lb, 4 over 40lb to 45lb. Jonas and Marvin on swim 10 had a perfect leather carp at 34lb, (waiting for the photos to come back though) amongst their 9 fish and the Lebherz family on 11 landed 11 fish to 36lb. So a great week with 81 carp and an overall average of 30lb 14oz.


text:
Home » Judge sentences attorney Page to probation, fine
Judge sentences attorney Page to probation, fine
Cory Schouten
KEYWORDS Wire Fraud / Sentence / State agencies / Indiana Department of Child Services / U.S. District Court for the Northern District of Indiana / District Courts / Elkhart / Government / Courts / neglect
Judges deny request to modify probation to allow contact with daughter
Judges reverse probation revocation due to inadmissible evidence
Indiana man sentenced to probation for sex with teenager
SOUTH BEND—Attorney and real estate developer Paul J. Page will serve two years of probation and pay a $10,000 fine for concealing the source of a $362,000 down payment on his purchase of a state-leased office building in Elkhart.
U.S. District Court Judge Robert Miller Jr. issued the sentence at a Monday morning hearing in South Bend.
Federal prosecutors had argued Page, 49, should serve a 14-month prison sentence for a wire fraud count. Page pleaded guilty in January before the government tried co-defendants, John M. Bales and William E. Spencer, at an eight-day jury trial in February that ended in acquittal on all 13 counts for the pair.
The judge scoffed at the government's sentencing request for Page, noting the crime resulted in no losses to either the lender or the state. He said Page, a father of three without a criminal record, does not pose a danger of offending again.
Page spoke briefly during the hearing, after taking a few moments to compose himself.
"Hopefully a man is not defined by one action," he said, before turning away from the judge to thank a courtroom full of friends and family members.
Page declined to talk after the sentencing hearing, but his attorney Robert W. Hammerle described the ruling as "utter relief." Hammerle described the offense as an "isolated technical violation" that is actually quite common.
The judge seemed to agree, noting that he hadn't seen "many or any" cases with "less aggravating circumstances."
Prosecutors had argued in a sentencing memorandum that Page should be sentenced at the high end of guidelines, calling for a range of 8 to 14 months, since as an attorney he should have "known better" than to conceal the source of his down payment for the Elkhart building. The down payment came from Bales, who also brokered the lease deal with the state to use the building.
The government said the deal violated an agreement between Bales' firm, Venture Cos., and the state that barred the company from direct or indirect ownership of properties where state agencies leased space.
Hammerle noted that the state's Department of Child Services renewed its lease deal for the building since federal prosecutors filed their case against Bales, Page and Spencer, and are happy with the space.
Before issuing the sentence, Judge Miller said he determined the crime did not fit the sentencing guidelines established in Page's plea agreement. He removed a few sentencing enhancements from the calculation, resulting in a recommended prison sentence between zero and 6 months.
Still, the felony conviction means Page likely will lose his license to practice law. That would be up to the Indiana Supreme Court Disciplinary Commission.
Real estate, retail
real estate blog moderator
Schouten joined IBJ as a reporter in 2006 after stints at the Sarasota Herald-Tribune and the Arizona Republic. He covered education in Arizona and politics and hurricanes in Florida. A graduate of Southport High School and Indiana University, Schouten hosts a real estate blog on IBJ.com that twice has been named the nation's best among business journals by the Alliance of Area Business Publications. Schouten also has been honored for his body of work at IBJ. Outside the office, he serves on the community relations board for Noble of Indiana and mentors youth through Big Brothers Big Sisters of Central Indiana.
Follow Cory on Twitter: www.twitter.com/propertylines
Recent Articles by Cory Schouten
Jury returns guilty verdicts in Indy Land Bank case
Former Indy Land Bank chief grilled over inconsistent testimony
Indy Land Bank trial could turn on government wiretaps

redpajama_set_name: RedPajamaCommonCrawl


SolarAnalyzer supports the following data loggers, inverters, portals and data sources.
All product names and trademarks are the property of their respective owners, which are in no way associated or affiliated with SolarAnalyzer. Product names are used solely for the purpose of identifying the specific products that SolarAnalyzer is compatible.


Advice and assitance on just about every topic for business.
Blogs!!! Everyone says you need to have one to increase your company's business, but how do blogs do that? They do it three ways.
1. They increase business by providing a location on the Internet that people somehow learn about, they visit, and if the information is good, then they want to keep coming back for more. The more they come back, the more chance you have to promote your business ideas and thus your business.
2. They increase your business because they could show up in Google and Yahoo and MSN search results. If someone is searching in Google for a PR company in Chicago, and that company has a blog, there's a better chance that PR company's blog entry will show up near the top of the results page.
3. The final way blogs help your business is to drive visitor traffic to your main Web site. People come to you blog and if you've done it right there's a link to your main Web site.
Google and Yahoo are on an hourly basis out there looking at the Internet trying to find sites that are changing often and providing well written content. The theory is, write in your blog every day and provide valuable well written content and Google and Yahoo will reward your efforts with higher rankings.
Blog on folks, and increase your business sales.


text:
Larysz ist der Familienname folgender Personen:

 Lennard Larysz (* 1997), deutscher Basketballspieler
 Paul Larysz (* 1972), deutscher Basketballtrainer

redpajama_set_name: RedPajamaWikipedia


The wait is nearly over for thousands of teenagers... GCSE results are due out tomorrow.
But how are the exams marked? And what marks do students need to attain the variousgrades. These are questions many students, sweating on their scores - and waiting to find out if they have the grades needed for sixth-form college - will want answering.
Fortunately, Exam boards publish grade boundaries so students know how what marks they needed to get the grades they wanted, but the boudnaries are not released until tomorrow.
Read on to find out why - and how you can find them.
What is the new GCSE grading system?
GCSEs in England are changing - and this started in 2017 with England and maths, reports Birmingham Live.
The Department for Education said the new GCSEs in England have a 9 to 1 grading scale instead of the previous A* to G "to better differentiate between the highest performing students and distinguish clearly between the old and new qualifications."
Grade 9 is the highest grade and will be awarded to fewer students than the old A*.
Although the exams will cover more challenging content, students will not be disadvantaged by being the first to sit the new GCSEs.
The new system means that about the same number of students will get grades 1, 4 and 7 and above in the reformed subjects as would have got G, C or A and above in the old system.
The Department for Education recognises grade 4 and above as a 'standard pass' in all subjects. A grade 4 or above is a similar achievement to the old grade C or above. It isays this is "a credible achievement for a young person that should be valued as a passport to future study and employment."
A grade 4 is the minimum students need in English and maths, otherwise they need to continue studying these subjects as part of their post-16 education. This does not apply to other subjects.
Employers, universities and colleges will continue to set the GCSE grades they require for entry to employment or further study. They have been advised that if they previously set grade C as their minimum requirement, the nearest equivalent is grade 4. The old A* to G grades remain valid for future employment or study.
The first exams for new GCSEs in English language, English literature and maths were sat in 2017. An additional 20 new GCSE subjects will have their first exams in 2018.
All GCSE subjects will be revamped for courses starting by 2018 and examined by 2020. Between 2017 and 2019, GCSE exam certificates may have a mix of number and letter grades, depending on the subjects taken.
By 2020, all exam certificates will contain only the new number grades.
Which University says the changes to GCSEs are designed to make subject content and exams more challenging.
Most exams will be taken at the end of the two-year course rather than on completion of modules.
There will be fewer 'bite-sized' questions and more essay-style questions.
The content will be more challenging, with more substantial texts in English literature and a number of new topics in maths.
Everyone will have to do at least two science GCSEs (single science options have been dropped as of 2016).
Coursework and controlled assessment will disappear from most subjects, apart from practical ones such as art, dance and drama.
When are grade boundaries released?
The decision to stop publishing grade boundaries the day before results came out was taken in 2017 to reduce stress on pupils.
So they are now released on results day itself.
You may be surprised to find out that grade boundaries are not decided until the exams are actually marked, so they are not known months ahead. Government department Ofqual - The Office of Qualifications and Examinations Regulation - says grade boundaries for GCSEs and A levels are never set in advance of the exams being taken.
One reason is that it is impossible to judge exactly how difficult students will find a paper compared to previous papers or sample papers. Therefore exam boards wait until most or all of the marking is complete so they can see how difficult students found the paper, and individual questions on the paper, and take that into account when setting the boundaries.
With new qualifications and new styles of question papers, it is particularly hard to predict how students will perform, and how many marks they will score.
Exam boards provided sample papers and mark schemes for new subjects being taken this summer, but it will be the first time that students actually take these exams and the first time that the examiners do the marking in reality.
This time last year Ofqual urged schools and colleges not to rely on predictions about the lgrade boundaries in new GCSEs in English language, English literature and maths. Its advice is the same for the GCSEs that are new this year.
What are the GCSE grade boundaries for 2018?
The grade boundaries for exams set by AQA will be available here from 6am on August 23.
The grade boundaries for exams set by OCR will be available here from 6am on August 23.


ProLinkdirectory.com reserves the right to refuse/cancel a link/article submitted at its sole discretion.
If ProLinkdirectory.com refuses/cancels a paid link/article, it will issue a full refund to the submitter for the current billing period except if otherwise explicitly noted in this document.
To protect the quality of the site and the interests of its users, ProLinkdirectory.com reserves the right to cancel listings with invalid URLs (including but not limited to unregisterd domains, unhosted domains, domains returning a HTTP response code other than Successful) without providing a refund.
Link cancellations received in 7 days or less after submission are eligible to a full refund.
Lifetime link/articles cancellations received after the stated deadline are not eligible for a refund.
Cancellations received for auto-renewing links/articles are only refunded for the current billing cycle.
Refunds will be credited back to the original account used for payment.


In the 15 years since Second Life hit the market, the online virtual world has given more than 15 million registered users the ability to transport and transform themselves in a space designed completely by the avatars who call it home. While receiving less publicity in recent years, roughly half a million users still log significant "inworld" hours – and an estimated 40-60 percent count themselves as disabled.
This statistic shouldn't be surprising, yet for many—including those tasked with creating the next new "thing" in the tech world—it is, says UCI anthropologist Tom Boellstorff.
But technology isn't often designed with these specialized needs in mind. And that's something Boellstorff—through academic research in the virtual and physical worlds—is hoping to change. It's a case he made this spring in Silicon Valley when he met with Second Life creator Philip Rosedale and his team at High Fidelity; with Ebbe Altberg, the head of Linden Lab which runs Second Life; and in D.C. before multiple members of Congress, several of whom determine levels of National Science Foundation funding which have supported Boellstorff's work. It's also the focus of a new documentary highlighting how online worlds facilitate deep connections for disability communities. And that's where Tom Bukowski's story picks up.
When Boellstorff first entered Second Life in 2004, he did so as the avatar Tom Bukowski with a gamer's background and an ethnographer's intent. A member of the first generation in the U.S. for whom video games were a part of everyday life, it was a somewhat easy jump for the early adopter of technology and simulation games like Sim City. Boellstorff had paid close attention growing up to the first iterations of three-dimensional worlds that linked global players online through text and voice, but he hadn't yet studied them formally as an academic.
While pursuing his Ph.D., he completed an extensive ethnographic study of the lives of gay men in Indonesia which was the focus of two subsequent books. So when he was looking for his next big project, the Stanford-trained anthropologist set his sights on a new challenge: virtual worlds. He took all of his ethnographic experience to the new realm where he says many of the same participant observation study methods he'd previously employed applied.
For Boellstorff, the goal was to blend in, observe and when appropriate, interview, so rather than appearing as a vampire or a cat or an inanimate object like a fridge, his default avatar looks similar to his physical-world self—a white male with brown hair and a goatee. But he has updated his avatar over the years and has been known to show up to Halloween parties in Second Life as a robotic cat or a jellyfish.
But how other people choose to embody themselves is incredibly interesting, he says, and he spent quite a bit of time on the topic with those he encountered. The idea became even more intriguing as he began to interact with many people who identified as having disabilities. Like Fran, a 90+ year-old woman whose mobility is limited due to Parkinson's disease in the physical world, but in Second Life, she's a young, flawless looking blonde who glides with ease. And Shyla, a middle-aged woman with chronic pain so severe that she spends most of her day in a specially designed chair lying on her back. In Second Life, she's a superhero gecko who can fly around and interact with anyone.
Cody LaScala is another person Boellstorff has met through Second Life. LaScala is a 30-year-old who experienced a near-death drowning on his first birthday, and has been confined to a wheelchair with a round-the-clock caregiver ever since. LaScala uses adaptive technology and the help of his caregiver, Cecii Zapien, to actively participate in Second Life. While some people use the nearly unlimited avatar options possible in Second Life to make themselves appear different from their physical-world selves, LaScala's purposely mirrors his physical-world self.
The notion is something Boellstorff explores deeply in his research. He's received $277,000 in funding since 2015 from the National Science Foundation to better understand how online environments impact social interaction and self-understanding as well as physical world experiences of disability. He also studies which aspects of online social interaction are linked to specific disabilities and how differing platforms and devices are used.
As part of his research, Boellstorff and Donna Z. Davis, his co-researcher from the University of Oregon, were able to create their own island in Second Life called "Ethnographia Island." Some disabled participants were given plots of land for the duration of the research project (which ended in July 2018) so they could build anything they wished that expressed their experience of disability. They also ran focus group meetings on the island where Shyla, LaScala, and others shared their stories of living with a disability.
Some of these stories ended up appearing in "Our Digital Selves," a documentary produced by Bernhard Drax that chronicles this research project. Through interviews in both the virtual and physical worlds, the film follows the work of Boellstorff and team from inside their Second Life activities to Silicon Valley where they meet with Second Life's creators to talk about technology design for the disabled community. LaScala even recreated the scene of his accident in the film as a way to share his story.
The documentary debuted at a Congressional meeting that was part of the 2018 Coalition on National Science Funding Exhibition and Hill Day. Boellstorff was one of several social scientists who got to showcase his work—considered as "blue sky" research for which the practical benefits may not be immediately apparent—and thank Congress for their support.
"We know from experience that it is precisely basic research that often leads to innovations of lasting societal impact," he says.
LaScala also made the trek—with Zapien—and participated in a Q&A about his experiences using virtual worlds, discussing how they provide vital social connections and new personal and economic opportunities for disabled people.
Boellstorff's hope is that by sharing this research and the stories of those whose lives have been changed by the possibilities virtual worlds provide, the technologies of tomorrow will be designed with the disabled community in mind, and "blue sky" funding will continue to be available to pursue the unknown.
-photos, courtesy of Bernhard Drax, from top down: Boellstorff in his office while conducting research in Second Life. Shyla spends time inworld with the help of her specially designed chair. Zapien helps LaScala with his VR glasses while Boellstorff and team are meeting with technology makers in Silicon Valley. Boellstorff demos new VR technology.


Microsoft Office Professional Plus 2010 Crack Full Download. Microsoft Office Professional Plus 2010 Crack Full Download. Microsoft Office Professional Plus 2010 Crack Full Download. Microsoft Office Professional Plus 2010 Crack and Keygen: Microsoft Office Pro Plus 2010 Crack also is known as Office 2010 Pro Plus is really a new Crack form of the Microsoft Office for Microsoft Windows Company, It s the next Office Work software to Microsoft Office 2007 which is predecessor to Microsoft Office Professional Plus 2013, and 2014. Now Microsoft Office Professional Plus 2010 Crack has incorporated a long extendable support for those customers and contains interface best updates, plus altered and good consumer experience. We ve Microsoft Office Pro Plus 2010 32 bit and 64-bit Full Cracked form of Office 2010 Pro plus that s available for those customers, might be it s not for Windows XP Customers and Windows Server 2003, but great for Windows 8, Windows 7, Windows 8.1 Pro, and Windows 8.1 of versions. I believe Office 2010 was recently launched on On April 15, 2010, for manufacturing. Microsoft Office Pro Plus 2010 Crack suite on June 15, 2010, grew to become readily available for all customers, retailers as well as for all online retailers. Microsoft Office Pro Plus 2010 Crack Full may be the first Cracked version that doesn t require product key for activation. In Microsoft Office Pro Plus 2010 Crack, every application has full complete features combined in the interface section. MS Office 2013 Product Key. Microsoft Office Pro Screenshot. Microsoft Office Pro Plus 2010 Crack Activation Process. To begin with Download Microsoft Office Professional Plus 2010 With Crack Full. Now Install This Microsoft Office Professional Plus 2010 Full Cracked. Isn t it about time Download MicroSoft Toolkit Activator for Microsoft Office Professional Plus 2010. Now Simply Click on Microsoft Toolkit and Run it. You now Click really small Office emblem button given. Now just proceed to the Activation Tab. Here Select AutoKMS Button in the Activator or Tools and merely install this. Here you have to click eco-friendly colored given EZ-Activator. Next windows Firewall are you going to request permission ,provide full access. That's all you need to do. Now Your Microsoft Office Professional Plus 2010 Crack Full Package is totally triggered. you can find product keys on this link. About The Author.


A historical seat in Pesaro where production, administration and showroom are concentrated. Many boutiques in the world, selling our creations to an ever-increasing public.
Since 1962 we make unique clothings real: realized with passion, craftmanship and elegance, they are a true point of reference in the world of haute couture.
From fabric conception and creation to manufacturing, up to the finished product, through all the intermediate steps: whether day dresses or night gown, prêt-à-porter or haute couture, we do everything. Even details can be only of the highest quality. An example? On our dresses, uniquely Swarowski crystals. The less than beautiful does not interest us.
Elegance and refinement of models, great research among materials and the most precious yarns, workmanship and meticulous attention to details: these are the fundamental elements of our success. The rest of the miracle are the skilled hands of our knitters, cutters and seamstresses, cleverly orchestrated by the maison's creator, Mrs Maria Tesei.
But dresses themselves are the real prodigy, so refined and wearable as they are at the same time. Incredibly perfect for female figures of any age, which they exalt and enrich with an unforgettable charme.


A combination of modern convenience and classic Bucks County charm. Tucked up in the wooded hillside, this is the only pet-friendly suite at The Bass. Offers a fenced-in yard and outdoor patio, sunroom, king sized bed and jacuzzi tub.


text:
Couple Arraigned on Mortgage and Tax Fraud Charges
Allison Tussey — February 11, 2015 — Leave a comment
Meili Lin, AKA Ally Lin, and Jyh-Chau Horng, AKA Henry Horng, were arraigned on charges of tax and mortgage fraud for allegedly filing false tax returns and submitting mortgage applications to federally insured lenders that contained materially false information.
A federal grand jury in San Jose, California, indicted Lin and Horng on two counts of filing false tax returns, in violation of 26 U.S.C. § 7206(1), on January 28, 2015. Horng was also charged with one count of making false statements to a government agency, in violation of 18 U.S.C. § 1001(a)(2), and two counts of making false statements to a federally insured institution, in violation of 18 U.S.C. § 1014. Lin was also separately charged with one count of making false statements to a federally insured institution, in violation of 18 U.S.C. § 1014.
According to the Indictment, Lin and Horng, then a married couple residing in Saratoga, Calif., filed joint federal income tax returns for 2006 and 2007 which underreported their income, and which failed to disclose Lin's interest in foreign financial accounts in 2006. The Indictment alleges that Horng subsequently made several materially false statements to an IRS Revenue Agent regarding the couple's income and Lin's foreign accounts, among other things. The Indictment further alleges that Lin and Horng both submitted mortgage applications to federally insured lenders that contained materially false information.
The defendants were arrested and made their initial appearances in federal court today in San Jose before the Honorable Paul S. Grewal, U.S. Magistrate Judge. Lin and Horng are next scheduled to appear before Judge Grewal on February 13, 2015 at 1:30 pm.
The maximum statutory penalty for each count of filing a false tax return, in violation of 26 U.S.C. § 7206(1), is three years in prison and a $250,000 fine. The maximum statutory penalty for making false statements to a government agency. in violation of 18 U.S.C. § 1001(a)(2), is five years in prison and a $250,000 fine. The maximum statutory penalty for each count of making false statements to a federally insured institution, in violation of 18 U.S.C. § 1014, is thirty years in prison and a $1,000,000 fine. However, any sentence following conviction would be imposed by the court after consideration of the U.S. Sentencing Guidelines and the federal statute governing the imposition of a sentence, 18 U.S.C. § 3553.
United States Attorney Melinda Haag and Internal Revenue Service, Criminal Investigation Special Agent in Charge José M. Martinez, announced the charges.
Michael G. Pitman is the Assistant U.S. Attorney who is prosecuting the case. The prosecution is the result of an investigation by the IRS, Criminal Investigation.
In Mortgage Fraud	California, Loan App. Misreps
Allison Tussey
Attorney Pleads Guilty to...
Real Estate Attorney / Talk...


text:
Q: Using Castle Windsor child containers to resolve a type with a specific instance I'm currently using Castle Windsor's child container functionality to override the registration of a particular type with a specific instance in a factory method. I am using the child containers purely so that the registration is temporary for a single resolution - in other words, I don't want the registration to affect all resolutions for that type.
Perhaps some code will explain what I mean.
I have a Func which acts as a factory Func<IReportCategory, IReportCategoryViewModel> - I give it an implementation of an IReportCategory and it returns a new instance of an IReportCategoryViewModel. (IReportCategoryViewModel has a dependency on IReportCategory).
This is registered with Castle Windsor as follows:
        container.Register(
            Component.For<Func<IReportCategory, IReportCategoryViewModel>>().Instance(
                category => ResolveCategoryViewModelFactory(container, category)));

Where ResolveCategoryViewModelFactory is implemented as follows:
    private CategoryViewModel ResolveCategoryViewModelFactory(IWindsorContainer container, IReportCategory category)
    {
        using (IWindsorContainer childContainer = new WindsorContainer())
        {
            childContainer.Register(Component.For<IReportCategory>().Instance(category));
            container.AddChildContainer(childContainer);

            return childContainer.Resolve<IReportCategoryViewModel>();
        }
    }

What the above method achieves is the resolution of IReportCategoryViewModel, injecting the specific instance of IReportCategory as a dependency. If IReportCategoryViewModel has other dependencies that need satisfying, then these get automatically injected by the container.
I can subsequently use the Func as follows:
public class Test
{
    private readonly Func<IReportCategory, IReportCategoryViewModel> factory;

    public Test(Func<IReportCategory, IReportCategoryViewModel> factory)
    {
        this.factory = factory;
    }

    public void ResolveTest()
    {
        // Create a category (note: this would probably be resolved from the container in some way)
        IReportCategory category = new ReportCategory();

        // Call into the factory to resolve the view model
        IReportCategoryViewModel vm = factory(category);
    }
    ...

Question: Does this seem like a suitable thing to do? From the impression I get, child containers are not recommended in Castle Windsor - is there another way of achieving the same result?
Thanks for your help.

A: Following Krzysztof's advice to use Typed Factories, here is how I implemented the above functionality. It is far more simpler than using child containers!
Firstly, create a factory interface which defines the signature of the factory method:
public interface ICategoryViewModelFactory
{
    CategoryViewModel Create(ReportCategory category);
}

Next, ensure the TypedFactoryFacility is enabled in the container:
container.AddFacility<TypedFactoryFacility>();

Finally, register the factory interface with the container:
container.Register(
    Component.For<ICategoryViewModelFactory>()
        .AsFactory());

Now you can inject ICategoryViewModelFactory into your classes, and call the Create() method to create a new instance of CategoryViewModel:
public class SomeClass
{
    public SomeClass(ICategoryViewModelFactory categoryViewModelFactory)
    {
        // This would probably be resolved by the container (it's like this for the example)
        ReportCategory category = new ReportCategory();

        // Get Windsor to resolve the view model using the factory
        ReportCategoryViewModel vm = categoryViewModelFactory.Create(category);

        ....

Warning: The parameter name in the factory method needs to match the parameter name of the constructor of the object the factory creates. In the above example, the factory interface defines the method:
CategoryViewModel Create(ReportCategory category)

The constructor for CategoryViewModel must also have the parameter named "category":
public CategoryViewModel(ReportCategory category)

This is because the factory method is the equivalent of the following:
container.Resolve<CategoryViewModel>(new { category = paramPassedIntoFactoryMethod });

A: Absolutely there are better ways to go, and the code you're using right now has a bug - it will try to release all the component instances you're resolving when you dispose of the child container, therefore they might be unusable (disposed) before you even get a chance to use them.
If I understand your explanation correctly it feels like a job for typed factories.

redpajama_set_name: RedPajamaStackExchange


text:
Victoria Falls travel guide
Victoria Falls Tourism | Victoria Falls Guide
You're Going to Love Victoria Falls
Victoria Falls is a small town on the southern bank of the Zambezi River. The town is located west of the infamous Victoria Falls, one of the most popular attractions in all of Africa.
The falls were originally called Mosikalamosikala, which means 'The Smoke That Thunders'. Seeing the Victoria Falls for yourself is an unforgettable experience and staying in the nearby city is also a great way to discover Zimbabwe and its culture.
Victoria Falls has been developing at a fast pace to accommodate the many tourists who travel to the area. Beyond the falls, there are many activities, including sightseeing and exploring the wilderness in the nearby national parks.
Top 5 Reasons to Visit Victoria Falls
1. The Victoria Falls
The falls are more than 300 feet high and almost 150,000 gallons of water go over the cliffs each minute. You can see the falls from the nearby bridge, take a helicopter tour, or get closer to them in a ferry.
2. Learn about the History of the Area
You can visit Livingstone Island and see the falls from where David Livingstone first laid eyes on them. If you are interested in history, take a tour of the Victoria Falls Bridge to learn more about its construction and ride in an old tram carriage.
3. The Activity and Adventure Packages
There are several companies that offer activity and adventure packages in the area. You can see the falls from a helicopter, go rafting or canoeing on the Zambezi River, or bungee jump from the Victoria Falls Bridge if you are an adventurer at heart.
4. The Wildlife
The nearby Victoria Falls National Park and Zambezi National Park are ideal destinations if you want to see African wildlife up close. There are several safari experiences available in the area, including an original safari on horseback.
5. Shopping and Dining
There are many luxury restaurants and African buffets where you can try traditional dishes. You can also shop for art and crafts or spend an evening at the casino that can be found inside of the Kingdom Hotel.
What to do in Victoria Falls
1. Victoria Falls National Park: A Natural Wonder of the World
The lush lands surrounding the world-famous Victoria Falls comprise an epic national park, filled with unique flora and fauna that developed thanks to the spraying waters of these enormous rapids. Of course the waterfalls are the highlight, including Devil's Pool on the Zambian side, but everywhere you go you will also find African wildlife to enjoy - from elephants to hippos.
2. Victoria Falls Bridge: Will You Dare?
Cross from one side of the park to the other using the Victoria Falls Bridge, with awe-inspiring views of the gushing falls. If you dare, you can bungee-jump from the bridge, a drop locals will announce at 110 meters. That's 364-feet! For those who'd rather go up, helicopter rides guarantee even more incredible views over the whole cataract system. These adventures set the tone for your stay in Victoria Falls, with white-water rafting and safaris completing the offer.
3. Zambezi River: Life is But a Dream...
Away from the roaring falls, the Zambezi River slows down to calm pace, perfect for welcoming tourists to the water. Canoeing here is a joyful experience, both relaxing and enthralling at the same time. A unique wildlife experience awaits as you cruise along the river - keep your eyes peeled for Hippos at sunset! Make it a day trip and bring along a picnic, and you will feel totally immersed in the exceptional nature.
4. Elephant's Walk: Art Village and More
A diverse range of local crafts are showcased in this unique shopping village. Experts are kind and welcoming, with answers to all your questions about traditional Zimbabwean craft. Don't miss the Prime Art Gallery, featuring work from Dominic Benhura, Zimbabwe's foremost contemporary artist. The place also offers the adventurous opportunity to go diving with crocodiles and tiger fish, before cooling off with great coffee and good eats.
5. Zambezi Nature Sanctuary: Wildlife Up Close and Personal
Zimbabwe is filled with wildlife and landscape that deserves the highest level of preservation, and this is one of many institutions with such a goal. Lions and leopards roam the protected lands, and sightings of these majestic cats never cease to amaze. But this is not just any old nature sanctuary - it is also a crocodile ranch. Visitors are taught all about these misunderstood reptiles, and are welcomed to step into their environment safely. During hatching season, you can even hold a new baby.
Where to Eat in Victoria Falls
The High Tea salon located inside of the Victoria Falls Hotel is the best place to enjoy a breathtaking view of the falls. If you want to eat where the locals go, try the Africa Cafe or the Mama Africa Eating House, which has excellent stew and also serves grilled meats. The Samukele Restaurant inside the Elephant Hills Hotel and the White Water Restaurant at the Kingdom Hotel are ideal choices if you want a more upscale experience and want to watch a show or listen to live music while you eat. Don't leave Victoria Falls without trying some of the local fast food at the Chicken Inn or Pizza Inn. A fast food meal should only cost US$10 and you should expect to spend US$25 for a mid-range meal. Eating at an African buffet should cost US$35 but you will definitely get your money's worth.
When to visit Victoria Falls
Victoria Falls in December
Estimated hotel price
1 night at 3-star hotel
The falls look more impressive between the rainy season, which lasts from December to March. The downside of seeing the Falls during the rainy season is that you won't be able to get too close because of the spray. The dry season lasts from April to October, which means the water volume will be a lot lower. Seeing the falls in November is ideal if you want to see water volume and still be able to see the rocky ledge of the falls.
Highs Average Lows
HighsAverageLows
Celcius (°C)Fahrenheit (°F)
Celcius (°C)
How to Get to Victoria Falls
The Victoria Falls International Airport (VFA) is 11 miles south of the city and the Harry Mwanga Nkumbula International Airport (LVI) is located three miles north of the city across the border with Zambia. If you land at the Victoria Falls Airport, you can get to town by taking a shuttle or a taxi. A shuttle should cost US$24 and taxi fare should cost between US$30 and US$40. If you land at the Livingstone Airport in Zambia, you will have to take a taxi to the border for US$25, clear customs, and catch another taxi to town for US$5. A shuttle or private transport from the Livingstone Airport should cost US$15.
There is an overnight train between Bulawayo and Victoria Falls. A first-class ticket costs US$12, and you ride in British coaches from the 1950s through breathtaking scenery.
Victoria Falls is 68 miles away from Hwange and 270 miles away from Bulawayo, and the roads are not well maintained. If you decide to rent a car at Livingstone Airport to drive to Victoria Falls, keep in mind that you will have to pay taxes and insurance at the border as well as obtain a temporary import permit for the car.
The Pathfinder Bus Company can take you from Harare to Victoria Falls for US$35 but keep in mind that the trip lasts for 12 hours since the bus stops in several smaller towns. Extracity Luxury is a more direct option that costs US$30.
Airports near Victoria Falls
VFAVictoria Falls
Airlines serving Victoria Falls
Good (2,948 reviews)
Good (359 reviews)
Okay (2 reviews)
Where to stay in Victoria Falls
Victoria Falls North - the northern portion of Victoria Falls is where you will find most of the hotels and safari lodges. Most of the souvenir shops and other tourist attractions can be found in the northeast of the city near the falls.
Popular Neighborhoods in Victoria Falls
Chinotimba - this is the residential area located in the southern portion of Victoria Falls. There are a few hotels, lodges, and restaurants and taking a walk through the streets of Chinotimba is a fun way to discover the city and meet the locals.
The Falls - this is obviously the main attraction of the area. You can see the falls from the nearby Victoria Falls Bridge, get on a ferry, or see them from Livingstone Island.
Where to stay in popular areas of Victoria Falls
How to Get Around Victoria Falls
Most lodges and hotels have their own shuttle that will take you to the falls. There is also a free shuttle service that runs hourly. This free shuttle service stops at most hotels and lodges and will take you to the town center.
You can call a taxi or go to the downtown area to find one. The fare is typically between US$5 and US$10 for anywhere within Victoria Falls and should be agreed upon in advance.
You will find a Europcar location at the Victoria Falls Airport and can rent a car for US$60 a day. You can also rent a bicycle for US$20 a day, which is a more affordable and convenient way to get around town.
The Cost of Living in Victoria Falls
Some of the hotels have small stores that sell souvenirs and luxury goods. Elephant's Walk is the best place to shop for souvenirs, where you will find a music store, several souvenir and art stores, and a taxidermy shop. The Curio Market is right next to Elephant's Walk and is definitely a fun experience, with lot of artists selling wood carvings. If you want to shop for clothes, head to the Phumula Center.
Groceries and Other
You can purchase groceries from the OK Supermarket at the Phumula Center on Park Way. You should be able to purchase a pound of ground beef for US$3, a dozen eggs for US$2, while a loaf of bread should cost US$1.
Hotels in Rotorua
Victoria Falls Travel Guide - View the KAYAK Victoria Falls city guide for the best Victoria Falls travel tips. To help you organise your Victoria Falls trip ideas, this Victoria Falls visitors guide provides travel information and trip tips about how to get there, where to stay, what to do, where to eat and more.


text:
Love Stinks? Bastien Vives' "The Butchery"
On September 23, 2021 September 23, 2021 By Ryan C. (fourcolorapocalypse)
Crucially, in an extended scene that features a couple playing a game of ping-pong both literally and metaphorically, Bastien Vives fixes his focus solely on the man — not just what he's doing, but what he's saying, how he's reacting, what he's feeling. The woman, however, is both silent and invisible — and compared to the treatment women receive from the cartoonist in the rest of The Butchery (originally released in its native France in 2017, newly available in an English language edition from Fantagraphics with translation by Jenna Allen), trust me when I say this is a kindness. It's better not be featured at all than it is to be depicted as, by turns, an unknowable mystery and a frigid, uncommunicative bitch.
Vives drew some heat for the rather "male gaze-y" nature of his recent collaborative graphic novel The Grand Odalisque, but it's hard to say which among the trifecta of himself, Jerome Mulot, and Florent Ruppert was most responsible for what essentially played out as a 100-some-page version of Catherine Zeta-Jones angling her ass to dodge a laser beam in Entrapment. There is, however, no such question here given this is strictly a solo effort. And while we've become depressingly accustomed to stories with the same level of inherent cynicism as this one, it's actually its one-sidedness that begins to grate quickly and never really lets up.
To give credit where it's due, Vives' art is open, minimalist, and entirely apropos given the book's subject matter — the guy's a legit colored pencil virtuoso who is absolutely expert at communicating a hell of a lot of information (particularly emotional information) with very little — but when your theadbare story charting the downward trajectory of a romantic relationship relies more on heavy-handed allegory than it does "actual" events, something's not clicking in your creative process. Right off the bat Vives equates romance with war, which is patently absurd, but the real drag comes in the form of his none-too-subtle delineation of precisely who the "good guy" and the "bad guy" in this conflict are.
I know, I know : Vives is a man, so it's as natural as it is predictable for him to privilege the male point of view, but holy shit, some of this stuff — while always rendered with the utmost delicacy — is so OTT you're halfway tempted to wonder if Dave Sim didn't ghost-write the book. In short : boy meets girl of his dreams, can't believe how lucky he is, and then spends every day agonizing about how he can possibly both please her and connect with her, all to no avail. Her dissatisfaction with him is never spelled out in concrete terms or given the dignity of having actual reasons behind it, no — it's just is. The scene at the beginning where he's on one side of a closed door and she's on the other, depicted (as all things turn out to be) from his vantage point, says it all : she's forever right there, but just out of reach.
Okay, fair enough, neither of this couple is ever given a name, but the guy is at least afforded a chance for readers to get to know him. He's caring, compassionate, probably a bit too eager to please for his own good, but never malicious or cruel or inattentive. When miscommunications arise, it's because she takes everything too personally, or is too mercurial in terms of expressing her wants until it's too late, or is simply "flighty" and prone to follow always-unstated whims with no thought to how such things might affect our poor, well-meaning shmuck who only want to, ya know, love her. Her thoughts and feelings and even the general character of her personality are things Vives doesn't elect to bother with fleshing out, but goddamn if the roles in this relationship aren't perfectly defined : hers is to play a game, and his is to lose it. Eventually, of course, she dumps him, but even then she's a sidelined, her wishes being callously communicated while the two of them sit at a table in a restaurant by a male intermediary in the form of their waiter, who offers the man, in plainly-spoken terms, no sympathy, no empathy, and no understanding. The apotheosis of the self-pitying, misogynistic "man as victim" mindset having been achieved, after this Vives simply limps toward his conclusion, which has been telegraphed from page one anyway.
Somewhat more successful (barring the ping-pong thing mentioned at the outset here) are the allegorical scenes scattered throughout the book featuring another couple altogether who are meant, one would assume, to stand in for all couples — hey, at least both of them are irredeemably shitty to each other. Again, though, when you find yourself looking forward to breaks in what is a very short main storyline in and of itself, then there's something wrong with said main storyline — and that's doubly true when those breaks feature people violently clobbering the fuck out of each other with various implements.
The sole saving grace this book has to offer, as just alluded to, is that at least it's a short and immediately disposable read. Five minutes and you're done, and you can go back to your real relationship with a person who's just that — a person. No strained metaphors for the two (or more, if that's your thing) of you to live up or down to, no sweating whether everything you do or say is going to be precisely the wrong thing to do or say, no Greek-tragedy-in-microcosm "arc" for you to follow. Just a life to navigate and someone to navigate it with you. Is there anything so wrong with that?
In one of this book's few light-hearted moments, our central couple is seen slow-dancing, and while they're always just slightly out of step with each other, they're enjoying both the interplay and the moment. As in real life, it's the attempt that counts, not the end result. Then when the music stops we are treated to a forced and flat "reveal" that shows they were doing this whole thing at home, to a playlist supplied by their PC. Vives would seem to be saying, then, that any fleeting instances of happiness you experience with someone else are not just transitory, but artificial. Love, it would appear, is just a lie that men, specifically, tell themselves and strive to make real, not something to actually be found or experienced — because, as the rest of his story makes plain as day, women will always be impossible to both figure out and to satisfy. It's a total crock of shit, of course. And so is this comic. It's only dubious value lies in its inadvertent encapsulation of a certain pathetic subcultural point of view, namely : if you want to know what the so-called "incels" think relationships are like, this book spells it out.
Bastien VivesThe Butchery
"There's Anything But A Glut Of Non-Commercial Comics Right Now" : Four Color Apocalypse Interviews Austin English
"Please, God – Help Me Be Normal!" Will Make You Glad John Trubee Is Anything But
2 thoughts on "Love Stinks? Bastien Vives' "The Butchery""
This one's REALLY bad.


I guarantee this is a genuine dinosaur tooth. It measures .843 inches in length. The tooth comes with a nice glass topped display box and information card telling about the tooth. This is a great gift idea for a fossil lover!


If a book that you need is unavailable at the College of Staten Island Library, you may be able to request it from another CUNY library. The CUNY Library Inter-Campus Services (CLICS) will deliver your requested book to the CSI Library and notify you when it is availabile.
<< Previous: How do I request an interlibrary loan?


Why Sponsor SMPS Fort Worth?
SMPS boasts 7,000+ members who are active in 50+ chapters across the United States and Canada. These individuals support the SMPS mission to advocate for, educate, and connect leaders in the building industry. Gain year-round access to leaders in the A/E/C industry and support SMPS, its members, and its mission by becoming a sponsor today.
Who should consider sponsoring SMPS Fort Worth?
How do I become an SMPS Fort Worth Sponsor?
We welcome and appreciate in-kind support as another option.
In-Kind sponsorship is open to all interested companies. Please note there may be overlapping or competing disciplines represented as sponsors. Representatives from sponsoring companies will pay the registration price for programs or luncheons unless otherwise noted as a benefit of sponsorship level. Companies can become sponsors at any time during the year if sponsorships are available. Sponsorship "Member" rates are available to firms with a SMPS membership to any chapter.
* Registrations for special events and workshops offered at a discount.
Get ahead of your competition. Be different. Lead by example.
How will my sponsorship dollars be used?
Contact the Sponsorship Director (sponsorship@smpsfortworth.org) with the title(s) of the webinar(s) to check-out of the library.
Become an SMPS Fort Worth Sponsor Today!
Contact the Sponsorship Director TODAY!


text:
Dysmilichia phaulopsis is een vlinder uit de familie uilen (Noctuidae). De wetenschappelijke naam van deze soort is voor het eerst geldig gepubliceerd in 1938 door Brandt.

De soort komt voor in tropisch Afrika.

phaulopsis
Dier uit het Afrotropisch gebied


At IETF76 in Maastricht I had a long discussion with Sander Steffann, IPv6 advocate and RIPE Address Policy WG co-chair. We talked about my idea, how could Google and all other search engines really trigger massive transition of internet content (and content providers) to IPv6.
Deployment and adoption of IPv6 is slow at this point in time. This can be a risk for future growth of the internet. One of the observed obstacles is that content providers are waiting for IPv6 viewers, and viewers are waiting for IPv6 content. We propose a slight change the search engine scoring algorithms to stimulate content providers to make their content accessible over IPv6.
We propose that search engines check whether a website is available over both IPv4 and IPv6. Having the same content available over both lower level protocols is the situation that will give the IPv4 to IPv6 transition the largest chance of succeeding. The way to determine if a website has 'good' IPv4 and IPv6 support is an implementation detail of the search engine.
Websites that are available over both protocols should then get some kind of bonus when compared to websites available over only IPv4 or IPv6. One possible idea is to use this as a tiebreaker when two pages get the same score based on the original scoring algorithm. Another possibility is to give the website a 5% bonus in the scoring algorithm. This choice is an implementation detail of the search engine.
The search engine operator should then make it publicly known that IPv6 support will have a positive impact on the search engine scoring algorithm.
This will stimulate website owners to make their websites available over IPv6, which benefits the whole internet community. For cases where the website owner makes use of services from a separate website hoster this hoster will also be stimulated to support IPv6. It will also send a signal that the search engine operator sees IPv6 support as being important for the future of the internet. Improving the future internet is also in the best interest of the search engine operator itself, as their business is based on the content available on the internet.
This proposal changes the scoring algorithm of the search engine, which is a very important part of the quality that the search engine provides. Using IPv6 support only as a tiebreaker or as a small component in this algorithm minimizes the impact. Another con can be that the public will see the search engine operator as pushing a technology instead of focussing on returning the search results that are 'best' for the end user. A counter argument to this can be that making content available over IPv6 is in the long term in the users best interest.
Comments and debate warmly welcome!
I forsee a problem as this inherently requires dual stacked www (et al) records and dual stacking is famously ropy where end users have broken or partial v6 implementation/visibility as is, sadly, very often the case.
Great idea and good work putting it together.
It seems to me to be a reasonable proposal given that search engines already take into account factors other than the content of the web-site.
Of course I am biased as our web-sites are all IPv6 enabled!
(It is *important* to have dual-stack content *now* – so that the remaining issues can get fixed in time. Waiting until the big boom is not going to make the transition any smoother).
Erion IPv6 Blog » Blog Archive » IPv6 Web Servers - Might Improve Your Rankings?
I like the Google whitelist but search engines should announce AAAA records (without whitelists) before doing this. They can't say that they don't want 0.1% users with problems but we expect that you take it for granted. No flam..
Is this the businesses cause for IPv6?


text:
TV's Kate Humble wants you for new show - how to apply
Sue Wilkinson
Published: 15:01 Thursday 20 June 2019
Kate Humble is set to host a new television series for Channel 5 and is looking for people to take part.
The channel has commissioned Glasgow based production company, Raise the Roof Productions and Motion Content Group to make Twice The Life for Half The Price, an aspirational life change series for families looking for the ultimate quality of life.
The six-part series, earmarked for transmission later in the year, helps families desperate to leave the rat race behind and radically transform their quality of life.
Kate Humble said:
"Over a decade ago I made a big move, waved goodbye to life in the city and set up home in rural Wales," said Kate.
"It was a huge change and even though I had grown up in the country, I soon discovered I had lots to learn.
"I am really looking forward to meeting the families who are about to undertake this same journey, following their progress and hopefully being able to help and support them along the way. Will leaving behind the hubbub of city life help them achieve their dream of Twice the Life?"
Whether they are moving to run a smallholding, a B&B, or to make the most of the great outdoors, the series will see them list their cramped suburban semi, and get on the road to the ultimate change under the guidance of presenter Kate Humble who will offer motivation, tips and a wealth of support.
They are looking for people who have decided to make a new start and people moving far from their current location to buy in a rural area are especially encouraged to apply. This is not about second homes, this is about people moving and settling into a community.
Raise the Roof Productions is an independent television production company partly owned by Kirstie Allsopp and Phil Spencer that specialises in making factual programmes.
People who take part in this upcoming series will benefit from advice and support from its presenter, Kate, an advocate of rural living, to help them overcome the challenges of the move and settle into their brand new life. For details on how to apply, email: life@raisetheroofproductions.com.
Auditions now open for new show at Scarborough's Open Air Theatre - how to get involved
Giovanna Fletcher takes her first Happy Mum, Happy Baby on tour - where you can see her
Drivers to be diverted through fire station in next phase of flood defence works
Alan's legacy lies in groups he has inspired
European Olympic Youth Festival: Calderdale teens Isobel Kitchen and Luke Whitehouse included in 44-strong Team GB squad
Full line up announced for Happy Valley Pride 2019


White Sox right-hander Jake Peavy has taken three complete-game losses on his way to going 9-8 with a 3.04 ERA this year. The only other pitcher in either league with more than one is Justin Verlander, and he has two. CSNChicago's Chuck Garfien has the full rundown on Peavy's string of bad luck this year, and it's worth a read.
With maybe nine starts left, this has a chance to go down as Peavy's best season, according to Baseball-Reference's WAR anyway. Peavy went 19-6 with a 2.54 ERA and 240 strikeouts on his way to winning the Cy Young Award for the Padres in 2007, but he's in a more hostile environment in the American League and U.S. Cellular Park now. bWAR has him at 4.6 wins for 2012, just behind his 2004 total of 4.7 for the second-best season of his career. His 2007 season came in at 5.9 wins.


text:
Subscribe to our Construction newsfeed
State-Of-The-Art Bridge Installed On Queen Elizabeth Olympic Park
A new pedestrian and cycle bridge has been installed on Queen Elizabeth Olympic Park in London.
Contractors GRAHAM and Mace worked on Christmas Day last year to complete the installation, connecting East Bank to International Quarter London.
The 350-ton steel Carpenters Land Bridge is a key part of the infrastructure for East Bank, the new £1.1 billion culture and education district being created on Queen Elizabeth Olympic Park. The new connection will link the buildings of Sadler's Wells, the BBC, UAL's London College of Fashion and the V&A, including a partnership with the Smithsonian Institution, with the new business district at International Quarter London.
GRAHAM is the project's civil engineering contractor and Principal Contractor for the Installation of Carpenters Land Bridge. Mace is the London Legacy Development Corporation's project management partner and principal contractor for the East Bank development.
GRAHAM's team took advantage of the rail network Christmas shutdown to rotate the bridge in to position and minimise disruption to three Network Rail lines, two DLR lines and Carpenters Road.
The bridge was manoeuvred into place using self-propelled modular transporters (SPMTs) rather than a traditional crane to reduce the risk of cancellation caused by potential high winds.
Justine Simons OBE, Deputy Mayor for Culture and the Creative Industries, said: "The installation of the Carpenters Land Bridge is another key moment in the East Bank development. It will provide access to local people and visitors from around the globe to the world-leading institutions that are set to be based at the country's new powerhouse of culture, education, innovation and growth."
Jason Millett, Mace's Chief Executive Officer for Consultancy, added: "The East Bank development at Stratford Waterfront is a vital element of the continued regeneration of the Queen Elizabeth Olympic Park and the installation of Carpenters Land Bridge is a major milestone in unlocking this new cultural and education district.
"As LLDC's project management partner and principal contractor on Stratford Waterfront, Mace has the privilege of overseeing the entire delivery of the East Bank scheme, but this bridge lift certainly stands out as one of the most memorable moments so far. The dedication of everyone involved to achieve such a complex operation under incredibly challenging time constraints – and on a day that's very important to a lot of people – must be praised."
(CM/MH)
Latest Construction News
Proposals Unveiled To Transform London's Public Spaces
A number of public spaces in the Victoria area of London are set to be transformed into more welcoming environments thanks to a new project. Victoria and Victoria Westminster Business Improvement Districts (BIDs) and Urban Flow have developed a vision for the sites which will focus on reducing tra
Construction Skills Leader Awarded MBE
One of the UK's construction skills leaders is set to be honoured with an MBE later this year. John White, who serves as a director at The Skills Centre's Southwark construction base, was recognised for his determination to empower a community through his tireless work to help find people work and
Caddick Invests In New Cumbria Office
Caddick Construction has responded to continuing success across Cumbria with the opening of a new satellite office. The new office at Helm Bank in Kendal will allow the north west team to work from a permanent base, running in tandem with the firm's current headquarters at Warrington where the bul
Modular Building Helps Address Housing Shortfall In Barking
Barking Council has utilised the modular construction method to ensure a quick delivery of much-needed homes in the area. Be First, the council's pioneering regeneration company, commissioned specialist construction company Rollalong to build and deliver the 13 modular homes for Sugden Way, which
Brighton Church To Be Transformed Into New Homeless Accommodation
A project is moving forward to transform a church in Hove into an accommodation facility for homeless people. St Patrick's Church, which is located on Cambridge Road, will be run by YMCA DownsLink Group and the Churches Night Shelter Project and includes 29 short-term homes and a 365 day a year nig
Neighbourhood Development Launches In Chichester
A project to create a new 100-home neighbourhood in Chichester is underway. This scheme will see the development of a new community at New Fields featuring homes with public open space and a park. Chichester District Council is also considering a new planning application for the site, which would
Wates Property Services Sets Out Vision For 2020 And Beyond
Wates Property Services (WPS) has set out its vision for the next few years with ambitions to reach an annual turnover of £500 million by 2024. This pledge comes after the business, formed of Wates Living Space and Wates FM, ended its inaugural year of operation. This year saw the launch of Wates F
Falcon Active Speed Door To Be Showcased At MACH 2020
The Falcon Active Speed Door is a high-speed industrial roller shutter door designed for frequent high-speed traffic in manufacturing processes including laser processing applications. It is ideal for indoor or outdoor installations using rapid incoming and outgoing logistics operations. The door h
Royal Greenwich Trust School Extension Tops Out
A major extension project at Royal Greenwich Trust School (RGTS) has reached a key milestone. The three-storey extension reached the highest point of construction, resulting in a special topping out ceremony to mark the occasion. The £13.4 million development features brand new classrooms, includ
Staffordshire University Hands Out £27m Construction Contract
A new contract has been dished out by Staffordshire University for the development of its new Catalyst Building. VINCI Construction has been awarded the £27m design and construct project to deliver the flagship centre for apprentices and digital skills. The state-of-the-art facility will support


A variant of Chlamydia trachomatis that had escaped detection by commonly used systems was discovered in Sweden in 2006. In a nationwide study, we found that it is now prevalent across Sweden, irrespective of the detection system used. Genetic analysis by multilocus sequence typing identified a predominant variant, suggesting recent emergence.


text:
Nuclear Issues--North Korea nuclear program (42)
International Relations--U.S. foreign policy (33)
Nuclear Issues--Nuclear weapons (15)
Nuclear Issues--Nuclear proliferation (12)
(-) International Security & Defense--Homeland security (5)
International Relations--Islam (3)
(-) Economics & Global Affairs--Economic Policy (1)
Governance--European studies (1)
International Security & Defense (14)
Nuclear Issues (16)
Asia & the Pacific (10)
(-) Audio (11)
(-) Broadcast Appearance (5)
Infographics & Charts (1)
Analysis & Opinions - MSNBC
How Will Trump's Iran Deal Decision Impact Foreign Policy?
Jake Sullivan
Read more about How Will Trump's Iran Deal Decision Impact Foreign Policy?
Before President Trump announces his decision on the Iran Deal, Former US Ambassador to NATO Nick Burns and Former Senior Policy Advisor for Hillary Clinton's Campaign Jake Sullivan join Andrea Mitchell to discuss what this decision could mean for foreign policy.
Analysis & Opinions - CNBC
"Trump's 'Rocket Man' Comment Tends to Divide People"
Read more about "Trump's 'Rocket Man' Comment Tends to Divide People"
Amb. Nicholas Burns, Harvard Kennedy School professor and former undersecretary of State for political affairs (2005 to 2008), provides his thoughts on the Trump administration's handling of North Korea's threat, and the message Kim Jong Un is attempting to send by lobbing missiles over Japan.
On North Korea: China's Angry But not Angry Enough
Read more about On North Korea: China's Angry But not Angry Enough
President Trump needs to encourage nations to impose stronger economic sanctions, says Amb. Nicholas Burns, Harvard Kennedy School professor, weighing in on combating North Korea's threats.
Nicholas Burns: North Korea's Missile Launch One of the Most Provocative and Dangerous in Decades
| Aug. 29, 2017
Read more about Nicholas Burns: North Korea's Missile Launch One of the Most Provocative and Dangerous in Decades
Professor Burns discusses North Korea's missile threat on CNBC's Squawk Box. He said that this test could be a prelude to negotiations and presents a real challenge to the Trump administration.
Fox Business Network
Analysis & Opinions - Fox News
Looking at a White House in disarray
Read more about Looking at a White House in disarray
Nicholas Burns, former State Department undersecretary, on the tensions between President Trump and Attorney General Jeff Sessions and Trump's handling of U.S. foreign policy.
News - WBEZ 91.5 Chicago
Nuclear Security Summit Underway In Washington, DC
Read more about Nuclear Security Summit Underway In Washington, DC
Senior Fellow Will Tobey speaks with WBEZ 91.5 Chicago about the Obama administration's nuclear security accomplishments ahead of President Obama's fourth and final nuclear security summit.
Podcast: Saudi Arabia's Foreign Policy Amidst Regional Instability with Prince Turki Al Faisal
Prince Turki Al Faisal
Read more about Podcast: Saudi Arabia's Foreign Policy Amidst Regional Instability with Prince Turki Al Faisal
An audio recording from His Royal Highness Prince Turki Al Faisal of the Kingdom of Saudi Arabia, former Saudi Arabian Ambassador to the United States (2005-2007) and former Director General of Saudi Arabia's General Intelligence Directorate (1977-2001).
On November 18, 2014 Prince Turki spoke on regional instability and forces at work in the region, including power politics, energy markets, violent extremism, and theological divides, in a public address moderated by Kennedy School professor Nicholas Burns.


CENTENNIAL, Colo. (CBS4) – At noon Wednesday, Denver Restaurant Week released the menus that will be available to foodies this year. Colorado native and Cherry Creek High School alum Coral Eby looks forward to Denver Restaurant Week each year.
"As the city has become more diverse, so has the food scene," she said.
She's been participating in the experience since she moved back to Colorado 10 years ago.
"The menus at that point were $52.80 for two people and kind of a limited list of restaurants and now it's evolved into a much bigger thing through the years," she said.
There are now three different price points and over 200 participating Denver restaurants.
"I normally have a pretty good strategy for going through and doing this and this year it sort of caught me by surprise because life is a little busy," Eby said as she looked at the menus on the Denver Restaurant Week website.
In addition to helping run her family business, Eby is a mother of two.
Her advice to anyone wanting to participate?