Samantha Orme

% complete
  • Jul 25, 08

    The quick guide to buffing up your Joomla 1.5 RSS feeds.

    First of all, do the things it says to do in these 10 Simple Steps to Joomla RSS.

    Namely, install RD-RSS, add feeds, set up Feedburner.

    To turn on HTML, you’re going to need to edit the RD-RSS source code. The file you’re interested in is [JOOMLA_ROOT]/components/com_rd_rss/rd_rss.php. Find it via FTP or in a terminal session.

    You’ll probably want to make a copy of the original unedited file at this point just in case something dreadful happens and you need to restore it. Don’t say I didn’t warn you: screwing around with the Joomla source can quite easily cause catastrophic site failure.

    Having said that, this operation is pretty basic. All you need to do is pop that bad boy open in a text editor, and comment out these lines (221-222):

    $item_description = mosHTML::cleanText( $item_description );
    $item_description = html_entity_decode( $item_description );

    They should then look like this:

    // $item_description = mosHTML::cleanText( $item_description );
    // $item_description = html_entity_decode( $item_description );

    Then just save the file and re-upload it (if you’re using FTP.) It might take a little while to see the effects because RD-RSS has caching enabled by default, but eventually your feeds should show up in all their HTML glory.

    Note that if you want to see your images, you will have to make them into absolute links, or create a further hack to make sure that relative paths get translated into absolute ones. I suggest something along the lines of this, pasted just underneath the lines you just commented out:

    $item_description = preg_replace( ‘#(href|src)=”([^:"]*)(“|(?:(?:%20|\s|\+)[^"]*”))#’, ‘$1=”$2$3′, $item_description );

  • Jul 01, 07

    My posts on this site will be even fewer and farther between than usual through August, as I am cycling across the US in support of the Leukemia and Lymphoma Society.  I have another blog for this excursion because, well, the more blogs the merrier.

  • Apr 17, 08

    Nice when you’re using URLs in a bunch of different places that differ only by a parameter or two.

    <c:url value=”” var=”my_google_link”><c:param name=”query” value=”lookforit” /></c:url>

    <c:url value=”my_google_link” var=”my_new_google_link”><c:param name=”pagenum” value=”5″ /></c:url>

    <c:out value=”${my_new_google_link}” escapeXml=”true” />

    This results in:

    Note that using escapeXml in your <c:out /> has the added benefit of giving you some sweet XHTML-compliant link action (i.e. ampersands are escaped.)

  • Jul 25, 08

    Today I was merrily (for at least the first 2 minutes) trying to get a little script to run correctly in Internet Explorer. Naturally, I had done all of my development on my trusty MacBook, testing it in Firefox. I’d played with it a bit in Safari and Camino, both nice browsers that ran it absolutely fine. I hadn’t bothered to fire up Parallels to test it out in Internet Explorer, mostly because I was a little scared.

    Yesterday, I bit the bullet. Thankfully, there weren’t excessively many issues. The first thing I stumbled upon was that Internet Explorer doesn’t like the DOM element.getAttribute(‘class’) method very much (it returns null regardless of whether your element actually has a class.) I was forced to use the less pleasing direct DOM alternative (i.e. element.className.) Similar logic applied to the ‘name’ attribute (element.setAttribute(‘name’, ‘x’) throws an error; = ‘x’ doesn’t.)

    The second issue was significantly more irksome, only because it took quite a lot longer to figure out what the hell was going on. This is partly because of the way my script was structured, which only made it more annoying. When creating a form input element dynamically, I was consistently getting the error: ‘Could not get the type property.’ This was not good, as there seemed to be no way to create, say, a radio button without setting its type.

    To clarify: I wanted to end up with some HTML that looked like <input type=”radio” name=”my_name” class=”my_class” id=”my_id” />. I was using Javascript that looked like this:

    function createElt(parent_elt, elt_type, elt_id, elt_class) {
    var new_elt = document.createElement(elt_type.toUpperCase());
    if (elt_id) { new_elt.setAttribute(‘id’, elt_id); }
    if (elt_class) { new_elt.setAttribute(‘class’, elt_class); }
    return new_elt;

    function createFormElt(parent_elt, elt_type, elt_id, elt_class, elt_formtype, elt_name, elt_value, elt_onclick, elt_onfocus, elt_onblur) {
    var new_elt = createElt(parent_elt, elt_type, elt_id, elt_class);
    if (elt_name) { = elt_name; }
    if (elt_formtype) { new_elt.setAttribute(‘type’, elt_formtype); }
    if (elt_value) { new_elt.setAttribute(‘value’, elt_value); }
    if (elt_onclick) { new_elt.onclick = elt_onclick; }
    if (elt_onfocus) { new_elt.onfocus = elt_onfocus; }
    if (elt_onblur) { new_elt.onblur = elt_onblur; }
    return new_elt;

    createFormElt(parent_elt, ‘input’, ‘my_id’, ‘my_class’, ‘radio’, ‘my_name, ‘my_value’, clickMethod, focusMethod, blurMethod);

    The problem was that Internet Explorer wasn’t gettin’ down with the idea of setting the ‘type’ attribute *after* appending the element to its parent. Never mind that, in theory, I still had a perfectly valid reference to the element in question, nor that setting any other attribute worked just fine. In any case, the solution was just to set the type element before appending. In this case I decided not to use the createElt method for form elements, but I could just as easily have added a parameter for type to createElt.

    The code that worked:

    function createFormElt(parent_elt, elt_type, elt_id, elt_class, elt_formtype, elt_name, elt_value, elt_onclick, elt_onfocus, elt_onblur) {
    var new_elt = document.createElement(elt_type);
    if (elt_name) { = elt_name; }
    if (elt_formtype) { new_elt.setAttribute(‘type’, elt_formtype); }
    if (elt_id) { new_elt.setAttribute(‘id’, elt_id); }
    if (elt_class) { new_elt.setAttribute(‘class’, elt_class); }
    if (elt_value) { new_elt.setAttribute(‘value’, elt_value); }
    if (elt_onclick) { new_elt.onclick = elt_onclick; }
    if (elt_onfocus) { new_elt.onfocus = elt_onfocus; }
    if (elt_onblur) { new_elt.onblur = elt_onblur; }
    return new_elt;

    createFormElt(parent_elt, ‘input’, ‘my_id’, ‘my_class’, ‘radio’, ‘my_name, ‘my_value’, clickMethod, focusMethod, blurMethod);

    Now I just have to get the CSS working…

  • Apr 22, 08

    Deleting spam comments gets old, fast. Although Typo was nice, it didn’t deal well with the Viagra ads. So, here I am. Sorry about all the RSS reposts.

  • Mar 23, 07

    They said it was impossible, (and I’m pretty sure that for $0, it is impossible). Google Calendar (specifically, the Google Apps for My Domain version) synced over the air to a Blackberry.

    I’m here to tell you the good news. There’s hope, and it comes with a 15 day free trial.

    First of all: it would be remiss of me not to mention GCalSync—an up-and-coming open source solution that lets you sync Google Calendars to Blackberries OTA. However, wonderful as GCalSync is, it’s a tad lacking in the Google Apps for my Domain arena (it won’t let me use my GApps login directly, and attempting to download calendar data from my “private calendar” URL results in all of my events showing up on December 31st, 1969.) That said, although I have not myself attempted it, I hear it downloads events from regular Google Calendars quite well.

    But on to the main event: syncing a calendar (or, for an extra $40, calendars) to/from Google Apps for My Domain to your trusty Crackberry.

    To achieve this mammoth feat, you will need to:

    1) Set up an account with GooSync.

    2) Tell them your Google account information. You will not be able to use their (allegedly) magical “auto-setup” utility, or their “you don’t have to tell us your password” Google Calendar authentication. This is the one thing that’s a little chancy about this operation—you do actually have to give GooSync your password to Google (choose the “I want to use password authentication” checkbox.) Therefore, you should likely not use the same password for Google that you use for your bank account, or the nuclear missile silo. Although if you ask me, any company that’s based in Wolverhampton Science Park is bound to be trustworthy.

    3) Visit Nexthaus using your Blackberry’s default web browser and download and install their excellent SyncJE client software (

    4) Open the SyncJE client, select “Settings”, and enter:

    • Server URL:
    • User Name: [your goosync username]
    • Password: [your goosync password]
    • Check “Calendar” and set: Foldername: Calendar

    5) Hit Save.

    6) Select “Start Sync.” When it completes, you should be able to see your Google Calendar events in your Blackberry calendar!

    7) (Optional) Pay Nexthaus $29.95 to get a license so that you can sync for more than 15 days.

    8) (Optional) Sync multiple calendars by upgrading your GooSync account (~$40 extra). Once you’ve upgraded, go to the “My Device” screen in your GooSync web console, and click the “Change…” link to the right of “Sharing 1 Calendar.” GooSync automagically loads all of the calendars you have set up as Shared Calendars in your Google Calendar account. It lets you name them, and events from that calendar will show up prepended with [calendarname] in your Blackberry calendar.

    As you may have discerned, I am mightily excited about this. Now all I need to make Google Apps truly mobile is a Contacts sync (which GooSync says is in the works).

    Note about my setup: I did this on a Blackberry 7130e on Verizon’s network.  To get it to work on a co-worker’s Blackberry Pearl with T-Mobile, I had  to configure their TCP to use T-Mobile’s APN: Go to Options > Advanced Options > TCP, and set APN to

    For other networks, search for “[network name] WAP APN”.

  • Mar 23, 07

    Last week I cracked open my piggybank, gave my morals the day off, and bought a Blackberry used on eBay. It will replace my xv6700, which I love dearly, except for the part where it runs Windows Mobile 5. I hate that part. I also detest the way Verizon has poisoned the deal by preventing me from installing Java apps on it.

    But I digress. I got a Blackberry. Now I could install all of those lovely Java apps that Google is releasing these days, right? This was very exciting. Seriously exciting—I ripped open the box the minute it arrived.

    Sadly, my euphoria was short-lived. After some back and forth with Verizon, my phone was activated and online. But, every time I tried to install a Java application (mobile Gmail, mobile Google maps, Opera Mini, etc., etc.) I got this error:

    HTTP Error 406: Not Acceptable

    The page you are trying to load is not supported by the browser. Please try loading a different page.

    Details: 200: Application can not accept the content [text/]

    I’ll admit it, I pouted.

    And then I did some research. And waited on hold with RIM customer service for about 3 hours.

    What I discovered was this: my Blackberry was formerly part of a monolithic corporate network. It was chained to an Enterprise Account. The all-powerful IT Department bestowed their Security Policy upon it. And now, that Security Policy, much like a hot iron brand, is officially with it for life. Wiping the device cannot remove it. Kicking, screaming, and threatening to sue RIM cannot remove it. The original owner’s IT Department can remove it, by sending a new Security Policy, but that would involve figuring out who and where they are, and persuading them to do work that they have pretty much zero incentive to do.

    The Security Policy seared onto my Blackberry does not allow third party apps to be installed. So, I would be right back where I was with my WM5 phone if it weren’t for the Awesome Power of the Internet.

    Here’s your solution

    If you are also having this problem, you may want to take a quick look at this page:

    Now, I’m still in a little bit of a pickle, because I don’t have a PC. Therefore, I’m stuck trying to make Parallels play nice with USB devices. When (and if) I get it all to work out, I’ll post an update.

    The Update

    The workaround is great—the only problem I had was getting my Windows running under Parallels to recognize my Blackberry. I finally gave up and just used an old PC laptop we had lying around the office.

  • abcdefghijklmnopqrstuvwxyz abcdefghijklmnopqrstuvwxyz
    Now Playing