The Detail Department

  • Our Services
    • Strategy
    • Analysis
    • Implementation
    • Training
  • Applications
    • Salesforce
    • Confluence
    • WordPress
    • Other Apps
  • About Us
    • Jodie Miners
    • Projects
    • Privacy Policy
  • Blog

© The Detail Department Pty Ltd 2016

You are here: Home / Archives for Work

I’m a Salesforce.com Certified Force.com Developer

19-Jun-2012 by Jodie Miners

I have finally formalised my Salesforce knowledge and taken the certification exam to become a Salesforce.com Certified Force.com Developer.

Salesforce Certified Developer LogoSo what does this mean? Well Salesforce’s idea of being a Developer and mine are two very different things. For me, being a developer means that you build and compile code in a code editor and use a code repository. (Things like html, css, javascript don’t really count as being a real developer in my book).

Salesforce is a declarative platform, which means most of the customisation of Salesforce can be achieved with just clicks, rather than code – that’s the bit that I know, and know well. There is another level of Salesforce that is all about code, which is the bit that I don’t do, (but I have a great developer that I work with that can do that stuff).

So this certification says that I can design and implement a customised Salesforce implementation for you, and if we need to get into some really advanced code, I can spec it up and get someone to build it for us. However, as per my Salesforce Methodology and my previous post on great Tools for Salesforce Administrators, there is so much we can do without code in Salesforce, which is good.

Filed Under: Me, Salesforce, Work

Supporting a different country on your Adobe Business Catalyst Site

9-Oct-2011 by Jodie Miners

This is more of a post for me in case I ever need to do this again. I look after and have created a few Adobe Business Catalyst websites. This was back when they were a cool Aussie Startup called GoodBarry. Now they are part of the behemoth that is Adobe. I probably would not recommend Adobe Business Catalyst to many people now. Even though they now have the power and might of Adobe behind them, they not put out that many fixes this year, and there is a major bug in my site that they have said they will fix “in an upcoming release”. This is really not good enough. There are dozens of features that just don’t work well (eg the whole Email Marketing tool), and the whole system is feeling a bit tired and dated. I really really hope that Adobe does good things with it, and that the upcoming version 3 is great, but I don’t hold much hope.

So I have to add support for another country for one of the sites that I look after. Here is the list of things that I need to do in order to make the new country functioning. To see some great multi currency sites in Adobe BC head over to www.apresvelo.com, www.explanar.com or www.bollorethinpapers.com. I have borrowed some javascript hints from a few of these pages, plus I got some great help from the LinkedIn Group and from the BC Support team also.

Domains

  • modify the Admin > Manage Domain Name setting to add the ‘A’ record for the sub domain for the new country, and choose the Start Page. I don’t make many changes for each country, and don’t have a separate start page for each country, but if you did need a different page for each country then you would set it here.
  • Note: I’m not doing anything with language and translations, but look at the www.bollorethinpapers.com to see what can be achieved with translations. I have set up usa. and uk. as my sub domains.

Templates

  • Modify the Default Template (Admin > Manage Site-Wide Templates) to include the JavaScript to change to the correct sub domain based on the users’ IP address which is converted to a country code using the {module_visitorcountrycode} tag. Note, that you can do this by using a manual drop down list, but I found that it was important for the affiliates page to have the right sub domain there, or the affiliate link went to the wrong sub domain, so I have decided that it is best to automate the sub domain setting based on IP address. Here is my JavaScript code:

<script language="javascript" type="text/javascript">
var country = '{module_visitorcountrycode}'; // e.g. var country = US;
var countryselected = document.getElementById("selectCountry")
var newurl;
var currenturl = document.location.hostname;
switch (country) {
case 'US':  newurl = 'usa.mydomain.com'; break;
case '': newurl = 'uk.mydomain.com'; break;
default: newurl = 'www.mydomain.com'; break;
}
if(newurl != currenturl) {
document.location = 'http://' + newurl;
}
</script>

CSS

  • The site has some products that are only sold in Australia, so with the help of the BC support team they came up with this suggestion. Add a custom code to the Australian only products, (using the Unit Type field – eg PR-AU) then hide those products from the international sites using some simple CSS. Modify the ModuleStylesheets.css to include the following code in the part of the CSS file where the other Shopping items are:

.USPR-AU {
display: none;
}

  • To make this CSS work, wrap the contents of the Individual Product – Small in a Div with the following class description.

class="{module_visitorcountrycode}{tag_unittype}"

E-Commerce

  • Add the pricing for the new currency – Go to Add Prices to this Product in each individual Product’s page.
  • Set up any Tax Codes applicable to the new country.
  • Add Shipping Options for the new country.
  • Add Gift Vouchers for the new country (if you use them).
  • Add your Payment Gateway for the new country (This site uses Paypal, so it’s just a matter of copying the details over from the existing country).

Online Shop Layouts

Go to Admin > More Customization Options > Online Shop Layouts. For the templates in Customize Check-Out Process Experience, each country has its own page layout. Copy the page from the existing country and modify it to suit the new country. See my examples below:

Shopping Cart

  • One thing that really bugs me about online shopping is the assumption that most sites make about currency – they assume you know what currency you are buying in, and they assume that you will assume it’s USD. So, on the total line, I include the words “in Pounds (GBP)” or “in Australian Dollars (AUD)” or “in US Dollars (USD)” after the total.
  • Ensure there is code to show the tax settings and shipping options for the new country. I don’t have gift vouchers, but if you do, ensure the code for Gift vouchers for the new country are here also.

Currency Exchange

  • I have a simple currency exchange popup so I need to change the JavaScript that calls that. Here is my JavaScript function:

function newPopup() {
var sTotal=document.getElementById("invTotal").innerHTML;
sTotal = sTotal.replace("$","")
url = "http://www.google.com/finance/converter?a=" +sTotal+ "&from=AUD&to=GBP"
popupWindow = window.open(
url,'popUpWindow','height=150,width=400,left=10,top=10,resizable=no,scrollbars=no,toolbar=no,menubar=no,location=no,directories=no,status=no')
}

  • The html code that calls this popup is a hyperlink after the Total in the local currency.,

<a href="JavaScript:newPopup()">Convert Currency</a>

Registration – Buy

  • This site has a different set of “how did you hear about us” options for each country which is a custom field I have set up. I modify the Option Values for the drop down list on this layout.
  • I also add the text after the amount to show what currency this transaction will be in.
  • This site has some payment options that are only available in Australia (eg EFT), so I have some Javascript that disables that payment method if any other country is selected.
  • This site only uses paypal, but if you have different payment gateway options for each country, or use Credit Card payments you modify them here.

Registration – Receipt

  • This site does not have any different requirements but if you have any changes to make, so them here, but remember to copy over your standard receipt layout anyway.
  • If you use Quotes, also modify the Registration – Quote and Receipt – Quote templates or Gift Voucher template if you use Gift Vouchers.

Web Pages

  • This site does not have many changes for each country, but if you did need a different web page for each country then you would need to set them up, and set up a different start page for each country.
  • I just use some JavaScript to change one div on my page depending on the country.

System Messages

  • These are country specific also, so go through every message in Admin > More Customization Options > System Messages and copy your customised ones over to the new country. The only one this site had customised was the 404 Page Not Found.

System Emails

  • Check your system emails to see if there is anything that needs to be specifically changed for the new country – go to Admin > More Customization Options > System Emails.
  • Eg, again I had the text to show what currency this transaction was in on the Invoice. However as there is no separate Invoice for each country, and you can’t use JavaScript on emails, there is not really much that you can do with the invoice except make it very generic.
  • If you use Quotes or Gift Vouchers, remember to check the text in the emails for each of these.

Testing

Once you have done all the customisations you need for your new country, you will need to test it – and test it as if you are a user that is coming from an IP address inside that country. To do this you will need a VPN. A VPN channels all the web traffic from your computer through a server in a specific country to provide the websites you are visiting, an IP address from that country – it effectively looks to the website you are visiting like you are really coming to the seite from that country.

  • I have used Always VPN for a US VPN server previously and it is a great service and pay as you go. They unfortunately don’t have a server in the UK.
  • I found TunnelBear that can switch between UK and US effortlessly and they have 500MB free per month – which should be plenty to test your website.

Just remember to turn off your VPN service when you have finished testing.

Well I hope this post helps if you ever have to set up another country in Business Catalyst. If you have any more ideas for cool things to do with multi-national sites, or any ways that I can improve my Javascript Code (I am not a coder, so it can probably do with some improvement) then please add a comment below.

Filed Under: Business Catalyst, GoodBarry, Work

Building a Glossary in Confluence

13-Aug-2011 by Jodie Miners

When building a Confluence site, or any Help documentation, it is very important to have a Glossary to help explain some of the terms that will be used in the documentation.

Confluence has a few examples of glossaries in their own help system, but of course I wanted to take it a step further – I wanted my glossary terms to have hover text in the main body of the help system, then with a hyperlink to the full glossary text. Also, the glossary should be on one Glossary page and be able to be included in the printed documents.

So, of course, it’s User Macros to the rescue – that along with a lot of help from the Confluence support forum, here’s what I came up with:

The Glossary Macro

{anchor:$ParamName}
h3. $ParamPhrase
{cloak:id=$ParamName}
{multi-excerpt:name=$ParamName}{html}<a style="text-decoration:none; border-bottom:2px dotted; border-bottom-color:#008000" title="$ParamTooltip" href="Glossary#Glossary-$ParamName">$ParamPhrase</a>{html}{multi-excerpt}
{cloak}
$Body

Create the macro to “Convert wiki markup to HTML”.

Breaking down the macro:

  • We create an anchor to come back to this Glossary entry at any time from the main content.
  • The Parameter phrase is shown in a heading 3 style. The phrase can contain multiple words – eg “Glossary Entry” may be a phrase for a Glossary term.
  • There is a cloaked (hidden) section containing a multi-excerpt macro, which contains some HTML formatted text. The multi-excerpt macro will be used to display the Glossary term in our main content pages.
  • The HTML text has a dotted green underline and a hyperlink back to this page, it also has a “title”, which forms the hover text (or Tool Tip) of the Glossary term.
  • Finally the body of the macro is shown – this is the full text of the Glossary.

Glossary Macro Usage

We call the Glossary Macro on our Glossary Page with the following code entered into the Wiki Markup of the page.
{glossary:Name=MyName|Phrase=My Glossary Phrase|Tooltip=My Hover or Tool Tip Text}The main description of the Glossary term. 
This can contain as much information as needed.{glossary}
You end up writing the ToolTip again in the the body, but as both bits of content are stored in the same place, it is easy to update them.
This will display on the page as:

My Glossary Phrase

The main description of the Glossary term.

This can contain as much information as needed.

The rest of the content is hidden because it is inside the cloak macro.

The GL Macro

This is the macro that allows us to use the Glossary term in the main content of the Confluence site and link back to the Glossary page, as well as show the ToolTip on hover over the link.
The macro text is simply to use the multi-excerpt include macro to show the multi-excerpt text we set up on the Glossary page.
{multi-excerpt-include:pageTitle=Glossary|name=$paramName|nopanel=true}
This will display our Glossary phrase as such:
This is My Glossary Phrase used in a sentence.
  • When you hover over My Glossary Phrase the text “Hover or Tool Tip Text” will be shown
  • When you click on the phrase it takes you straight to that anchor on the Glossary page.

GL Macro Usage

The GL macro is simply called by entering the following text in Wiki Markup mode.

This is {gl:MyName} Phrase used in a sentence.

(macro names are always lower case).

Overall Glossary Page

See the content on the Confluence documentation that I wrote about creating a great looking Confluence Glossary page with an alphabetic index at the top of the page.

So it’s very simple to include Glossary words in the body of your Confluence document, the overall Glossary page looks good, and all of the glossary content is maintained and updated in One Place, Once.

I would love to see if you have any ideas for any improvements in this user macro, or if you have a great Confluence glossary page to show off.

Filed Under: confluence, Work

The “One Thing, in One Place, Once” Rule using Confluence

13-Aug-2011 by Jodie Miners

As a database designer, I am a huge believer in the “One Thing, in One Place, Once” rule (aka Normalization, in database speak).

As I’m currently building a full enterprise help system in Confluence, of course I’m going to extend that rule to my help content also.

I started with the ideas of Re-Using Content in Confluence and Building an Inclusions Library as written by Sarah Maddox from Atlassian, then as I started to need more features, I moved on to some of the other methods for content re-use, so I thought I would summarise them.

There are 4 ways that I use to re-use Content. The {include} macro, {excerpt} macro, the {multi-excerpt} macro and the {builder-show} macro. The {include} macro is the simplest and the {builder-show} is the most complex and most powerful.

I’m mainly using these features to produce a printable version of the help content, which is a bit different than the Wiki content, as it is presented in a linear fashion, and doesn’t have as many links to content unrelated to the narrative of the document.

Have a look at the following diagram, it shows some examples of the 4 macros that I regularly use. The first box is the base page, where the content is originally created. The second box is the wiki markup mode of the page where the content is included. The third box is what will show in the final layout of the page.

(click to enlarge)

Include Macro

The {include} macro simply includes the full content of the base page into the display page.

I use this macro for small notes and info panels that are used in multiple places.

On the display page enter the following in wiki markup mode:

{include:Base Page}

The {include} Macro is a bit limiting as most of my main pages has a section at the top that shows how you navigate to this screen – I don’t need that in my printed document.

The {include} Macro can be used from other spaces with the following syntax {include:SPACEKEY:Page name}. (Also see the Perimeter Plugin from CustomWare for the {secure-include} macro, which is useful for including from spaces that the user does not have access to).

Excerpt Macro

The {excerpt} macro allows for a defined section of the base page to be included in the display page. The content that is between the two {excerpt} tags can be included in the display page.

On the display page enter the following in wiki markup mode:

{excerpt-include:Base Page|nopanel=true}

I use this macro only occasionally for very simple pages as I find it a bit limiting as it can only be used for one continuous section of content.

The {excerpt-include} macro can only be used for content within the same space, similar to the {include} macro.

Multi Excerpt Macro

The {multi-excerpt} macro is part of the Multi-Excerpt Plugin. This is a very cool plugin, but it does cost – luckily it’s not that expensive.

This plugin allows you to have multiple excerpt sections in the base page appear in the display page – the cool thing is that the excerpts can be displayed in any order you want.

Each excerpt defined must have a unique name on the page.

On the display page enter the following in wiki markup mode:

{multi-excerpt-include:pageTitle=Base Page|name=excerpt1|nopanel=true}

The addition of the spacekey parameter allows the Multi-Excerpt macro to be used across spaces, so it is quite useful.

I use this quite a bit, but it still has one limitation – you can’t nest multi-excerpt macros – but I may be asking for a bit much there.

I use it to include the overall page description, then the screen shot, then the steps on how to use the screen, but exclude the navigation and the links to other pages, in my printed content.

Builder-Show Macro

The {builder-show} macro is part of the Adaptavist Theme Builder Plugin and is the coolest macro. The way I use it basically turns Confluence into a bit of database – yes it’s a bit complex to set up, but once it’s set up, the maintenance of the pages is going to be very easy.

Here’s how I use it – There are a number of fields on each screen. The same field can be used in multiple screens, and the same description is applicable to each screen. If I keep the description in one page, then I can use that description in multiple pages – but it only ever needs to be updated in the once place in future.

With the same field description being used on a few screen pages, and the printed manual for those screen pages, it can be used in up to 5 places – all based on the same source.

The main set-up for this macro is done on the base page, where we put in codes to say which pages the content will display on.

{builder-show:title=Display Page}
This is the first excerpt from my page
{builder-show}
{builder-show:title=Base Page}
This is the rest of my page
{builder-show}
{builder-show:title=Base Page, Display Page}
This is the second excerpt from my page
{builder-show}

The first and third sentences will be shown on the display page, and the second and third sentences will be shown on the base page. Sentence 3 will be show on both pages.

The display page contains the one macro – the {import} macro.

{import:Base Page}

And that’s all there is to it :).

There is one small limitation with this macro – the content on the display page must be shown in the same order as it is on the base page.

I hope that has helped give you some ideas on how to re-use content in your Confluence site, and if you have any more cool macros to share, please leave a comment.

Filed Under: confluence, Featured, Work

I’m a (Virtual) Resident Geek

23-Jul-2011 by Jodie Miners

The second round of particpants for the Geeks in Residence program from the Australia Council for the Arts was recently announced, and I am very pleased to say that I am now the Resident Geek for the Arts Law Centre of Australia – well virtually in residence anyway.

The Geeks in Residence program is a great program by Arts Digital Era, part of the Australia Council for the Arts, that pairs up Geeks with Arts organisations that need a bit of a helping hand to find their way in the online world. Whilst it is mainly focused around getting help around social media, and online presence, some organisations also need some help in the back office systems, and that is where I can help. For some more information about the Geek in Residence program, have a look at the application process and FAQs page. The program also has it’s own website.

ArtsLaw provides a great service to all forms of artists from around the country to provide legal advice and legal services such as reviewing a contract, or downloading a standard agreement. This is a great service and very much needed in the art community.

After recently launching a great new website, ArtsLaw now need some help in streamlining some of the back-end systems to more integrate the website with the internal business processes, and that is where I am helping out.

The Geek in Residence program is technically meant to be just that – in residence, but as I had already made plans to move to Melbourne when I was interviewed for the program, we were able to juggle it a bit and I am still able to help ArtsLaw, virtually, using a few great online collaboration tools and the good old telephone. (There will be some face to face time required in the Sydney office as we start to do some of the implementation and training). This also fits in quite nicely with the new systems and tools we will be implementing at ArtsLaw as it’s all about building on the success of their new website and moving to a more online way of working.

A big thanks to Fee Plumley, the woman behind Arts Digital Era and the Geeks in Residence Programe, and I wish her well in her new adventure.  Also a big thanks to the team at ArtsLaw, as I am really enjoying working with you and I can’t wait to get these new systems and tools in place.

Filed Under: community, Me, Work

Getting into my Confluence Editing Groove

6-May-2011 by Jodie Miners

I love Confluence. If I could use Textile Markup to do any editing of documents at any time, I would. If Textile Markup was in Google Docs, I would love it (although, now that the keyboard shortcuts are more similar to Word, it’s a little easier).

Of course Confluence is more than about the editing, but in this post I’m going to be concentrating on the editing features of Confluence – especially Wiki Markup. I do not use anything other than Wiki Markup when editing in Confluence*. Even though the Rich Text Editor has improved in later releases, it is still much easier to do “* type the text” to create a bulleted list than to take your hands away from the keyboard and find the icon to apply the bullet style.

(* I do use Rich Text editor when working with large tables – that is my only concession).

I am currently writing a very large help system in Confluence for a web based App that I work with. There is so much to do, that I need to be quick and have systems in place to do things without repetition.

The one thing that is difficult about editing in Confluence as much as I do, is that it is slow – this is the nature of web based applications It is slow to get into edit mode, and even slower to save the page and display the finished content again. There is Word connectors and WebDav, but they can be a bit of a pain and I just want to quickly edit text in a simple text editor. I can guarantee it that every time you think that a Confluence page is finished – there is always one tiny edit that needs to be done, one comma missing or a spelling error – it is this continuous editing that takes so much time.

What I also want most of all is syntax highlighting in Wiki Markup mode – so I can concentrate on the text, and ignore the macro’s and links etc, or quickly find that h2. line with the bit of text I need to edit.

The Confluence Plugin “Confluence In Place Editor” (CIPE) is great as it allows you to edit just the section of the page that is within a heading, and the main advantage of it, is that a text popup window pops up instantly – no more waiting to launch into edit mode.

So I have come up with my workflow for editing Confluence pages – using a number of tools, and I think, even though it is a bit clunky it is faster and cool, because I now have syntax highlighting.

My Apps

These are the apps that I have open when writing my Help System
  • My app in the browser depending on which one I’m writing about (generally Firefox).
  • Confluence in Firefox (with Text Area Cache plugin enabled – this is a godsend – just do not use any Web based editing eg Confluence, WordPress etc without it).
  • Notepad ++ (yes, I’m a Windows user, you could do similar with TextMate for Mac).
  • Snagit (yes, Snagit is now available for Mac also).
  • Dropbox (definitely the best thing since sliced bread).
  • The Confluence In Place Editor Plugin

Notepad++

I Created a User Defined Language for Confluence – based on this site and refining it myself.  Text I have formatted in different colours are:

  • ! for images
  • * for bold and bullets
  • # for numbered lists
  • Numbers
  • {text between braces} for macros
  • h1. h2. h3. etc
  • [Links to Pages] in blue

I’m sure there are more things I could colour, but that is  a good start and makes the Wiki Markup much more readable.

When editing your document, save the file in dropbox so it’s updated constantly and backed up (just as it would be if you were editing in Confluence).

Snagit

All screen shots of my App are done in Snagit. I don’t upload them to Confluence until the very end as there is always one last minute change you want to do. I put numbering on the screen shot to point my help text at the correct location on the screen – I just use the default Snagit numbers.
It is very helpful to have the text file and Snagit side by side so you ensure that the numbering in the text is the same as the screen shot. (Win Key + Left and Right arrows FTW!)
I also upload my .snag files and my .png files to Confluence, so I don’t have to store them in a separate location – Confluence is my master repository for images. When I need to edit my screen shots for a new release, I just download the .snag file, modify it, create the .png file again, and upload both files back to Confluence.
I use the idea of the _includes page as an image library as shown in this post.

My Workflow

Here is my workflow for creating and editing my Confluence pages:

  • Create the screen shots and work out what needs to be written about.
  • Add any numbering or other enhancements to the screen shot in Snagit.
  • Create the text in Notepad++, viewing the Snagit screenshot side by side with the text to get the text right.
  • Add the Screen shot link into the document based on the name you have called it in Snagit and the name of your Image Library page.
  • When the text looks right, paste it into Confluence and have a look at the layout and structure of the document. (Note, there will be no screen shots visible yet – this makes it a bit cleaner to focus on just the words).
  • Display the Confluence page and the Notepad++ document side by side on the screen, so as you see things in the Confluence page that need fixing, you can quickly edit the Notepad++ document. (You can do this with two browser windows open side by side also and use the normal Confluence editor).
  • Check the spelling in Confluence as it uses your built-in browser spell checker with the words underlinked (Notepad++ spelling checker is not that great).
  • Paste the edited text back in to Confluence when you are done. Using the CIPE plugin helps with that as it makes it much quicker to load than going into edit mode.
  • Once all the text is correct, drag and drop your image files to the Image Library page.
  • Refresh and check the completed page in Confluence to make sure everything looks great.

So, that’s my workflow. What is yours? Do you have any great ideas that will help streamline my processes, or will my ideas help streamline your processes? Let me know in the comments.

Filed Under: confluence, Productivity, Work, writing

Things to show for 2010

17-Jan-2011 by Jodie Miners

This is just a post to capture some of the things that I was involved in in 2010 that have been reported / blogged about elsewhere.

Atlassian Doc Sprint

I stumbled across the site for the Atlassian Doc Sprint and thought it sounded quite interesting so put up my hand to volunteer for the project. 2 days in at the Atlassian Sydney office and working with the Atlassian team in SFO via video conference was great. I love going into other companies and “looking behind the curtain” to see how they work. I learnt some things about technical writing and got to meet the team of technical writers at Atlassian. There are definitely some things that can be improved about the Doc Sprint, but as a concept, I think it’s a great idea, and if you are into Atlassian products, I’d recommend doing it next time to get involved.

So now, there is a page or two on the official Atlassian documentation that was created by me (mind you, the end result is nicely tidied up to fit with the Atlassian style). Here is a post by Sarah Maddox explaining the guide to Developing Technical Documentation on Confluence Wiki.

Girl Develop It

Girl Develop It is a fantastic initiative by Pamela Fox from Google to train women in all thing tech. It is based on the similar program set up in New York. Kate Carruthers introduced me to the program so I signed up to help out with the first course – HTML and CSS.  The course was a great success and Kate did a blog post and video of me talking about the course. Pamela has also released her course material which is full of great information. I learned even more than I was giving back, I’m sure. Next up in February is the Javascript course – Book in now, it’s well worth it.

 

Filed Under: confluence, Work, writing

My Top 10 Apps for 2010

27-Dec-2010 by Jodie Miners

Following on from my post of My Top 10 Gadgets for 2010, I realised as I was writing it that there were some cool apps and software that I was using this year that deserved to be mentioned. These are not apps that I’ve bought or started using this year, but the ones I have had to most use for this year.

  1. Confluence – I have used Confluence probably more than any other software this year, and I still love it. I jointed Atlassian for two days for their Doc Sprint a while back, and have been creating lots of complex pages using forms and macros. I love this product.
  2. Google Apps – Basically if you don’t yet have Google Apps for Your Domain, and you have a domain, then get it. It just works! I would recommend GAFYD to any organisation unless they have a specific reason or are large enough to use Microsoft Exchange.
  3. Google Docs – Even though it was sad that Google Wave died this year, there have been so many great features added to Google Docs that I now use either Google Docs or Confluence more than Word. Some of the great new features are Drag and Drop images, Heading Style keyboard shortcuts, Collaborative editing and mobile editing.
  4. Dropbox – How much do I love DropBox? Let me count the ways… It’s one of those apps that falls into the category of, if you don’t have it already, just get it now!
  5. Access 2010 – As with most of the 2010 office suite, Access 2010 is a vast improvement over Access 2007. Having built one major client app in Access 2007 and Access 2010 each, I will very much think to say to clients that unless they upgrade to 2010, there is not much point continuing.
  6. Snagit – One of the projects I have been doing this year is writing a help system in Confluence. So ScreenShots are a key part of that project. Snagit is indispensable for ScreenShots. Snagit 10 has some great new features also that makes it worthwhile to get the upgrade.
  7. Sketchflow – I did a full project Mockup in Sketchflow. I now have a bit of a love / hate relationship with Sketchflow. It has it’s place if you are creating a full Silverlight or WPF app, but probably stick with Balsamiq for simple Mockups.
  8. Visio 2010 – Again there are so many fantastic new features in Visio 2010 that makes it so much easier to create good looking and easy to update diagrams. The new live connectors feature alone is worth the upgrade.
  9. Notepad++ – I use Notepad ++ extensively and just found some great new features in it that makes it even better.
  10. Google Chrome – My browser of choice now and the great new features of the Chrome Apps and Syncing makes it the best browser now. I still do use Firefox for web development, however as I love Firebug still.

Other Mentions:

  • Gmail – still my favourite email app – every time I have to use Outlook (event though 2010 is much better), I die a little inside.
  • Various VPN’s – I use at least 4 VPN clients and it allows me to connect to various client workplaces and work remotely, which is great.
  • Office 2010 – Apart from the specific mentions above, Office 2010 is just a fantastic improvement over 2007.
  • Google Wave – Such sad news this year that Wave was killed off. But overall it might be good – there are features that have been integrated into Google Docs, and now Facebook messaging will be taking a leaf from Google Wave – can’t wait to see that.
  • SharePoint 2010 – I haven’t done much work with SharePoint this year, but I can’t wait to get my hands on SharePoint 2010 for a real client’s site to see how it works.

Filed Under: confluence, facebook, My Fav Sites, SharePoint, Work

WordPress.com for your domain

10-Nov-2009 by Jodie Miners

I have just completed a bit of a revamp of my online presence. This was prompted by the repeated emails from Google about the closure of Google Web Pages (which I love as a simple web platform) – I had to do something to move my web site content. I have also had much more exposure to WordPress over the past few months and absolutely love it as a CMS platform. Finally, an excellent post from Kate Carruthers about your online presence finally prompted me to act.

My Website requirements are pretty simple. It is mainly a blog, a bit about me, how to contact me, and my Resume. I also had previously set up Google Apps for your domain (GAFYD) with my email and website. I never used any of the other GAFYD tools such as Calendar and docs as I use them already from my main gmail account.

I could have gone to a self hosted WordPress.org site but for my personal site I don’t really see the point in spending around $100 per year for hosting. That’s why WordPress.com is so great. And now they have made it even better!

You can now have your full domain linked to your wordpress.com site (for US$12 per year), so rather than http://blog.jodiem.com.au I can now map http://jodiem.com.au to my wordpress.com site. To do that you need to remove your current DNS hosting and let wordpress.com handle it. That is great, except for the email.

But WordPress.com now has email covered too! You can now use your wordpress.com hosting to link to your GAFYD email account! Brilliant! Now this is a full domain solution from worpress.com for US$12 per year. I would highly recommend this solution for any personal account or very small business. (See updated link below).

There are a few downsides to this approach, but they are not a big deal for me:

  • I can no longer have subdomains for my other GAFYD services such as calendar.jodiem.com.au, but that is fine as I never used them anyway (and I can still access them through the google.com/a/yourdomain/ link).  
  • WordPress.com is still a bit limited in what you can do with it. I wanted to embed a google calendar on another wordpress.com site and they won’t allow embeds of anything other than the few specific things they will allow, like You Tube and Google Maps.
  • You can chose to customise the CSS but that’s an extra US$15 per year and I found a great theme (Viligance, which has some customisation options) as part of the standard Themes gallery.

One small tip when setting this up is how to find your unique google verification string in GAFYD to re-verify the site ownership with wordpress.com. Twitter came to the rescue for this one, so here is how to find it:

  • Log into GAFYD dashboard and click on Email
  • Click on “Instructions on how to activate Email”
  • Click on Change MX Records
  • Click on Verify Domain Ownership
  • Choose Upload a HTML file and the unique string will be there!

Easy when you know how!

Update October 2011:

Updated the pricing because the Custom Domain is now US$12/year. Updated some broken links.

Update May 2010:

This is great! WordPress.com now lets you edit all DNS records for your domain. So now you can have sub domains like mail.jodiem.com.au etc. See the full details for this new feature here http://en.support.wordpress.com/domain-mapping/custom-dns/

 

 

 

 

 

 

 

 

Filed Under: blogging, Wordpress, Work

Automated Website Testing with Selenium

26-Oct-2009 by Jodie Miners

For the past few months I’ve been working on a contract to build an automated web testing suite for a large and complex web application. I have used Selenium to build the automated web testing framework so this post explains why I chose Selenium and how great Selenium is as a tool for web testing.

At the September 2009 meeting of the Sydney Business and Technology User Group (SBTUG), I was able to present a high level, business focussed overview of using Selenium for automated web testing. I focussed mainly on IDE but did delve a bit into the code by showing some C# code and running the tests from within Visual Studio. You can see the slides from the presentation on SlideShare. I will present this topic again at the Sydney Alt.Net user group with a bit more of a .Net developer focus.

So to start with, I love Selnium. It’s free and it comes in 3 different flavours that can be used by different parts of your team. The end users and the testers can use IDE, the dev team can use RC and the people doing the serious performance testing can be using Grid – all with the same test code (or versions of the same code).

But this project was not your ordinary Selenium project. Most selenium projects are done in Java or Ruby and if they are done in C# they use NUnit. My project was done in C# using the Visual Studio Team Suite Test Edition (VSTT for short). This is because all the tests for the main non web-based app are built in VSTT and I needed to work in the same environment.

Also, the website I was testing is built with a Javascript Library called ExtJS. One of the “features” of ExtJS is that it builds the HTML Element ID’s on the fly, each time the application is run. Other constraints my project has is that the app only works in Firefox 2 (yes Firefox 2 – yes, it is not a supported browser any more, and whilst not as bad as IE6, it is still an issue!), so therefore I could not use the in-built recorder in VSTT, which only records in IE.

So, I wanted a testing tool that I could record the actions that the users took through the system, that would handle the issues with the ExtJS framework, would work well with VSTT and would scale up to the eventual result of running 1000 web tests in a 2 hour period with 27 concurrent browsers operating. Selenium provided me with all that goodness, and it can run tests on all the major browsers also.

I’m not going to go into the basics of creating web tests in Selenium as there are some great tutorials out there, and the step by step guides on the Selenium website are very good also, and I’ve covered a lot of it in my presentation slides. I will delve a bit into what made this project so challenging and how Selenium helped me overcome it.

ExtJS is an interesting JavaScript framework, and I understand why developers want to use it. From my limited understanding of it, it seems to build the HTML on the fly as it’s needed. So if there is a grid that is 50 columns wide and 500 rows long and many of the fields have a combo box behind them, it will not create the combo box code for the specific cell until you click on the cell. (You could say, why does a Web App have a table that big, and you would be making a very valid point).

However, from a black-box testing scenario (ie I was given access to the Web App but no access to the development team), ExtJS is a very difficult framework to deal with. The element names are uniquely generated long ID’s that change every time the app is run. It means that rather than referencing a simple input box by the name assigned to it, we have to use an Xpath reference to refer to the input box. Selenium is great that it can handle Xpath refrerences, but Xpath references are a pain in many other ways. Firstly, they are long and cumbersome – especially with ExtJS. Eg a pop up box is not on a separate HTML page, it is just built with a DIV at the bottom of the main code, so to interact with an input box inside a pop up box, I first have to find some way of uniquely identifying the pop up box (ie maybe by the title), then find out which DIV holds the whole pop up box, then search within that div for an input box that is next to a label that I know the name of.

This is one way of doing it but it is very fragile and is not a great long term strategy as it needs to be re-built any time there are small changes to the Web App. It is amazing then, when after I had worked out this strategy that I found an excellent post (UPDATE: The original post has been taken down, so the Author kindly let me put the PDF of it on my post)  explaining this very problem that I had encountered, and explaining a fantastic way how to overcome the fragility of testing with the ExtJS framework. Now it’s not something I could do in my short 3 month stint, but if you are ever thinking about testing an ExtJS Web App with Selenium I would highly recommend it. It was great to connect with Lindsay Kay, the author of the post just to say Hi and know that someone else in the world understood what I was going through to build these tests.

Again, I won’t delve into the wonders of Xpath in this post, but there are some great links in my slides about how to use Xpath, and the No.1 tool to use for Xpath if the Firebug Console – it Rocks!

I am also not going to bore you with the intricacies of the VSTT test suite, except to say that once it is set up and running it is a very good test environment as it has excellent reporting and debugging and great integration with TFS (but we only had VSS to work with and it worked fine). However, I have seen a few short demo’s of the new test tools in Visual Studio 2010 and I can’t wait to actually use it in a real test environment. The only drawback is that it does require TFS, which for some small dev houses can be a bit of an expensive option.

What I do want to finish this post of with is about scaling selenium using the Selenium Grid.  I was really apprehensive about using Selenium RC and Grid as they seem difficult and use Java and the command line and Apache Ant, none of which I was familiar with. The Selenium Grid step by step guide actually makes it very straightforward to get it all up and running. In no time you can fire up a grid and multiple browsers and then run multiple tests in parallel, each within its own browser.

Purists say that you can’t use Selenium for Load Testing, mainly because of the hardware required to run multiple browsers on the same machine (I used a server box dedicated to just running browsers and was able to run about 15 at once and I could do around 5-8 on a single desktop PC).  However, there are two great companies out there both using the goodness that is Amazon EC2 to solve this hardware issue for you.

Sauce Labs allows you to use your own code and run tests in the cloud. It has many environment / browser options to choose from and it is amazingly cheap. It is currently in early beta and probably has some things it could improve with reporting but it is a great service, with great support. It is really cool firing off tests on your own desktop and having them run in the cloud.

BrowserMob is a bit more expensive than Sauce Labs but also has fantastic support and lots and lots of options, including bandwidth limiting and the ability to use real browsers or just send http header requests. Browser Mob requires that the tests are built in their app and this can be a bit time consuming. They also have a great range of reports and the ability to run SQL queries against the result set.

Overall, I have found this 3 month contract very interesting and I have learnt  a whole heap of new skills. I could not have done this project with out the team around me setting up the VSTT Environment and teaching me some much needed C# skills, but with all the Selenium, Xpath and ExtJS stuff I just had to learn all that by myself. It has shown me that I really can do anything, that I have the right mind set to just learn new stuff, work out how it all works, then document it and hand it over to the team that will be taking it on from now.

Now onto the next challenge, what ever it may be…

Filed Under: Selenium, Testing, Work

Next Page »

Search this Website

Subscribe to Blog Posts

Enter your email address to subscribe to this blog and receive notifications of new posts by email.

Latest Posts

Advice for Salesforce Career Progression

So, you want to learn Salesforce?

Your Business Needs More Than Just a Website

Q and A: Apps for Service Delivery

Using Wufoo Forms with Salesforce

Integrations are The New Black

We need to talk about Documentation

Tools to help write help documents

Moving away from Command and Control

My ultimate guide to getting started with Gmail