Skip to content

Changing an Attribute for an XML file with PowerShell

In my little FCI program I output an attribute called author from Word documents – and I wanted to import the FCI data into SharePoint but Author is the internal field name for the creator of a file. SharePoint expects this to be a login name – but out of Word I got a friendly name. So I needed to convert this property to a different name. The first step was getting some XSLT to do this so I came up with:

<?xml version=’1.0′ ?>
<xsl:stylesheet version=”1.0″ xmlns:xsl=”http://www.w3.org/1999/XSL/Transform”>
<xsl:output method=”xml” version=”1.0″ encoding=”UTF-8″ indent=”yes”/>
<xsl:template match=”/” >
<xsl:apply-templates />
</xsl:template>
<xsl:template match=”/Files/File/Properties/Property/@Name[.=’Author’]” >
<xsl:attribute name=”Name”>DocumentAuthor</xsl:attribute>
</xsl:template>
<xsl:template match=”@*|node()”>
<xsl:copy>
<xsl:apply-templates select=”@*|node()”/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>

This worked pretty well but I wanted to run it from PowerShell so how could I do that? Well first I’m lazy so I wanted the Convert-Xml commandlet from the PowerShell Community Extensions. With that I wasn’t quite done. I still needed to process all of my metadata files – and I wanted to refer to my XSLT file relative to the script. So I came up with the following which processes all ~~metadata.xml files, creates ~~spmetadata.xml files, deletes the ~~metadata.xml and then renames all of the ~~spmetadata.xml to ~~metadata.xml.

Import-Module pscx
function Get-ScriptDirectory
{
$Invocation = (Get-Variable MyInvocation -Scope 1).Value
Split-Path $Invocation.MyCommand.Path
}
$scriptLocation = Get-ScriptDirectory
$xsltLocation = Join-Path $scriptLocation “authortransform.xsl”
$files = dir -Recurse -Include “~~metadata.xml”
foreach ($file in $files)
{
$outputPath = Join-Path $file.Directory.FullName “~~spmetadata.xml”
Convert-Xml -path $file.FullName -XsltPath $xsltLocation > $outputPath
}
dir -include “~~metadata.xml” -recurse | remove-item
dir -include “~~spmetadata.xml” -recurse | %{ $newName = join-path $_.Directory.FullName “~~metadata.xml”; move-item $_.FullName $newName }

It took me way to long to put these pieces together but once I did they seem to work pretty well.

File Classification Infrastructure to XML

In Windows 2008 R2 a new feature was added – File Classification Infrastructure (FCI). What FCI does is it allows you to set and keep metadata for files on the file system. Despite the promise of the technology there aren’t a ton of tools which can read or use it so it’s hard to get too excited about the technology. I did, however, think that the ability to apply properties via rules could come in handy from time-to-time. So I wrote a little program that will extract FCI properties and write them to an XML file in the current directory. You can then use this metadata in other programs.

ballot box

Do You Have an Opinion on the SharePoint Community?

Sigh. It’s time for another round of how the SharePoint Community is broken. For those of you, who aren’t aware, please allow me to catch you up quickly. In round one, we had Joel Olsen’s proposal for the SharePoint Knights. Then we had Global 360 trying to define the key influencers in the market with their SharePoint Influencer50. (Which I responded to here.) Now we’ve got Matt Rackley asking Is the SharePoint Community Past Its Prime? This time the spark was a CMS wire post about the community titled The SharePoint Community: What it is, Why It’s Important and Microsoft’s Role. Despite Barb’s slightly liberal use of quotes potentially out of context, the article is a nice feel-good article. It’s about how a group of people grow up – and share in the community. So why does Mark provide a negative spin? In short, I don’t know. I know that he’s posted several other posts with relatively inflamitory titles (or content.) The most recent one I could find prior to the SharePoint Community post is The Real Value of Microsoft Certification in SharePoint??? Knowing Mark (I like to call him Matt just to mess with his head) I suspect that it’s just who he is. He likes to take or share his controvercial point of view and take a read on the market.

Despite the inflamitory nature of the titles (and content) let’s look to see what Mark has to say this time:

  1. These aren’t the good ole days
  2. Speakers aren’t taunted by hecklers
  3. People have egos
  4. Conference burn out
  5. The MVP program is broken.
  6. Microsoft should do more for the community
  7. SharePoint is different.

Let me try to take these points one-by-one. My apologize for potentially grossly misinterpreting his points.

These Aren’t the Good Ole Days

True. It might be good to read The Time Paradox. There’s a view of things (which is neither right or wrong) which says that the best days are behind us. I personally subscribe to the idea that the best days are ahead of us. I see more interesting people in the community every day. I’ve made a point to go help to fill the spots in the market which I felt were challenges to folks. Whether it’s MSSharePointDeveloper.com, the SharePoint Guidance (for developers) or the ECM Implementer’s Course I’ve been working on trying to get content out there that people can use to better themselves. I believe that if we make information easy to understand and available to people that we’ll help encourage the next generation of community participants.

Speakers Aren’t Taunted by Hecklers

Well, I don’t know that I’d go that far. I think I’d say that in general the presenters are respected by the audiences and the speakers respect and care for their audiences. This – in general – will reduce those hecklers. Having just finished my comedy class, I’m really looking forward to having fun with hecklers. Seriously, we’re all professionals here. I think people are genuinely trying to learn. I’ve not seen hecklers at .NET events for a while. I think the phenomenon happens more in the genesis of a tool than in a maturing state.

People Have Egos

Yes, people have egos. Some are larger than they should be. Some are smaller than they should be. I’d say that we’ve collectively done pretty well as a community at keeping people’s egos in check. While I hear complaints that peoples egos are out of control (mainly mine <grin>) for the most part we’re a community and we’re trying to get along together. I can’t say that I’ve seen anyone snub another person because of their ego.

Conference Burn Out

Wow, here I’m in agreement we’re got a problem – but not because of the reasons laid out in Mark’s post. First, we’re in a transitioning market where we historically had a few conferences each year and those conferences drew folks. It used to be we’d have one or two DevConnections conferences, one or two Advisor conferences, and TechEd. That transitioned to two DevConnections conferences, two Best Practices Conferences, two SPTechCon conferences, a Microsoft SharePoint Conference, and TechEd. (Please excuse the fact that I’ve excluded probably a dozen more conferences in the US alone.) During the transition the idea of a SharePoint Saturday sprung up as a free event that would offer a way to gather SharePoint speakers and get a ton of content to folks in a compressed period of time. This is good – and bad. First, it does provide a forum for emerging speakers to participate. With the users group I run, I have 11 speaking slots. That’s what I’ve got for the year. In a single SharePoint Saturday I’ll have 25 slots – twice as many as I have for a year of users group presentations. I can afford to use some emerging talent (even talent I don’t know) in slots for a SharePoint Saturday. (For the record, I didn’t personally speak at the SharePoint Saturday in Indianapolis to make an extra spot available.) Also for the record, we coach speakers for our regular users group meetings. We’ve got a September meeting which will be a brand new speaker.

Putting on my speaker hat for a moment, I want to support SharePoint Saturday events. I make an effort to do the events which are drivable from Indy. Chicago and Columbus get proposals from me. I personally make a point of not flying to events. I think that we do need to allow local talent to contribute. While we gave a stipend to the people from out of town who flew into support SharePoint Saturday Indy, I personally think that those events are best with local/regional speakers. (We accepted all serious local speakers first.)

So SharePoint Saturday is good for speakers – but it’s REALLY bad for the conference market. Part of the problem is that we’re making the market too thin. There are too many of conferences in the first place. I’ll speak at 11 national events this year. All of the events are on SharePoint. I do 5 times as much traveling for conferences as I do for clients. That level of diffusion in the market makes it hard for conference organizers to make money. Add to that the amount of free content they’re getting at SharePoint Saturday events and there’s an immense amount of coverage for content. He’re a secret… conferences are a volume game. There are a ton of fixed costs. The variable costs (like food) are not a substantial part of the cost. So when they have a large number of attendees they make good money. When the attendees aren’t where they need to be they lose money. If they lose money too long they go out of business. So while I absolutely support SharePoint Saturday and volunteers making content available to everyone – it does come with a cost.

As for vendors and their willingness to continue to sponsor the events, I have to say as a business owner wanting to market a product there are too few good ways to market for SharePoint. So I don’t anticipate problems there. I know there’s some pressure on the conference organizers because vendors can sponsor a handful (or several) SharePoint Saturday events for the cost of a conference sponsorship – however, the experience isn’t the same. Chris Geier summarized his experience at SharePoint Saturday Indy here. He points out that in Indy we took care of the sponsors – because we want them back when we run the next event – and also he implies that others don’t keep the awareness on the fact that sponsors are required for the events.

The MVP Program is Broken

Sure. It is broken. Of course, it’s broken. How could it possibly not be broken? Look, I’m honored to be a Microsoft MVP for SharePoint. I am in awe of some of my fellow MVPs who have skils with SharePoint I simply don’t have. I joke in the Shepherd’s Guide that I get to play Who Wants to be a Millionare? everyday but I get an infinite number of phone a friend lifelines. Last week I called Matt McDermott to ask about some MySite / Social things – I love that. Here’s the thing. That’s not about being an MVP or not being an MVP. That’s about being a part of the community – and answering Matt’s calls when he has a question.

Building and maintaining the MVP program is an impossible task. It’s always going to be slightly wrong, slightly broken, and slightly askew. Here’s the thing the program has been moving in the direction of greater clarity since its introduction (with the exception of a notable stumble or two). Toby Richards has been driving the program to more solid metrics and fewer “feelings” about MVPs. On one hand I hate this. It’s hard to quantify the value of a touch. If I have a 5,000 readers of my blog and I post something is that more or less valuable than a conference session where I’m speaking to 20 people (because it’s the last session of the conference.) I don’t know. On the other hand, I love that there is that effort to try to make it less subjective and more about how people are contributing. I know that the program is always trying to improve and I respect that.

I’ll say that I don’t believe everyone with an MVP award deserves it. There are some days when I don’t feel like I deserve it. However, the program has to make an attempt to do something – because shutting down the MVP program isn’t a better option. I’ve heard all of the options people have proposed about the program – and honestly, I’ve not heard anything said that would be a better deal than what the community has now. It’s not perfect but it’s got a lot of people who truly care about the community and people who want to make it better.

I would like to say that there’s confusion about what the MVP program is. Being an MVP has no bearing on whether you actually know what you’re doing or not. There’s no certification exam demonstrating a minimum level of knowledge about the product. There’s no oral examination or review board that you have to confront. It’s simply a measure of how you support the community. Is it a bad measure? Maybe. Is it better than any other community program by any other software company – absolutely.

I’ve personally recommended folks for an MVP award who are great community contributors. They pour their heart out to help grow the SharePoint community. They didn’t get the award. I’m disappointed but not in them – and not in the program. The program has to have a cap – some way to control costs. Honestly, I’ve told the MVP program management team that the cap for SharePoint MVPs is too high. I believe that we need to raise the bar. They’ve not taken my input on this matter – but that’s OK.

Let me return to my point above… MVP means nothing, participating in the community means everything. I have numerous friends who I’d recommend BEFORE an MVP because they are participating and they are caring.

Microsoft Should Do More for the Community

As a business statement I agree. Microsoft invests millions of dollars in advertising a small fraction of that amount would make a huge difference in the community. However, that being said, I don’t believe the community “deserves” it. I am irked by the sense of entitlement that we (I’ll include myself) sometimes get. Microsoft doesn’t owe us personally or the community anything.

SharePoint is Different

Yes, and no. Both Andrew Connell (comment) and Ruven have very good points. SharePoint isn’t any different than any other technical community. I believe that we’re fundamentally dealing with a community. Communities are the same in .NET, SQL, and SharePoint. If you want to learn quickly and thoroughly, I’d recommend you embrace the community.

Parting Thoughts

From my perspective, there has never been a better time to be a part of the SharePoint community. Never. We’ve got more free and paid resources to learn than we ever had. We have a wonderful set of leaders (MVPs and non-MVPs) who are there to help the community succeed. We’ve got support from Microsoft for giving away conference passes to the Microsoft SharePoint Conference. There are users groups in most of the major markets (and more than a trivial number of the secondary markets). There are more books on SharePoint than there have ever been. I guess I don’t understand all of the negativity about the community.

Trust and Betrayal in the Workplace

Book Review-Trust & Betrayal in the Workplace

I’ve been trying to crystallize some thinking on building adoption and engagement for SharePoint implementations which lead me to models for change and John Kotter’s Leading Change book. Step 2 of his 8 step process is to Creating a Guiding Coalition. There are aspects of building the coalition that Kotter covers well: Position Power, Expertise, Credibility, and Leadership – however, inherently there’s the component of trust that’s missing in his discussion of this topic. Credibility touches ever so slightly on it. Credibility is a specific trust around someone but I believe this issue of trust and being a part of a team is much more.

I read the book Building Trust: In Business, Politics, Relationships, and Life – but it was a philosophy discussion not a discussion of how to break down trust and how to create it. I picked up Trust & Betrayal in the Workplace by Dennis and Michelle Reina looking for something more solid and direct. I was very pleased to see them take trust and break it into components. To look at each part and way that we trust – and in so doing created the opportunity to realize what builds trust – and what destroys it.

Trust & Betrayal in the Workplace defines three types of transactional trust and associated components (I paraphrased some of the below to match my thinking):

  • Contractual
    • Managing Expectations
    • Establishing Boundaries
    • Delegating Appropriately
    • Mutual Intentions
    • Keep Agreements
    • Being Congruent
  • Communication
    • Share Information
    • Tell the Truth
    • Admit Mistakes
    • Give/Receive Feedback
    • Maintain Confidentiality
    • Speak Directly
  • Competence
    • Acknowledge Skills/Talents
    • Allow Decisions
    • Involve Others/Seek Input
    • Encourage Learning

In addition to the awareness of different kinds of trust, there are also models for recovering from betrayal – which is a natural part of trusting someone. You’re going to find that you are betrayed sometimes. Most of those betrayals will be small and unintentional – but not all of them.

The end of the book includes a concept of transformative trust that relies on conviction, courage, compassion, and community. In my opinion, this “higher level” trust is the kind of trust which radiates and encourages others to trust – and it’s the kind of trust that’s demonstrated by some of the best leaders.

If you’re struggling with an organization where there’s little trust and lots of betrayal you may find that the book Trust & Betrayal in the Workplace is just what the doctor ordered.

Building Trust: in business, politics, relationships, and life

Book Review-Building Trust: In Business, Politics, Relationships and Life

In a former life I ran a Novell MHS based mail delivery system. This was before the Internet was commercial and when I was working with suppliers from across the globe. We found that faxes weren’t very reliable and we needed a better way to deliver mail. The email client was The Coordinator by Action Technologies. It had the distinction of mapping email messages into types of commitments that we were making with one another (request for action, request for meeting, etc.) It was based on the thinking of Fernando Flores and to a lesser extent his book (together with Terry Winograd) Understsanding Computers and Cognition. Because of this I had a sense of nostalgia when I was researching building trust and saw Building Trust: In Business, Politics, Relationships, and Life by Fernanando Flores and Robert Solomon.

I was concerned because I rememebered that Understanding Computers and Cognition was a bit philosophical and hard to convert into practical use. It’s a good thing to think about – but difficult to leverage. In fact, that was one of the things I admired about The Coordinator, it was a good way to take the philosophy and turn it into something real.

Unfortunately, Building Trust is similar as it reads more like a philosophy discertation than a mass-market book. However, it’s not without merit if you’re struggling to understand what trust is – and how it works. Perhaps my favorite piece in the book is an exercise where the authors would ask audiences to complete the following: “Trust is _____.” The most common answer is “earned” and in all candor that’s the answer I would have given before reading the book. Instead through reading the book I would say that “Trustworthiness is earned.” And that “Trust is given.”

The book sets out many examples of how we confuse trust and trustworthiness as well as how trust must sometimes be given when the other person isn’t trustworthy and importantly how trust has limits.

The book describes three kinds of trust:

  • Basic Trust – Un tested often overlooked trust. The authors assert that most trust is basic – and unconscious.
  • Blind Trust – Trust that ignores all factors including evidence (or lack there of) of trustworthiness on the part of the recepient. This is also called naieve trust.
  • Authentic Trust – A conscious form of trust where the limits of trust are exposed and thought about.

One key point is that while we tend to believe that trust is an absolute, the reality is that trust does – and should – have limits. You wouldn’t necessarily trust your attorney to watch your children – though you almost certainly trust his advice on legal matters.

If you’re up for challenging your beliefs on trust, you should pickup Building Trust.

The Making of Microsoft SharePoint Enterprise Content Management Implementers Course

I’m happy to report that the Microsoft SharePoint Enterprise Content Management (ECM) Implementer’s course is live. I wanted to take a moment and talk about the course that is 15 modules long – and designed so that you can consume it via the videos that are posted or as an instructor lead class. The work done on the course has spanned a year, has involved MVPs, Microsoft product and program managers, and a host of experts to design the course content and to provide feedback along the way.

A year or so ago, Paul Andrew, and I started talking about a ECM course that was 300 level. We created an engagement to build the course outline for the course which included several brainstorming and review sessions. During that scoping and design engagement we had meetings with SharePoint experts – including both MVPs and non-MVPs, product team members, and members of Microsoft Consulting Services. It wasn’t one meeting but a set of meetings starting with brainstorming and a set of meeetings to refine the outline. Once we got to an outline of topics we designed a set of instructional modules to support that outline.

The process we used leveraged the best things of what we had seen with the Microsoft Learning process, while recognizing that the course was designed to educate the market – not to drive to certify people for a technology. I sincerely believe the process for developing the outline lead us to a set of important activities for anyone implementing an ECM system.

The writing was a separate engagement and as the lead author I was thrilled that the authoring team we put together for the course included four MVPs:

I also got some help from Kevin Dostalek for one of my modules. In addition, Spence Harbar was our technical editor. Spence is both a Microsoft MVP and a Microsoft Certified Master – not to mention one of the most knowledgable people on SharePoint on the planet.

The immense amount of talent I was able to draw from for writing the course was awe inspiring. I can’t tell you how big a deal it is for me to get such a talented team on the project. There are two challenges you have in assembling an authoring team – experience with the topic and experience with writing. The team is comprised of accomplished authors and communicators and with the editing team – including myself – I believe we ended up with some truly great content.

In short, I feel like we got the right topics in the course and we created the instructional content to make sure that the topics are covered well. I won’t tell you the course is perfect – no course ever is. However, I will tell you that there’s a great wealth of experience that’s been poured into creating the content.

As a point of clarification, the course is an implementers course – that means server administrator (or records manager) – it’s not a development focused course. In 2009 and 2010 I worked with the Patterns and Practices team on the SharePoint Guidance which is all for developers. There’s absolutely a developer story for ECM, however, there’s a ton of things that need to be done on the server administrator side of things – these feel like the more critical items for most ECM implementations.

I am absolutely commited to the quality of the course. If you’ve got feedback about the content you’re welcome to send it to me. If you’re looking for an instructor for the content for your organization, please let me know. I’ll be working with selected clients to teach the course in its 5 day instructor lead form.

42 Rules of Employee Engagement

Book Review-42 Rules of Employee Engagement

One of the best things about 42 Rules of Employee Engagement by Susan Stamm is that because it’s 42 separate rules – so you can consume the material a few pages at a time. The book for me was a sort of flash cards, a collection of bits and pieces that I’d learned elsewhere that I was in some state of forgetfulness about. Although my interest wasn’t in engaging the employees I manage – I still found some nuggets of useful information about how to engage employees – and perhaps more importantly what breaks employee engagement.

The book ends with a list of references to other books that might be useful to the reader. In fact about 15% of the book are these references to other books and tools.

Here’s the list of rules covered in the book:

  • Rule 1 Rules Are Meant to Be Broken
  • Rule 2 Get “Under New Management”
  • Rule 3 Begin at the very Beginning
  • Rule 4 Listen, Listen, Listen
  • Rule 5 Be a Hands-On Manager
  • Rule 6 Be a Low-Tech Communicator
  • Rule 7 Everyone Needs Feedback
  • Rule 8 Keep Learning
  • Rule 9 Allow Your Team to Grow
  • Rule 10 Support Your Team Members When Needed
  • Rule 11 Relationships Determine Results
  • Rule 12 Sharing Builds Community
  • Rule 13 Your Beliefs Drive Results
  • Rule 14 You’re Still the Boss
  • Rule 15 Everyone’s Not Like You (Thank Goodness!)
  • Rule 16 Be Direct with People Who value Results
  • Rule 17 Be Enthusiastic with People Who value Enthusiasm
  • Rule 18 Be Accepting with People Who value Sincerity
  • Rule 19 Be Reliable with People Who value Quality
  • Rule 20 Build Self-Esteem When Discussing Performance
  • Rule 21 Involve to Engage
  • Rule 22 Use Your Head
  • Rule 23 You Don’t Have to Be the Smartest Person in the Room
  • Rule 24 Compete with Your Competitors
  • Rule 25 Get Out of the Shower
  • Rule 26 Turf is for Stadiums, Not Teams
  • Rule 27 Right Actions Bring Engagement
  • Rule 28 Leave Your “Good Parenting” Skills at Home
  • Rule 29 Leave Your “Bad Parenting” Skills at Home
  • Rule 30 Expect Exceeded Expectations
  • Rule 31 It Only Takes a Minute
  • Rule 32 Recognize Good Performances
  • Rule 33 Problem Solving Is a Team Sport
  • Rule 34 Help Your Team Accept Change
  • Rule 35 He Who Has the Gold, Rules
  • Rule 36 Build Acceptance, Reject Prejudices
  • Rule 37 Honesty Is Always the Best Policy
  • Rule 38 Give It Your All
  • Rule 39 Know What You Want
  • Rule 40 Engaged Teams Get the Facts
  • Rule 41 Ask, Don’t Tell
  • Rule 42 These Are My Rules, What Are Yours?
cats

How This Developer Solves a Puzzle

My wife purchased a puzzle for our family, and her Aunt and Uncle that we’re staying with on vacation to do. The puzzle consists of nine square pieces each of which contain half of an image of a cat on each side. The completed puzzle is a 3×3 grid of the pieces where all of the cats match up. After an hour or so of trying to randomly try pieces and combinations, I decided to come up with a plan that would definitively solve the puzzle. I decided to break the problem down into a set of comparisons the computer could do – and write a program to solve the puzzle.

Before I get to far, yes, I was informed by my wife that this was cheating. However, I’m not sure I agree (feel free to provide your comments if you would like). I don’t agree because puzzle solving should be about using all of your skills to be able to create the solution – not just simple trial and error. If you believe I cheated in finding the answer, that’s OK. If you prefer to think, as I do, that what I did was find an ingenious way to solve the puzzle read on.

Since I’m not an expert in image recognition, I decided the first step was to inventory the pieces and convert the images into something easier to handle. I decided that each cat had a left and a right side of the image. Since there were four different cats I’d number them 1 (Black), 2 (Orange), 3 (Gray), and 4 (Tan). I would then label the left side of the cat as the A (or true) side and the right side of the cat as the B (or false) side. Then I could create a inventory of each piece with it’s numberic identifier for the piece (which I randomly assigned) and the number for the cat image on each side: 3b, 2a, 4b, 1a… With this conversion from physical objects into numbers in hand I was ready to create some classes and structures.

I decided at the most basic I was matching sides so I created a class with the Cat Number and Cat half variables. The cat number had to match and the cat half had to be opposite. Because of this I used a boolean for the cat half. I also created a method for the class called match, which took in another puzle side and returned a simple true-false to indicate whether the sides could be matched together. One key here is that I returned true of there wasn’t a piece on the other edge. I knew there wasn’t a piece because the cat number was zero.

I also needed a puzzle piece to contain the piece’s identifier and the sizes of the piece. I also created a puzzle placement class that considered the orientation of the piece – since pieces could be rotated you didn’t know which side should be up. Finally I created a puzzle solution class to hold attempted solutions. The puzzle solution class had a method to return whether two solutions matched. This was used to prevent solutions from being tried multiple times by the program.

The main code of the program consisted of some lines to initialize variables, followed by a set of nested loops. The outer loop was a solutions loop where I recorded each tested solution. Inside of that I had loops for x and y positioning and inside of that pieces and inside of that orientation. Through these loops I’d test a piece at a time in each orientation to see if I could get it to match on all four sides. One key here was my array of positions was actually five by five and not three by three. Why? I kept a set of empty positions all around the pieces so that I didn’t have to worry about running into array bounds issues. It was wasteful of memory to be sure – but it’s efficient from a coding perspective and given this was quite literally throw away code, it seemd like a reasonable thing.

After working out some of the logic and a few minor logic bugs I ended up with a program that tried 283 solutions before finally settling on and displaying the answer on how to solve the puzzle to me. I should say that the answer was displayed instantaneously – at least to me it was instantaneously. I’m sure there were some number of milliseconds involved but to me they weren’t even measurable. I tested the solution on the real puzzle and it worked.

I ended up having about an hour in the code – and I’m certain that solving the puzzle by hand would have taken much longer than this given the complexity of the problem so I was happy with my puzzle solution.

Clearly you can’t use this technique to solving every puzzle. The typical jigsaw puzzle doesn’t lend itself quite as nicely to this sort of problem – but it was a fun exercise to convert a real world puzzle into an algorithmic one that the computer could solve.

The completed puzzle looks like this:

If you want to look at the code it’s available here.

365 Ways to Motivate and Reward Your Employees Every Day - With Little or No Money

Book Review-365 Ways to Motivate and Reward Your Employees with Little or No Money

Sometimes you can’t control the environment you’re in. If that’s the case and you’ve got to reward folks, I’d strongly suggest you pick up 365 Ways to Motivate and Reward Your Employees with Little or Not Money by Dianna Podmoroff. I know that’s a qualified recommendation, but let me explain. The book does an absolutely excellent job of providing techniques for motivating employees. It’s a great book to keep you thinking about different approaches for “gimicks” and “games” to motivate employees. There are some truly great ideas in here to inspire you to take some action to motivate employees – whether you’re in HR or not. The book recognizes all of the key factors of motivation, that you can’t create motivation you can only foster it. The book struggles with the same concepts that managers everywhere struggle with – “How do you awaken employee’s natural desire to be better?”

My real struggle with the book is that it’s an “evolutionary” rather than “revolutionary” approach to the topic. It’s not that this is wrong, it’s the right answer for most situations, however, I was looking for more of how you can drive change in an organization – to refocus the organization to enabling the employees to be better – it’s just that this book doesn’t do that. The book does, however, still get to keep a space on my virtual bookshelf so I can refer to it when I’m looking for ways to plug people in.

The New Comedy Writing Step by Step

Book Review-The New Comedy Writing Step by Step

The New Comedy Writing Step by Step by Gene Perret is a great book that helped moved me from beginner to intermediate. I loved Greg Dean’s book, it got things started. However, there were some great exercises to help kick start the writing process in this book. Unlike Dean’s definitions, Perret’s definition for what makes a joke is a bit broader – “A joke is anything that gets a laugh.” That definition was helpful to allow me to break out from the formula provided by Dean and move into other kinds and types of joke structures. I really appreciated Perret’s perspective that comedy can be taught. There are folks in the comedy community – particularly those who learned from the school of hard knocks who don’t believe that comedy can be taught – or learned from techniques.

I particularly realized that some of the things that make people laugh are just funny observations. For instance, men buy shoes based on type (sandal, boot, tennis shoe, dress shoe). Women buy shoes by outfit or color – they’re trying to match an outfit. In text this is boring. In a room it never fails to get a laugh as people realize how men and women are different in ways that we rarely think about.

The other BIG thing for me out of this book were ideas for getting the ball rolling on writing comedy. For instance, captioning photos with funny captions. You can go on Flickr and download a random set of community commons images and caption them. It’s great fun because you never know what sort of caption you might come up with. For instance what caption would you put on:

plant

© CC Alexander von Halem

I captioned that one “God’s Grenade.” There are other silly little ideas for exercises – but they did get things going.

There’s a ton of other good things like awareness that jokes release tention, ideas for focusing on emotion, etc. If you’ve got the basics and you’re looking for a book to move you forward, The New Comedy Writing Step-By-Step may be for you.

Recent Posts

Public Speaking