Bypass GuardianEdge – getting files onto your cellphone using Wifi File Explorer


How can I get a file from my computer onto my cellphone without connecting it over USB?


GuardianEdge is an encryption program which allows the corporate security guys to ensure that files from  your company computer are not transferred to portable media without being encrypted.

This make sense from a security standpoint, you do not want corporate secrets or personally identifiable information (PII) to get out into the world un-encrypted and potentially lose-able/steal-able.

GuardianEdge works by detecting connection from a USB portable device to your computer. It installs a copy of itself onto the portable drive automatically. When you copy a file to the portable drive, Guardianedge intercepts the transfer and forces you to select an encryption key. This can either be a username/password or a X.509 cert in a Common Access Card.

Unfortunately this become a pain in the arse when you have something personal you need to take home with you. Yeah yeah don’t use your work computer, but sometimes it is just convenient to do it at lunchtime. In my case I wanted to download a podcast and listen to it on the way home in the car (which happens to be vaguely work related anyway).

Solution 1

If you have the ability to – upload your files to dropbox and then down again to the phone (assuming you have corporate access to dropbox or some other similar). This is fine but then I have to download the file to the cellphone anyway which is what I was trying to avoid in the first place.

Solution 2

Activate the “3G Wireless Hotspot on the phone” and connect to your phone using your computer’s wireless connection (AndroidAP is the default SSID) – even if you haven’t paid for the mobile hotspot subscription, this still creates the wirelss connection between the computer and the phone. I strongly recommend access to your wireless hotspot either by MAC address or turning on encryption.

Using the excellent “WiFi File Explorer PRO” I was able to connect to the SD Card on the cellphone, over the wifi connection. Using the web based interface I was able to upload the file from my computer to the cellphone without using USB and therefore bypassing GuardianEdge.

Wifi File Explorer
Wifi File Explorer


I do not sanction or encourage the bypassing of corporate security in any way.

Remember – you are responsible for your actions, not me!

Text formatting power

I am working on a demonstration database for doing field editing via the web (more to come later) and I needed a list of random data for my example. I got some Super hero data from a website but the formatting was not good…

Sample Super Hero Data

Many Many records of varying length/number of power parameters. I need to get them all on a single line if I have any chance of importing them into Notes.

Over to my least favorite text tool – favorite text formatting tool – MS Word….

If you didn’t know you can manage New Lines (^p), Tabs (^t) and all sorts of other hidden characters very easily in Word.

So we replace all NewLines followed by a comma, with just a comma

Text replacing in MS Word
Text replacing in MS Word

And there we go simple as that

Formatted Text
Formatted Text


Now imagine you wanted to create a string out of that in LotusScipt – I don’t know why you would but hopefully you can make an analogy to something to would need to do

I want to turn

Professor X,Telepathy,Extra-sensory perception,Eidetic memory


Print {Professor X,Telepathy,Extra-sensory perception,Eidetic memory}


Take the New Line (^p) and add a } before it, ending the row and then immediately after it on the next line insert Print { before the text

Converting to Lotus Script
Converting to Lotus Script format

which creates something we can copy and paste into the Lotus Script editor without causing errors

Final Lotus Script
Final Lotus Script


– Productive

XPages – using # and $ at the same time

Paul Withers posted a great about the XPage Binding and how the order of computing for $(..) and #(..) means that the following code does not compute as we would want it to. The article is well explained and opened my eyes to the intricacies of the timing in JSF. It got me thinking about it and I think I have a solution.

<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="">
<xp:text escape="true" id="computedField1"
value="This field's value is#id{id:computedField1}">
<xp:text escape="true" id="computedField2"
value="You are logged in as ${javascript:@UserName()}. This field's value is #{id:computedField1}">

This field’s value is#id{id:computedField1}
You are logged in as CN=Mark Roden/O=MAXDEV. This field’s value is

The solution appears to be forcing the #{id:computedField2} to compute using SSJS @Text – but I am not sure why this works and doesn’t fail like the original example.

is replaced with

I used <xp:value> in this example for clarity because of the extra ” in the @Text formula

<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="">
<xp:text escape="true" id="computedField1" value="This field's value is #{id:computedField1}">
 <xp:text escape="true" id="computedField2">
 <xp:this.value>You are logged in as ${javascript:@UserName()}.
 This field's value is ${javascript:@Text("#{id:computedField2}")}

This field’s value is view:_id1:computedField1
You are logged in as CN=Mark Roden/O=MAXDEV. This field’s value is view:_id1:computedField2

UPDATE (02/13/2012)

Sven’s Right – unfortunately this code is not JSF compliant and is more likely to be a bug in Notes which will be corrected in a later version.

Paul came up with a much more elegant solution using dataContexts

Glad to be part of the discussion 🙂

Kindle fire dead – or is it

So my 12yr old who got his Kindle Fire for his birthday (2 weeks ago) comes downstairs with the worst look of horror/guilt on his face last night telling me that his Kindle is dead and he is “SO SO SO SO sorry” and “I didn’t do it” – “I just put it down when I came down for dinner and now it doesn’t work” etc etc

And he was right – the power button was unresponsive – there was no crack on the screen or anything like that, no signs that he’d been stupid with it – so I was resigned to finding my Best buy receipt and we’d be taking it back….

Just in case, I figured I would check out the Amazon Help files – which turn out to be (unsurprisingly) very good –  Trouble Shooting Your Kindle Fire

Went to the Power Issues section and the recommendation was to do a hard reset – Hold down the power button for 20 seconds and try again…..

And it CAME ON (*bells and fanfares*)

So I have a very thankful child who seriously believes I am an IT god and I am happy for him to continue to believe that. This hard reset actually seems to be the recommendation for a number of issues and makes me wonder if they know something about it hard crashing…..meh I digress

The moral of this story is read the help – it really can !

Adding Teamstudio Configurator – Alternate method

Update March 2014

See the comment at the bottom of the page for updated links and/or contact your Teamstudio rep to find out the most up to date links


I LOVE TeamStudio configurator – always have, probably always will

For some reason though (probably permissions or firewall related) I am unable to do the installation via Drag and drop from the website. I drag and drop it – and nothing happens…

Add Configurator 29 Problem

So I figured out a work around and here’s how I did it – might not work for everyone but it might. This also provides an interesting insight into the process and how everything is interwoven in this process.

Right clicking on the Configurator icon and copying the link address gives me this

Looking at the file I find the ftp root for the 29 update

Going there I found the site.xml and that is the one I was looking for

In the Notes Client

Tools—>Widgets—>Getting Started with Widgets

Adding a Widget
Adding a Widget


Select Features and Plugins and hit Next

Add Configurator 29 Step1
Add Configurator 29 Step1


Enter the site.xml URL and hit Load

Add Configurator 29 Step2
Add Configurator 29 Step 2

Select Configurator and hit Next – You will see it start to download

Add Configurator 29 Step3
Add Configurator 29 Step 3

Once it is complete

Add Configurator 29 Step4
Add Configurator 29 Step 4


Add Configurator 29 Step5
Add Configurator 29 Step 5


Add Configurator 29 Step6
Add Configurator 29 Step 6


Add Configurator 29 Step7
Add Configurator 29 Step 7

Restart and we’re done

I am assuming it is the same steps for any of the other products which appear in the site listing but I have not yet tried them.

– Productive

Chaining jQuery – it’s a beautiful thing

A very cool feature of jQuery is the fact that most of the methods returns a jQuery object that you can then use to call another method. {link}

This also increases performance because you do not have to re-select the objects each time.

I am working a form validation model and I want to copy a field and all its attributes into a dialog box to present to the user and have them correct it “in their face” so to speak.

So I want to:

  • Clone the field (generic passed in as JSON string)
  • Append it to the contentFieldset
  • Rename the field id to make sure there is no conflict
  • With the minimum amount of code/effort, while maintaining maximum readability
msg = '{"fieldname": "First_Name", "error": "Enter a First Name"}'
var obj = jQuery.parseJSON(msg);
$("#"+obj.fieldname).clone().appendTo("#contentFieldset").attr("id", "validate_"+obj.fieldname);

And that created the field along with the text which was already entered

<fieldset id=”contentFieldset”>
<input id=”validate_First_Name” size=”25″ value=”Marky Entered this” name=”DEP_FNAME”>

Productive !