text:
s3motion
======================
s3motion is a combination of both a command line utility and REST based microservice used to upload and download local objects and transfer objects between S3 compatible storage.

## Description
s3motion creates a simple CLI user interface or REST based microservice for migrating, copying, uploading, and downloading of objects to S3 compatible storage. The uses cases can be:
- a command line tool to upload/download objects
- a move/copy individual objects at scheduled intervals between buckets
- migrate between services. copy entire bucket, then change your application to point to new service

## Installation
Make sure node.js and npm is installed first, then install it globally by issuing: `npm install s3motion -g`

To run it as a microservice by utilizing the REST implementation, deploy it in a docker container that can be called from any application. `docker run -d -p 8080:8080 kacole2/s3motion`. To interact with the container for CLI purposes, you can `docker run -ti --entrypoint=/bin/bash kacole2/s3motion`

## CLI Usage
All commands are accessible via the `-h` or `--help` flag. Only one flag can be used during a single command. There are two modes to run the CLI utility. You can choose to pass all arguments through a single command, or run the wizard. To run the wizard simply type `wiz` or `wizard` after your chosen flag (ie `s3motion -n wizard`).

- `-n` or `--newClient`: Add a new client to a locally stored s3motionClients.json object. The clients are used as a way to store credential information locally and pipe those in for operational use. The s3motionClients.json will be stores in the current users working home directory. Here are the following arguments that can be passed for a single line command:
	- `--name`: This is an arbitrary name you are using to identify your client. This name must be unique and cannot be the same as one previously used. If you want to use a previously configured name, edit the s3motionClients.json object. This is a required argument.
	- `--accessKeyId`: This is the S3 Access Key/ID. This is a required argument.
	- `--secretAccessKey`: This is the S3 Secret Access Key. This is a required argument.
	- `--endpoint`: Only specify this if you are trying to access third-party S3 compatible storage. If you are adding a new client for AWS, leave this blank. The endpoint assumes `https` and port `443`, therefore, a DNS or IP address will work such as `vipr.emc.com`. If your storage uses unsecured access, then you must specify the protocol and port such as `http://vipr.emc.com:80`. If you're endpoint uses a different port that can be specified as `vipr.emc.com:10101` which assumes `https`.
- `-L` or `--listClients`: List all the clients available in the s3motionClients.json object. No arguments needed for this command.
- `-b` or `--listBuckets`: List all the avialable buckets for a specific client. Here are the following arguments that can be passed for a single line command:
	- `--client`: Specify the name of the locally configued client. This is a required argument.
- `-N` or `--newBucket`: Create a new bucket for a client. Here are the following arguments that can be passed for a single line command:
	- `--client`: Specify the name of the locally configued client. This is a required argument.
	- `--name`: Specify the name of the new bucket. This is a required argument.
- `-l` or `--listObjects`: List all the objects in a bucket. Here are the following arguments that can be passed for a single line command:
	- `--client`: Specify the name of the locally configued client. This is a required argument.
	- `--bucket`: Specify the name of the bucket. This is a required argument.
- `-d` or `--downloadObject`: Download an object(s) from a bucket. Here are the following arguments that can be passed for a single line command:
	- `--client`: Specify the name of the locally configued client. This is a required argument.
	- `--bucket`: Specify the name of the bucket. This is a required argument.
	- `--object`: Specify the name of the object. If the object is nested within a folder, specify the directory listing as well: `images/myimages/avatar.png`. You can also specify multiple objects to download by using a comma and no spaces such as `object1.png,object2.png,images/myimages/avatar.png`. This is a required argument.
	- `--folder`: Specify the location on your local machine where the object(s) will be download to. `/Users/me/Desktop`. If no folder is specified, then the object is downloaded to the current working directory. This is an optional argument.
- `-u` or `--uploadObject`: Upload an object(s) to a bucket. Here are the following arguments that can be passed for a single line command:
	- `--client`: Specify the name of the locally configued client. This is a required argument.
	- `--bucket`: Specify the name of the bucket. This is a required argument.
	- `--object`: Specify the name of the object. By default, uploaded objects will be placed in the root directory. This is a required argument.
	- `--folder`: Specify the location on your local machine where the object(s) will be uploaded from. `/Users/me/Desktop`. If no folder is specified, then the object is downloaded to the current working directory. This is an optional argument.
- `-D` or `--deleteObject`: Delete an object(s) from a bucket. Here are the following arguments that can be passed for a single line command:
	- `--client`: Specify the name of the locally configued client. This is a required argument.
	- `--bucket`: Specify the name of the bucket. This is a required argument.
	- `--object`: Specify the name of the object. If the object is nested within a folder, specify the directory listing as well: `images/myimages/avatar.png`. You can also specify multiple objects to delete by using a comma and no spaces such as `object1.png,object2.png,images/myimages/avatar.png`. This is a required argument.
- `-c` or `--copyObject`: Copy an object(s) from one client to another. Here are the following arguments that can be passed for a single line command:
	- `--sourceClient`: Specify the name of the locally configued client where the object is stored. This is a required argument.
	- `--sourceBucket`: Specify the name of the bucket where the object is stored. This is a required argument.
	- `--object`: Specify the name of the object. If the object is nested within a folder, specify the directory listing as well: `images/myimages/avatar.png`. You can also specify multiple objects to copy by using a comma and no spaces such as `object1.png,object2.png,images/myimages/avatar.png`. This is a required argument.
	- `--destClient`: Specify the name of the locally configued client where the object will be copied to. This is a required argument.
	- `--destBucket`: Specify the name of the bucket where the object will be copied to. This is a required argument.
	- `--delete`: Default is `n` which means the source copy will remain in the bucket. Specify `Y` if the source object should be deleted upon a successful transfer.
- `-C` or `--copyBucket`: Bulk copy process for all object from one bucket to another. Here are the following arguments that can be passed for a single line command:
	- `--sourceClient`: Specify the name of the locally configued client where the object is stored. This is a required argument.
	- `--sourceBucket`: Specify the name of the bucket where the object is stored. This is a required argument.
	- `--destClient`: Specify the name of the locally configued client where the object will be copied to. This is a required argument.
	- `--destBucket`: Specify the name of the bucket where the object will be copied to. This is a required argument.

- `s3motion -R` or `s3motion --REST`: Start a webservice listening on port 8080 for REST based commands.

## REST Usage
In addition to running this as a command line, it can also accept REST requests. To begin the microservice to accept REST commands use `s3motion -R`. You will see a message that says **s3motion microservice started on port 8080**. All requests must go through /api, for example `http://myserver.mycompany.com:8080/api`. All requests are returned with JSON. The default port used is always `:8080`.

The following REST commands are available to you.

- /api/clients
  - GET: Returns a JSON object with all clients configured in the s3motionClients.json object

			GET http://127.0.0.1:8080/api/clients
			Status: 200 OK
			JSON:
			{
			  clients: [3]
				0:  {
				  name: "vipronline"
				  accessKeyId: "*******"
				  secretAccessKey: "*********"
				  endpoint: "object.vipronline.com"
				}-
				1:  {
				  name: "aws"
				  accessKeyId: "*******"
				  secretAccessKey: "********"
				}-
				2:  {}
			}
  - POST: Creates a new client in the s3motionClients.json object. Payload requires `name`, `accessKeyId`, and `secretAccessKey` while `endpoint` is optional.

			POST http://127.0.0.1:8080/api/clients
			Status: 200 OK
			JSON:
			{
			  operation: "newClient"
			  client: "APItest"
			  accessKeyId: "gniowrngosejbrjs90u390289r342nv"
			  secretAccessKey: "fwefew7&^7@(*fec9#**vcuovcuyvwu"
			  status: "success"
			}

- /api/buckets/:client
  - GET: Returns a JSON object with all buckets for a client

			GET http://127.0.0.1:8080/api/buckets/vipronline
			Status: 200 OK
			JSON:
			{
			Buckets: [2]
			  0:  {
				Name: "s3jump"
				CreationDate: "2015-01-30T16:59:28.026Z"
			  }
			  1:  {
				Name: "s3motion_vipr01"
				CreationDate: "2015-01-15T18:37:41.182Z"
			  }
			Owner: {
				DisplayName: "user056"
				ID: "user056"
			}
			}
  - POST: Creates a new bucket for a client. Payload requires `name` for the bucket.

			POST http://127.0.0.1:8080/api/clients
			Status: 200 OK
			JSON:
			{
				Location: "/apitest"
			}

- /api/bucket/copy
  - POST: Copies one bucket to an another in its entirety. Payload requires `sourceClient`, `sourceBucket`, `destClient`, and `destBucket`. You will never get a "success" status message as a response because depending on the amount of objects that must be copied over could take a while and the browser will timeout.

			POST http://127.0.0.1:8080/api/bucket/copy
			Status: 200 OK
			JSON:
			{
				operation: "copyBucket"
				sourceClient: "aws"
				sourceBucket: "s3motion01"
				destClient: "vipronline"
				destBucket: "s3motion_vipr01"
				status: "running"
			}

- /api/objects/:client/:bucket
  - GET: Returns a JSON object with all objects in a bucket. Depending on the amount of objects, the browser may timeout. The timeout is currently set to 4 minutes for Express.js, but most browsers will timeout after 2 minutes. You will need a browser with a configurable timeout to wait for the objects to be collected. Anything greater than >100,000 objects will more than likely timeout after 2 minutes.

			GET http://127.0.0.1:8080/api/objects/vipronline/s3motion_vipr01
			Status: 200 OK
			JSON:
			[1]
			  0:  [4]
				0:  {
				  Key: "object1.ics"
				  LastModified: "2015-02-05T15:30:28.846Z"
				  ETag: ""699e612ef53db0c730ba2b809935509d""
				  Size: 3391
				  StorageClass: "STANDARD"
				  Owner: {
				    DisplayName: "user056"
				    ID: "user056"
				  }
				}
				1:  {
				  Key: "object2.xlsx"
				  LastModified: "2015-02-05T15:30:29.459Z"
				  ETag: ""fcb4a7c70c7c70df8484f0a44d34b22f""
				  Size: 26483
				  StorageClass: "STANDARD"
				  Owner: {
				    DisplayName: "user056"
				    ID: "user056"
				  }
				}
				2:  {
				  Key: "object3.xlsx"
				  LastModified: "2015-02-05T15:30:28.927Z"
				  ETag: ""ad6e381175f42a9b2b26f90a068a3823""
				  Size: 13428
				  StorageClass: "STANDARD"
				  Owner: {
				    DisplayName: "user056"
				    ID: "user056"
				  }
				}
				3:  {
				  Key: "object4.csv"
				  LastModified: "2015-02-05T15:30:28.918Z"
				  ETag: ""9a058b5b07578848b8d2406ded823d7e""
				  Size: 7792
				  StorageClass: "STANDARD"
				  Owner: {
				    DisplayName: "user056"
				    ID: "user056"
				  }
				}
  - POST: Uploads an object to a specific bucket and client. Payload requires `object`. `object` can be in the form of comma seperated values. `folder` is an optional parameter to specify where on the host object system the object is located. By default, uploads will go to the root of the bucket.

			POST http://127.0.0.1:8080/api/objects/vipronline/s3motion_vipr01
			Status: 200 OK
			JSON:
			{
			  operation: "objectUpload"
			  objects: "object1.png,object2.jpg"
			  folder: "/home/kcoleman"
			  client: "vipronline"
			  bucket: "s3motion_vipr01"
			  status: "complete"
			}
  - DELETE: Deletes an object(s) in a specific bucket and client. Payload requires `object`. `object` can be in the form of comma seperated values.

			DELETE http://127.0.0.1:8080/api/objects/vipronline/s3motion_vipr01
			Status: 200 OK
			JSON:
			{
			  operation: "objectDelete"
			  objects: "object1.jpg,object2.gif"
			  client: "vipronline"
			  bucket: "s3motion_vipr01"
			  status: "complete"
			}

- /api/object/copy
  - POST: Copies an object(s) from one bucket to another. Payload requires `sourceClient`, `sourceBucket`, `destClient`, `destBucket`, and `object`. `object` can be in the form of comma seperated values. You will never get a "success" status message as a response because depending on the amount of objects that must be copied over could take a while and the browser will timeout.

			POST http://127.0.0.1:8080/api/bucket/copy
			Status: 200 OK
			JSON:
			{
		      operation: "objectCopy"
			  objects: "object1.jpg,object2.gif"
			  sourceClient: "aws"
			  sourceBucket: "s3motion01"
			  destClient: "vipronline"
			  destBucket: "s3motion01_vipr01"
			  status: "running"
			}

- /api/object/download
  - POST: Downloads an object(s) from one bucket to the host running the microservice. Payload requires `client`, `bucket`, and `object`. `object` can be in the form of comma seperated values. `folder` is an optional value to specify the download location on the host.

			POST http://127.0.0.1:8080/api/bucket/copy
			Status: 200 OK
			JSON:
			{
		      operation: "downloadObject"
			  object: "object.json"
			  folder: "/home/user"
			  client: "vipronline"
			  bucket: "s3motion_vipr01"
			  status: "complete"
			}

## Troubleshooting
When using a 3rd party S3 storage service (not AWS) there are instances when the server returns a header without `content-length` and instead specifies `transfer-encoding: chunked`.
```
{ date: 'Fri, 06 Feb 2015 20:18:09 GMT',
  server: 'ViPR/1.0',
  'x-amz-request-id': '0a6c5fc3:14af4ae3238:f7f1:b',
  'x-amz-id-2': '97e9f1ba70052a7b85e9db09cd13f09454828f6f0a5b92e5f691c07656a7ec10',
  etag: '"e1f0060d53cbfab7f917642abaa7a1c6"',
  'last-modified': 'Fri, 06 Feb 2015 16:09:15 GMT',
  'x-emc-mtime': '1423238955945',
  'content-type': 'application/zip',
  'transfer-encoding': 'chunked' }
```
This means the download process for a file will not happen because of how the [node-s3-client](https://github.com/andrewrk/node-s3-client) handles it. [Pull-request 76](https://github.com/andrewrk/node-s3-client/pull/76) will fix this behavior.

## Future
- Add these functions depending on necessity
  - delete bucket including all objects (scary)
  - sync buckets between endpoints
  - upload object to a specific folder inside a bucket (just needs another param)
  - error messages for incorrect bucket spelling
  - bucket copy process don't specify destination Bucket, just copy the name of the source bucket.
  - bucket copy process needs to copy empty folders or create those entries on the destination bucket.
- Continue Microservice using Express.js
- Clean up the code
  - break out into multiple objects
- Web front end
- Create logging functionality

## Contribution
- Fork it, merge it

Licensing
---------
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at <http://www.apache.org/licenses/LICENSE-2.0>

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Support
-------
Please file bugs and issues on the Github issues page for this project. This is to help keep track and document everything related to this repo. The code and documentation are released with no warranties or SLAs and are intended to be supported through a community driven process.


text:
Q: Read Image from MS Access Database from C# WPF Application My question is about:

*

*So I can connect to an MS Access Database and read from it.

*Store the data from the data table.

*Cannot convert the byte[] data to a displayable image for my WPF
application

*I am trying to retrieve a jpeg or png image
Here is my code for Database Connection (Successful code):
public static void getTableItems(DataTable dt, int bodySectionNo)
    {
        // gets the oledbconnection object to open and access
        var con = GetConnection();

        try
        {
            con.Open(); // opens db connection
            // creates the sql query for db items change bodysection = # for different bodySections
            OleDbCommand command = new OleDbCommand("SELECT itemNo, itemName, NSN, bodySection, Image.FileName, Image.FileData, Image.FileType  FROM tblItems WHERE bodySection = " + bodySectionNo + ";", con);

            OleDbDataAdapter oleAdapter = new OleDbDataAdapter(command); // executes the command and retrieves the data from the db

            oleAdapter.Fill(dt); // fills the datatable with the query results
        }
        catch(Exception e)
        {
            // writes to console any errors for this connection
            Console.WriteLine("ERROR: getTableItemsForHead, " + e.Message);
        }
        finally
        {
            con.Close(); // closes db connection
        }
    }

In my MainWindow.xaml.cs file I am trying to read through the datatable, store the data, and then pass the data into an element for the mainwindow to display.
Here is my MainWindow.xaml.cs code (Unsuccessful code):
private void populateComboBox(DataTable dt, ComboBox cb)
    {
        foreach (DataRow row in dt.Rows)
        {
            WrapPanel wp = new WrapPanel();
            TextBlock txtItemName = new TextBlock();
            TextBlock txtNSN = new TextBlock();
            Image img = new Image();

            // creates a textbox and adds it to wrappanel
            txtItemName.Text = Convert.ToString(row["itemName"]) + " ";
            wp.Children.Add(txtItemName);

            // creates a textbox and adds it to wrappanel
            txtNSN.Text = Convert.ToString(row["NSN"]) + " ";
            wp.Children.Add(txtNSN);

            // stores image properties from datatable
            var fileName = row["Image.FileName"];
            var fileData = (byte[])row["Image.FileData"];
            var fileType = row["Image.FileType"];

            BitmapImage bi = new BitmapImage();
            bi.BeginInit();
            bi.CreateOptions = BitmapCreateOptions.None;
            bi.CacheOption = BitmapCacheOption.Default;
            bi.StreamSource = new MemoryStream(fileData);
            bi.EndInit();

            img.Source = bi;

            wp.Children.Add(img);

            cb.Items.Add(wp);
        }
    }

I have tried multiple different ways to convert the byte[] to bitmap, bitmapimage, bitmapsource, image, imagesource, etc.. and I can not find the snippet to resolve this "No Imaging component suitable to complete this operation was found"
It breaks on the bi.EndInit(); line.

System.NotSupportedException was unhandled by user code
  HResult=-2146233067   Message=No imaging component suitable to
  complete this operation was found.   Source=PresentationCore
  StackTrace:
         at System.Windows.Media.Imaging.BitmapDecoder.SetupDecoderFromUriOrStream(Uri
  uri, Stream stream, BitmapCacheOption cacheOption, Guid& clsId,
  Boolean& isOriginalWritable, Stream& uriStream, UnmanagedMemoryStream&
  unmanagedMemoryStream, SafeFileHandle& safeFilehandle)
         at System.Windows.Media.Imaging.BitmapDecoder.CreateFromUriOrStream(Uri
  baseUri, Uri uri, Stream stream, BitmapCreateOptions createOptions,
  BitmapCacheOption cacheOption, RequestCachePolicy uriCachePolicy,
  Boolean insertInDecoderCache)
         at System.Windows.Media.Imaging.BitmapImage.FinalizeCreation()
         at System.Windows.Media.Imaging.BitmapImage.EndInit()
         at CWEDA_take_1.SecondWindow.populateComboBox(DataTable dt, ComboBox cb) in P:\All Documents\BBMD 18\CWEDA EH\CWEDA Design 1\CWEDA
  take 1\SecondWindow.xaml.cs:line 286
         at CWEDA_take_1.SecondWindow..ctor() in P:\All Documents\BBMD 18\CWEDA EH\CWEDA Design 1\CWEDA take 1\SecondWindow.xaml.cs:line 36
  InnerException:
         ErrorCode=-2003292336
         HResult=-2003292336
         Message=The component cannot be found. (Exception from HRESULT: 0x88982F50)
         InnerException:

EDIT: file data that is in the byte[]

EDIT: SOLUTION!! I figured this out a bit ago, but forgot to upload my solution:
I had to determine the image type first by searching for the header block.
    // Converts byte array from database to image source
    public static BitmapImage convertByteSource(byte[] oleFieldBytes)
    {

        if (oleFieldBytes == null || oleFieldBytes.Length == 0) return null;

        const string BITMAP_ID_BLOCK = "BM";
        const string JPG_ID_BLOCK = "\u00FF\u00D8\u00FF";
        const string PNG_ID_BLOCK = "\u0089PNG\r\n\u001a\n";
        byte[] imageBytes;

        // Get a UTF7 Encoded string version
        Encoding u8 = Encoding.UTF7;
        string strTemp = u8.GetString(oleFieldBytes);

        // Get the first 300 characters from the string
        string strVTemp = strTemp.Substring(0, 300);

        // Search for the block
        int iPos = -1;
        if (strVTemp.IndexOf(BITMAP_ID_BLOCK) != -1)
            iPos = strVTemp.IndexOf(BITMAP_ID_BLOCK);
        else if (strVTemp.IndexOf(JPG_ID_BLOCK) != -1)
            iPos = strVTemp.IndexOf(JPG_ID_BLOCK);
        else if (strVTemp.IndexOf(PNG_ID_BLOCK) != -1)
            iPos = strVTemp.IndexOf(PNG_ID_BLOCK);
        else
            throw new Exception("Unable to determine header size for the OLE Object");

        // From the position above get the new image
        if (iPos == -1)
            throw new Exception("Unable to determine header size for the OLE Object");

        //Array.Copy(
        imageBytes = new byte[oleFieldBytes.LongLength - iPos];
        MemoryStream ms = new MemoryStream();
        ms.Write(oleFieldBytes, iPos, oleFieldBytes.Length - iPos);
        imageBytes = ms.ToArray();
        ms.Close();

        // creates new bitmapimage
        BitmapImage bi = new BitmapImage();
        bi.BeginInit();// inits bitmapimage
        bi.CreateOptions = BitmapCreateOptions.None;
        bi.CacheOption = BitmapCacheOption.Default;
        bi.StreamSource = new MemoryStream(imageBytes);
        bi.EndInit();

        return bi;
    }

A: The code in this page looks somewhat different from what you have there:
http://csharphelper.com/blog/2015/07/display-images-in-an-access-database-in-wpf-and-c/
In case this works and the link breaks in the future. the code does:
if (reader.IsDBNull(6))
    imgCover.Source = null;
else
    imgCover.Source =
        BytesToImage((byte[])reader.GetValue(6));

That method:
// Convert a byte array into a BitmapImage.
private static BitmapImage BytesToImage(byte[] bytes)
{
    var bm = new BitmapImage();
    using (MemoryStream stream = new MemoryStream(bytes))
    {
        stream.Position = 0;
        bm.BeginInit();
        bm.CreateOptions = BitmapCreateOptions.PreservePixelFormat;
        bm.CacheOption = BitmapCacheOption.OnLoad;
        bm.UriSource = null;
        bm.StreamSource = stream;
        bm.EndInit();
    }
    return bm;
}

redpajama_set_name: RedPajamaStackExchange


ISLAMABAD: Amid severe sanctions on Iran by US and Western countries, Russia has come forward to bail out Pakistan to complete the much-touted Iran-Pakistan gas pipeline and has agreed to fully provide both technical and financial help.
Russia, which had earlier gifted to Pakistan the OGDCL and Pakistan Steel Mills, has now promised to help construct the IP gas line at a time when the consortium, headed by the Industrial and Commercial Bank of China (ICBC), has refused to provide financial advisory services for the gas pipeline project mainly because of US opposition to the project.
In the recent talks, held in Moscow, Russia has given a go ahead signal to Pakistan for completing the project under a government-to-government arrangement. The Russian company Gazprom will arrange finances and construct the pipeline, including the completion of engineering and design of the project.
However, the Russian company is seeking the setting aside of the Public Procurement Regulatory Authority (PPRA)ís rules to complete the mega project for which international bidding is a must as per the PPRA.
"The demands of Russia will be placed in the next ECC meeting, seeking the approval of the demands so that the projects construction could take place as soon as possible," said an official. However, the Ministry of Petroleum and Natural Resources will also seek the approval of the ECC in a cautious move for permission to allow arranging funds for the project from its own resources through infrastructure development.
In case the projectís commissioning gets later than the deadline of December 31, 2004, Pakistan will have to pay $1 million every day to Iran as penalty. "Once the engineering, procurement and construction (EPC) contract is given to the Russian company by putting aside the rules of PPRA, the Russian company will start completing the pipeline of 800km inside Pakistan," the official said.


Metal roofing birmingham alabama best products » When you are constructing a home, the type of roofing that is chosen is very important. Without proper roofing, the house will not be complete. There are many companies which give roofing services to homes at an extremely reasonable cost. The materials used for roofing is very important so that the homes can endure natural calamities. When selecting the business for your house roofing, Metal Roofing Birmingham Alabama it's very important to know the nature of material that is utilized by the company for roof engineering. Not absolutely all materials are suitable for constructing roofs. The primary goal of any roof structure making company is to give satisfaction to the customers.
one call roofers in birmingham alabama roof repair from Metal Roofing Birmingham Alabama, Bring it together with you when shopping for drapes or some other beautifying components looks got from: onecallroofers.com.
jemison metals united states alabama birmingham steel from Metal Roofing Birmingham Alabama, Take it together with you when searching for window curtains or other beautifying materials received from: scrapmonster.com.
Metal roofing birmingham alabama best products » The 24/7 customer support center of the firms work constantly and they will come to the address they have been provided to do the task. The business undertakes the re-roofing plans of homes, also. The homes that are designed once gets damaged roofs anticipated to natural triggers and the broken roofs can be changed by the new roofs. Before exchanging the old roof, Metal Roofing Birmingham Alabama the entire roof covering must be removed.
Metal roofing birmingham alabama best products » Removing the old roofing can take some skills. The destroyed roof pieces need to be removed carefully such that it will not ruin the building walls at all. This is a challenging take and really should be performed by a professional only. The professionally trained personnel of house roofing organizations will solve the challenge with great skills.
birmingham commercial roof replacement roofing from Metal Roofing Birmingham Alabama, Bring it along with you when shopping for curtains or any other decorating supplies screenshot downloaded from: roofing-alabama.com.
metal roof metal roof suppliers alabama from Metal Roofing Birmingham Alabama, Bring it with you when buying drapes or other decorating components looks downloaded from: metalrooftodayer.blogspot.com.
roof coating metal roof cleaner primer waterproof top coat from Metal Roofing Birmingham Alabama, Take it along with you when looking for curtains or any other beautifying supplies looks via from: roofcoatingbirmingham.com.
ripoff report maximus metal roofing inc complaint from Metal Roofing Birmingham Alabama, Bring it together with you when looking for curtains or some other redecorating supplies got from: ripoffreport.com.
huntsville roofers quality roofing llc from Metal Roofing Birmingham Alabama, Take it with you when buying curtains or another decorating components impression sourced from: qualityroofingllc.net.
Metal roofing birmingham alabama best products » There are many materials that are being used for development of the roofs. Each materials has its advantages as well as drawbacks. Back many years ago, the dried out leaves of coconut and areca nut trees and shrubs, which were properly knitted mutually to make mats, were used. Those roofs were cheap and retained homes cool during hot hours of summer, Metal Roofing Birmingham Alabama but the disadvantage was that they were easy subjects to termites and flame mishaps – because of this; they have grown to be completely obsolete nowadays.
Metal roofing birmingham alabama best products » Tiles made of clay material are used occasionally. Since they are made of natural materials, they can be much cheaper than a great many other materials and they keep the inside of the home cool during the summer. They are simply highly tolerant to high temperature and rainwater. Also, Metal Roofing Birmingham Alabama they are not easily combustible. Hence they are preferred over the coconut and areca nut roofs. Despite several new and attractive tile materials that are developed today, clay tiles have never lost their reputation.
Related Posts of "Metal roofing birmingham alabama best products"


text:
Home / FAQs / How to Know If You Should Ride a Motorcycle
How to Know If You Should Ride a Motorcycle
By Kansas City Accident Injury Attorneys | October 25, 2021
Unfortunately for car accident victims, traumatic brain injuries are a very real risk that may result from a crash. One common and often severe type of injury is known as a diffuse axonal brain injury. These injuries occur as a result of the rapid acceleration and deceleration that may occur during a crash, causing the brain to move within the skull. Diagnosing the injury properly is key to the overall treatment of the patient since these injuries can cause severe and long-lasting complications.
Four Ways to Diagnose Diffuse Axonal Brain Injuries After a Car Crash
For mild injuries where the victim is conscious, doctors can sometimes diagnose a diffuse axonal brain injury simply by asking a variety of questions about how the injury occurred and the types of symptoms that the patient is experiencing. The patient is also asked questions that are designed to test his or her cognitive ability.
Unfortunately, most victims of severe diffuse axonal brain injuries are unconscious and unable to respond to these questions. As a result, other tests are used in order to diagnose the injury.
Magnetic Resonance Imaging, Also Known as an MRI
For this test, doctors use magnets, radio waves, and a computer screen to show detailed cross-sections of the brain. MRI testing is widely considered the ideal test for determining whether a diffuse axonal brain injury occurred after a car accident.
When performing a CT scan, doctors use an x-ray machine and a computer monitor in order to show detailed images of the interior of the brain. Unfortunately, these tests can also produce false negatives. For this reason, a CT scan alone cannot be relied upon to diagnose a diffuse axonal brain injury.
Evoked Potentials, Commonly Referred to as SSEP, BAER, and VEP
For these tests, doctors look at the visual, auditory, and sensory pathways in the brain in order to diagnose a diffuse axonal brain injury.
Electroencephalogram, Also Known as an EEG
EEG's are used to measure the electrical activity in the brain in order to assess a diffuse axonal brain injury.
If you've been injured in a car accident you need to speak with an experienced car accident lawyer as soon as possible. Contact us online or call our Kansas City office directly at 816.471.5111 to schedule your free consultation.

redpajama_set_name: RedPajamaCommonCrawl


Are you looking for a way to spend a little time with your Valentine??? This Saturday at the Cat Haven in Dunlap they are offering a rare opportunity to see the magnificent cats after hours. Kisses and Hisses will offer you a chance to tour the trail at night with special red flash lights. The cats can't see these lights, so to them you are a helpless wanderer and their natural predator instincts kick in as you are now the "prey." Cuddle up to your cutie and take this opportunity to learn about these cats and see them in a whole new way! Tickets are limited,so get yours today!!!


text:
Lewis Hamilton knighted in UK honours list
December 31, 2020051
There are many awards this year for those seeking solutions to the problems posed by coronavirus as the pandemic drags on.
Hamilton, 35, surpassed Schumacher's record number of career race wins during a stellar season in 2020 that was shortened due to the coronavirus pandemic.
Hamilton, who lives in Monaco, has faced scrutiny in the past over his tax arrangements but has insisted he pays a substantial amount of tax in Britain.
Former Leeds Rhinos rugby league player Rob Burrow has been made a Member of the Order of the British Empire (MBE).
Also included in the list are former footballers Jimmy Greaves and Ron Flowers, who are the last surviving members of England's 1966 World Cup-winning squad to be honoured. They have been made MBEs.
Related tags : foreignhamiltonknight
President Buhari signs 2021 Budget
New Year: Gov Akeredolu grants amnesty to 11 inmates
WHO chief in quarantine after contact tests positive for Covid-19
Basketball star Kobe Bryant, daughter, die in helicopter crash
January 27, 20200240
80-year-old Lesotho PM to step down, says he's "no longer energetic"
May 7, 20200115
Hey Buddy!, I found this information for you: "Lewis Hamilton knighted in UK honours list". Here is the website link: https://wanbabablog.com/2020/12/31/lewis-hamilton-knighted-in-uk-honours-list/. Thank you.


Registering for freelance writing jobs online has been made easy. You no longer have to prove high academic qualification or years of experience. All you are required to do is show ability to follow instructions and meet client expectations. We require very few registration details that are easy to deliver.
Most college students struggle financially and they are constantly in search of money making avenues. Your college loan can only do so much and with the rising cost of living, the best way to ease the pressure is finding a constant stream of income.
Luckily, you can now leverage internet technology to put your tech skills to use. There is high demand for tech information in the modern world and businesses and organization in different industries have to provide such content.
You can now use your skills to find freelance writing jobs for college students and make money easily. Tech writers tackle complex issues in different industries in the simplest language. Technical writing gigs rate among the best paying in the fast-growing freelance writing industry, which is a good reason to get started now.
The popularity of tech writing gigs has seen an increase in competition for available opportunities. If you are a college student specializing in a technical field, freelance writing provides a good opportunity to make money. To do this, you need a strategy that will help you stand out and get writing gigs fast.
Do not rush to seek writing opportunities without first learning about the available opportunities. As a tech writer, you can specialize in how-to articles, latest software, and technology products reviews, company annual reports, business documents including white papers, technical journal articles, textbooks, help files, workbooks, catalogs, resumes, user guides, product manuals, descriptions, and troubleshooting guides.
You can also focus on college assignments and research proposals, SEO content for tech-based websites, digital media content, report writing among other freelance writing jobs online for beginners.
It is advisable to pick a niche while starting out as a tech freelance writer. It makes your work easier and you can also deliver high-quality content. With time, you will build a name as the go-to writer within your niche.
While tech writing is one of the most lucrative areas in the freelancing industry, you need to appreciate the high quality of work required and growing competition for work. These factors call for a good writing profile, which you build through consistent,high-quality work. Whatever the writing jobs you start with, make sure you deliver topnotch quality. This way, you can start building a client base as you get return orders and referrals.
Networking is among the best techniques for any type of writer to find work fast. You should let your family and friends know about the services you offer. Talk to other freelancer writers in your college and ask for contacts in the industry. Start following the best writers in the industry and participate in tech forums. This strategy gets you noticed by clients.
When starting out as a freelance writer in the technical field, you have to grapple with lack of experience. As a college student, you might not have a rich background to pitch for high paying writing gigs. It is a good reason to visit freelance writing platforms to get gigs. On these platforms, anyone can pick writing gigs and work on them irrespective of their experience. As a college student, pick the most suitable orders and work on them comprehensively.
Creating a blog will cost you nothing but it will have a huge impact on your writing career. Take time to research and write insightful posts on your chosen tech niche. Share this content widely on social media and indicate your availability as a freelance writer.
With these tips, you can easily find freelance writing jobs for teens in the tech field.


text:
Welcome to Rotterdam
About The Netherlands
Cultural program & Ceremonies
Committee of Recommendation
Executive board and management
Partners and sponsorships
Port of Rotterdam Authority main sponsor World Police & Fire Games 2022
The Port of Rotterdam Authority and the World Police & Fire Games 2022 are joining forces. The World Police & Fire Games are the international Games for police, fire, customs and corrections services personnel and will be coming to the Netherlands for the first time in 2022. For the Port of Rotterdam Authority, the main sponsorship is a unique way of expressing their gratitude to these public safety workers who contribute to making the port safe and secure.
The World Police & Fire Games 2022 uses sport as a means to create encounters between public safety workers, to stimulate sportsmanship and to generate respect for workers who are there for us day and night.
The four services in the spotlight
René de Vries, Harbour Master of the port of Rotterdam is looking forward to the collaboration: "The Port Authority is just as ambitious as the competitors in the World Police & Fire Games. In addition, this collaboration gives us the opportunity to show our appreciation for the four services we enjoy working with."
An unforgettable edition
"We are extremely proud that the Port of Rotterdam Authority is the main sponsor of the World Police & Fire Games", says Eva van der Vegt, managing director of the World Police & Fire Games 2022. "Rotterdam and the port are inextricably linked. The competitors and supporters from home and abroad will soon be able to experience this for themselves. Together with the Port of Rotterdam Authority, we are going to put on an unforgettable edition."
About the World Police & Fire Games 2022
The World Police & Fire Games take place from 22 to 31 July 2022. During this largest mixed-sport event in the world, more than 60 sports are being organized for over 10,000 competitors from all over the world.
For more information stay informed via
the newsletter and social media.
"As an amateur athlete, how often can you stand in the shoes of a top athlete?!"
New dates planned for WPFG: 22 to 31 July '22
Port of Rotterdam Authority main sponsor WPFG'22


CALL FOR ENTRIES NOW OPENWe would love for you to submit your film to the Oak Cliff Film Festival! We seek to showcase brave and independent filmmakers of all stripes in an atmosphere that fosters filmmaking in Dallas and beyond. Check out Film Freeway for details and full submission guidelines.


text:
Physics Program
Physics Major
Why Study Physics?
Engineering Physics Program
Engineering Physics Major
Engineering Physics Certificates
Why Study Engineering Physics?
Course Offerings and Sample Schedules
Senior Design
Physics Minor Program
Why Minor in Physics?
Physics Course Offerings
Physics Ph.D. Program
Materials Physics and Engineering Ph.D. Program
Physics Master of Science 4+1 Program
Materials Science and Engineering Masters Degree Programs
Theoretical Research
Experimental Research
SCHOOL OF SCIENCE & ENGINEERING >> PHYSICS AND ENGINEERING PHYSICS
Physics and Engineering Physics Home / Academics / Undergraduate Studies / Physics Program / Physics Major
The intention of Tulane's physics major program is to encourage students to continue on to graduate education in Physics and related disciplines or to pursue cross-disciplinary preparation in physics for medical or other professional schools. Dual majors are encouraged. Students pursuing a career in physics are advised to follow the "Pre-graduate Training" sequence.
The minimum requirements are nine courses in Physics (1310 and above), including Physics 1310, 1320, 2350, and 2360, and 3530 (Advanced Laboratory), four in Mathematics, and an additional approved five elective courses in Mathematics, Physics, Chemistry, Computer Science, or Engineering, and Colloquium 3800. The five electives must be at the two thousand level or above, with the exception of CHEM 1070+1075, CHEM 1080+1085, CMPS 1500, and CMPS 1600. One of the electives must be a computational course, offered in PEP or other SSE department. Students should always confirm with the Major Advisor that all their electives are acceptable. All courses or electives counting towards the requirements must be at least three credits (except Colloquium 3800, which does not count as one of the nine courses in Physics).
Of the nine required Physics courses, two upper level courses must be chosen from 3740 (Classical Mechanics), 3630 (Electromagnetic Theory), 4230 (Thermal Physics), 4470 (Intro. Quantum Mechanics), and 3010 (Theoretical Physics).
At least four courses in mathematics (totaling at least 13 credit hours) are required. No more than two of the four mathematics courses may be at the 1000 level.
The minimum GPA for degree certification, counting all courses pertaining to Physics, Mathematics, and approved Science and Engineering electives, is 2.50.
Students are encouraged to consider a bachelor of science in physics as preparation for graduate study in disciplinary and interdisciplinary sciences (physics, astrophysics, biophysics, chemistry, neuroscience, materials science, geophysics, meteorology, oceanography, and applied physics), for professional study in medicine, patent law, business, or engineering, and for careers in environmental science, in mathematical or computer modeling, in science writing, or in science and public policy.
Within the requirements above, programs can be tailored to suit the needs of students who elect these career options. In addition, the department offers a 4+1 program that allows students to obtain a Master's Degree in five years, by enabling them to take graduate level courses as an undergraduate. Tulane University is a member of the Oak Ridge Associated Universities (ORAU) consortium.
Research opportunities are often available for undergraduate Physics majors in conjunction with faculty, on a case by case basis.
Students are responsible for fulfilling all TIDES, cultural knowledge, foreign language, writing, service learning, and other requirements, required by Tulane and the School of Science and Engineering.
Physics Pre-Graduate Training
The student who intends to continue graduate work in physics should complete at least 32 credits in physics including 1310, 1320, 2350, 2360, 3630, 3740, 4230, 4470, and 4650. Students are encouraged to undertake a research project and write a senior honors thesis under the supervision of a physics faculty member. Recommended mathematics courses include 3050, 3090, 4060, 4210, and 4300. Courses in scientific computing, e.g., PHYS 3170 or MATH 3310 are also recommended.


text:
Cyberattacks traced to NKorea
Associated Pressarchive page
SEOUL, South Korea (AP) – The North Korean government was the source of high-profile cyberattacks in July that caused Web outages in South Korea and the United States, news reports said Friday.
The IP address – the Web equivalent of a street address or phone number – that triggered the Web attacks was traced back to North Korea's Ministry of Post and Telecommunications, the chief of South Korean's main spy agency reportedly told lawmakers.
The ministry leased the IP address from China, Won Sei-hoon of the National Intelligence Service told lawmakers Thursday, according to JoongAng Ilbo newspaper. South Korea's Yonhap news agency carried a similar report.
The spy agency declined to confirm the reports. Two lawmakers on parliament's intelligence committee contacted Friday also refused to confirm the reports. The Unification Ministry, which monitors North Korea, said it cannot comment on intelligence matters.
The July attacks, in which floods of computers tried to connect to a single Web site at the same time to overwhelm the server, caused outages on prominent government-run sites in the U.S. and South Korea. Affected sites include those of the White House and the South's presidential Blue House.
North Korea immediately was suspected of involvement in the attacks but there has been little concrete evidence.
South Korean media reported at the time that North Korea runs an Internet warfare unit that tries to hack into U.S. and South Korean military networks to gather confidential information and disrupt service, and that the regime has between 500 and 1,000 hacking specialists.
Computer experts say the Web attacks like those waged in July are not difficult to launch.
"Many different parties could pull this off. This was not a particularly complex … attack to launch," Rod Beckstrom, former head of the National Cybersecurity Center in the U.S., said Friday during a visit to Seoul.
"It's definitely credible that anyone who had $50 million or a quarter-million dollars or a fairly limited amount of funding could hire hackers to go and perpetrate such an attack," Beckstrom said.
Beckstrom was in the South Korean capital for a meeting of the Internet Corporation for Assigned Names and Numbers, a U.S.-based nonprofit organization overseeing Internet addresses that he heads.
North Korea could have launched the attacks in an attempt to "collect quality information" from the South or "to put psychological pressure on the South," said Kim Yong-hyun, a North Korea expert at Seoul's Dongguk University.
Ties between the two Koreas frayed after South Korea's President Lee Myung-bak took office last year pledging to get tough with nuclear-armed Pyongyang. However, inter-Korean ties have improved in recent months.


text:
Sanitarium.FM, Well it's better than the Spice Girls...
Games Review: Spyro: Reignited Trilogy
Same sick burns, same smoldering attitude, now all scaled up in stunning HD, Spyro is back in the Spyro™ Reignited Trilogy! Rekindle the fire with the original three games, Spyro™ the Dragon, Spyro™ 2: Ripto's Rage! and Spyro™: Year of the Dragon, all in fully-remastered
To say that I was excited for this release is an understatement – The original Spyro trilogy on the PS1 has held a special place in my heart for the last 20 years, ever since I first played Spyro 1 at a friends house back when I was at school after which I then instantly needed to have my own Playstation and a copy of the game.
After the release of Crash Bandicoot N.Sane Trilogy, I couldn't help but feel hopeful for a Spyro remaster, and since it's announcement I had been anxious to play it and relive my joyful experiences of obsessing over Gems, collecting the final Dragon or Egg I needed and relive the epic soundtracks of the games. I even booked a day off work to play them on their release day, and to make sure they were installed and ready to go as soon as possible. After what felt like an eternity, the game was finally installed onto my Hard drive after downloading a 40GB update and I was able to play Spyro: Reignited Trilogy. And how blissful it was.
Spyro moves and feels exactly how he did 20 years ago which for someone like myself, was exactly what I wanted. The levels are beautifully redesigned with bright colours, great definition with a wonderfully reimagined cast of characters. Each of the dragons in Spyro 1 has their own defined character and personality when you free them and even though the original script is intact, the new voice actors suit them all well.
The charm about the first game is its simplicity – collecting every last dragon and gem is something of a satisfying obsession whilst you dive into a world of fantasy and magic (although Tree Tops still remains as tricky as I remember!) The second and third games add new abilities including swimming and the ability to hover, which mixes things up and means you can revisit a level once you're able to access a new section of it.
One thing to remember is that these three games were designed for kids so for any hard core gamer new to the series looking for a challenge, these games may become a little boring or samey after the first few hours, but this is only a minor thing.
Overall, as far as a remaster goes, these games are perfect. The only thing I found slightly frustrating was a small glitch which meant that gems would disappear in a level, even after I had defeated every enemy and visited every section. This was easily rectified if I simply killed myself – this would force any enemy containing a gem I was missing to respawn – in order for me to then defeat them and claim the gem. This only happened twice during the first game and wasn't that troublesome. I didn't encounter any other glitches or issues.
If you loved the original games on the PS1, I cannot recommend picking this up enough for not only the nostalgia, but for the fact that it's just so relaxing to play. You can even switch the Sound in the Pause Menu to play the original soundtrack rather than the reignited version, something I was very happy to see as the soundtracks were one of the best things about the series in my opinion. If you're looking for a family friendly platformer, I'd say this is also for you!
Spyro: Reignited Trilogy is available now on XBox One and Playstation 4, head over to spyrothedragon.com for more info.
I personally give it a thousand out of ten but that's so bias as it's so personal and nostalgic, so 9/10!
~Phasechan
November 23rd, 2018 by PhaseChan
This entry was posted on Friday, November 23rd, 2018 at 7:35 pm	and is filed under Game Review, Gaming, General, Multiplatform, Playstation, Xbox. You can follow any responses to this entry through the RSS 2.0 feed. You can skip to the end and leave a response. Pinging is currently not allowed.
More smilies »


Business columnist at the New Yorker James Surowiecki recommends Machine, Platform, Crowd, a guidebook to the new world of innovation, "focusing concretely on how organizations can best leverage the new tools the digital age offers… not just innovations that bring new products and services to market, but also innovations in the way we make decisions and solve problems, in the way we collaborate and in the way we organize work." Also available as an eBook on OverDrive.
Corporate strategy advisor Ken Favaro nominates If You're in a Dogfight, Become a Cat by Leonard Sherman, who "argues that companies have to re-imagine what they are and thus what they are capable of… Instead of running faster, you break away from the pack by redefining one or more of the boundaries that historically constrained industry behaviors and by consistently renewing your product and service portfolios." Also available as an eBook on OverDrive.
Also available as an eBook or audiobook.
At The Economist Ryan Avent calls The Great Leveler by Walter Scheidel a dark book, but the year's best. Since the stone age, "societies that manage to create an economic surplus become economically and politically unequal… Over time, elites get better at rigging the system to divert resources toward themselves. Only catastrophe limits the march toward greater inequality – great plagues, state failure, revolution and mass-mobilization warfare." Also available as an eBook or audiobook.
View more books recommended by these business writers.
As the warm days of April draw to a close, it is time to say goodbye to our graduating MMS students and 2nd year MBAs.
Congratulations on all you have achieved while at Duke. Job well done! Best wishes for continued success throughout your career and in your life.
Walker, Sam. The captain class : the hidden force that creates the world's greatest teams. Random House, 2017.
This quote comes from the new book, The Captain Class, by sports reporter and Wall Street Journal editor, Sam Walker. In 2005, Walker began researching elite sports teams with a goal of constructing an objective formula for creating turn-around performance. After a decade of analyzing world class teams, Walker came to the same conclusion as Coach K: the most crucial ingredient in a team that achieves and sustains historic greatness is the character of the player who leads it.
Walker begins his book by explaining how he identified the world's 16 greatest teams. Examining all 16 teams for the key to excellence, he concluded that it was not the coach, or the management, or the money or even the superstars. Each of the elite teams had one player (the captain) whose career book-ended the team's period of excellence. The captain was the key.
The list of dominant teams and captains is international. American examples are Bill Russel of the Boston Celtics, Yogi Berra of the New York Yankees and Jack Lambert of the Pittsburgh Steelers. Walker describes seven traits of elite captains, including aggressive play, emotional control and use of non-verbal communication. Alpha captains also exhibit reckless and self-defeating behaviors, but ironically, the negatives only serve to strengthen the team.
Lively stories of players and captains, coaches and moments in sports history make up most of The Captain Class. Sports fans and business leaders are sure to enjoy this book. Non-sport fans will be surprised that they like it too. Recommended for anyone interested in leadership psychology.
Ford Library invites the Fuqua community to participate in the Fuqua Book Exchange from April 13th through May 15th. Donate your gently used books to other students, staff, faculty, or to the library. Give a book, take a book. All subjects are welcome. Free!
Drop off your book donations at the Ford Library circulation desk. Books for exchange are located in a "Fuqua Book Exchange" shelf at the back of the Ford Library. Just follow the arrows. We will donate any books unclaimed after the exchange to Better World Books or to Book Harvest (children's and young adult books).
Are you graduating or just heading out soon for the summer and worried about paying library fines? Monday, April 16th through Friday, May 11th, the Ford Library will waive one overdue library fine* for each "shelfie" you post to social media with the hashtag #fordlibraryshelfie, up to five fine waives total.
1. Snap a "shelfie," a book-related photo. It could be of a favorite book or place to read, a "book face," or a photo featuring the Ford Library and/or its collections.
2. Post the photo to your Instagram or Twitter account, or to our Facebook page, with the hashtag #fordlibraryshelfie.
3. Send us an email to let us know you have posted it.
Please note: Your social media profile must be set to public during the promotion so that we can see your photo and we have to approve posts to our Facebook page before they will appear.
1. All current Duke University students are eligible to participate.
2. Each photo must be tagged #fordlibraryshelfie and posted between Monday, April 16th and Friday, May 11th, 2018. Your photo(s) may be shared, copied, and used in Ford Library promotional material.
3. A maximum of five overdue fine waives total will be allowed per student during the promotion.
4. *Waives apply to overdue fines incurred in the last 6 months (from November 2017 – May 2018) only.
5. *Waives will not apply to items that have not yet been returned, for fines that were incurred at other Duke University Libraries, or for recall fines (where another patron was waiting for the overdue item). This promotion is in addition to our existing one-time waive policy.
Something almost universally true: everyone wants to live a meaningful life. However, the good life does not happen by chance. Youthful decisions about how we spend our time and who we spend it with create the amount of meaning we experience in middle age. How we choose to spend our days is how we spend our lives.
Last month, The Startup posted contributor Thomas Oppong's recommended books on how to live life meaningfully. Four of his selections were among my favorites, too. I have personally recommended these books to colleagues and reviewed them on this blog, some as long as a decade ago. No surprise: these books have become classics and remain "best sellers" in the Ford Library.
Christensen, Clayton M., et al. How will you measure your life? Harper Business, 2012.
Clayton M. Christensen, renowned professor at the Harvard Business School, is among the world's top experts on innovation and growth. Using examples from his work with prominent global companies, he applies lessons learned to the careers and personal lives of students. He encourages students to consider the long-term results of different decisions and actions that have an impact on interpersonal relationships, personal integrity and career success. Full review.
How Will You Measure Your Life? is also available on our Business Bestseller Kindles and as an audiobook or eBook on OverDrive.
Grosz, Stephen. The examined life : how we lose and find ourselves. W.W. Norton, 2013.
In his day to day practice as a psychotherapist, Stephen Grosz helps his patients understand themselves, their masked motivations and complex feelings so they can live happier and more fulfilled lives. These touching stories from his patients teach about love and loss, intimacy and separation, change and acceptance. Full review.
The Examined Life is also available as an audiobook CD.
Brafman, Ori, et al. Sway : the irresistible pull of irrational behavior. Doubleday, 2008.
This brief and entertaining book examines the hidden influences that sometimes derails even the most principled decision-maker. Psychological concepts like loss aversion, diagnosis bias and the power of commitment are explained using vibrant examples from real life. After revealing how these hidden forces drive irrational behavior and why we are vulnerable to them, the authors provide strategies for dealing with distorted thinking. Full review.
Sway is also available as an audiobook CD.
Tavris, Carol, et al. Mistakes were made (but not by me) : why we justify foolish beliefs, bad decisions, and hurtful acts. Harcourt, 2007.
It is difficult to admit mistakes but easy to find a justification for them. This book illuminates the ways our brains resolve the stress of cognitive dissonance to preserve our feelings of self-worth. The unreliable nature of memory and effects of personal bias impair our judgment in insidious ways, which ultimately impacts personal relationships, the legal justice system and seemingly objective scientific research. Full review.


text:
Schwarber, Cubs beat Pirates 10-0 in Wrigley opener
Jay Cohen | The Associated Press 04/09/19, 01:34
Chicago Cubs' Ben Zobrist (18) is greeted by Kyle Schwarber (12) after scoring against the Pittsburgh Pirates during the second inning of a baseball game, Monday, April 8, 2019, in Chicago. (AP Photo/David Banks)
First, Brad Brach escaped a tough situation. Then Brandon Kintzler, Randy Rosario and Pedro Strop finished the job.
Chicago's beleaguered bullpen stepped up after Jon Lester departed with left hamstring tightness, leading the Cubs over the Pittsburgh Pirates 10-0 in their home opener on Monday.
"That will build their confidence. They need that," manager Joe Maddon said. "The group needs that. They were all really good."
Chicago Cubs' Anthony Rizzo watches his RBI-single against the Pittsburgh Pirates during the second inning of a baseball game, Monday, April 8, 2019, in Chicago. (AP Photo/David Banks)
Chicago's bullpen had an 8.37 ERA on an opening 2-7 trip, amplifying concerns about pitching depth with relievers Brandon Morrow, Xavier Cedeño and Tony Barnette sidelined by injuries. But the bullpen threw four scoreless innings Sunday at Milwaukee, and the form carried over into the matchup with the Pirates.
Brach (1-0) came in after Lester was removed with two on and no outs in the third. He got Starling Marté to bounce into a double play, then struck out Francisco Cervelli.
Brach worked the fourth, and Kintzler and Rosario each pitched two innings. Strop closed it out on a picturesque day at Wrigley Field.
Chicago Cubs starting pitcher Jon Lester (34) leaves the game against the Pittsburgh Pirates during the third inning of a baseball game, Monday, April 8, 2019, in Chicago. (AP Photo/David Banks)
"It's just one of those things where kind of the good pitching can be contagious but at the same time the bad pitching can be contagious," Brach said. "I think now we're ready to get on a little bit of a roll and hopefully seven innings can go a long way to the next game."
Lester got hurt when he scored from second on Ben Zobrist's two-run single in Chicago's six-run second. The veteran left-hander is scheduled for an MRI on Tuesday.
"I didn't feel a pop or any tingling or any numbness or anything like that," Lester said. "Just kind of felt like something was in there grabbing me a little bit. So I guess that's the positive look at it. Like I said, tomorrow will tell us more."
Pittsburgh Pirates starting pitcher Jameson Taillon (50) throws the ball against the Chicago Cubs during the first inning of a baseball game, Monday, April 8, 2019, in Chicago. (AP Photo/David Banks)
Pittsburgh had won four in a row, but the Pirates made four errors, including three by shortstop Kevin Newman in the second.
"We need to play better defense," manager Clint Hurdle said. "There were a couple of different sequences there, maybe, with execution of pitches didn't help and defensively we had outs to put away and we didn't do it, and the inning got away from us."
Newman's first error allowed Daniel Descalso to reach after Jameson Taillon (0-2) retired the first two batters. He committed two more errors on a Kyle Schwarber grounder, and Anthony Rizzo scampered home to give the Cubs a 6-0 lead.
Fans wait to get inside the ballpark before the Chicago Cubs home opening baseball game against the Pittsburgh Pirates, Monday, April 8, 2019, in Chicago. (AP Photo/David Banks)
In between the fielding trouble for Newman, Lester, Zobrist, Rizzo and Javier Báez each came up with big hits. Rizzo's run-scoring single went off Taillon's head, but he stayed in the game.
"I'm fine. I'm unlucky I got hit and lucky I seem to be OK coming out of it," said Taillon, who was charged with six unearned runs and four hits in two innings.
Newman said it was a humbling experience.
"A couple of days ago was the greatest day I've ever had on the field. Today was quite the opposite," he said.
OFFENSIVELY SPEAKING
Kyle Schwarber added a two-run homer in the fourth as the Cubs earned their largest shutout victory in a home opener in franchise history. Their 72 runs is their highest total through 10 games since they scored 76 times in the first 10 games in 1954.
WHAT A PLAY
Báez picked up an RBI single in the second when he threw his bat at a ball that bounced in the dirt , leading to a liner that just got over Newman's head. Báez shrugged as he stood on first base.
"I saw Vladimir Guerrero did it back in the day and he's in the Hall of Fame right now, so … " a grinning Báez said. "Just a joke, just a joke."
Taillon had allowed just five unearned runs in 441 2/3 innings coming into the day.
Cubs: Morrow (elbow surgery) has completed each of his bullpen sessions so far "without incident," according to president of baseball operations Theo Epstein. The next step for Morrow is expected to be finalized this week. … Barnette (right shoulder inflammation) and Cedeño (left wrist inflammation) are "moving along and getting closer to the possibility of rehab assignments," Epstein said. "No setbacks with either guy."
Following an off day, right-handers Jordan Lyles and Yu Darvish get the ball when the series resumes Wednesday night. Lyles (0-0, 0.00 ERA) made his Pittsburgh debut Thursday against Cincinnati and pitched five innings in the Pirates' 2-0 victory. Darvish (0-1, 8.10 ERA) struggled in his first two starts of the year, issuing 11 walks in just 6 2/3 innings.
Tags:Pedro Strop Joe Maddon Brandon Morrow Chicago MLB Jon Lester Pittsburgh Pirates Francisco Cervelli Brandon Kintzler Brad Brach Tony Barnette Randy Rosario
Chicago inspector general slams Democratic Mayor Lightfoot's botched raid
U.S. 01/17/22, 05:39
Chicago park district apologizes after saying unvaxed children are not allowed to play sports
Illinois sheriffs refuse to send deputies to aid Chicago, saying Mayor Lightfoot creates own emergency
Chicago: More children were shot this year than all those who died from COVID in the country
Surviving Chicago police officer could sustain lifelong disabilities
Democratic Chicago Mayor to increase police budget after female cop murder


text:
Breaking News Lebanese Government
Breaking News: Lebanese Government Resigns in Face of VideoClip Revolution
Futur television satellite news is reporting that the Lebanese government has resigned. For the last few days, I was watching the crowds assembled at Martyrs' Square in Beirut (a place significant in the anticolonial struggle against the French), and noted the ineffectual attempt of [now former] Interior Minister Suleiman Frangieh to forbid the protests.
I just saw a speaker at the protests shout that the people are more powerful than the government, with everyone joyous at the fall of the government.
Futur was showing the protests with an overlay of Lebanese music, so that the effect was to mimic the wildly popular Video Clips (a belated Arab version of "I want my MTV").
Futur was partially owned by slain Lebanese prime minister Rafiq al-Hariri, whose assassination kicked off the crisis.
Update: Al-Jazeerah is reporting that the Lebanese Opposition is now calling for the big demonstrations at Martyrs' Square to continue until all Syrian troops leave Lebanese soil.
You wonder what would happen if the Palestinians in the West Bank and Gaza tried the same thing re: Ariel Sharon's military occupation that they face. They'd be crushed by the jackboot (with convenient allegations that they were a front for terrorism).


text:
New York City protests 100 years of Balfour Declaration
Read more articles in Antiwar Movement
Protest marks 100 years since the signing of the Balfour Declaration. (Photo: Michela Martinazzi)
New York, NY - Over 100 people gathered in front of the Israeli Embassy and Consulate, Nov. 2, to protest 100 years since the signing of the Balfour Declaration. The Balfour Declaration was a statement made by the British government in support of a "national home for the Jewish people" in Palestine, paving the way for the creation of Israel and the destruction of Palestine.
The event was organized by the New York for Palestine Coalition and included speakers for New York City Students for Justice in Palestine (NYCSJP), Committee to Stop FBI Repression (CSFR), International Action Center, Samidoun Palestinian Prisoner Solidarity Network, American Muslims for Palestine, and Muslim American Society.
"I think it's especially important today on the 100-year anniversary of the Balfour Declaration that we continue to struggle," said Michela Martinazzi from CSFR and Samidoun Palestinian Prisoner Solidarity Network. "Every time we take two steps forward, Israel is right there enclosing Palestinians inside walls. They're testing new weapons, and new ways to oppress and enact genocide on people trying to liberate their land."
Nerdeen Kiswani of NYCSJP spoke about colonialism in Palestine and all oppressed nations. She said, "We don't have to compromise. We don't have to give up an inch of land. We will take back what is rightfully ours," and then led the crowd by chanting, "We don't want two states. We want '48", referring to Palestinian land before Israeli occupation.
The rally ended with a march down Second Avenue, with chants such as "No justice, no peace, Israel out of the Middle East," "What do we want? Justice! When do we want it? Now!" and "One, two, three, four: Occupation no more. Five, six, seven eight: Israel is a terrorist state."


Theft of barbecue cooker disrupts a fledgling business.
Merritt Bailey with Ballhoggerz BBQ is offering a reward for anyone who can help him find a stolen truck and the big barbecue cooker attached to it.
Merritt Bailey says he woke up Thursday morning, looked out his bathroom window in Midtown and got an unpleasant surprise.
His pickup truck was gone. Gone, too, was the item attached to it: a custom-made barbecue cooker.
The big barbecue cooker is a key tool for Ballhoggerz BBQ, a new catering company Bailey runs with business partner Nicole Williford.
He said the theft is a big setback for the startup food service, which has only operated since May. "It's kind of heartbreaking," he said, adding that the brazen theft unsettles him, too. "I feel a little sense of paranoia being in the neighborhood."
He said he's not sure if his insurance will cover the theft and that he's waiting for a report number from police before he talks with the insurance company.
The police department confirmed that officers responded to a report of an auto theft at Bailey's home in the 1400 block of Central Avenue Thursday morning.
Neighbor Lee Gaddie said he reviewed surveillance footage from a newly installed front-porch video camera and found an image of the white truck and the barbecue cooker rolling down the street, followed closely by an SUV.
This surveillance footage from Lee Gaddie's front porch shows Merritt Bailey's truck and barbecue cooker rolling down the street, followed closely by an SUV. Bailey said when this video was taken, the truck was being stolen by thieves. Video provided by Lee Gaddie.
Merritt Bailey, 36, is the younger son of D'Army Bailey, a civil rights activist, judge and attorney who died in 2015.
He also works for Growlers, an entertainment venue at 1911 Poplar Avenue in the building formerly occupied by the Hi-Tone Café. He and his business partner were regularly setting up the barbecue cooker outside the business and also doing catered events.
Bailey is offering a $1,000 reward for return of the stolen goods. Anyone with information can call him at 279-1758.


text:
The Book of Dust
Behold the Covers for Philip Pullman's The Book of Dust
Stubby the Rocket
Thu Jun 29, 2017 10:50am 7 comments 4 Favorites [+]
Penguin Random House has revealed the US and UK covers for The Book of Dust, the first volume in Philip Pullman's new trilogy La Belle Sauvage. The Book of Dust will take place ten years before the events of the His Dark Materials series; the second and third installments will pick up 20 years after the end of The Amber Spyglass.
As Pullman himself teased before, The Book of Dust's "new hero" is "an ordinary boy (a boy we have seen in an earlier part of Lyra's story, if we were paying attention) who, with Lyra, is caught up in a terrifying adventure that takes him into a new world." The official synopsis offers some more information and contextualizes the covers:
Eleven-year-old Malcolm Polstead and his dæmon, Asta, live with his parents at the Trout Inn near Oxford. Across the River Thames (which Malcolm navigates often using his beloved canoe, a boat by the name of La Belle Sauvage) is the Godstow Priory where the nuns live. Malcolm learns they have a guest with them; a baby by the name of Lyra Belacqua…
Feast your eyes on the US and UK covers, both illustrated by Chris Wormell. (Click to enlarge.) You can see his linocut work in the US cover (via Entertainment Weekly) below:
The UK cover features a closer look at Malcolm's canoe, as well as two dæmons (could that be Lyra's Pantalaimon?):
In the original press release, Pullman said that "at the centre of The Book of Dust is the struggle between a despotic and totalitarian organisation, which wants to stifle speculation and enquiry, and those who believe thought and speech should be free." EW asked him more about what themes will imbue the book:
The original trilogy touches upon science, philosophy, and religion. How are you approaching these themes in your new work, considering all the changes that have taken place in the world?
My guide in these matters has always been the English poet and painter William Blake. He was very much opposed to what he called "single vision," by which he meant the cast of mind that embraces fundamentalism of any kind: a narrow, literal-minded, ferociously mechanistic viewpoint. I'm writing a defense and a celebration of the immense variety of the imagination, which I think is a truer way of understanding our life and the universe we live in.
The Book of Dust will be available in the US and UK on October 19.
book coversbooksChris WormellHis Dark MaterialsLa Belle SauvagePhilip PullmanThe Book of Dust
9 Spaceships that Function as Their Own Societies
Here's Your First Look at Roach Obeying the Laws of Physics in Netflix's The Witcher
io9 Reveals the First Look at the New Star Wars Book Thrawn: Treason
zdamien on Where Are All Pern's Medical Folks? The White Dragon: Part Three 10 mins ago
zdamien on Five SFF Works Reminiscent of Andre Norton 40 mins ago
terri Baker on 7 Horror Novels from the Heyday of Mass Market Paperbacks 5 hours ago
Mary List on Where Are All Pern's Medical Folks? The White Dragon: Part Three 6 hours ago
Colton on Star Trek The Original Series Rewatch: "Bread and Circuses" 6 hours ago


text:
Academic Heritage
UMAC/ Universeum Conference 2021
Publications & Exhibition Catalogues
© TU Dresden/ Foto: M. Kretzschmar
Office for Academic Heritage
Task and Organisation
read more Office for Academic Heritage
The short way
© Paul Barsch
Read more The Team
© Kustodie
Read more Events & News
Read more Collections
Tasks of TU Dresden's Office for Academic Heritage, Scientific and Art Collections
Founded in 1979, the Office for Academic Heritage, Scientific and Art Collections of TU Dresden is one of the oldest institutions of its kind in Germany. The Office occupies a superordinate, central position, playing a supervisory role for the university's cultural monuments, which are part of the scientific, technical, and art collections. It supports and advises the heads of collections on the scientific investigation, assessment, registration, and relocation of historical artefacts. It is the responsibility of the Office to supervise the university art collections, as well as protect, preserve, maintain, and make use of the entire collection of cultural assets. Within the broad scope of the collections and cultural assets possessed by the university, the Office is tasked with erecting and maintaining the permanent collection as well as temporary exhibitions. In addition, it provides advice on the expansion of the collection, artistic and interior design and representation, the preservation of historical monuments as well as topics relating to the history of the university. TUD's Office for Academic Heritage oversees the university's public relations in the fields of museum activities and university history. The protection of the collections and the university art collection is regulated by the Regulation on the Preservation of the Scientific and Technical Collections, the Art Collections and the Cultural Monuments of TUD (Ordnung zur Bewahrung der naturwissenschaftlichen und technischen Sammlungen, des Kunstbesitzes und der Kulturdenkmale der TUD) on the basis of the Heritage Protection Law of the Free State of Saxony (Sächsisches Denkmalschutzgesetz). The Academic Heritage is supported by a Scientific Advisory Board.
© Kustodie, Foto: K. Lassig


Flexible rubber blade. Formed plastic handle. Not for high temperature use.
Select nylon jumbo turner 12". Red handle.
Pancake turner, Select chrome 14", black handle.
Handy turner Select chrome. 11", black handle.
For small bowls and mixers. Silicone covers spatula head and neck for easy cleaning. Heat-resistant up to 600-degree F. Won?t discolor, warp or melt. Safe for coated or non-stick cookware and bakeware. Soft, comfortable, non-slip grip. Dishwasher safe. White.


We have created a 2019 ranking of the best colleges in Pittsburg that offer East Asian Studies degrees to help you find a school that fits your needs. Each school's ranking is based on the compilation of our data from reliable government sources, student surveys, college graduate interviews, and editorial review. In addition, you can view our entire list of all 1 East Asian Studies school located within Pittsburg. We also provide reviews, facts, and questions and answers for schools on our site and offer you access to get valuable information from colleges and universities today.
University of Pittsburgh-Pittsburgh Campus offers 1 East Asian Studies Degree program. It's a large public university in a large city. In 2015, 2 students graduated in the study area of East Asian Studies with students earning 2 Master's degrees.
What East Asian Studies degree programs were earned in Pittsburg?


text:
Global coronavirus cases exceed 50 million after 30-day spike
November 9, 2020 by Creation Plus
Global coronavirus infections exceeded 50 million on Sunday, according to a Reuters tally, with a second wave of the virus in the past 30 days accounting for a quarter of the total.
October was the worst month for the pandemic so far, with the United States becoming the first country to report more than 100,000 daily cases. A surge in Europe contributed to the rise.
The latest seven-day average shows global daily infections are rising by more than 540,000.
More than 1.25 million people have died from the respiratory disease that emerged in China late last year.
The pandemic's recent acceleration has been ferocious. It took 32 days for the number of cases to rise from 30 million to 40 million. It took just 21 days to add another 10 million.
Europe, with about 12 million cases, is the worst-affected region, overtaking Latin America. Europe accounts for 24% of Covid-19 deaths.
The region is logging about 1 million new infections every three days or so, according to a Reuters analysis. That is 51% of the global total.
France is recording 54,440 cases a day on the latest seven-day average, a higher rate than India with a far bigger population.
The global second wave is testing healthcare systems across Europe, prompting Germany, France and Britain to order many citizens back to their homes again.
Denmark, which imposed a new lockdown on its population in several northern areas, ordered the culling of its 17 million minks after a mutation of the coronavirus found in the animals spread to humans.
The United States, with about 20% of global cases, is facing its worst surge, recording more than 100,000 daily coronavirus cases on the latest seven-day average, Reuters data showed. It reported a record of more than 130,000 cases on Saturday.
The latest US surge coincided with the last month of election campaigning in which President Donald Trump minimised the severity of the pandemic and his successful challenger, Joe Biden, urged a more science-based approach.
Trump's rallies, some open-air and with few masks and little social distancing, led to 30,000 additional confirmed cases and likely led to more than 700 deaths, Stanford University economists estimated in a research paper.
In Asia, India has the world's second-highest caseload but has seen a steady slowdown since September, despite the start of the Hindu festival season. Total cases exceeded 8.5 million cases on Friday and the daily average is 46,200, according to Reuters data.
Mro people in Bandarban protest 'hill land grabbing' for 5-star hotel, tourist spot
Pond filled after spending lakhs for renovation