Hosting Hassles

I’ve been using Vidahost for my web hosting for many years, and until the last couple of months their service was superb. But then I made the mistake of moving to a newer shared server – and everything went wrong.

I suspect the new host is just overloaded, but email was unusably slow several times each day, the (virtually unused) website similarly sluggish, and then the final straw they blocked my home IP address because of too many IMAP requests. OK, it was a bit high – but in a multi-device family that’s the new normal.

I’ve now moved to AWS for hosting and Infomaniak for email – so far so good, the “free” (for a year) EC2 server is much faster, as is the (not free) email.

Since I was moving, I also migrated to WordPress from Movable Type – seems OK, although it’s a lot less flexible in terms of accessing the underlying HTML.

Confluence User Cloud Macro

This user macro will display users in a specific group in a cloud-like format, as shown below.

## Macro Name: user-cloud
## Macro title: User Cloud
## Description: Displays a list of users in a cloud-like format
## Category: Confluence content
## Body processing: Unrendered

## @param Group:title=Group|type=string|required=true|desc=Group name
## @param MinWidth:title=Minimum Width|type=string|required=true|desc=Minimum width in CSS units (e.g. px)|default=120px
## @param PicSize:title=Picture Size|type=string|required=true|desc=Picture height in CSS units (e.g. px)|default=60px
## @param Border:title=Border Colour|type=string|required=false|desc=Border Colour
## @param Fill:title=Fill Colour|type=string|required=false|desc=Fill Colour

#foreach($user in $userAccessor.getMembers($userAccessor.getGroup($paramGroup)))
  <span style="background: $paramFill; min-width: $paramMinWidth; text-align: center; display: inline-block; border: 1px solid $paramBorder; padding: 6px; margin: 8px; border-radius: 4px">
    <img style="height: $paramPicSize; border-radius: 3px" src="$userAccessor.getUserProfilePicture($user).getUriReference()"><br/>
    <a href="/display/~$user.getName()">$user.getFullName()</a>

The layout can be customized for border, background, minimum width of block, and picture height; each item is a span which will flow depending on the width which in turn depends on the specified minimum and the name length.

Names are links to the user’s profile page.

The image below can be used as the icon.

Confluence – hiding content from PDF export

Confluence has the ability to produce reasonable PDF exports of pages, which can be further customized using CSS to add corporate logos, footers etc.

As a wiki much of the power comes from dynamic features such as links to related items, or making notes at the end of pages, but this is not always appropriate or useful in a static export.

The following macro adds a section to a page which will not be exported.

Creating the Macro

Create a new User Macro (Administration – Configuration – User Macros) with the following details

|Macro Name|hidden-pdf-panel| |Visibility|Visible to all users in the Macro Browser| |Macro Title|Hidden PDF Panel| |Description|A panel which will be hidden when exported to PDF| |Categories|Formatting| |Documentation URL|This page URL| |Macro Body Processing|Rendered|

Template code below

## Macro title: Hidden PDF Panel
## Macro has a body: Y
## Body processing: Rendered

## @noparams

<div class="pdfhidden" style="position: relative; margin: 0px -8px; border: 2px dashed #CCCCCC; padding: 4px"><div style="font-size: 10px; font-weight: bold; color: #CCCCCC; position: absolute; top: 0px; right: 2px">hidden</div>$body</div>

Setting the CSS for the PDF Export

Edit the Global PDF Styles (Administration – Look and Feel – PDF Stylesheet) to add the following CSS snippet at the end:

/* Hidden panels */
div.pdfhidden {
  display: none;

That’s it – you can now use the macro on pages to have non-PDF-exported content, like this:

Date from Unix Timestamp

I always have to fire up Excel to get a date/time from a Unix timestamp… so here’s a quick Javascript that does it:


Microsoft Spam !

You wouldn’t expect MS to send spam? No, neither would I – surely no major tech company is that dumb?

Well, they seem to have lost the plot on their Surface and OneNote emails.

Register your new Surface and you get a series of “helpful” emails telling you how to use it. Hmm, I don’t need this crap, if I want to know something I’ll Google it (yeah, not Bing!) – where’s the unsubscribe button?

OMG – no unsubscribe!

Must be something in my MS account – but no, it’s all set to the correct “don’t send me crap” settings. The not-well-known Profile Center also looks clean.


And then, I get an email from OneNote.

“Notebooks are social. So pass it on.” “Forward this email to family and friends so they can join the party!”

Ah, no. My notebook is absolutely not f*****g social, it’s my notebook, if I wanted it to be social I would have said so but the default setting should be as private as possible.

Microsoft, get a grip – I’m pretty sure most people who buy a Surface are not aiming to turn it into a social hub, and are quite happy to read the documentation in their own good time without being spammed.