jmiller's blog

3+1 Things To Do on LinkedIn Before Leaving a Job or Client

Photo credit: sugarbear96 - https://www.flickr.com/photos/sugarbear96/Photo credit: sugarbear96 - https://www.flickr.com/photos/sugarbear96/

When leaving a job or client, things are usually chaotic, and the last thing on your mind is your LinkedIn profile.

However, this can be instrumental in preserving and growing your personal network in the future after you've departed. Here are some of my personal tips for leveraging LinkedIn as you transition to new things.

Tip 1: Connect via LinkedIn before leaving

It’s always good to connect on LinkedIn with folks that you’d like to keep in your network. If you have your public profile link (mine is https://linkedin.com/in/jamiller), you can send it in your departure email message.

Tip 2: Ask for and write recommendations

Consider asking for recommendations from respected colleagues as you leave, and also consider writing recommendations for them.

Tip 3: Update your profile

Update your profile while your experience is still fresh in your mind. You may have accomplished a lot in your time working at a place, and you should capture what you can while you still remember it.

Bonus Pro Tip!: Register and confirm your work email address before you leave

If you have a LinkedIn account, always make sure to register your work email address (employer and/or client) with LinkedIn as a secondary email address. This will help LinkedIn match others that you may have forgotten to connect with to find you later if they have your work address in their contact list.

Just make sure you confirm the validity of your email address using that account before you lose access to it, and LinkedIn will use it to find business relationships you may have forgotten about down the road.

How about you?

Do you have any tips for smart ways to grow your network as you depart from a job or work assignment?

Please share them in the comments!

Season of Joy, Chapter 2 - Adoption!

Three years ago, we began our journey together as husband and wife. Now, we want to write the next chapter by adding to our family through adoption.

You can help make our dream come true. Your gift puts us one step closer to welcoming a new child into our lives.

The average cost of adoption in Ohio is $24,000, but the joy that a child brings is impossible to measure.

We're inviting you to share in this adventure. Give a gift that will last a lifetime. We are truly grateful for your support.

Six Degrees of Dev'n - How Graph Databases Can Save Your Bacon

CodeMash 2016 presentation slides

Here are my CodeMash slides about graph databases and Neo4j:

Six Degrees of Dev'n - How Graph Databases Can Save Your Bacon

If you'd like to find out more about Neo4j, visit neo4j.com and download the Community Edition for your chosen platform.

Hosted solutions

I don't get any kickbacks from them, but I did meet the folks from GraphStory at the CodeMash 2015 and 2016 conferences, and they put together some impressive demos, such as the real-time Twitter mention analysis visualizations. You can find out more about signing up for trial accounts on their website and click on the "Free Trial" link here.

The Promise of a Pencil - its message will change you

Ok, I know I tend to rave about topics I'm interested in, but here is a book that I suspect will fall in the category of *personally life changing* for me.

Adam Braun founded Pencils of Promise organization (http://pencilsofpromise.org/) at age 24 with just $25. POP seeks to build schools that provide primary education for students that wouldn't otherwise be able to receive it because of the extreme poverty they endure.

Pencils of Promise partners with local communities, matching their support, funds, and oversight with commitments by local village families of materials and labor to build needed classrooms.

As detailed in "The Promise of a Pencil: How an Ordinary Person Can Create Extraordinary Change," Adam Braun tells his personal story of what inspired him to take on such a task, an effort that has now resulted in the construction of over 300 schools worldwide since 2009, serving more than 33,000 students.

If you've ever thought about whether one person's efforts matter, or what it takes to start monumental change, this is an amazing story that will inspire you.

You can find book on Audible here:
The Promise of a Pencil: How an Ordinary Person Can Create Extraordinary Change

Amazon Kindle:
The Promise of a Pencil: How an Ordinary Person Can Create Extraordinary Change

Paperback (Amazon.com):
The Promise of a Pencil: How an Ordinary Person Can Create Extraordinary Change

Truly astounding.

Season of You - Proposal Poem

We're engaged!We're engaged!

This is the poem that I wrote to propose to my fiancée, Brandy Benefield, on Sunday, August 25th, 2013:

Season of You


Life brings seasons
And seasons change
Some bring sunshine
Some bring rain
Some bring laughter
Some bring pain

And seasons end with but a night
But on the morrow comes a light

It shines a dawn, a light anew
And with its rays comes breaking through

A glow, a beam, a wondrous light
It lengthens, lightens, pierces bright
To chase away the cold of night
So life continues yet aright

Forward moving, looking on
Ever vibrant, ever strong
And whether short or whether long
Every season brings a song

And though each season has an end
It only means the next begins
With joy, and hope, and life and love
Always only just enough

Since I have traveled through the night
God has brought to me a light

You with warmth and bright sunshine
Have warmed a heart as lost as mine

I've learned to laugh and love again
And as this season now begins
You've become much more than friend

I want you now to share my life
I ask you now to be my wife
With your love to carry me
I ask you now to marry me


 

Brandy, all smiles on our engagement day!Brandy, all smiles on our engagement day!

(I love you Brandy.) :-*

Making Ideas Happen: Dreamers, Doers, and Incrementalists

In Making Ideas Happen by Scott Belsky, he identifies 3 types of "creatives": Dreamers, Doers, and Incrementalists.

  • Dreamers generate tons of ideas but have a difficult time taking action.
  • Doers are great at taking action, but aren't always full of ideas.
  • Incrementalists can switch between Dreaming and Doing, but often they have so many irons in the fire, that they don't take any single idea to full potential.
  • Belsky suggests that partnering with someone of a different "creative type" can actually help move ideas forward into reality.

    • Dreamer + Doer
    • Dreamer + Incrementalist
    • Doer + Incrementalist

    All are effective combinations. In fact, it's even suggested that you partner with multiple people of differing types to achieve a more comprehensive set of results.

    I'm largely a Dreamer in my personal life. I have a smattering of the other two, but Dreaming is probably the more dominant.

    Which one are you? Have you successfully partnered with someone of a different type with a successful outcome? Have you ever found that pairing with someone having similar tendencies left gaps in other areas?

    Chipotle coupon offer backfires with poor execution

    Time exchanged for coupon?

    I visited the page for the limited-time Chipotle buy-one-get-one-free coupon, watched the "America's Next Great Restaurant" promo video and tried to print the coupon, but it said my session had expired and that I needed to watch the video to access the coupon. Massive #fail.

    Here is the message I sent the "America's Next Great Restaurant" app developer via Facebook:

    Subject: I watched the video 3 times but couldn't print!!!

    When I clicked the print button, it said "Session expired. Please watch the video to unlock the coupon." What waste of time. You guys blew it. All I wanted was my free burrito and you guys wasted over 20 minutes of my time.

    I wasn't logged into Facebook at the start. I thought maybe it failed because I wasn't logged in. So I did that, watched again, but no luck. I tried just printing the page from the browser, but Internet Explorer started filling up the print preview with "infinite pages". Is this some kind of cheat to keep people from just printing their own coupon in a legitimate way?

    Again, you blew it. And now I've spent over 5 minutes letting you know. I hope you appreciate the info, because most people just go away.

    Jeff Miller

    Bottom line

    Don't blow a big marketing campaign with poor execution. It will backfire, big time.

    Update

    I tried using the Flock browser instead of Internet Explorer, and this time the coupon printed. But not before I was frustrated enough to blog about it, Tweet about it, and post it to my colleagues on our intranet.

    Concordion Tips for Effective Specifications and Tests

    I found a well-written set of tips on Concordion's website about how to structure the relationship between specifications, test fixtures, and the domain code being tested.

    Concordion - Hints and Tips
    http://www.concordion.org/Technique.html

    It offers good advice including "smells" and better alternative ways to solve problems. Even if you never use Concordion, it's always good to find a well-articulated treatment of a topic. This definitely qualifies.

    Here's a sample of the solid advice:

    Tips

    • Write specifications, not scripts
    • Specifications should be stable
    • Evolve a domain-specific language
    • Isolate behaviours
    • Think "Given-When-Then"

    Common Smells

    • Existing specifications are often changed
    • Lots of "execute" commands
    • Complicated instrumentation
    • Complicated fixture code
    • Examples all have the same structure

    Concordion appears to be a FitNesse-style wiki-test harness combination system. It is implemented in Java, but there is a .NET port called (shocking), "Concordion.NET".

    You can learn more about Concordion's main functionality here:
    http://www.concordion.org/

    Concordion.NET is hosted on Launchpad:
    https://launchpad.net/concordion-net

    Jeffrey Cameron maintains the .NET port and offers several blog posts about how to get started.

    Your First Concordion.Net Project by Jeffrey Cameron

    Further Research

    I plan to read more about Concordion and similar tools (including FitNesse's .NET-based spin-offs like fitSharp in hopes of finding a system that can allow collaborative editing of test cases and help me collect metrics about changes in test results over time (correlated with code changes and business decisions). If you know of any good options, please comment.

    Using LINQPad with LINQ-to-Excel

    I've been really enjoying the free LINQPad app
    http://www.linqpad.net/

    ...in conjunction with LINQ-to-Excel
    http://code.google.com/p/linqtoexcel/

    Here's a video tutorial on how to use LINQ-to-Excel:

    LINQ-to-Excel took some figuring out, but it enables compelling new LINQ integration scenarios like SQL scripts built from spreadsheets. I used formulas on multiple worksheets to build INSERT statements from tabular data and used LINQPad w/ LINQ-to-Excel to extract them into a master script.

    LINQPad script:

    var excelQuery = new ExcelQueryFactory(@"C:\Data\MySpreadsheet.xlsx");
    
    var insertStatementDictionary = new Dictionary();
    var allStatements = new StringBuilder();
    
    foreach(var worksheetName in excelQuery.GetWorksheetNames().Where (name => name.EndsWith(" Data")))
    {
    	var dataRows =
    		from dataRow in excelQuery.WorksheetRangeNoHeader("N8", "W8", worksheetName)
    		select dataRow;
    	
    	var key = "-- " + worksheetName;
    
    	foreach(var dataRow in dataRows)
    	{
    		var cellList = dataRow.ToList();
    		
    		var insertStatements =
    			from cell in cellList
    			let statement = string.Format("{0}", cell.Value).Replace("N/A", string.Empty).Trim()
    			where statement.Length > 0
    			let wrappedStatement = statement
    				// wrap SELECT column list with one column per line
    				.Replace(" SELECT [", "\nSELECT\n\t[").Replace(", [", "\n\t, [")
    			select wrappedStatement;
    		
    		var combinedInsertStatements =
    			"\n\n" + key + "\n" + 
    			string.Join("\n\n", insertStatements.ToArray());
    
    		insertStatementDictionary.Add(key, combinedInsertStatements);
    	}
    }
    
    // create an alphabetically-sorted script using the Dictionary and a StringBuilder
    insertStatementDictionary.OrderBy(sd => sd.Key).Select(kvp => kvp.Value).ToList().ForEach(st => allStatements.Append(st));
    var script = allStatements.ToString();
    script.Dump();
    // copy the script to the clipboard to avoid whitespace "standardization" of the Dump() output
    Clipboard.SetText(script);
    

    Result:

    -- Customer Type Data
    INSERT INTO Sales.CustomerTypes (CustomerTypeId, CustomerType)
    SELECT
      [CustomerTypeId] = 1
      , [CustomerType] = 'Enterprise';
    
    INSERT INTO Sales.CustomerTypes (CustomerTypeId, CustomerType)
    SELECT
      [CustomerTypeId] = 2
      , [CustomerType] = 'Personal';
    

    Both tools are free.

    If you want "Intellisense" (a.k.a., "auto-complete") in the LINQPad tool, you have to pay for it (~$40, sometimes on sale for <$30). For that price you can activate LINQPad auto-complete on 3 physical machines and 3 virtual machines. I paid for the auto-complete license, and it has been worth it.

    Plus, sample code from two popular LINQ books (C# 4.0 in a Nutshell and LINQ in Action) is directly downloadable into the LINQPad tool and is extremely educational.

    You can find both books on Amazon.com:

    Pandora Builds a Great Movie Soundtrack

    I just started using the Pandora music service today. I like it so far, especially the "Modern Movie Composer Station" I created. I started with John Williams (too many to list), then added Danny Elfman (Batman). For good measure, I also added the following:

    The combination above makes for a great listen. I highly recommend it!

    If you would like to listen to the resulting Pandora station, check out Modern Movie Composer Radio.

    Note: Composer links are from WikiPedia; individual movie soundtrack links go to Amazon.com.

    Syndicate content