Generating… non-documentation

In the last few days I got involved in an interesting question – if you to have an internal conference with 250 presenters, multiple timeslots, live sessions, recordings, materials and more – and you need to create a website for it, what would you do?

One of the obvious choices is to write a custom app for it, has a database (document db or graph db or something similar NOSQL), a 2/3 tier architecture, etc. Or… if I’m anyway trying to understand the options around document generation, I could generate the website from some lousy excel sheets and upload to a CMS that would handle commenting and links and similar.

So I did the latter, using a little bit of XLSX parsing, use of good old Apache (N)Velocity (currently maintained by the Castle team), a little bit of window dressing and figuring out some stupid limitations around transposing arrays with double nested loops using the Velocity language, and:

Blurred image of a generated project page

Please, let me introduce

Another day – another open source project from my team, this time a small nifty tool called “please”, akin something that already been mentioned in one of the ADRs (ADR003):

- We would depend on using an eng/Dependencies.props file instead of having the versions of Nuget files
repeatedly entered into the csproj files
- We would use automated tooling to achieve the maintenance of Dependencies.props file

So, in the end, not only these, but a bunch of other small functionality has been added to this swiss knife of a tool that you can just ask to do stuff, nicely 🙂

It can easily:

  • Consolidate nuget packages across a solution, or only a subset of them
  • Keep package versions in a central props file and maintain that file
  • Move and rename projects
  • Clean up in case you manually moved and renamed
  • Clean up <Compile Remove="..." /> items, with or without globbing
  • To find stray projects
  • To remove ‘junk’ from solution directory
  • To change the PATH variable (useful when working with dotnet tools)
  • etc.