Home > Blog > 2013 > 11

All Posts From : November 2013

Useful Umbraco Packages - Part 2

Following on from my previous article, here are some more packages that I find really useful and use in the majority of my Umbraco builds.


No list would be complete without the daddy of Umbraco packages, the package so good that half of it's features got snaffled up into the core, uComponents! Written by Lee Kelleher and his band of mad scientists, this essential package contains a ton of useful DataTypes, XSLT extensions and assorted other goodies. I can't actually remember the last time I set up an Umbraco site without installing this package. To find out more about the package, you can check out it's rather impressive documentation. You can download the package from here.

AttackMonkey Custom Menus

This is one of mine. I've worked on a few sites where users would do things they weren't supposed to, like delete important pages like the site contact form, or in one case, the entire site settings section. I originally used to have some code in each site I built, but that was a massive pain in the arse, so I made a version of my code that could be managed via a config file. If you install the package, it allows you to configure completely custom menus for tree items (media or content), by either DocType or by Node ID. You can also configure it to just remove specific menu items. It's really quick and easy to set up, and it's been pretty useful on some of the larger more complex sites that I've built. I'm currenlty in the process of updating this bad boy for v7. Download the package here.


This is a handy package that was made by the awesome Mr Doug Robar, the chap who does the level 1 UK Umbraco training, who is also one of the nicest guys in the Umbraco community. It comes in two flavours, a free version and a pro version that you can unlock by buying a license. The package gives you a way of resizing and caching images to use on your site, so that you dont have to get the client to upload images in multiple sizes. They can just upload the largest version, and then you can use ImageGen to resize for the smaller versions. The free version does most of the things you might want, but the pro version has a lot of handy features, like the ability to crop images, watermark them and add text to them (useful for adding copyright notices etc). The pro version of the cost £125 at the time of writing, which is very reasonable! The cool thing is that you can use ImageGen in non-Umbraco sites too! To find out more about this package, check out the ImageGen website.

Media Icons

This is a realy simple package, but it really adds a lot of value for the actual CMS users in my opinion. What does it do? It simply swaps out the rather boring default media library icon for files ones that reflect the file extension on the file in the library. It ships with icons for most common file formats, such as:

  • doc/docx
  • flv
  • mov
  • pdf
  • ppt/pptx
  • swf
  • txt
  • xls/xslx
  • zip

It's dead easy to add extra icons for any other file types you might need (just save an icon image to a special folder named after the extension of the file you want to associate it with). Basically, editors can easily tell from the icon in the media tree exactly what the file type is without needing to open it. You can gran the package here.

Digibiz Advanced Media Picker

Prior to v7, the Umbraco media picker was a bit, errr, basic. That all changed when Jeroen Breuer realease the Digibiz Advanced Media Picker (or DAMP as it's often known). This package is basically a media picker ON CRACK. It adds a ton of conveniences to the media picker, as well as having the ability to integrate with the various cropping datatypes and with third party services like Pixlr. You can event restrict users to only picking specific types of media with the pickers, which can be extremely handy for stopping editors from doing something daft like selecting a PDF as a thumbnail image for a news article. This is another package that makes it onto pretty much every single Umbraco site that I build! Grab the package here.

More Tips For Aspiring Freelancers

I've been thinking about this some more since I wrote the last lot, so I've decided to add some more!

16. Be flexible

As a freelancer, hopefully you'll get to work with a lot of different companies. Each of those companies will have different work processes. Some might use Git, some SVN and some TFS *shudder*. Some may not use any source control at all. Some clients have a very rigorous set of procedures that must be followed to the letter, others are more freeform. You need to be able to slot in to a new client's team without too much fuss and hassle, so you have to learn to be flexible. It can be hard to learn, especially if you're used to doing things a certain way, but its a very important mindset to master.

17. Be upfront about costs

Unless you're one of those offshore outsourcing shops, the chances are you're an expensive resource. Make sure you're totally upfront about your costs. What's your hourly rate? Do you charge expenses for on-site/travel? If so, how much? Do you charge for late payment, if so how much and at what point? Do you do project rates? Will the client need to fork out for licenses for anything that you're building? No-one likes hidden surprises, so make sure you're client knows exactly how much they're paying, and what for.

18. Be Transparent

Keep your clients updated. Let them know how their project is going (if you're not in-house). If you're going to miss a deadline, let them know, as far in advance as possible, and tell them why. If you use third party frameworks for their site, let them know what you're going to use.

19. Hourly vs Project rates

There are two main ways you're likely to get paid as a freelancer. By the hour (the easiest one to manage) and by project. Hourly is less hassle, and you get paid for all of the hours that you work. Yay! Sometimes though, people will want you to cost a project and charge a project rate. This is harder and takes a lot of practice to get the balance right. To start with, make sure you have a decent spec to work from, that details ALL of the functionality of the site, IN WRITING. Draft up a functional spec of exactly what you are going to build, and you'll be able to use that as a basis for your pricing, and as a deliverables list for the client. Don't forget to include leeway for testing, bug fixing, and the inevitable project creep. Also watch out for clients trying to sneak extra stuff in without paying. If it's not in the spec, it's extra (unless you're feeling generous).

20. Get to know your clients business

If you're going to help a client with their website or we based systems, you need to take the time to find out about what it is they do. What are their current systems? What are their frustrations with the current website, what do they want the website to DO for them? Taking a bit of time to really get to know a client can be invaluable, and provide you with additional ideas and suggestions to help them get the most out of their sites.

21. Get it in writing

ALWAYS get it in writing. Agreeing something important over the phone or face to face is great, but make doubly sure you get them to email it to you as well so you have it in writing. If you don't, I can GUARANTEE that at some point it'll come back and bite you in the arse. The same goes for you too, make sure that everything important is communicated in a way that can be referred back to later. That way, you can minimise problems later on when the client is adamant that you said something that you didn't.

22. Learn to communicate to with non-techy folk

Some of the most successful freelancers I know are the ones who can communicate complex technical issues in a way that will make sense to your average client or account manager. If you go in blazing with your hardcore technical explanation, your average person is just going to glaze over and stop paying attention. They'll just start to hear WONK WONK WONK like the kids in Peanuts. It can be a hard skill to master, especially if you're not used to client facing, but it's VERY important.

23. Testing is not optional

If you've come from a large company with it's own dedicated testing teams, you might feel like testing is beneath you. As a freelancer, it ISN'T. You need to master the art of breaking stuff, and master it well. If you're lucky, your client might have a testing team, but in most cases they won't. Try and think like a normal user of the site, rather than the guy who wrote it and knows what the user is SUPPOSED to do. You can always get your boyfriend/girlfriend/husband/wife/gran to have a bash at your sites if you're feeling brave.

24. Resist the urge to use cool stuff just because you can

When you find cool new technologies, there's always the temptation to shoehorn it into your projects so that you get a chance to play with it. Unless there's a legitimate business reason why the site you are working on needs to use the technology, resist the urge. Your client isn't paying you to use their site as a cool experiment with the latest hot Node.js based gizmo, they're paying you to build a solid site that does exactly what they want. I've seen projects get badly derailed because someone thought it would be fun to use some new technology because it seemed fun, only to find out it wasn't as suitable as they thought halfway through development....... That isn't to say you should NEVER use new stuff, you should just be careful to use it when there's actually a need to do so.

25. You won't always get to do the fun stuff

You're at the end of the big project, the management organise a huge all expenses paid piss up, and you're not invited. You shake hands with the team, and you're on your merry way. Cue the Incredible Hulk music as you stride wistfully off into the sunset. There are some clients who go out of their way to make you feel like part of the company, even when you're not, and they should be cherished. But equally, there are a lot that just see you as a resource, you come in, do the thing they needed doing, then they send you on your way (albeit with a bunch of money, yay). The fact is, you're probably getting paid considerably more than the in-house team, so don't feel too bad if they don't take you on the company retreat to Aruba :P

26. Find your balance

This is another one I learnt the hard way. As a freelancer, especially early on, you're terrified that the work will dry up, or you REALLY want to make a name for yourself, so you work yourself HARD. 18+ hour days become the norm, your skin takes on the pallor of marble, and your friends and family start to wonder if you're still alive. I cannot stress enough how important it is to get a good work/life balance. Spend some time doing cool stuff with your family, go snowboarding for a couple of weeks, hell, go climb Mount Fuji, I did. If you can get the balance right, you can enjoy being a freelancer, and still get to do fun rewarding stuff. You'll be less stressed, you won't nuke your relationships with your friends and the world will seem like a happier, brighter place. It took me getting SERIOUSLY ill to get this one right, now I think I have a pretty good balance.

27. Write Good Specs

If you're working directly for a client, be sure to write a proper spec for the project. It gives you something to work from, it lets the client know exactly what they're getting and if you're working with a designer, it helps them to design the site properly. I can guarantee that AT LEAST 50% of your clients won't read the spec, but as long as they sign it off, you have more bargaining power when they come back asking for extra features for free. A good spec should contain a sitemap, detail things like target browsers, mobile strategy and any frameworks that will be used. It should also explain all of the different page types and how they will work, along with any additional behind the scenes integration work, for example forms being sent to a CRM.