Posts By :


Presentation: Template::Toolkit as a cheap API

I’m just going to copy and paste my slides from this Lightning Talk delivered at the 2016 Dutch Perl Workshop. Lightning talks have a maximum of 5 minutes, and I wanted to do something light and fun. These talks are usually at the end of the day and having something that I could deliver with some energy and humor really helped.
The point of this presentation is that Perl allows you to do things that just work, even if you are ‘cheating’ to make it work. In this instance, I turned a template rendering system into an API interface to reuse some methods from a different script. This is not stable or good practice, a point I emphasized, but it WAS clever and I thought sharing it would be fun.







The Cheap API

Richard Still


Mature” application – a rat’s nest of legacy code written by a deranged madman**

Using Template::Toolkit


Need some of those functions in another application (script or JS)

3 years ago **

Using Template::Toolkit, you are already putting everything into a single data structure before sending it to be rendered:

$templater->process($template, $TTvars, \$output, binmode=>’:utf8′)

or $self->Probe(\@include_path, $templater->error);

Instead of sending to TT, redirect the output to JSON

if( $sending_to_api ){

use CGI;

my $q = new CGI;

use JSON;

my $utf8_encoded_json_text = encode_json $TTvars;

print $q->header(‘application/json’);

print $utf8_encoded_json_text;




Re-Use for free!

1) “Yes, I know that refactoring the original code into modules is more stable and would yield better code.”

2) “Yes, I know that ‘No Time’ is not a good excuse.”

3) “Yes, other formats for export are available, JSON just gives me the option of using this content in an AJAX interface.”

Experienced Software Developer

Sometimes a company changes direction, sometimes you work yourself out of a job, sometimes you leave a job for reasons totally unrelated to the job, but no matter what the cause, it’s a hard reality that sometimes, you have to look for a new job.

How do I present myself in this market? I regularly sit down with clients and talk about their wants and needs. I participate in planning meetings. I do technical support when something goes wrong. I became a subject matter expert in something I knew nothing about (psychometric testing) to understand the best way to help other people do their jobs better. I taught myself statistics, reviewed legal regulations from different countries, created educational videos, translated complex concepts into working code and translated hundreds of pages of text into English from Dutch. I acted as the first contact for English-speaking customers, did trainings, wrote ads . . . how do I write a resume that doesn’t read like “War and Peace”? Which job title covers all of that?

In my heart, I think of myself as a Software Architect, solving problems both for my company and for our clients. I’m a wizard creating magic black boxes that just work and do what you expect them to do, quickly and reliably, on all platforms, without a lot of fuss. All of the other stuff I do is, to my mind, just supporting my coding addiction. “Software Architect” doesn’t cover all of those other things and “Coding Junky” just seems like a bad title to put on my resume.

After working on a product for 14 years, thinking about it, tinkering with it, sweating bullets over it and cheering it on, I am starting to look around and see what the job market is like. The biggest thing on my resume is the language I program in, Perl. I love Perl, I love the community, I love the flexibility and the fact that every year there are new tools being added to my set of possible solutions. But Perl is not the language du jour, it might still be the duct tape of the internet, but when was the last time you thought duct tape was interesting or exciting?

The problem is that job listings mention specific technologies and buzz words while I have been focusing on solving problems as efficiently as possible. At various times in the last 14 years, I’ve:

  • written a ton of Javascript
  • hacked PHP code
  • tinkered with NodeJS
  • played around with statistical libraries
  • submitted bug reports and pushed the development of some core Perl modules
  • used three different bug tracking platforms and 2 different version control systems
  • taught myself to make whiteboard videos
  • taught myself audio editing
  • written marketing text
  • learned about SEO
  • learned enough SOAP and XML to be dangerous
  • wrestled with PDF generation
  • agonized over gettext translations

… and so many other things that I have, frankly, blocked them out. But “Really Good Problem Solver” doesn’t bring up any hits on job search sites, either. I will continue to try various titles and industries in these searches, I will just have to hope that my definition of “Experienced Software Developer” means the same thing to me that it does to a hiring manager.


Facebook::OpenGraph – logging in to a Perl application

Getting a Perl application to talk to the Facebook API was not an enjoyable experience, mostly due to my lack of experience with Facebook’s terminology and a basic understanding of how OAuth works.

Ignorance never stops me! So when I wanted to allow visitors to log in to my Perl application via Facebook, I just started hacking away until I got everything working. I am scheduled to give a talk about this at the 2016 Dutch Perl Workshop, you can download the Presentation PDF.

My notes:

Install the Furl::HTTP and Facebook::OpenGraph modules.

Register the your application with Facebook to get your App ID and App Secret.

I broke this process up into two scripts, a ‘login’ script that acts as a landing page for incoming visitors and the application itself. The login script is going to catch the incoming request and immediately forward the visitor to the Facebook authorization page with a callback pointed at the program (index.cgi).

use Furl::HTTP;
use Facebook::OpenGraph; 
use strict;
use CGI;
my $q = new CGI;
my $fb = Facebook::OpenGraph->new(+{
      version => 'v2.5'
    , app_id => '1234567890123456' 
    , secret => '2b6928c1283475f434a54bf45371'
    , ua => Furl::HTTP->new(capture_request => 1)
    , json => JSON->new->utf8
    , redirect_uri => ''
my $auth_url = $fb->auth_uri(+{
       display => 'page' 
     , response_type => 'code'
     , scope => [qw/email/]
print "Content-type: text/html\n\n";
print $q->redirect($auth_url);

This script takes an incoming visitor and generates an authorization URL for Facebook and then redirects the visitor directly to that Authorization URL. The ‘scope’ of my app is only asking for basic user information, no special permissions are being requested. If I wanted other, more esoteric, user information I would need to ask for specific approval to access that information.

You can see how to decode the information that gets sent to the callback URL, refer to the contents of the Presentation PDF.


Burnout is affecting younger people

A recent study by the Dutch organization TNO showed that 15% of workers are suffering from burnout symptoms. In the Netherlands, alone, that’s more than a million people.

I was not surprised by that finding, the vast majority of people who take the Octogram test are looking for ways to get out from under the crushing weight of their “Career”. They can see that work doesn’t *have* to suck, everyone has at least a few friends who actually like their job, so they know it’s possible to have a better career.

The surprising part of the study highlighted the age distribution of the respondents. Burnout isn’t just a risk for people in the middle of their careers, they were showing a relatively high level of problems for younger people in the 25 to 35 year old range.

Traditionally, people were to focused on spending their younger years trying to get ahead in their career without really thinking about whether or not they were in the right kind of career. That’s changing because millennials are looking for meaning and purpose in their work right out of the gate. I have been seeing some negative commentary and stereotyping about this in HR and Management discussion boards. It’s easy to minimize someone’s complaint by calling them ‘whiners’ or some such.

But the millenials are not just complaining that work is ‘too hard’, they are complaining when their work has no meaning. Everyone comes to that realization at some time during their career, they want to have work that is fulfilling and worth something. Millenials just seem to be figuring this out earlier than my own Generation X. We just rebelled without knowing what we were complaining about, Millenials just seem to be ahead of the curve.

Damn whipper-snappers!

The TNO study results are summarized here: (Dutch)

You are a closed book

Experimental research (by Vazire, Newton, Yudowsky, Gilovich, Medvec and Savitsky to name just a few) has shown that you overestimate how much other people know about you, how much attention they pay to you, how much they can tell about what is going on in your head.

They don’t know what is going on in your head.

But that’s okay, because neither do you.

You overestimate your own abilities in areas were you know too little. You underestimate your expertise in areas where you are an expert (Dunning-Kruger effect). You are chock-a-block with bias and false impressions and errors in perception.

That is what the Talent Profile is good at doing. It uses a powerful psychometric instrument that slips past your own cognitive blocks to figure out what really makes you tick. It gives you a solid book of instructions on how to drive your own career. It tells you how to keep yourself interested and focused at work. It tells you where the pitfalls are and points out how to get around them.


Mind Expansion 101

There are two places I go when I am looking for a mind expansion fix. For me, it’s just depressing to sit and stare without something in my mind to turn over and think about. I am a pretty creative person, so my subconscious usually has no problem keeping me occupied. But every now and then, there’s no ‘there’ there. I need some more thinking fuel and I wanted to share two of these with you, because I like you.

The first is a web site with plenty of thought-provoking articles on ethics, science, philosophy and critical thinking. It is a blog put together by the Foundational Research Institute and has a group of engaging bloggers that do a great job of breaking down concepts and putting them together again in a thoughtful and interesting way:

The second place is a podcast and a blog and a couple of books by Daniel McRaney, so I can get my fix in lots of different formats if I don’t happen to be sitting in front of a computer. Daniel takes the latest information and let’s you know, in no uncertain terms, how you are fooling yourself and that you are not so smart:

I might update this in the future with some of my other go-to links, but these will keep you occupied for DAYS of thinking and contemplation. The kind of thinking that makes you feel good and mentally stronger and healthier. Go get some!

Putting Humans in HCM

Human Capital Management is a catch-all term for anything touching on moving, hiring, promoting or dealing with all those messy humans that populate so many companies. On the technology side, there seems to be a definite drift toward reducing humans, who are infinitely complex and entirely unique, into a set of numbers and checkboxes.

  • Was the correct paperwork completed?
  • Are we in compliance?
  • Did the right person get the right pay raise at the right time?

All of these are important questions, I don’t dispute that for a minute. But in the vast majority of the technology offerings I see in the market, and in more than a few of the HCM consultancy companies, the focus is very much on high level, strategic, considerations and not very much on the people in the organization. The focus is on “which direction the organization needs to move”  without spending time learning if the people that need to implement these plans are on board or capable of moving in that direction.

Without a deep understanding of the people in an organization, these strategies are severely handicapped before they even begin. This would be the same as trying to drive a race car without knowing that it tends to drift to the left at low speeds and third gear is missing. You need to know the people in your organization, your grand strategic plan will not, cannot, succeed without this information.

So here are some steps you can take to put Humans back in Human Capital Management.

1. Learn to talk about people

As with any complex discipline, you need to have a vocabulary for talking about your subject matter. The easiest models I have seen is the Competing Values Framework, but almost any model is better than no model at all (except the MBTI, don’t even get me started). See the article I wrote on how to select a good personality test: 8 simple rules for choosing a Personality Test.

You need to have a model to give you a vocabulary. You need the vocabulary to talk about these issues in your strategy and  communicate this to all levels of the organization (management, operations, HR, etc). A cornerstone of strategy is making sure everyone knows what the strategy is.

2. Consider Culture

Organizational culture might feel like an indefinite, ephemeral construct, but it is very real. Ignoring it will very definitely bite you on the butt. The culture of your company is how people are promoted, how managers deal with employees, the relationships between employees and the organization, the actions that are encouraged, the behaviors that are discouraged, etc. Culture is a web that touches and connects every part of your organization together. You need to know what the culture of your organization is before you make strategic plans.

Again, I gotta recommend the Competing Values Framework for this. Here is an article that talks about the OCAI model, I highly recommend that you read that. Luckily, the model is well known and you can find lots of providers in the marketplace.

3. Think about Values

You can hire people that will do the work and get them all moving in the correct direction and implementing your strategic vision. This is a recipe for success and is the bare minimum that HCM should be doing.

Here is what will take your organization to the next level: passion. Passion (the term of art right now is “engagement”, but I prefer “passion”) happens when the values of employees match up with the values of the organization. Our vocabulary for talking about value is the Schein model of Career Anchors. I made a video about this:


And there you have it. Three not-so-simple, but very important steps for putting Humans back into Human Capital Management. Your comments and feedback are welcome!

Building an Effective Team

The Octogram test results can be used on three levels:

  1. Personal
  2. Team
  3. Organizational

On a personal level, the Octogram Talent Profile gives you plenty of insights into how you operate as an individual. At the team level, the Octogram gives you an effective way to put everyone in roles that play to their unique strengths and compensate for the weaknesses of other team members. At the organizational level, the Octogram allows you to see where key skills need to be developed and who can be promoted into or hired into the organization to fill those needs. In this article, I’m going to focus on using the test results to put together a team.

First off, you need to watch the video I made that describes how the traits of the Octogram relate to how people communicate.

The most essential element of building a team is clear and effective communication

So, right from the beginning, you can use the Octogram to help everyone understand how to communicate more effectively. By understanding your own style (how you appear to other people) and the communication styles of the other members of the team, you will be able to pull back or amplify different aspects of your own behavior to make interactions flow more smoothly and keep everyone moving together. This will also help everyone understand how to moderate or flex their own styles when communicating with other members of the team.

Next, the Octogram helps you place each member of the team in the roles that most suit their work style. Put your best Anchor in the role of proofreading, details, planning and paperwork. Put your strongest Networker in roles that require communications and messaging to everyone outside your group. Put your strongest Achiever in the role that most suits her competitive attitude and high energy. By taking the time to identify each individuals’ strengths and preferences, you dramatically increase your chances of success by making sure everyone is doing what they do best.

But how will this work in a practical sense?

First off, have everyone in the group take the Octogram test. The Talent Profile available on this site gives an extremely detailed view of each person (including the section titled “As a Member of a Team“), but there is a research version of the test available at for free. You also have the option of contacting one of our partnering psychological agencies for extra services like group reporting expert help on interpreting the results.

20150819_105159Next, get everyone to print out their Octogram graphic, you are going to sit down with them as a group to let everyone see who they are and to see who everyone else is. This meeting serves several purposes,

  1. it teaches everyone how to talk in terms of work styles and communication styles, it also gives them a vocabulary for this discussion
  2. it gives everyone some clues and insights into how other people in the team prefer to work and communicate, it also shares your own styles with the group
  3. it allows you to walk, with the team, through the roles and tasks that the group needs to perform and place people in positions that fit them best

That last point is the critical one, everyone can see why each person is doing what they do. How many times have you seen groups fall apart through lack of understanding in how to talk out problems or what other people are supposed to do? This also gives the group some insight into what kind of manager you will be and what they can expect from you. This sets expectations where they should be and avoids conversations 6 weeks or 6 months in the future about what they thought you were going to be like.


There are different ways to talk about culture. For example, the Octogram grew up out of an organizational culture model. But this paragraph is more about societal culture. The process I have described above works best in a societal culture that does not have a significant power difference between management and labor. In societies with a big power difference, it is usually difficult to speak about differences and conflicts between employees and employers. If you are in one of these society cultures, this process will still work, but you need to walk into this meeting with an open mind and work to make sure everyone knows that open communication and honesty are not only best, they are essential to the success of the group.

Communication and working together require understanding. The Octogram test is the best method I have found for making work styles understandable and for talking about these important issues in an open and honest way.

8 Simple Rules for Choosing an online Personality Test

Psychometric test development is a combination of intuition, inspiration, vocabulary and statistics. A test developer needs to have the intuition to see patterns in human behavior. They need to have the inspiration for seeing the underlying sources of those patterns. They need to have the vocabulary for defining those patterns in tests (through several revisions!). And they need the mathematical background to check the validity of their instruments. The thing is, if you don’t know how any of those steps work, you can make bad purchasing decisions.

Judging the quality of any particular personality test is difficult if you don’t have the right background information. Without that information, you cannot tell the real medicine from the colored sugar water. The normal signals for quality (adoption rates, attractive design, pricing, etc) are almost totally useless in this arena. I have seen tests online that look like they were designed in 1995 that were high-quality and valid instruments. I have also seen very slick web sites and reports that were not much more valuable than a horoscope.

So, how can you, the normal human being who just wants to use a personality test but not spend 6 months becoming an expert, tell a good test from a bad test? This is where I am going to save your bacon, your sanity and quite possibly the future of your company with a few 8 Simple Rules for Choosing an online Personality Test. Read the description of the test and poke around the publisher’s web site. After doing that, let’s look at the following Rules.

Warning sign: Avoid the Woo-Woo

If the ‘inspiration’ for the test came from a hermit on a mountain top, discard.

If, at any point, the description points to some form of “Ancient Wisdom”, discard.

If they try to connect the “magical powers” of numbers (or any magical powers at all) to personality, discard.

Any use of the word “Mystical”? Discard.


You have read the description of the test and what it is measuring. Can you explain it to someone else in just a few minutes? I have noticed a trend in ‘bad’ test developers to try to baffle the reader with overblown terminology and contradictory claims. A test should be measuring something specific and what it is specifically measuring should be easy to formulate into a few sentences and explain to someone else. If you cannot explain it to someone else, how are you going to explain it to the candidate, your customer or yourself?

The purpose of personality testing is to take something very complex (human behavior) and explain it in a simpler framework so that it is understandable. If the description or test results are not doing this, discard.


You know how the horoscopes you read in the newspaper are super bland and can be applied to just about anyone? How the claims are so general that if you handed the same one out to 10 different people, 9 of them would say that it was written especially for them? This is a sure sign that the test is, if not wrong, is useless.

The official word for this is ‘Discrimination’, telling people apart. It’s really easy to try this out. If three people take the test and you remove the names from the reports. Can people who know them tell which report is for which candidate? If they can’t, then the test is failing its basic function of describing a person accurately.

If the report reads like a fortune cookie. Discard this test. In bed.

Not even wrong

This is a subclass of the Horoscope kind of report. Every statement in a report can be absolutely true, but totally meaningless.

Here is an example of a statement that is true and meaningless at the same time, “You need to breath air.”

I class these types of tests and reports as not even wrong.

A good test should tell you something meaningful and useful that directly relates to your question.

Too much milk from the cow

The description of the test should describe what the test measures in clear terms and a good exercise is to count up all the things a test measures (x). Look at how long the test is, count up the number of items (y).

If 4x>y, discard.

Just kidding. I won’t make you do math.

Keep in mind that a single test measures one area of human behavior. As soon as someone starts claiming their test measures 5 or 6 different areas and intelligence and your shoe size and your political affiliation and your whatever, discard.

I once saw a publisher offering a 90 page report based on a test with only 4 questions. It made me want to cry, it really did. People base their careers on these results! Real people’s lives are really affected by this information and seeing someone put an instrument out there like that just really upsets me.


A personality test must be based on a model of human behavior. This is the theory or pattern that the test is trying to measure.

The model needs to be understandable and explainable and related to your question. A model is also quite generic, there might be several tests that are based on the same model of behavior. This is a good thing. Having a lot of tests based on your model is not the sole criterion of quality, but having no other tests based on a model is a red flag.

New models are proposed all the time, but it usually takes at least 5 years for it to be fleshed out, challenged, refined and justified/refuted.

A web of relationships

Test publishers publish and they pay attention to what is going on with other publishers. Tests are not created out of thin air, they are usually evolutions of earlier tests and models. There should be a trail explaining where the test came from and what earlier research was referenced. There is not much of a line between “totally unique” and “made up”.

New tests are validated by using other, validated tests. People take the new test and the old test. The model predicts certain relationships between these two tests. If the experimental data doesn’t show those relationships, then there is a problem with the test or the model.

A test should have some documentation describing how it relates to other, high quality, tests. If it’s not published on the web site and the publisher won’t provide that information, discard.

Black and White

Nobody puts Baby in a corner and nobody should try to put you in one, either.

People are variable and when a test tries to force you into a box, red flags should be raised. You are not a binary yes|no bit, you are on a bell curve, just like every other biological system.

So, when the results of a test try to express the totality of you by pointing to one of a few boxes, just say, “Discard”.


Behind all of this personality and theory and models and tests, there are a bunch of numbers. I’m not saying that you need to know what all of the numbers mean, but you should know that there are different numbers and a test that puts all of its claims on just one of them is probably hiding the numbers that aren’t so good.

If they don’t have the numbers on the web site, ask for them.

“Can you please share the results of your validity research on test X with me? For example, I am interested in the Cronbach’s Alpha for the traits measured. ”

If they so no, red flag.

If they don’t know what you are talking about, run away!

I hope you have found this information helpful. If you have any questions or suggestions for improving this list, I would love to hear from you richard at



If I was the boss [Talent Profile]

The number one question I get from people who take the Octogram® test has to do with the fundamental shift from labor to management. This is especially relevant for people in the middle of their career path, they have worked their way up the chain, they have maxxed out their potential income in their current position. The next step on the career ladder is into a management position. Can they do it? Should they do it?

This can only be answered by asking two very important questions:

  1. Do you want to be in a management position?
  2. What kind of manager will you be?
office space manager

The poster child for bad bosses

The first question seems obvious, but it’s not. It is the failure of people to answer that question correctly that leads to the concept of the “Peter Principle”, that people are promoted until they reach a level where they are incompetent. When answering this question, I always encourage people to look objectively at what a manager does, day to day, in their work. This is just like any other job move. Do the day-to-day requirements of that position match with your values and work style? I encourage them to think about the job itself, not the perceived benefits of the job. No matter how good the perks, if you hate what you are doing, you put yourself at risk for stagnation and burnout. You also put the people around you at risk because you might end up being a crappy boss.

Let’s assumes that you have looked within yourself and that you want to be a leader.

“What kind of manager will you be?” is the question that the Talent Profile is here to help you with. If you know you want to take the lead, you should know what kind of leader you are going to be!

Let’s see what the Talent Profile says about me.

leadershipstyleLeadership Style

Even though we focus on work styles, the Octogram was originally developed as a leadership model. Thus, we can offer some insights into the relationship between work and leadership style. Based on that information, what would Richard look like if placed into a managerial or leadership role?

  • As a leader, Richard is less attentive to the emotional signals of his employees. He does not invest a lot of time into individual employees, unless it concerns something that is directly important for good job performance. He will need to stretch occasionally to show more empathy to other people, without this, he will have a tough time engendering loyalty in his team.
  • Richard finds a good team spirit to be less important than things and activities that are more measurable. Eventually, problems are likely to arise because he tends to overlook conflicts or problems within his team, hoping that they will go away of their own accord.
  • Richard is first and foremost a specialist. As a leader, he is an effective guide for helping his team solve problems and find solutions. As a specialist, he can effectively manage other specialists and field experts because he recognizes their concerns and “speaks their language”.
  • As a leader, Richard is going to be spending a lot of time on the work floor motivating his employees. He is strongly task and result oriented, which means that he is going to pressure employees to perform at their best. He is demanding, he speaks directly to people and is clear about setting expectations. He encourages a competitive atmosphere and rewards performers who exceed his expectations.
  • Richard is a strategic manager, he is focused on long term trends and the big picture. He is less inclined to get involved in the short term everyday difficulties and problems that pop up in a team or group. He wants to set the course and let other people fill in the task lists and worry about the details. He will be effective at leading employees who value autonomy and prefer working to goals without direct micro-management.

The first two bullet points are referring to my very low Team Player and Helper role scores. I’m going to come across as dictatorial to my team unless I burn a lot of energy toward being, essentially pretending to be, warm and caring. So, if I’m going into a managerial role, it’s got to be in a place that is either very short-term (projects) or maybe with remote workers? This also connects with my personal experiences as a manager, I just come across as a big meany to people who need a warm workplace atmosphere.

The other points in the report back that up. If I take a management role, it should be dealing with specialists, who value their autonomy and want clear goals and want to be rewarded for their performance. I would do well in a position that ties specialists together into a coherent strategy. “You do this, you do that, and I see all the moving parts so I know that our strategic goals will be met if everyone does their job.”

I don’t want to be in a management role.

So, if I was a normal person, and not writing a review of my review, I might have skipped this section. Being a leader is complex, I think it’s something baked in, you want to be a leader or you don’t. Managing people is an expertise that must be learned by working with and seeing good managers in action. I sometimes read a post on LinkedIn that says something like, “The one thing all leaders must do”, and I just shake my head. It’s not one thing.

A good leader has to have the skills and the drive. I’m smart enough to develop the skills, but I’m also smart enough to know I don’t have the drive!

The Talent Profile is available on the website.