Talend: tmapSQLOutput – Skipping Identity Column during Inserts

Background

A quick session on skipping system columns (Identity, timestamp) when inserting data into DB tables using Talend – Open Studio

Error Messages

Here is the error message we get:

Text:


Cannot insert explicit value for identity column in table 'account' when IDENTITY_INSERT is set to OFF.

Image:

CannotInsertExplictValues

Resolution

Component – tMSSqlOutput

Choose Component

In the Canvas, choose the tMSSQLOutput component.

accesstMSSqlOutputComponent

 

Basic Settings

BasicSettings

 

 

Make sure of the following:

  • “Turn on Identity insert” is off / unchecked

 

Advanced Settings

Here is what the “Advanced settings” screen looks like initially.

AdvancedSettings-Initial

 

Use field Options

To get more customization we have to check the “Use field Options” checkbox.

 

Use field Options

Once the “Use field Options” checkbox is checked, the individual fields are listed.

UseFieldOptions-Initial

 

Quick Explanation:
  • We can see that all the fields have the “Updatable” and “Insertable” checkboxes checked.
  • It is nice that we are also able to explicitly specify the “Update Key” and “Deletion Key”.  Being able to so will be useful for tables missing a primary key.

 

Use field Options – After

To specify that our Identity Column (id), should be skipped during inserts and updates, we uncheck the row for the “Updatable” and “Insertable” columns.

UseFieldOptions-UncheckIdentityColumns

Retry Execution

We saved the changes, and retried the execution and we are good.

 

SQL Profiler

While failing and during success run, we captured the DB interaction using SQL Server Profiler.

Identity Column Referenced


SELECT @@MAX_PRECISION
SET TRANSACTION ISOLATION LEVEL READ COMMITTED
SET IMPLICIT_TRANSACTIONS OFF
SET QUOTED_IDENTIFIER ON
SET TEXTSIZE 2147483647

SET IMPLICIT_TRANSACTIONS ON

declare @p1 int
set @p1=1
exec sp_prepare
       @p1 output
      ,N'@P0 int,@P1 nvarchar(4000),@P2 nvarchar(4000),@P3 nvarchar(4000)'
      ,N'INSERT INTO [sf].[account] ([id],[AccountNumber],[AccountName],[WebSite]) VALUES ( @P0 , @P1 , @P2 , @P3 )',1

select @p1

exec sp_execute 1,0,N'CC978213',N'GenePoint',N'www.genepoint.com'

exec sp_execute 1,0,N'CD355119-A',N'United Oil & Gas, UK',N'http://www.uos.com'

exec sp_execute 1,0,N'CD355120-B',N'United Oil & Gas, Singapore',N'http://www.uos.com'

exec sp_execute 1,0,NULL,N'sForce',N'www.sforce.com'

IF @@TRANCOUNT > 0 COMMIT TRAN


Identity Column Skipped


SELECT @@MAX_PRECISION
SET TRANSACTION ISOLATION LEVEL READ COMMITTED
SET IMPLICIT_TRANSACTIONS OFF
SET QUOTED_IDENTIFIER ON
SET TEXTSIZE 2147483647

SET IMPLICIT_TRANSACTIONS ON

declare @p1 int
set @p1=1
exec sp_prepare
       @p1 output
      ,N'@P0 nvarchar(4000),@P1 nvarchar(4000),@P2 nvarchar(4000)'
      ,N'INSERT INTO [sf].[account] ([AccountNumber],[AccountName],[WebSite]) VALUES ( @P0 , @P1 , @P2 )'
      ,1
select @p1

select @p1

exec sp_execute 1,N'CC978213',N'GenePoint',N'www.genepoint.com'

exec sp_execute 1,N'CD355119-A',N'United Oil & Gas, UK',N'http://www.uos.com'

exec sp_execute 1,N'CD355120-B',N'United Oil & Gas, Singapore',N'http://www.uos.com'

exec sp_execute 1,NULL,N'sForce',N'www.sforce.com'

IF @@TRANCOUNT > 0 COMMIT TRAN

IF @@TRANCOUNT > 0 COMMIT TRAN

Quick Explanation:

  1. Failing
    • When we were failing, the id column was included in the list of columns and values passed to SQL Server
    • A value of 0 was assigned to the id column
  2. Successful
    • Once successful, the id column was skipped altogether

 

Credit

Crediting Bekwam

Creating a SQL Server Identity Column with Talend Open Studio
http://bekwam.blogspot.com/2011/12/creating-sql-server-identity-column.html

Talend: Job Log – Could not reserve enough space for object heap

Background

Running a little job in Talend and getting the error indicated below.

 

Error


Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
Error occurred during initialization of VM
Could not reserve enough space for object heap
Job SalesforceToSQLServer ended at 17:16 01/08/2015. [exit code=1]

 

 

What is Heap?

Before we try to diagnose the problem, let us ask ourselves what is stored in the Heap of a Java application.

 

Heap and Stack

In an application, there are a few memory segments, let us concentrate on Heap and Stack, at this time.

Stack

  • Local variables
  • Function call

Heap

  • Objects
    • Objects created through new

 

Memory Errors

When memory is requested and the JVM is unable to satisfy the request, the inadequacy is reflected via error messages.

Thankfully depending on which memory block (Stack or Heap) fails, a distinct error is returned.

Stack

  • java.lang.StackOverFlowError

Heap

  • java.lang.OutofMemoryError

Interpretation

As we are interested in the Database aspect of things, we are a lot more interested in the Heap side of the house.

And, likely the bigger the better.

 

Diagnosis

Let us return back to our “small” problem.

The error is due to the way that our job’s Java JVM arguments is configured:

AdvancedSettings

 

Here is our Job’s JVM arguments current configuration:

Option Value Meaning
 Xms 256M

The -Xms option sets the initial and minimum Java heap size. The Java heap (the “heap”) is the part of the memory where blocks of memory are allocated to objects and freed during garbage collection.

Note that is does not limit the amount of memory that the JVM can use.

 Xmx 1024M

This option sets the maximum Java heap size. The Java heap (the “heap”) is the part of the memory where blocks of memory are allocated to objects and freed during garbage collection. Depending upon the kind of operating system you are running, the maximum value you can set for the Java heap can vary.

Note that is does not limit the amount of memory that the JVM can use.

 

 

 

Remediation

Run 32-bit App, but request 64-bit Java JVM

 

Sign Post:

Based on a comment by AndreV on Stackoverflow – “Maximum heap size for JVM on a 32-bit and 64-bit windows server” ( http://stackoverflow.com/questions/15100737/maximum-heap-size-for-jvm-on-a-32-bit-and-64-bit-windows-server ), we will try using the -d64 option to request 64-bit JVM.

 

Advanced Settings:

So what we did is :

  • Access the “Advanced settings” tab
  • Click on the New button, and the -d64 option

 

AdvancedSettings-64BitJavaJVMRequested

 

Job Output:

 

TryToRun64BitJVMIn32BitApp

 

Error Message:


Error: This java instance does not support a 64-bit JVM

 

In 32 bit, change Max Heap Size (Xmx)

Steps:

Here are the steps we took:

  • Access the “Advanced settings” tab
  • Doubleclick on -Xmx1024M
  • In the Set VM Argument, change the entry from -Xmx1024M to Xmx256M

 

 

JVM Settings – Before

 

AdvancedSettings-Before

 

 

Before

Xmx1024M

 

 

After

Xmx256M

 

JVM Settings – After

JVMSettings - After

 

Output:

Once we clicked the Run button, the Application ran successfully

resultOfChangingXmx1024MTo256M

 

 

32-bit VS 64-bit

Introspection:

In MS Windows, upon Application installation, a lone shortcut is created in the Start menu.  That link launches the 32-bit Application.

A quick way to determine the bitness of a running App, is to look at the Task Manager.

32bit

 

In 64 bit OSes, the Image name column will have a *32 marker to distinguish them.

 

Access 64-bit

The Application is bundled in 32-bit and 64-bit mode.

ExplorerView

 

 

In 64 bit, Keep Max Heap Size (Xmx)

Introduction

Let us play with the 64-bit app by launching TOS_DI-win-x86-64.exe.

In Task Manager, here is what we see:

64bit

 

Quick Explanation:

  • In the Image name column, the 32-bit marker is gone
  • Unfortunately, the memory footprint has been dramatically increased from 315,000 ( 315 MB ) to 900,664K ( 900 MB )

 

Steps

Here are the steps we took:

  • Access the “Advanced settings” tab
  • Doubleclick on -Xmx **** entry
  • In the Set VM Argument, keep/ change the entry at / to -Xmx1024M

 

JVM Settings – Before

JVMSettings - After

 

 

Value – Before

Xmx256M

 

Value

Xmx1024M

 

 

JVM Settings – After

AdvancedSettings-After

 

Job Recreated:

Once we modify the JVM arguments, I will suggest that you save the project.

The application detects the changes, and regenerates the package.

Update Detection:

 

UpdateDetection

 

Building Job:

GenerateJob

 

Output:

Upon clicking the Run button, we were able to validate that the Application ran successfully

resultOfChangingXmx1024MTo256M

 

Summary

There are a few noted ways to right the error stating “Could not reserve enough space for object heap“.

The ways are:

  1. In 32 bit mode:
    • Reduce the maximum requested heap size from the default of 1024 M to 256 M
  2. In 64 bit mode:
    • Keep the requested Heap Size at 1024M

Please keep in mind that 64-bit applications use markedly more memory than 32-bit app.

Having said that 64-bit applications are more reliable, and if your hardware is 64-bit capable, make every effort to run a 64-bit OS.  And, to run 64-bit applications.

 

Anna of Jerusalem : The Witness

Background

Once again sharing without permission.

But, I honestly think this is yet another story that can confound some, but encourage so many other’s thoughts, voices, and may be pens.

Cheryl McGrath – Anna of Jerusalem – The Witness

Celebrating Anna of Jerusalem: The Witness
by Cheryl McGrath • July 7, 2015 •
http://ishshahsstory.com/2015/07/07/celebrating-anna-of-jerusalem-the-witness/

…by the mouth of two or three witnesses the matter shall be established.”
(Deu. 19:15)

So said the law given to Moses by Yahweh. But in Jerusalem at the time of Jesus’ birth, Jewish tradition and culture declared that witnesses must always be male. Women were held in such low esteem that they were not allowed to testify in any court of law. They were considered incapable of giving witness in any situation.

God, however, had given no such command and was about to refute the prejudice and contempt placed on women by their culture. As Joseph and Mary presented their forty day old infant Son, Jesus, at the Temple according to the law, two witnesses sent by the Holy Spirit appeared on the scene. And one of them was a woman.

Simeon, who the Bible calls ‘just and devout’ first took the Child up into his arms and prophesied over Him, giving thanks to God that he had lived to see Israel’s Messiah.

Then we are told: “Now there was one, Anna, a prophetess, the daughter of Phanuel, of the tribe of Asher. She was of a great age, and had lived with a husband seven years from her virginity, and this woman was a widow of about eighty four years who did not depart from the temple, but served God with fastings and prayers night and day. And coming in that instant she gave thanks to the Lord and spoke of Him to all those who looked for redemption in Jerusalem.” (Luke 2:36-38)

Who was this elderly widow we only know as Anna?

We know that she was very old, she had been widowed at a young age and that she lived her life in and around the temple in Jerusalem.

The Temple covered a very large area and consisted of the sanctuary, courts, balconies, porticos and other buildings. No doubt Anna was a familiar figure around the Temple precincts, most likely ignored as just another old widow as she carried out her prayers and fastings daily against the backdrop of the busy Temple proceedings.

But this was no ordinary widow. Luke tells us Anna was a ‘prophetess’, and as is always the case for prophets, most of her life was spent in prayer. Not surprisingly, her prayers were intercessory, petitionary, as indicated by the Greek word “deesis” used here for “prayers”.

And we are told this woman SERVED God. Imagine: while the high priest and his exclusive rank of priests and helpers carried out the daily religious rituals required by Jewish law, here among them dwelt an elderly widowed prophetess, unrecognised, unacknowledged and uninvited. As only He knows how, God was once again confounding the high and mighty by the weak and foolish (1 Cor. 1:27), because among all the traditional ceremony and ritual of Jewish temple life, God had placed one who truly SERVED Him.

The honour and privilege of being one of two chosen witnesses to God’s unveiling of the infant Christ that day was given not to a high priest, not to a Levite, not to a man…..but to an aged and faithful servant who just happened to also be a WOMAN.

The New Testament tells us that the Law and the Prophets witness to the righteousness of God (Rom. 3:21). That day in Jerusalem, Simeon, the just and devout man who waited for the comfort of Israel (and whose name means “harkening, listening”) was sent into the Temple to represent the law. At the same moment Anna the prophetess was sent by the Spirit to represent the prophets. And God had for Himself two witnesses!

Anna, widow, prophetess and servant of the Most High God, chosen by God in all of Israel to give eternal witness to the arrival of His Son on the earth. Luke chapter 2 tells us simply that Anna ‘gave thanks to the Lord’, but the phrase for ‘gave thanks’ more accurately means ‘to agree, or to acknowledge in the presence of’.

Anna was sent by God to agree with Simeon and give public witness to who this Infant actually was!

After giving thanks to God, we are then told Anna ‘spoke of Him’ (Jesus) to all those who looked for redemption in Jerusalem. Can you hear the ‘I suffer not a woman to teach’ crowd choking and spluttering over that one? Anna taught God’s people about Christ!

Man’s culture and tradition said ‘no woman may witness!’ But God Himself said otherwise. It was He who chose and called His servant Anna to be His witness to the coming of the Messiah. It was He who anointed her to ‘speak of Him’.

And though religious culture and tradition may still oppose, it is He who still calls His daughters to witness and “speak of Him” regardless of the traditions of men.

In Closing

Please visit  Ishshah’s story website @ http://ishshahsstory.com to read other inspirational posts.

The editors are Nancy Bentz, Pat Joyce, and Cheryl McGrath.

WelSpringofLife

Configuring “HP OfficeJet 600″ on MS Windows XP

Background

One of my adoptive family called me last week requesting my help to connect the “HP OfficeJet 600″ that their son brought back from college.

 

What Works

The Apple laptop and MS Window 7 laptops worked flawlessly.  They were able to connect to the printer fairly quickly.

Yes, we had to to a couple of things to the Printer.  Those are:

  1. Found the Power card and powered up the Printer
  2. Connected the Printer to the back of the AT&T Wireless Access Point ( WAP )
    • The Printer prompted for WEP and the son, who has a very good mind, knew it off hand and entered it

 

What does not work

The lone MS Windows XP computer does not work.

Install Printer Driver

Is Printer Driver bundled with MS Windows?

Basically, the printer driver is not bundled with Windows.

Here is what happens when we try to add the Printer by “tricking” windows to think the printer is a Local Printer.

AddPrinter-InstallThePrinterDriver

 

 

Explanation:

  1. We can see that “HP OfficeJet 6600” is not listed in the list of Printers

 

Download Software & Driver

The Printer Driver is available @ http://support.hp.com/us-en/product/HP-Officejet-6600-e-All-in-One-Printer-series—H7/4322968/model/4323587/drivers.

 

Option 1: Check for updates and recommendations (suggested)

I tried to go with Option 1: Check for updates and recommendations (suggested) by clicking the “Check now” button.

CheckForUpdatesAndGoDirectlyToTheSoftware

 

But, was not successful.

 

Option 2: Go directly to software and driver results

And, so chose to directly download the Software and driver.

 

Software and Driver

As of July 2015, the Software and Driver available is:

DriverProductSoftware

 

Version:

  • Version :- 28.8
  • Size :- 113.3 MB
  • Date : August 18th, 2014
  • File name: OJ6600_1315-1.exe

 

Software Download Progress

HP is downloading the selected files to your computer….

 

SelectedFilesAreBeenDownloaded

 

 

Install Software & Driver

Once the Software is downloaded and the binary is launched, here is the subsequent screen:

SoftwareSelection

 

 

We opted out:

  • HP Officejet 6600 Product Improvement Study
  • Bing Bar for HP ( includes HP Smart Print )

And, kept:

  • HP Update
  • HP Officejet 6600 Help
  • I.R.I.S. OCR

 

 

Configure Software & Driver

Printer Setup & Software

From the “Printer Setup & Software”, choose the “Connect a new printer” option

AddPrinter

 

Connection Options

As we are connecting over a wireless network, we chose the “Wireless – Connect the printer to your wireless network and internet“.

ConnectionOptions-Wireless

 

Network Check

As we chose to go the Wireless route, the system scans the network for our printer.

NetworkCheck

 

 

 

Network Printer Installation

In the preceding page, we chose our printer and clicked the Next button.

NetworkPrinterInstallation-InstallingNetworkPrinter

 

 

 

Successful Network Installation

We were able to successfully install the Software.

SuccessfulNetworkInstallation

 

 

 

SQL Server – BCP – Memory Constraints

Background

As a follow-up to a recent post titled “SQLServer – BCP Optimization via Running Multiple Instances in Parallel ”  ( https://danieladeniji.wordpress.com/2015/07/22/sqlserver-bcp-optimization-via-running-multiple-instances-in-parallel/ ), let us see what happens on the DB Server has one pushes it a bit.

Monitoring

Activity Manager

Waits

ResourceWaits-Memory

Explanation:

  • We can see that we are really waiting on Memory

Processes

ProcessWaits

Explanation:

  • A more granular view that shows the same thing; as it indicates that our individual BCP requests are suspended as they wait for their memory requests to be fulfilled

WhoIsActive

Running Adam Machanic’s shows..

WhoIsActive

Explanation:

  1. No Blocking Sessions
  2. Relative to writes, a lot of reads on the active BCP sessions
  3. Other BCP Sessions are waiting on RESOURCE_SEMAPHORE

Dynamic Management Views

sys.dm_exec_query_memory_grants

Let us do a little bit more work.

Not that much more as it is Friday, and so we will just align memory requests to the correspondent session’s query.

Query:

SELECT
          [sqlText] = dmvESQT.[text]
        , dmvDMEQMG.session_id
        , dmvDMEQMG.request_time
        , dmvDMEQMG.grant_time
        , [waitInMinutes] =
             case
                when dmvDMEQMG.grant_time is null then
                   datediff(minute, dmvDMEQMG.request_time, getdate())
                then null
             end
        , dmvDMEQMG.requested_memory_kb
        , requested_memory_mb = (dmvDMEQMG.requested_memory_kb / 1024)
        , dmvDMEQMG.granted_memory_kb
        , dmvDMEQMG.required_memory_kb
        , dmvDMEQMG.used_memory_kb
        , dmvDMEQMG.max_used_memory_kb
        , dmvDMEQMG.query_cost
        , dmvDMEQMG.resource_semaphore_id
        , dmvS.login_name

FROM sys.dm_exec_query_memory_grants dmvDMEQMG

    LEFT OUTER JOIN sys.dm_exec_sessions dmvS

       ON dmvDMEQMG.session_id = dmvS.session_id

    outer apply sys.dm_exec_sql_text(dmvDMEQMG.sql_handle) dmvESQT

Output:

requestedMemory_20150729_0931AM

Explanation:

  • Memory Requested
    • We can see that depending on the targeted table and size of the data feed, the requested memory and the query cost varies a bit
    • We can also see that the requested memory, in our case, is about 885 MB; a little below 1 GB
    • Once we take into account this request is for each BCP session, we need a few few GBs of unused memory to simultaneously service our concurrent requests

sys.dm_tran_locks

Let us see what types of locks are being acquired.

Query:


set transaction isolation level read uncommitted;

SELECT

           lck.resource_type
         , lck.request_mode
         , lck.request_status
         , dmvS.login_name
         , lck.request_session_id
         , par.object_id
         --, object_schema_name(par.object_id) as schhemaName
         --, object_name(par.object_id) as objectName
         , [schema] = [schema].name
         , objectName = obj.name
         , COUNT(*) number_locks

FROM sys.dm_tran_locks lck with (nolock)

        INNER JOIN sys.partitions par  with (nolock)

           ON lck.resource_associated_entity_id = par.hobt_id

        INNER JOIN sys.objects obj  with (nolock)

            ON par.object_id = obj.object_id

        INNER JOIN sys.schemas [schema] with (nolock)

            ON obj.schema_id = [schema].schema_id

        INNER JOIN sys.dm_exec_sessions dmvS  with (nolock)

            ON lck.request_session_id = dmvS.session_id

where  [schema].[name] not in ('sys')

GROUP BY
              lck.resource_type
            , lck.request_mode
            , lck.request_status
            , dmvS.login_name
            , lck.request_session_id
            , par.object_id
            , [schema].name
            , obj.name 

Output:

locks_page

Explanation:

  • It looks like though we requested Table Locks, we are getting more granular locks; in this case PAGE LOCKS

Summary

Again, I will suggest that you have yourself a nice LAB to tinker with things.

Your DBA might not grant your request for “VIEW SERVER STATE“.

But, nevertheless find a way around and earn your “Come up“.

Dedicated

Dedicating Sarah McLachlan’s Shipwreck to the beautiful warriors, Jillian Johnson and Mayci Breaux, who “laid down” viewing the movie Train Wreck in New Orleans last night.

Lupe Fiasco – “The Come Up”

Prelude

Again, it has been that kind of a couple of weeks….

Here is Lupe’s Take

https://www.facebook.com/LupeFiasco?fref=nf

To rappers from a rapper…simply write your own rhymes as much as you can if you are able. Ghostwriting, or borrowing lines, or taking suggestions from the room has always been in rap and will always be in rap.

It is nothing to go crazy over or be offended about unless you are someone who postures him or herself on the importance of authenticity and tries to portray that quality to your fans or the public at large. Then we might have a problem.

Some of the most pivotal moments in rap have been ghostwritten verses.

This leads to a bigger point.

Rapping is not an easy thing to do. It’s takes years of work and trail and error to master some of its finer points. Respect from other MC’s comes in many formats. Sales, live performances, realness etc but the one thing that is the most important is the raps themselves at least in the eyes of other serious rappers.

The phrase “I’m not a rapper” gets thrown around as if it’s a badge of honor. And that’s fine. If rap is a side hustle for you or just a come up then by all means may the force be with you.

But I know a lot of MC’s where rap is the first love and the first thing they think about when they wake up and the last thing they think about when they go to sleep.

Rappers who pursue the art form with this level of intention may not become rich and famous off selling their raps to a wide audience but that has never been an accepted metric to begin with in terms of quality or level of skill.

The vast majority of rappers will never sell 100 records in their lifetimes let alone millions. But that’s not the point, the point is that what pursuing the craft gives us in terms of the intangibles is something that record sales or fame could never represent. We achieve a mastery of language and poetics that competes on the highest levels of discourse across the entirety of human history. We express ourselves creatively and attain a sense of liberation and self-esteem via this sacred mode of creation and communication.

Page 2

Modern Radio and the commercial realm of music has injured rap. It set up ambiguous rules and systems for success that don’t take into consideration the quality and skill of the rappers craft.

It redefined rap as just a being beat driven hook with some words in between and an entire generation has surrendered to chasing the format instead of chasing the art form.

While mastering any format should be the pursuit of any self-respecting rapper including the commercial format it must be kept clear that it is just one of many formats and that you should strive to master all of them.

The art form is kept alive and progressive in the activities of the tens of thousands of rappers around the world who are everyday trying to think of that next witty bar. Trying to put that crazy verse together while at work. Trying to find that word that rhymes with catapult so they can finish off that vivid story rap about their childhood.

Meek Mill struck a nerve accusing Drake of having a ghostwriter and the entire rap world reacted on all sides of the fence because rap is alive. It’s active and it feels.

Its rules and traditions are vibrant and responsive. I enjoy both these brothers music and find inspiration and appreciation from both of them.

I remember being in Toronto at Goodfoot years ago and it was a stack of CD’s on the counter and the guy behind the counter was like “Lupe you gotta take this CD.  It’s my mans mixtape.”

I didn’t really pay it any mind I took it to the car and looked it over and just kind of set it aside focused on other things. I vividly remember saying “what kind of rap name is Drake?” The rest is history.

Once while in Philly I went to do an interview in a shabby and very hood basement studio complex. I peeked into one of the rooms and it was this tall kid with his shirt off bouncing up and down in the booth with an energy that was electric. I gave him my regards. He gave them back. I think I mentioned something about him cutting his dreads. As I left I remember him rapping something about being a boss. The rest is history.

At the end of the day, for better or worse, rap is alive even if some of its greatest moments are written by ghosts.

Video & Lyrics

Lupe – The End of the World – Video

Lupe – The End of the World – Lyrics

Quotes

Oprah Winfrey

You ‘re built not to shrink down to less, but to blossom into more

Gossip means we haven’t emboldened ourselves to talk directly to the people we take issues with 

50 Cents

I always ask people about their bad experiences, for some reason they will offer you more details. I think it is internally, their connection to the painful portion of it.  They will give you a blueprint of what not to do consistently.  ( Interview )

Boy George

What’s really sad is that a lot of very talented people are being forced to do things that are very embarrassing and I don’t intend to be one of them.

I don’t want to be a figure of disappointment.

I’ve had to write in a different way because I’m not in a bad place and I’m not heartbroken, so there’s no one I want revenge on.

Ravi Zacharias

Where destruction is the motive, unity is dangerous. Where good is the motive, unity is phenomenal

John C. Lennox

We thought we could get rid of God and retain a value for human beings. We were wrong. We destroyed both God and man.


Postlude

Here is my take.  I hope someone tried to take something from you this week. And, it made you so mad, you recommitted.

Some people think they deserve the “take down”.

So here is to bowing low to group prayer, shedding light on the gossip, finding an honest way out, getting stronger, and starting the heal.