i can haz .NET

a Run Through the Jungle of Software Development and Unrelated Sagas

WordPress Blogs I subscribe to

leave a comment »

Written by CADbloke

October 13, 2010 at 5:55 pm

Posted in Wot I use

Tagged with

WordPress Plugins wot I use

leave a comment »

It’s pretty easy to go overboard here. Don’t get carried away (oh, the irony). Every extra plugin is extra work for your web server and database to do before it serves each page to each client. A caching plugin will alleviate this somewhat. Some plugins in areas such as admin and behind-the-scenes management won’t affect performance much, or at all.

I have tried plenty. My current favourites amongst the somewhat less-famous plug-ins are

  • WP-minify is a good speed-up tool. It shrinks and combines, then compresses (gZips) your JavaScript & CSS files into one file for each which speeds up page loads by having less http requests and less data to transfer. Some plugins don’t play well with this model so sometimes you have to exclude a few files. Cases like this are why you need a sandpit site (or a thick hide) to experiment a little to see what breaks and how to fix it. Do your homework
  • wp Super Cache should be no stranger to anyone who runs a self-hosted WordPress blog. I found this to be the most plug-and-play of the caching plugins. I didn’t go through too much torture-testing when I was looking but it sure works for me. Response times in my Pingdom panel halved as soon as I installed it. It seems to play well with everything I have
  • another speed-up plugin, particularly if you have a lot of images in a long page is jquery-image-lazy-loading. It waits for the user to scroll down to an image on your page before it is fetched from the server. I had some issues with it and WPtouch and wp-minify. I posted my solution to that in the WordPress forums. Once I got those things resolved it works like a charm, even on an iPhone, which is handy because any time & bandwidth saved on a mobile device is a good idea.

Other plugins I use which are for functionality rather than speed, aka" I could also have called this section Slow-Down Tips."

  • Smart-404 catches 404 errors (links to non-existent pages, posts etc.) and tries to make it happen for you. If it finds a likely match it will redirect to that page. If it doesn’t find an obvious answer it will load a page with search results of the link the user was trying to find and a ready-to-go site search. In either case it is a much nicer experience than "404 – page not found"
  • Ozh’ Admin Drop Down Menu makes getting around your admin page a lot nicer. It also gives you more working space by moving most of the menus you’d find down the left-hand side to a toolbar at the top of the page
  • SEO Smart links grabs key words and turns them into links around your site. It’s a great plugin to make up for all the internal links you keep forgetting to add. You can add phrases to the list and the links just magically appear. Great for SEO and stickiness but I suspect it could get expensive in terms of performance so perhaps a caching plug-in is a good partner for this
  • Subscribe to Comments could keep readers interested in a post they have commented on and keep a conversation alive for longer. A couple of good companion plugins to this are WP View Subscriber info (too see who has subscribed to what) and Subscribe to Comments Now to allow users to subscribe by email to a comment thread without having to leave a comment themselves first. These are basically for the RSS-unsavvy.
  • WordPress Database Backup is a must, really. You’re mad if you don’t have some sort of regular backup routine in place. This one emails me a compressed backup of my database every week
  • WP Ajax Edit Comments is for people like me who can’t type of always forget something when they leave a comment. Now you can go back and fix it. It even works with wpTouch, the iPhone theme.  There’s a paid-for version – I just use the demo for now [EDIT} – I upgraded to the paid version. It’s pretty slick and the developer’s support is very good. You can find it at http://www.ajaxeditcomments.com/ You need to tweak WP-minify to get it working properly. (see below)
  • Yet another Related Posts automatically finds related posts – handy once again for SEO & stickiness
  • WPtouch is the same iPhone theme that WordPress.com uses. It works just fine with all of my plugins.
  • WP-Prowl sends instant push notifications to your iPhone for a user-selectable variety of new comments, posts, pages, updates etc. You can also tailor what the messages will look like and include links in them. Very handy. If you’re running WPtouch then make sure you set the push notifications in WP-Prowl and untick all the relevant boxes in WPtouch. This plugin has a wider assortment of settings and notifications than WPtouch.
  • WordPress Mobile Edition serves up very lightweight sites for Nokia & other non-touch phones. While it appears to have been abandoned (no updates since June 2009, Not much support in the forums) it is still, IMHO, a much lighter and less-bloated alternative to the mysteriously more popular WordPress Mobile Pack. I tried them both at http://ready.mobi/launch.jsp (good site for testing your mobile format in non-iPhone formats). Mobile Edition was much lighter and it also gave me a more relevant page. Mobile Pack based its home page on my desktop theme’s home page and was pretty-much empty an empty page but it was a lot, lot larger download. #FAIL. Also, Mobile Edition is supported by Super-cache
  • Dave’s WordPress Live Search starts searching as you type. For busy sites this may increase your traffic but I don’t think that will be a concern for me in the near future

Believe it or not, all of the above plugins(and more – 26 in total at the time of writing) seem to co-operate quite nicely **Works on My Machine**. Please let me know if you find otherwise on my site.

[EDIT] Here are the tweaks to get WP Ajax Edit Comments working well with WP Minify, even on the iPhone. Replace yoursite.com with the path to the relevant places.

JavaScript files to exclude from minify (line delimited)
http://www.yoursite.com/wp-includes/js/wp-ajax-response.js
http://www.yoursite.com/wp-content/plugins/wp-ajax-edit-comments/js/comment-editor.js
http://www.yoursite.com/wp-content/plugins/wp-ajax-edit-comments/js/comment-editor.min.js
http://www.yoursite.com/wp-content/plugins/wp-ajax-edit-comments/js/jquery.atd.textarea.js
http://www.yoursite.com/wp-content/plugins/wp-ajax-edit-comments/js/csshttprequest.js
http://www.yoursite.com/wp-content/plugins/wp-ajax-edit-comments/js/tabber.js
http://www.yoursite.com/wp-content/plugins/wp-ajax-edit-comments/js/frontend.js
http://www.yoursite.com/wp-ajax-edit-comments/js/wp-ajax-edit-comments.min.js

CSS files to exclude from minify (line delimited)
http://www.yoursite.com/wp-content/themes/hybrid-news/front-page.css
http://www.yoursite.com/wp-content/plugins/wp-ajax-edit-comments/css/themes/aesthetica-small/comment-editor.css
http://www.yoursite.com/wp-content/plugins/wp-ajax-edit-comments/css/atd/atd.css
http://www.yoursite.com/wp-content/plugins/wp-ajax-edit-comments/css/tabber.css

[Edit May 3, 2010] – I removed all of the exclusions for ajax-edit-comments and all seems well wp-minify version 0.8]

[Edit Oct 13, 2010 ]– I’ve stopped using wp-minify for now. To really get the best out of it you need to focus on only minifying a core set of of CSS & JavaScript files, otherwise you’re simply downloading a new set for each page-type in your blog. This is because CSS &/or JS may vary depending on the page. Any change in the contents will generate a new minified collection of them for that specific page’s contents. I’ve decided to take the initial hit on the first view with an empty cache and rely on client-side caching to keep the traffic down for subsequent page views.

I find using Safari is easy way to simulate a few different user-agents to test mobile themes. The option is per-tab and it is in the dropdown menu – Develop – User Agent. Just enter "Nokia" in the "other" Section. Don’t forget the Capital N – User Agents seem to be case-sensitive for the Mobile Edition plugin user-agent list. Use the Web Inspector to see what is going down the wire. Chrome has a web-inspector too. Firebug is still my favourite but changing user-agents in Firefox is tricky. The advantage of using Safari or Chrome or whatever as an alternative test-browser is that you are probably not logged into your site in that browser so you will see what yer average visitor will see.

Hope this helps.
:)
Ewen

Written by CADbloke

October 13, 2010 at 5:53 pm

Posted in Wot I use

Tagged with

Optimizing images on your website is a RIOT

leave a comment »

RIOT, the Radical Image Optimization Tool is a great FREE app for reducing file sizes for JPEG, GIF and PNG images. When you upload a blog post to WordPress, multiple versions of the images in the post are generated in different sizes by the WordPress blog engine. The WordPress image generator has nowhere near the sophistication of RIOT’s Algorithms so those files end up being quite a bit larger than they have to be. By shrinking them you are saving yourself bandwidth and your page load times will also be faster.

The example here is from Safari, using an iPhone user-agent on my other blog. I was mucking about with the WPtouch iPhone theme for WordPress at the time The page is http://www.cadbloke.com/using-acne-with-excel-2007-or-2010-and-windows-7/

Before

iPhonePageBefore

After

iPhonePageAfter

As you can see, the image file sizes halved.

RIOTsizeReductionList

These ones  are all PNGs optimized to a 256 color palette. That’s plenty good enough for screen grabs. They are almost indistinguishable from the originals. You’d really have to look closely to spot an differences. RIOT also processes GIFs and JPEGs.

How long did optimizing the 120 image files that WordPress generated for that post. It took less than 5 minutes, including downloading and uploading time.

How?

Step 1 is to download the images from your blog to a local folder so you can process them. If you’re using a blog hosted at WordPress.com you can stop right here. You’ll need FTP access to upload the processed images. This only works on self-hosted blogs. You can still use RIOT to optimize the images before you insert them into your posts but after that it’s out of your hands.

I used Beyond Compare to create a folder sync between a local folder and the image folder on my web server I wanted to process. You could just as easily use an FTP client to download the images to a local folder, it’s probably no harder. For FTP I tend to use FireFTP which plugs straight into Firefox.

Step 2 is to Open RIOT. Set the image format you want and tweak your settings, particularly for JPEGs or transparent GIFs. If you have mixed file types then you will have to process them one type at a time because RIOT, amongst other things also can convert between formats.

Step 3 is the batch process. After you’re happy with the output settings go to the tools menu in RIOT, load up your list of files and hit Start. A tip: set it to save the optimized files in a new folder instead of overwriting your existing images. You will kick yourself a lot less hard if when you mess it up. Keep the originals until you know you’re happy with the results.

Tip: You can select an entire folder tree for a batch process in RIOT so you could download your entire image library from your server you can optimize the whole lot and send it back

Step 4 is to upload the optimized images over the top of the old images on your web server. Try to remember not to upload the originals – check your FTP client has been set to the folder full of optimized images.

Step 5 … you’re done.

These instructions are a little light-on. I only wanted to introduce you to RIOT. I think it’s worth checking out. It does far more than the simple process I have described here.

RIOT is also available as a plugin for Irfanview. You can use it via the “save for web” option in the file menu.

Written by CADbloke

September 13, 2010 at 8:52 pm

Posted in Wot I use

Tagged with , , , , , ,

Speeding up Self-hosted WordPress

with 5 comments

Following on from the most excellent presentations at the Sydney Business Technology User Group here are a few WordPress things I have stumbled across along the way. These Tips only apply to a self-hosted WordPress blog – you don’t have this level of control at WordPress.com.  Jodie Miners wrote a good blog post about customizing a WordPress.com page which is well-worth a read.

Warning - serious Tinkerage follows. Tread very carefully.
If you break your site remember - you touched it last! I didn't do it!
If the thought of tinkering with your sites innards scares you
then perhaps this is not for you.
.

I have inflicted the following on http://www.CADbloke.com, in case you wanted to assess the damage. For the record, my site is hosted on a shared server by ICDsoft.

Yslow is a good way to assess the effects of what I am writing about here. So is this graph of my Pingdom response times …

graph of Pindom reponse times. Dramatic drop when I optimised my site

Set up a test site on a sub-domain. If you’re brave, you could test these things on a live site but expect it to break pretty often while you tinker. If you’re running a caching plugin you’ll have to clear it quite often, or temporarily disable it. I leave it on to make sure it is co-operating.  To set up a test sub-domain or 2, or 3 …

  1. Create the subdomain
  2. password-protect the folder / subdomain so unsuspecting visitors don’t stumble into it. This may break some AJAX functionality which is really annoying if you forget you have done this
  3. copy all the files from your live site – with the structure intact
  4. copy the database & rename it.If you do this go to your test wp-config.php and update the details for the new database. Do this before you do anything else otherwise you are messing with your live database
  5. alternatively (to step 4), export the pages and posts from your original blog and import them into your test site. This is easier.
  6. or you could just generate some test content with something like the lorem-ipsum-post-generator
  7. There will be more than a few hard-coded links back to your original site – you may want to hunt these down. Try to make the test site look subtly different so you don’t go messing with the wrong site
  8. Block Google etc in the Settings ->Privacy. You don’t want to be famous for your sandpit site.

I prefer this method because I replicate what you are running live so I can mess with it and know my tinkering is relevant.

Speed up tips

A couple of months ago I had amazing results from http://wordpress.org/extend/plugins/web-optimizer/ It worked with Hybrid News, WPtouch and Mobile edition all alongside each other. Other users have reported disasters of varying proportions so definitely try this on a sandpit site first and back up along the way. I did.

I have since gone off web-optimizer – it got too clever and too hard to keep it reliable & it kept trying to bookmark my pages in Firefox. Too hard. I am presently using http://wordpress.org/extend/plugins/wp-minify/ and Super-cache. I set the cache expiry for both to a couple of days. Once I stop tinkering (breaking things) I may set the times even longer. It’s not a busy site. I find Super-cache makes for faster page loads as long as it isn’t building the cache for the first viewing.

Dancing with the Devil – .htaccess

Something that has made a huge, I said H U G E, difference in page-loading times is setting long client-side expiry on everything I can and pre-Gzipping as much content as possible. These are set in .htaccess so you will need access to that. Be CAREFUL – even the slightest typo in .htaccess will take your whole site off the air – instantly! Always keep a backup / original working (!) .htaccess ready to roll-back to in a moment’s notice… if you’re crazy enough to experiment with it on a live site. Who me?

A good link to .htaccess info: http://www.samaxes.com/2009/01/more-on-compressing-and-caching-your-site-with-htaccess/

You will notice in the Hybrid etc. themes there are *.gz copies of CSS files etc. If you can serve these then that will cut a lot of overhead. Here’s how to do that (in .htaccess) (lines starting with # are comments)

RewriteEngine on #Check to see if browser can accept gzip files. If so and we have it - serve it! 
ReWriteCond %{HTTP:accept-encoding} gzip 
RewriteCond %{HTTP_USER_AGENT} !Safari #make sure there's no trailing .gz on the url 
ReWriteCond %{REQUEST_FILENAME} !^.+\.gz$ #check to see if a .gz version of the file exists. 
RewriteCond %{REQUEST_FILENAME}.gz -f #All conditions met so add .gz to URL filename (invisibly) 
RewriteRule ^(.+) $1.gz [QSA,L] .

I put this rule after the Super-cache rules but before the rules that get the server to gzip something that isn’t already g-zipped. They get gzipped per-request so that can get expensive.

Until I get around to splitting this up a bit and making it more readable, I’ll make it a little less readable by posting most of my .htaccess file here. Warning – this works for me. Your mileage may vary.

RewriteEngine on
#Check to see if browser can accept gzip files. If so and we have it - serve it!
ReWriteCond %{HTTP:accept-encoding} gzip
RewriteCond %{HTTP_USER_AGENT} !Safari
#make sure there's no trailing .gz on the url
ReWriteCond %{REQUEST_FILENAME} !^.+\.gz$
#check to see if a .gz version of the file exists.
RewriteCond %{REQUEST_FILENAME}.gz -f
#All conditions met so add .gz to URL filename (invisibly)
RewriteRule ^(.+) $1.gz [QSA,L] 

# If they accept gzip and there isn't one - make one
<IfModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk Yes
mod_gzip_keep_workfiles No
mod_gzip_can_negotiate Yes
mod_gzip_add_header_count Yes
mod_gzip_send_vary Yes
mod_gzip_command_version '/mod_gzip_status'
mod_gzip_min_http 1000
mod_gzip_minimum_file_size 300
mod_gzip_maximum_file_size 512000
mod_gzip_maximum_inmem_size 60000
mod_gzip_handle_methods GET POST
mod_gzip_temp_dir /tmp
mod_gzip_item_include file \.html$
mod_gzip_item_include file \.php$
mod_gzip_item_include file \.pl$
mod_gzip_item_include file \.rb$
mod_gzip_item_include file \.py$
mod_gzip_item_include file \.cgi$
mod_gzip_item_include file \.css$
mod_gzip_item_include file \.js$
mod_gzip_item_include mime ^application/javascript$
mod_gzip_item_include mime ^application/x-javascript$
mod_gzip_item_include mime ^text/.*
mod_gzip_item_include mime ^httpd/unix-directory$
mod_gzip_item_include handler ^cgi-script$
mod_gzip_item_include handler ^server-status$
mod_gzip_item_include handler ^server-info$
mod_gzip_item_include handler ^application/x-httpd-php
mod_gzip_item_exclude mime ^image/.*

# BEGIN Expire headers
<IfModule mod_expires.c>   
ExpiresActive On   
ExpiresDefault "access plus 7200 seconds"   
ExpiresByType image/x-icon "access plus 2592000 seconds"   
ExpiresByType image/jpeg "access plus 2592000 seconds"   
ExpiresByType image/png "access plus 2592000 seconds"   
ExpiresByType image/gif "access plus 2592000 seconds"   
ExpiresByType application/x-shockwave-flash "access plus 2592000 seconds"   
ExpiresByType text/css "access plus 2592000 seconds"   
ExpiresByType text/javascript "access plus 2592000 seconds"   
ExpiresByType application/x-javascript "access plus 2592000 seconds"   
ExpiresByType text/html "access plus 7200 seconds"   
ExpiresByType application/xhtml+xml "access plus 7200 seconds"
</IfModule>
# END Expire headers

# BEGIN Cache-Control Headers
<IfModule mod_headers.c>   <FilesMatch "\\.(ico|jpe?g|png|gif|swf|gz)$">     
Header set Cache-Control "max-age=2592000, public"   
</FilesMatch>   
<FilesMatch "\\.(css)$">     
Header set Cache-Control "max-age=2592000, public"   
</FilesMatch>   
<FilesMatch "\\.(js)$">  
Header set Cache-Control "max-age=2592000, private"   
</FilesMatch> 
<filesMatch "\\.(html|htm)$">
Header set Cache-Control "max-age=7200, public"
</filesMatch>
# Disable caching for scripts and other dynamic files
<FilesMatch "\.(pl|php|cgi|spl|scgi|fcgi)$">
Header unset Cache-Control
</FilesMatch>
</IfModule>
# END Cache-Control Headers

# Set the default handler.
DirectoryIndex index.php
# protect the htaccess file
<files .htaccess>
order allow,deny
deny from all
</files>
# disable the server signature
ServerSignature Off
# protect wpconfig.php
<files wp-config.php>
order allow,deny
deny from all
</files>
# disable directory browsing
Options All -Indexes

## protect from spam comments
RewriteEngine On
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{REQUEST_URI} .wp-comments-post\.php*
RewriteCond %{HTTP_REFERER} !.*cadbloke.com.* [OR]
RewriteCond %{HTTP_USER_AGENT} ^$
# Add known spammer ip ranges here
RewriteCond %{REMOTE_ADDR} ^66\.36\.\251.$ [OR]
# end known spammers range.
RewriteRule (.*) ^http://%{REMOTE_ADDR}/$ [R=301,L]
# for Windows Live Writer access
<Files xmlrpc.php>
SecFilterInheritance Off
</Files>

Good luck with that.

The astute observers amongst you will note that I added an IP address range selector to the spam protection block just above. That IP range has been spamming this blog so my apologies if you’re in it – get yourself to a reputable ISP. It’s your fault.

Here are some more resources for .htaccess. Remember – tread very carefully.

http://perishablepress.com/press/2006/01/10/stupid-htaccess-tricks/

http://zemalf.com/1076/blog-htaccess-rules/

… and more than you’ll ever want / need to know about .htaccess, right from the source …

http://www.askapache.com/htaccess/htaccess.html

To get an idea of what I’m talking about, check my site (http://www.CADbloke.com/) in Yslow (Firefox’s Firebug plugin). Under the “components” tab note that most (hopefully all) of it is gzipped and expires in at least a few days time. Also have a look under the “statistics” tab & note how many requests are needed for a primed cache. If you have a look at the Net tab you can see what is actually being loaded. Try it by loading the page normally once of twice, then Ctrl-F5 to clear the cache and reload it. See how much was cached? That’s what speeds page loads up and takes a huge load off your server.

Mostly unrelated: Irfanview is a free image viewer that has a save-for-web plugin which is very effective and eminently tweakable.

[update: March 24, 2010] Here are a couple more links to some WordPress speed-up tips.

http://wpwebhost.com/optimizing-wordpress-blog-for-speed/ (lots of other resources linked-to from here)

http://www.askapache.com/wordpress/fastest-caching-plugins.html

http://www.tripwiremagazine.com/2009/11/optimize-wordpress-for-professional-performance.html

Something else I want to look at is conditional loading of plugins, JavaScript & CSS as detailed in these posts

http://w-shadow.com/blog/2009/02/22/make-your-plugin-faster-with-conditional-tags/

http://yoast.com/conditional-thickbox-loading/

http://justintadlock.com/archives/2009/08/06/how-to-disable-scripts-and-styles#comment-145538

This would create a few more variations of minified CSS & JavaScript to be cached by local clients but would also take a load off visitors who never visit pages with a contact form or haven’t left a comment or whatever else an unused plug in is waiting to not-do. I’m still thinking about how worthwhile that might be. Perhaps I’m better off controlling this by user-agent IDs to lighten the load for mobile browsers. I don’t want to create too many variations of the locally-cached CSS & JavaScript since that would actually increase download times and use more bandwidth. Oh, the dilemma.

[EDIT] Another CSS speed-up is to optimise your style.css. Wherever you see an @import statement (usually at the top of the file), go find the CSS file being imported and pate the whole file in place of the @import statement. I left the @import statement in place, commented out. I also minified the CSS before pasting it so it is all on the same line. That makes it easier to replace when you update a theme later. This is especially so in the case of child themes when it imports a lot of CSS from the base theme – you will have to go and re-paste the @imported CSS every time you upgrade the base theme, hopefully not too often.

oh, btw – my site is a heavily butchered version of Hybrid News. Any feedback is more than welcome.

Hope this helps.

:)

Ewen

Written by CADbloke

March 23, 2010 at 10:50 am

Posted in Wot I use

Tagged with , ,

Cheapness is its Own Reward

with one comment

I heard this from a friend in primary school (hello Vince, if you’re reading) and even at that tender age I knew it was one of the most significant things I would ever hear.

You get what you pay for, there is no free lunch … you know the clichés. Computers, AutoCAD, monitors, printers, training, conferences all cost money.

I spend a fair whack of money every year on an AutoCAD subscription, an MSDN subscription, computer hardware (mostly really fast disk drives), Training, conventions like Microsoft Tech.Ed. I haven’t been but definitely plan to attend NAB & IBC in the near future. I take the time to read blogs and follow conversations on Twitter. Why do I spend all this time and money?

  • Because I hate money and just want to get rid of it? Nope
  • Because I like new toys and hanging out with Tech Geeks? Um, yes but let’s move on …
  • Because I want to invest in my business and myself? Yep
  • Because I want both myself and my business to be innovative and educated? Yep
  • Because I don’t want Me, My Work and My Life to be mediocre? Precisely

Mediocrity is my greatest fear. I fear it more than death. To a certain extent I can do more about avoiding mediocrity than I can about avoiding death (and taxes) and I choose to do just that.

You need the right tool for the job, you can’t whip butter with a toothpick (possibly unrelated) etc. etc. Cheapness is its Own Reward

Discuss …

Written by CADbloke

October 16, 2009 at 10:21 pm

Posted in Me

Tagged with

What I Want From Accounting Software

with 15 comments

Regular readers (both of you: Hi Mum!) will know I have already ranted about this before, and again about the basket-case that is QuickBooks, weaved by two packs (wipe that smile of your smug dial MYOB) of narrow-minded window-licking codetards and email-pushing middle-managers at great expense to both themselves and us to prop up a regime of beancounting droids who couldn’t get a date at tax-time. I hope that was diplomatic enough. If you’re one of that crowd well sorry but you knew what you were getting yourselves into. Shut up.

Well, it’s time for another rant because it’s tax time. I’ll try to make this one somewhat more constructive.

There is hope on the horizon in the form of Software As A Service (SAAS) providers like Saasu, Xero and a Clarity. There are surely others worthy of consideration. If you know of one you like (or at least don’t despise) then please add your thoughts via a comment.

My initial thoughts on these are that the developers of all 3 are very keen on hearing feedback and engaging with their users. This alone puts them leagues ahead of QuickBooks & MYOB. Leagues. Miles. Light years. You get the picture.

  • Saasu – If you’re familiar with QB/MYOB then the Saasu interface won’t confuse you. It’s more straightforward to use than the :evil: Ones. For me it is a bit too much like them to warrant the leap of faith. Not yet, at least. The dashboard in the demo just shows news items – it should show what I would expect to see if I set my own company up and ran it there. I can see where to manage it and add stuff but you can’t edit the demo. You can in Xero. I haven’t bothered setting up my own accounts in there (why would I if I was just testing it?) but the empty dashboard for my company file shows more promise. I still don’t know what would be clickable there though.
  • Xero – is the pretty one. It has a really nice interface and User eXperience (UX). It does automatic bank statement imports for a lot of NZ banks and some Australian banks which is full of WIN for me because I’m lazy and disorganised, just like you. The UX is my favourite of these by quite a margin. The dashboard is nice (ooh, graphs) and you can click through items in the Aged Receivables report to drill down to details, something I couldn’t do in the Saasu demo without going into edit mode. I just wanted to look at it! I could in Clarity too. Xero’s documentation is well done and comprehensive too.
  • Clarity – is similar to Saasu. Without spending a mega-hours poking around I think Saasu may be more a little more evolved in some places but less in others. For example-instance, it wasn’t immediately apparent to me how to add an item to an invoice in the demo in Clarity. Perhaps the demo needs a few items in it. I had to manually type in the description, price etc each time. If that’s the way it works then I’d get bored with it rather quickly. I suspect that ultimately you can add items to an invoice but I didn’t figure it out. You can edit the demo in Clarity too.

:( None of them warned me when I was navigating away from an incomplete invoice (in the demo). That sucks. The reason I dropped MYOB like a hot potato is because it was (and apparently still is – let me know) all-too easy to lose all your work on an invoice by simply hitting the escape key too many times. There was (is?) no warning dialogue about losing your unsaved work. Suckage. :(

:) All of them allow you to access your accounts from anywhere in the internet, naturally. Xero has an iPhone version which I must says is bloody noice. That might have something to do with my having just crossed to the Dark Side. Here’s a video of Xero on the iPhone in action, complete with now-fashionable (thanks to The Flight of the Conchords) Kiwi narration. The mobile site should work on most mobile devices. ANZ Australia bank’s site worked on my old Nokia. I’m sure the Commonwealth Bank etc should too.

:( None of them directly do timesheet invoices or project tracking. I’m sure I am not the only person who bills their time by the hour. All of them advise you to create an item that represents an hour of work. Saasu has timesheets but they don’t allow for meal breaks. Xero interfaces with WorkflowMax (so does Saasu) but I’d like to keep both the portals and the costs (an extra $25/month) contained. Bonus – WorkflowMax too have an iPhone interface.

:cry: Depreciation is a pain in the bum. Xero wins here, hands-down. The others need you to set up accounts, workarounds and all that rot. bah. Actually, I don’t think Clarity even has an asset register.

:( None of the 3 have particularly customisable invoice layouts. My timesheet invoices include a field at the top for an overall project name (which is tracked) and each lines has fields for Date, Project-Item-Name (which doesn’t get printed), Project-Name (also doesn’t get printed), Description of the work, Start time, Finish time, Break duration (lunch), sub-total hours for the day, hourly rate, Tax type (not printed), line total & GST. Then there are totals at the bottom for before GST, the GST amounts and the total to pay. I suggest they take a look at the level to which you can customise QuickBooks invoices and save different layouts. Then forget what you saw because the way you customise invoices in QuickBooks 2007/08 sucks. You can do better. C’mon , AJAX draggy-droppy is all the rage – show me the money! Also, I want to change fonts here and there. Poor ol’ Comic Sans doesn’t get out much these days

:) All three of them have an API so they are extensible. The API is free, unlike the :evil: Others… unless that changed recently. Like I could be bothered checking.

:) Xero have a UserVoice forum for their API and also take suggestions via a pop-up within their site. Clarity also has a UserVoice forum. Saasu take feedback via support tickets on their site. I’m a big fan of UserVoice and I’d like to see more of it, or at least of its ilk. I like seeing feedback in a public(more-or-less) forum where you can see what’s going on. For one, it saves you from a flood of duplicate requests. I think it also builds communities. My love of UserVoice is a another topic altogether that I probably won’t get around to blogging about. Hell, I’m only writing this because I hate QuickBooks and this is far more interesting than actually doing my tax.

:) oh, look – another reason to like Xero. Also  Xero’s blog is a lot more active than Saasu’s. Clarity’s blog is definitively worth a read too.

:? I don’t care about payrolls (because employing someone these days is too damn hard) but Xero (via an integrated 3rd party) & Saasu handle them.

:?: Halp! I have already mentioned Xero’s documentation. It is dead-easy to get to from the middle of what you’re doing at the time and it’s context-sensitive. Yay!. Saasu has a help link that leads to to their documentation. It’s not as pretty or as intuitive as Xero’s. Clarity also has a link to help from their dashboard. Xero is the clear winner here, taking a leaf from QuickBooks and wiping their … moving right along …

:idea: Here’s what I really want, specifically for depreciation in this instance: I am on the “simplified” tax / Small Business Entities oh there’s too many words … System. When I buy a laptop I’d love to be able to click the big green “I bought something” button, tell it how much I paid, what it is (shiny!), tell it what percentage is for business use (100%, of course!) and forget all about it. The software should be smart enough to know if I paid less than $1000 (excl GST) then it is a 100% deduction and if I paid more then it is 15% for the 1st year then 30% for every year after that until the asset pool falls below $1000 then that pool is a 100% deduction. Does your head hurt yet? Here it is explained in a far more complicated manner. There would be another button (perhaps red?) for when I sell or dispose of it that does all the depreciation stuff in the background, generates a tax invoice for the sale, tells me how much I lost made on the sale versus depreciation deal and tells me to go buy one even shinier. This is all stuff that QB & MYOB would insist you pay a bean counter to tell you. I’m calling bullshit on that one. It’s just sums and a logical sequence, the sort of thing you’d get a computer to do.

There are a number of other things I want along these lines and timesheet invoicing is one of them. All the timesheet / invoice really needs to know is ….

  1. Who is the client?
  2. What are you working on?
  3. What day did you work?
  4. What time did you start?
  5. What time did you finish
  6. How long did you take for lunch? Times are optional but that’s a bit nit-picky for me
  7. How much is the hourly rate for this task?
  8. [optional] How does this compare with a quote / estimate you gave earlier for this job?
  9. How much allocated time is left?

The trick is this needs to be simple to manage. You also need to be able to leave stuff out til later if you’re in a rush. If you just need to write some times down with a short note about what it was so you can be reminded to finish the details later then let me do that – and then remind me. You need to be able to add new projects and project items while you’re in the middle of filling out a time sheet or invoice. I am more than happy to wade though documentation and concentrate for a while to set up invoice templates and some workflows. After that I just want it to work. Don’t make me think! I want the computer to do as I say & think, not the other way around. <—Important point, read again.

:) Saasu, Xero and Clarity are all on Twitter and all seem more than happy to chat. I’m on Twitter too.

:( Xero is a tad expensive for a lone freelancer at $50/month. I think it needs a tiered pricing scheme so I’m not potentially paying the same book-keeping fees as BHP. Saasu is half the price or even free if I only do 15 transactions per month. Hey, I’m not a marketer so who am I to dictate pricing? Clarity is even cheaper but has no free option. Given the nice UX and abundance of conveniences, Xero might just get away with their premium pricing. Well, they haven’t gone backwards, that’s for sure. QB & MYOB will rob you of at least $250 / year for a version “that works”. I think most of that money goes into printing all the :x brochures they keep sending me to recycle. Shiz, what do I know about pricing?

8O I missed 88 Miles from this post initially. Thanks Corneliu for reminding me. I found it very straightforward to use. It is simple but effective in managing time worked on projects. It doesn’t do quote etc but for timesheets, it’s a win. You can even clock in and out on the web page. The only thing I didn’t like was, as I mentioned in the comment below, when you enter a shift manually you can’t account for meal breaks. You’d have to fudge either the start or finish time to get the correct hours worked. The pricing is good though and it interfaces with Saasu.

8) My Verdict? Well, Xero is coated with sugary WIN, as far as I am concerned. It has the UX win and that’s what I was looking for. QB can count beans but it alienates me, leading to anger, which leads to the Dark Side, which leads to blogs like this. This must be stopped! No, wait.

Alas, Xero + WorkflowMax they are a tad too expensive for me at the moment at around $75/month for the pair. My invoicing and accounting needs are not so complex at this moment in time to require such expense in managing them. Having said that I found WorkflowMax a bit clunky. Also, there didn’t seem to be a way to put either your or the supplier ABN on a Tax Invoice in WorkflowMax. It is actually illegal in Australia to omit your ABN if the invoice is over $1000 and also to omit the supplier ABN at any time (possible exception: if you withhold the GST). I think Saasu might be guilty here too, if memory serves me right [edit: it didn’t – see Marc Lehmann’s comment below. Saasu does cater for this], which it often doesn’t. [obviously!] I think there are easier and/or more comprehensive ways to track time & projects. Maybe I didn’t take a good look at it but it wasn’t better than the way QuickBooks does it.

Either of the others is, at this stage, a bit more-of-the-same as QuickBooks so I’m sitting tight with QuickBooks for now, despite the fact that I hate its guts. Basically I am just using it as an invoicing tool and doing the sums in Excel. That will surely change sooner or later but not just yet. The temptation is not quite strong enough. Yet :)

To the vendors – Take a look at the stalwarts (QB & MYOB). You want their functionality (well, some of it) but for Gawdsakes don’t let Bookworms and Beancounters determine your User eXperience. Go ask a plumber or a sparky. Don’t take my word as Gospel. That would be :lol:. They’re your customers and they will tell you what you need to know about UX. UX is the path to WIN. Oh, read this about UX too. You’ll find it handy. or not.

Right – your turn – what do you think:?: What do you know:?: What do you want:?:

Vendors – I’d especially like to hear your feedback and corrections. If I got something wrong, let me know & I’ll update the post.

————

Stop the Presses – update (July 6, 09)

:idea: Apportionment. I’d love to be able to apportion what percentage of an expense is tax-deductible. I operate as a sole-trader, as I am sure many do, so my business accounts are reasonably-closely tied to my personal tax return. Items like motor vehicle expenses are deductible at a rate set by me according to a log book. So, when I enter a fuel expense I’d like the software to apportion the business and personal percentages to separate accounts so I don’t have to do it later to work out my personal tax return. As a bonus, I’d like to be able to update this percentage and apply it to a range of transactions retrospectively. Yeah, have that spanner in your works! :?

This would be especially handy for a method like Xero’s that automatically guesstimates what a transaction  may be, based on past entries. I really like that feature. Coupled with automatic bank statement imports, I can see that really taking the tedium out of counting my beans. It’s all about getting the computer to do the boring stuff. Having spent the entire weekend cooped up inside, in my pajamas, counting beans – it gets boring.

Update March 2014

I have been using Xero for a few years now and I would never go back.  My annual (personal – I am a sole trader, not a Pty Ltd) tax return process has gone from a profanity-ridden 4 day antisocial lockdown to about 2 minutes copying Xero reports totals into a simple Google docs spreadsheet. BX (Before Xero) I literally had no idea how my business was doing until the EOY return because it was just too hard to figure out. Xero may even have saved my marriage, such was the angst.

A lot of the nitty-gritty in this post is well out of date, you really should check them out for yourself to see what each currency have on offer – they have evolved a long way from when I first wrote this post.

Written by CADbloke

July 4, 2009 at 11:38 am

Posted in Rants, Wot I use

Tagged with , ,

The Web is Not a One-Way Street.

leave a comment »

This post is a follow-up for a presentation I gave at the The Sydney Business Technology User’s Group in June, 2009 on Interwebz feedback channels for your customers and community. If you weren’t there you missed a golden opportunity to heckle. Maybe next time, eh?

These days the internet is steadily evolving into a medium for communities to connect and congregate. The notion of a static HTML brochure page has gone the way of Alta Vista. These days it’s all about interaction. Like the best camera is one that gets out of your way so you can take a photo, the best web is the one that facilitates communication and interaction without being intrusive, to the extent that it takes place outside of a browser in clients and on mobile devices.

Whether you have a personal blog with visitors, or a business with clients and prospective clients, or you are interacting with your peers, it’s the same thing in real terms. Communication and community build rapport, credibility, leads and are generally just warm-and-fuzzy nice. We’re social animals. Hey, none of this is new to you. Even monoliths like mainstream media have feedback channels. They always have via the letters-to-the-editor. The difference is that most letters don’t get published. That’s not very Web 2.0.

The trick is your participation in feedback channels. My biggest takeaway from 4 and a half years of university was this from psych 101: “It is that which comes from you that determines your quality of life, not that which comes to you.” To elaborate, your well-being and reputation (professional and otherwise) are determined by your actions far more so than by the actions of others towards you. This includes your participation in the communities relevant to you.

Allow me to use one of my cranky rants to illustrate. I was trying to find a mind-mapping solution and stumbled upon Gliffy. I couldn’t find any pricing for it and I wasn’t in a particularly good mood so I had a bit of a rant on Twitter about it:

 Me: Hey @Gliffy. I will *NOT* sign up for an account just to view your pricing. GGF! Pricing info link #FAIL

and Gliffy’s reply: @CADbloke Try clicking on the ‘free basic account’ link from the signup page. Sounds like we could make some improvements there.

So, who looks like a dill now? Yup, me (again). Therein lies you lesson (albeit at my expense), your contribution to the conversation is what identifies you in the community. Sure, a massive attack on you in a public forum will shake things around but you should realise you have a lot of control here – everybody is watching what you are saying and doing. Make it count.

Now to the cheat-sheet for my presentation…

Community is about empowering your clients, users, potential clients, even friends and family. Think about FaceBook and MySpace if you’re pondering the last couple of groups there.

There are various types of customer interaction. This is not an exhaustive list, just a starting point for conversation about conversation. Um, metaconversation anyone?

  • Feedback for your product / service / something you said
  • Request for more information
  • a one-to-one conversation with a member of your community
  • a conversation amongst many members of your community, led by you
  • a conversation amongst many members of your community, not led by you
  • annoying, pointless rants (usually from me)
  • spam

Try to contain it to all but the last two. So how do you go about it?

 

Modes of Customer Interaction

  • Nothing: won’t cut it in the 21st century. One way communication is dictatorial and not empowering. It is not the Cold War era anymore. Silence will get you ignored or raise suspicions about your intentions.
  • email link from website: Spam bait and not open, conversational nor community-driven. Better than nothing but not by much. Never use a mailto: on your web page unless you really, really love sifting through spam. You can encode it if you like but it is still not much a of a communication channel.
  • contact page: More spam-proof. Initiates a one-to-one email conversation. Still doesn’t benefit the community because it is a closed conversation.
  • Surveys and Polls. This is more like a call for comments. It is still initiated by you and is still a closed-ish channel although revealing the survey results opens the channel somewhat. Obviously polls are more one-way than a survey that allows for written answers. They can initiate but can’ host discussions.
  • Comments, blog-style: More web 2.0. Conversational, open. You still initiate the conversation and choose the topic, at least initially. This is a generational leap ahead of the mailto: dinosaur. All blogging platforms support comments. It has been widely opined that a blog without comments is just a rant. Threaded comments add another dimension to the conversation. I like ‘em.
  • Forums: Open, public or semi-public – there are various method of Access Control. Community members can initiate conversations. You can moderate forums but you should be careful not to stifle discussion.
  • Bug reporting tools like  Bugzilla, Mantis, Eventum form the MySQL team, BugNET, Bug Tracker .NET, FogBugz, Jira. These are far-more suited to technical crowd. Their interfaces are very technical & quite confrontational for the uninitiated. Your average user, already flustered because the app you wrote for them has crashed, will probably give up at this stage. Too hard!
  • Hosted feedback forums are relatively new to the mainstream tubes. UserVoice is my favourite, perhaps because of their start-up story but also because of their widget that goes on your site. They don’t try to pwn your brand. Speaking of which, and here too, there’s also Get Satisfaction but it’s pricey. It is worth looking at if you have needs for a more intricate feedback channel but I don’t think it’s really meant for SMEs.
  • Generic hosted forums like Whirlpool for Australian IT Linked-in, FaceBook, MySpace have professional groups you should look at participating in
  • Instant messaging communities like  Twitter, Friend Feed etc. FaceBook etc are rapidly evolving into this space too. Like it or not, this is the leading edge of evolution, as far as internet collaboration goes. Well, it was when I wrote it.

The above list is, more or less, in increasing order of public-ness and decreasing order of monolithic-ness. More significantly you can see a drift from the top of the list to the bottom of the list towards Social Media.

 

SEO

SEO on your support site is just as important as the rest of your site, as the 37Signals vs GetSatisfaction example shows. Here’s another example. For exampleinstance, you would expect a search for QuickBooks has encountered a problem and needs to close to return you all sorts of Quicken support goodness. It does but there’s a SEO red-herring in there – well, there was when I wrote this. Serves ‘me right, I say ;)

 

Spam Control

Akismet is amazingly effective in controlling spam on blogs. It is easily integrated with WordPress and other blog platforms. Use it!. Seriously. Mollom is an alternative to Akismet for systems like Drupal. Dries invented Mollom so Drupal don’t really “do” Akismet

You can test to see if the Contacter (yes, I made that word up) is a human or a robot using various methods, the most popular of which are CAPTCHA and reCAPTCHA. They both tend to  be pretty effective deterrents to both robots and humans alike.

Hosted solutions are a bit easier here because spam control is more-or-less their problem to solve.

Well, I hope that gives you food for thought. Please feel free to add your thoughts and observations.

cheers

Ewen

Written by CADbloke

June 21, 2009 at 7:14 pm

Follow

Get every new post delivered to your Inbox.