About Chris Love

data professional, runner, photographer; these are my hobbies at present, I make no guarantees to the future.

“Fitted” Gannts in Tableau

The Challenge

During Makeover Monday this week (week 22) I came across a problem: I needed to produce a Gantt chart for a huge amount of overlapping dates. Gantt was really the only way for me to go with start and end dates in the data (in the back of my head I’m thinking Mr Cotgrave will be loving this data given his fascination with the Chart of Bigraphy by Priestly) and I was fixated with showing the data in that way (I blame Andy) but everything I tried in Tableau left me frustrated.

Jittering left wide areas of open space and no room for labels, even if I zoomed into one area would render leave lots of the data unexposed.


I knew what I wanted to do…I wanted to neatly stack / fit the bars in a decent arrangement to optimise the space and show as much data as possible at the top of the viz. The original author in the link for the makeover had done this as such:

Now Makeover Monday usually has a self-imposed “rule” that I tend to adhere to, spend an hour or less (if I didn’t stick to this I could spend hours), but here I was after half an hour without any real inspiration except something I knew wasn’t possible in Tableau. It was a challenge and to hell with rules I do like a challenge – especially given the public holiday in the UK meant I had a little time.

The Algoritm

So I turned to Alteryx, but how to stack the bars neatly.

Firstly I needed a clean data set, so I fixed some of the problems in the data with blank “To” dates and negative dates using a few formula and then I summarised the data to just give me a Name, From and To date for their life.

Algorithm-wise I think I wanted to create a bunch of discrete bins, or slots, for the data. Each slot would be filled  as follows:

  1. Grab the earliest born person who hasn’t been assigned a slot
  2. Assign them to a slot
  3. Find the next person born after they die, and assign them to the same slot
  4. Repeat until present day

In theory this would fill up one line of the Gantt. Then I could start again with the remaining people.

An iterative macro would be needed because I would step through data, then perform a loop on the remainder. First though I realised I needed a scaffold dataset, as I needed all the years from the first person (3100BC to present day).

I used the Generate Rows tool to create a row per year, and then joined it to my Name, Birth, Year data to create a module that looked like:




I’d fill the “slot” variable in my iterative process. So next up my iterative macro.

Translating the above algorithm I came up with a series of multi-row formula:


The first multi-row formula would assign the first person in the dataset a counter, which would count down from their age. Once it hit zero it would stay at zero until a new person was born, at which time it would start counting down from their age.

The second multi-row formula would then look for counters that had started to work out who had been “assigned” in this slot and assign them the iteration number for the macro, i.e. first run would see everyone going in slot 1, second in slot 2, etc.

Perfect! Now to run it and attach the results to the original data:


Easy peasy Alteryx-squeezy. That took me 30 mins or so, really not a long time (but then I have been using Alteryx longer than you….practice makes perfect my friend).

The Viz

So now back to Tableau:


Neat, progress! Look at how cool those fitted Gannt bars look.  Now what….

Well I need to label each Gantt with the individuals name but to do that I really have to make my viz wide to give each one enough space….


The labelling above is on a dashboard the maximum 4000 wide…..we need wider! But how? Tableau won’t let me….

Let’s break out the XML (kids don’t try this at home). Opening up the .twb in Notepad and….


I changed the highlighted widths and low and behold back in Tableau – super wide!

Now I can label the points but what do I want to show – those Domain colours look garish….

So I highlighted Gender and….pop. Out came the women from history – nice story I think to myself. I decided not to add a commentary, what the viewer takes from it is up to them (for me I see very few women in comparison to men).

Other decisions

  • I decided to reverse the axis show the latest data first and make the reader scroll right for the past, mainly I did this because the later data is more interesting
  • I decided to zoom in at the top of the viz, generally I expect viewers won’t scroll down to the data below but while I toyed with removing it I decided that leaving it was a slightly better option. The top “slots” I’m showing are arbitrarily chosen but I feel this doesn’t spoil the story.
  • I decided to add a parameter to highlight anything the user chose (Gender or Occupation) – tying it into the title too.
  • I fixed AD / BC ont he axis using a custom format



So I spent a couple of hours in total on this, way more that I planned today but that’s what I love about Makeover Monday – it sets me challenges I’d never have had if I hadn’t been playing with the data. I’ve not seen this done in Tableau before so it was a fun challenge to set myself.

Click on the image below for the final viz







Tableau – Keeping it Simple, Stupid

Tableau – it’s a really simple tool to use. I’ve recently been blogging about ensuring we keep Tableau simple, and also show our failures as much as our successes. My recent Periscope talk was on that subject – catch the replay here– and I also blogged on edge-cases and my feelings about them. I want this blog post to continue that theme and so I’m going to talk about my personal mission to keep my Tableau visualisations simple.

We have an amazing community

The Tableau community is full of experts, it has people pushing the boundaries of the tool and also showing how to create fantastic vizzes that delight and amaze, and it also have brand new people joining every day. Experts help new users and share blogs, tips and techniques to help them get started, they offer critique, and you never see anyone’s viz efforts ridiculed or flamed. We simply couldn’t wish for a better community.

Despite this awesome community many new users I speak to are often put off sharing their work because of the high level of vizzes out there. They worry their work simply isn’t up to scratch because it doesn’t offer the same level of complexity.

So, in time for Valentine’s Day, I’m offering new users a Tableau KISS – Tableau, Keeping it Simple, Stupid.


This “project” will see me keeping my work simple, in an effort to show what’s possible without straying into advanced territory. I’m going to stick to basic chart types and try to only use techniques featured in the Tableau Fundamentals course.

You’ll see tutorials, videos, talks and revizzes over the coming weeks and months; anything on this theme will feature the #TableauKISS hashtag on twitter and I’ll add the logo to vizzes and blogposts.


#TableauKISS isn’t about discouraging others doing complex work and vizzes in Tableau – far from it – I love seeing the fantastic vizzes that the community produces.  I’ve always enjoyed creating my own wacky vizzes, many of which pushed Tableau to the limit, and I know they offered inspiration to other users, new and old. So I beg the community to keep pushing the envelope with Tableau.

This is for me. I simply want to reconnect with why I find Tableau so engaging: because it enables me to do understand data, quickly and simply.

I encourage anyone in the community interested in sharing in this project to use the hashtag and logo if they wish. Let users, new and old, embrace simplicity. Do yourself a favour – give a #TableauKISS!



BBC Football Commentary Data – Webscraping

I wanted to use this post to provide a permanent link to the datasets I provide from the web-scraping I am doing of the BBC Football Commentary provided online. The data for this commentary is sourced from Opta and sources are documented within the dataset.

I am currently scraping all English and Scottish Leagues (including English Conference) and also English League Cup and FA Cup. Please let me know if you would like to see other competitions included (if the data is available).

More details will follow once I have had more time to flesh out, and improve, my methodology, and also to document the datasets. For now this post though will provide the links to two data formats – both of which I aim to update at least weekly if not more often.

Data formats provided: zipped csv format and tableau packaged data source (.tsdx). Both are available in the following location:


Any comments or bugs noted please let me know below. More details to follow.

My Top 10 Blogging Tips

In this, my first blog post of 2015, I want to talk about blogging and offer some tips for those new to blogging in the Tableau or Alteryx community.


Last year I wrote 40 blog posts, spread across this site and The Information Lab blog. I covered a range of subjects, from simple visualisations through to explainers of specific functionality, e.g. Tableau permissions, I also wrote a few opinion / commentary pieces. I’ve also just started a new site to host my more specific “BI and the Business User” blog posts. All this adds up to a lot of words, and I’ve learnt a lot, so here’s some of my top tips for blogging in the Tableau or Alteryx space.

(image by Alex Martinez - click for details / licence)

(image by Alex Martinez – click for details / licence)

Tip #1

Do it for the love of it This is the single most important tip, if you read no further please take this in. If you don’t feel it – don’t post it.

Don’t start blogging for any reason other than because you enjoy it. Blogging because you want to be the next Tableau Zen Master or the next Alteryx ACE, because you want to change careers, or even because you want to impress that hot girl you saw at TCC isn’t going to work in anything but the short term. You’ll soon lose your fizzle, the time between posts will get longer and sooner rather than later you’ll stop. Unless you are very, very single minded then I guarantee this will happen, and you’ll be disappointed with yourself for trying.

Likewise with a given post; don’t post to get views or retweets, or likes, just post what interests you, the rest will come as a result of that.

Blogging shouldn’t be a chore, you’re choosing to spend your spare time doing it after all, if it’s a chore go and do do something else – you owe yourself that.

Tip #2

Don’t Set Targets Targets will be unhelpful when you start blogging, and may cause you to feel undue pressure to post to meet the targets you’ve set. How do you know you will have enough time to post, say once a week, before you’ve tried? Believe me it’s harder than it sounds.

Instead of setting targets then just post when you have time (or when you have made time), and keep a backlog of subjects to ensure you make the most of that time.

Tip #3

Keep a notebook for subjects A virtual or physical notebook can really help record all those ideas you have for blogs. Those tips you come across in the course of a day in your work, or in a conversation with a colleague or twitter friend, need quickly recording so they don’t get lost. Sometimes a series will pop out naturally from this backlog, and you can string together a set of posts, other times you’ll find yourself with a spare 30 minutes and be able to pick a short subject and get a draft done there and then. Unless you record your ideas then those opportunities can go begging.

I currently have about 20 ideas stored away, some will never get written, some I plan to write about next week, others will probably be written by others before I find time. Before I started recording them I’d find I’d sit down to write a blog and wonder what to write about.

Tip #4

Think carefully about where the time will come from I estimate that on average I probably spend a day in total on each of my blogs, some have taken significantly more, others much less but roughly it’s probably a day. From the inception of an idea, to building a viz or module, through tidying and making it public, and then writing the actual text for the blog (not to mention proof-reading and editing) there’s a lot of work. So for me that’s about 40 posts x 8 hours = 320 hours of work over the last year – that’s about 6 hours a week.

I’m fortunate that I also blog for work and so some of those hours can happen in my working day, but more often than not even the “work” blogs are done in my personal time (after all I enjoy it). Therefore you have to find time in your week to fit in those hours – for me that’s on trains or in hotels, or while my wife is out in the evenings. Everyone is different but try and think about where your time will come from; I know some people blog in their lunch hours, others on their daily commute, I imagine others are doing it off the side of their desks at work. Regardless of where you find the time then be sure to acknowledge it needs to be spent, there’s no shortcut.

If that time is coming out of your family time then I’d also recommend you speak to your partner and explain your motivation – if you’re partner isn’t from the community they’re unlikely to understand why you’re spending time away from them to write a blog post.

Tip #5

Get social You’re going to need readers from somewhere. “Build it and they will come” doesn’t work if no-one can find it. So do some signposting. Get a twitter account and start posting links to your own posts, as well as other blogs you read – that way other’s won’t think twice about retweeting your content.. Don’t be afraid to share several posts through the day either, individual tweets can quickly get lost and you need to cater for different timezones. Google+, Linked In and Facebook are also great ways to connect and share your posts.

Tip #6

You don’t need a niche, but it helps For the last year I’ve blogged about anything and everything, whether I have expertise or not I’ve felt I can still offer something by sharing my thoughts. This approach has worked for me, but after 40 posts in the last year I’ve started feeling that a bit more specialism might help me focus, I’ve noticed other bloggers that the same approach too, moving from general to specialist over time.

Having a “specialism” (not necessarily one you’re expert in, more just a specific subject) helps you find your space in the community. Consider your likes and passions, look at what other’s post and look for gaps. Finding that specialism can help you stand out and give your readers a reason to seek you out on specific subject areas.

Tip #7

Craft blog posts around any community themes Your posts will get extra attention if you use current affairs, or post around the specific themes in the community, e.g. if it’s Tableau Politics Month then a Viz and post around politics is clearly going to get more publicity from the Tableau Public team.

Tip #8

Use your page stats All blogging platforms will give you information on your views and most popular posts, so use that information. What worked well, what didn’t. Be critical and analyse the posts – make sure you learn something.

Did you share your post on twitter on a particular day / time? Did you get a retweet from a specific person? Did your subject tie in with a given theme? Is it a particularly useful tip you wrote about? Whatever the stats tell you worked then do more of it! Likewise if something didn’t get many views then use it as a learning experience, or simply ask other bloggers – they’ll be more than happy to offer hints and tips and some friendly critique.


Tip #9

Revel in the rewards If you followed my first tip, and you’re doing it for the love of it, then that doesn’t mean you can’t enjoy all those views, retweets and feedback you’ll get. The communities we blog in are some of the greatest around, and all content is welcomed, from beginners to the experienced and you’re sure to get some shares and feedback.

For me this is the lifeblood of the whole experience, those retweets and mentions help justify what I enjoy, and give me motivation to keep writing about the things I enjoy the most.

Tip #10

Enjoy it! Walk to your local coffee shop, grab a wedge of cake; head to the local pub and grab a beer; or head to your office with a glass of wine. Whatever works for you. However I cannot stress enough that blogging shouldn’t be a chore.

Your Tips?

What motivates you to blog? What works for you? Do you have a schedule, or like me do you blog when you find time? I’d love to hear your thoughts.

The Business User and BI: Influencing without Authority

As a BI consultant I’m often in a position at a clients where I need to influence without power or authority, however I’m fortunate that I’m seen as an expert in my field so my opinion carries a lot of weight. In this article I want to explore some tips on how anyone can influence without authority, by exploring tools, best practice and techniques that can help give you the edge in getting across your point of view.

Tip #1: Making a Career Choice

If you’ve already taken the time to read this article then the chances are you’ve already realised that to start evolving your role and influencing others is going to mean making a decision; so ask yourself a question:

Is this my job or my career?

Making a career choice can be difficult, when I got my first Junior Data Analyst role it wasn’t a career move, it was a job. It was to put money on the table so I could start paying off my debts. Deciding what you’re doing is going to be your career is a significant step, and it will mean a significant change to your thinking and attitude.

There’s some bad news too, a career takes effort. It’s going to take more than 9 -5. It means reading around your subject, through magazines, blogs and maybe even journals. Push to attend conference and lap up as much knowledge as you can.

Building up a knowledge of case studies and examples from other industries or businesses will help you influence from a position of knowledge. Recommending that you’d like to try something new to your line manager can be difficult, but those examples and knowledge will help your proposals come across as opportunities rather than a risk.

Tip #2: It’s all about the data

Good decisions come from good datasets and so to start influencing you’re going to need the data to back up your opinions. Perhaps your data warehouse already has the data you need, but perhaps you need to restructure it or build new measures, or perhaps you need to seek out new datasets via webscraping or purchasing demographic data. Don’t be afraid to seek out new ways of representing existing data either, for example gathering spatial data for customers or store locations. Social media can also be a great place to look for a new untapped, data source.

Tip #3: Give yourself time

Preparing data can be time-consuming, so ensure you’re using data preparation tools that give you time to focus on the data itself. Drag and drop data preparation tools such as Alteryx take the time away from data preparation meaning it can be done in minutes not hours, leaving you precious time to draw the conclusions you need.


Tip #4: Be prepared to iterate

You won’t get the data or answers you’re looking for immediately, so don’t limit yourself to one attempt. Be prepared to go back to your source data and add new measures or bring in new dimensions, it may take several iterations to get what you need but it’s important to do this. Again, your choice of tool here is critical – for example Alteryx gives you a layered workflow to allow you to build up your analysis over time, making adding new elements in the middle of the process effortless.

Tip #5: Go Visual

If you’re in a junior position then it’s likely you are probably not going to have a lot of time to influence upwards so it’s important to make every moment count. Displaying your data in charts rather than text tables will allow your audience to quickly see any trends and patterns you talk about. However it’s important to be aware that people may be more comfortable with numbers, particularly if they are in a finance role, so ensure you show the numbers somewhere e.g. in labels, or offer an alternative view which shows the numbers. Using tools such as Tableau will allow you to build great looking views quickly, and allow customisation so that you can quickly turn on labels if needed, or show an alternative view using a drop-down menu option.

Tip #6: Tell a Story

Don’t rely on your audience to draw the necessary conclusions themselves, use your visuals to tell a story. Trying to explain your idea for a new product? Then highlight the growth bar that shows the decline of the incumbent. Use annotations on charts to highlight areas you want to draw attention to. Guide your user through the data using features such as Tableau’s Story Points.


Tip #7: Don’t Mislead your Audience

However don’t take your storytelling too far, deviating from accepted Data Visualisation best practice is a very quick way to lose your audience. Extending axes to flatten a growth curve and hide a drop in sales, or using a non-zero vertical axes for your bar chart are both big no-nos usually and will diminish the rest of your pitch if spotted.

Tip #8: Build a Dashboard not Reports

Have the confidence to build a set of interactive dashboards rather than fixed reports, your audience can then filter and examine the data without fear that you’re hiding anything. If they have a question you can quickly explore the data and answer their concerns without losing any impetus by having to go away and rewrite your report.

Tableau makes building such interactivity into your dashboard effortless by offering actions, such as highlights and filters on hover or click.

Tip #9: Allow Drill-down

Give your audience access your raw data through these simple click actions. Some people will be happy with your overall summary but others may wish to dig deeper, perhaps into specific months or products. Giving them full access right there in the report will ensure they can satisfy themselves that the underlying data your premise is built on is sound, giving them confidence in your argument.

Tip #10: Get Modelling

Using tools like Alteryx it’s now very simple to restructure your data or add extra analytics such as clustering or predictions to your data. For example you can aid your story by clustering your products / customers into say, 7, key groups via K-means clustering. Each of these 7 groups will contain products or customers sharing similar attributes, making it easier for you to talk about them as a whole rather than as individuals. By describing these groups by their key attributes you will give your audience information to identify with them and avoid you needing to get into specifics.

[Full disclosure: While I was once a customer of both Tableau and Alteryx and advocated both products strongly both internally and externally, I now work for The Information Lab who are a partner and reseller of both products]

Best of Alteryx on the Web – November 2014

Another busy month in the Alteryx blogosphere and so here are some links to some of the best content you may have missed.

Tips and Tricks

3danim8’s Blog – How and Why Alteryx and Tableau allow me to innovate  – Part 1 and Part 2

The Information Lab – 7 Alteryx Tips you need to start using today

Inspiring Ingenuity – Alteryx – Optimising  modules for Speed

The Information Lab – Bite-sized Tips, Tricks and Tutorial Videos for Alteryx


Alteryx.com – Data Blending for Dummies – Special Edition

Schiolistic Ramblings – The Business User and BI: Analytics, Visualisation and Testing

Alteryx.com – 5 Myths of Data Blending

Antivia – From raw data to interactive dashboard in minutes

Tool Guides and Macros

The Information Lab – What Time is it Alteryx – Part 1

Human Data Associates – Visualize all Dutch Cities and neighbourhoods in Tableau (nothing good happens without Alteryx)

Alteryx Gallery – X-Ray Browse Macro

Think I’ve missed anything, or you’ve got something worthy of next months roundup? Please reach out on Twitter (@ChrisLuv) or in the comments below.

The Business User and BI: Analytics, Visualisation and Testing

Excel is much maligned. One reason is it’s so easy to make mistakes; take the recent news that Tibco investors “lost” $100 million dollars due to a spreadsheet mistake, or the story last year that there was a mistake in the Excel calculation of a 2010 paper which has been widely cited to justify budget-cutting and austerity measures across the US and Europe.

Spreadsheet Hell

The reason these mistakes were even possible is because spreadsheets are so easy to use they fall out of the usual testing procedures applied to other business critical applications. The people using Excel are not skilled developers, they have no development background and so checks are not simply missed, they are not even considered.

Now, as I see the take up of BI Analytics tools like Tableau, Alteryx and their brethren accelerate and start to become locally ubiquitous I feel it is important to step back and issue a warning:

Excel, Tableau, Alteryx and other similar tools are development tools, and as such should be given the same standards in quality assurance and documentation as any other development tool / project.

Now when I write development tool I mean that when you are writing an Alteryx workflow, or a Tableau visualisation, or an Excel spreadsheet, you are writing a program – a set of instructions for the software to interpret. In C# you do this by writing lines of code, in Tableau you do this by dragging pills and placing them on panes, in Alteryx by dragging an configuring tools on the canvas and in Excel by using formulae in cells. Regardless of how you get there this set of instructions needs documenting and checking.

In days gone by all “programming” was done by skilled developers who were trained in unit tests, user acceptance testing, and other disciplines with Quality Assurance teams who would have dedicated resource to find bugs and issues. Step forward 5 years and those same routines and reports are now being written and promoted by business users with no formal development testing.

Could we be in a position in 5 or 10 years from now where we see headlines such as:

“Tableau mistake costs manufacturer $500 million”

I doubt it, neither Alteryx nor Tableau suffer from the horrible obfuscation that nested a nested VLOOKUP can bring, but I am making a series point that needs considering during any BI deployment driven by the business.


As a BI consultant I’ve been asked about this testing problem many times, and so below I set out the common practices I’ve employed as I’ve led BI deployments as a consumer, and later as a consultant.

Purple People

Purple personIT has already learned the lessons of testing and has many best practices and methodologies laid out to catch and deal with these issues. Most of these best practices can be simply applied to BI in the business universe but they need experienced leaders from the IT world, who understand the business problems to help implement and maintain them.

Purple people are the solution – if they come dressed as this guy then ideal – but regardless they should have skills from IT but with an understanding of the business world, bringing the red of IT and mashing it with the blue of business. Employing a few purple people when recruiting a BI team can bring many advantages but the rigour of process they can bring from the IT world can really help drive testing and quality assurance.

Peer Review

My first manager and mentor Simon Hamm instilled this practice in me and I will never forget it, over the years it’s caught many mistakes in teams and projects I have run. It is simple and can be applied to any BI workflow or dashboard.

The premise:

Nothing leaves the team until it has been checked by a peer, that person is responsible for finding the issues you will inevitably have made.

Peer review should be the cornerstone of the business, it should apply to everyone and the assumption during checking should be that there are errors to find. So Senior members of the team are not exempt from errors (often they are the worse culprits as they take on pressure work and publish it quickly).

in the corporate world implementing a peer review policy can also be backed up by personal objectives, instilling an ethos of checking rather than a culture of blame, e.g. replace an objective saying “In the next 6 months your reports should produce no errors” with “Everything you produce should be reviewed by a peer”. People make mistakes, removing the blame increases efficiency and moral and shifts the onus onto ensuring the policy designed to catch those mistakes works.

Smoke Testing

Fact checking and other simple functional tests should be part and parcel of the early part of any report / data testing process. Producing a dashboard on the number of people in the UK, then check the top line numbers looks right. It’s often said the devil is in the detail but it’s important that the broad numbers are checked first – I’ve seen situations where reports that have been “checked extensively” have basic headline figures with glaring mistakes, which have been missed because of the focus on the detail – I imagine this could have been the issue with the Tibco numbers.


This sits firmly alongside peer review, as replicating the results of the module / workbook should the mainstay of the checking process and are the responsibility of the peer “checker”. Thankfully tools like Tableau and Alteryx (and other rapid development BI tools) make this easy. Checking a Tableau report? Use Alteryx to do some adhoc analysis and check the numbers. Checking an Alteryx workflow? Drop the data into Tableau and do some visual checks.

Hand crank a few rows of data, say for an individual or product, through the entire process – are the results what you’d expect? Checking a few rows is much simpler than checking 10 million.

Trend Analysis

Ensure processes track MoM and YoY trends; small data quality issues can be difficult to pick up and will only manifest themselves over time. Keeping headline QA (Quality Assurance) figures of key datasets can help track these trends and pick out issues with data processing.

Unit Testing

Modular workflows like Alteryx are easy to build but in when building them people need to ensure that checks and balances are built into the logic; tools like Message and Test can be used to build simple checks – e.g. are joins 100%? Are there duplicate records? Build in outputs at each of these key stages and ensure these row level error logs are checked if they contain data. Without these checks modules can run unattended for a long time before anyone notices key lookup tables haven’t been updated and data dropped during the process.

User Acceptance Testing

With rapid development BI comes a whole new paradigm, UAT can and should be done in an agile and flexible way. Often business users are building their own reports but even if not then co-locating individuals can lead to a much better experience for both parties.

Documentation, Documentation, Documentation 

Just do it! Documentation doesn’t have to be dry and Word / Visio based though.

Annotate requirements in the tool itself (both Alteryx and Tableau provide a rich set of tools to allow users to do this as they build workflows and dashboards, and other similar tools have similar features). Comment formula and use visual workflows to provide commentary on the analysis and decisions. Hide and disable dead ends / investigations but don’t delete them – they are as useful as the finished result as they show the development process.

Also document the checking processes: released a report with an error? Learn from it. Keep a diary of checks for each dataset to refer back to, there’s nothing worse than a mistake that’s then repeated needlessly later.



Spiderman was once told: “With great power comes great responsibility” and that’s never been more relevant than to the new users picking up the BI tools of tomorrow. Throwing away 30+ years of software development lessons would be a shame, it’s important those lessons grow and change along with the tools.