You know the real problem with frameworks? They demo too well. Someone shows you their favourite framework and demonstrates how you can build 50% of your application in half an hour! Great! That other 50% can’t be hard, can it? But it turns out that what looked like 50% is actually 5%, and filling in the other 95% gets exponentially more difficult as you approach the 100% mark. Frameworks are great for building toys, and that fools us — again and again — into assuming they’re good for building products.


Mike Taylor via What happened to programming redux
Permalink | Comments | March 9th, 2010 at 4:48 pm | 1 day ago

I dont care if it loses 90% of visitors, we cant have a skip on the website intro, we paid a lot of money for that and everybody has to see it.


(via clientsfromhell)
Permalink | Comments | January 27th, 2010 at 4:32 pm | 1 month ago
Permalink | Comments | January 12th, 2010 at 11:04 am | 1 month ago
  • First photo: Rogers’ plans.

    Second photo: Telus’ plans.

    Rogers just lists all their plans on one page. But it doesn’t let you click through for more information! So I’m looking at the Data Browsing Plans, and I can’t figure out if they include voice or not. I looked at the MyFav5 options, and also it doesn’t tell me if I have to mix and match with something else. The page simply lists everything, doesn’t tell you what to do with it, except “compare plans” with each other.

    The Telus’ list, I don’t even have to explain that one. It just works.

    This is the 2nd redesign for Rogers this year. This one is a bit less cluttered than the last at least. But they fail at organizing important data, also when searching for phones you get this ‘refine results by’ column on the left that is incredibly useless; though it works a bit better on the programming channels option. Oh and I don’t even want to start on their “Page Not Found’ errors, they come up inadvertently every couple of minutes when browsing around… quite disruptive.

    They’re one of THREE telcom companies here, must they fuck things up so badly?

  • Permalink | Comments | August 10th, 2009 at 12:12 pm | 7 months ago
    Permalink | Comments | May 8th, 2009 at 11:28 am | 10 months ago

    Yes, people really don’t like to read.

    When I started working as a PHP Developer 5 years ago I learned quite quickly was that people really didn’t read, they specially don’t like to read instructional text. To put it simply, if you need instructions you’re doing it wrong. And if you need a sentence instead of a to-the-point statement, then also, you’re doing it wrong.

    As I gained more experience and moved up on the organization, I started repeating the same thing to designers and other developers more often. And still I was not believed. Since these are not facts of web design, but assumptions one makes about the visiter/member/surfer, I had no way of proving it.

    I wish I had read this article before Designing for People Who Have Better Things To Do With Their Lives, and shown it to my co-workers. But since I left the other job awhile ago, I figured I’ll pass it on to my few tech readers.

    Permalink | Comments | January 13th, 2009 at 9:57 am | 1 year ago

    [tech] Upload button not appearing in IE 7 for SWFupload

    Solution to problem, follow this thread:

    http://swfupload.org/forum/generaldiscussion/901

    Basically its a conflict between two onload statements.

    Permalink | Comments | December 1st, 2008 at 11:58 am | 1 year ago

    [tech] submitting forms with javascript

    I keep running into these stupid small issues with javascript and prototype. Sometimes they seem so simple, so easy, but somehow you can’t figure them out. This next thing should have been logical, I should have known.. and still, I spent 20 minutes figuring out why it didn’t work.

    The goal: a mass action button. On the php side, I use the name of the button to process the form. On the html side, I have a form with a bunch of radio buttons and one submit button. On the javascript side, a simple confirm function.

    Here’s the code for the button:


    input name="DeleteItems" id="DeleteItems" type="submit" value="Delete Item(s)" onclick="fncConfirmForm()"
    I simple want that onclick to do a confirm, if you press yes, go ahead and submit form, otherwise, stay where you are. The confirm code uses a prototype window plugin. The javascript function, returns true if you press yes, and it does a form.submit(). Like so:


    function fncConfirmForm() {
    Dialog.confirm("Are you sure you want to delete these items?", {
    windowParameters : {width:200},
    okLabel : "Delete",
    cancelLabel : "Cancel",
    onOk : function(){ $('ItemsFormName').submit(); return true; },
    onCancel: function(){return false;}
    });
    }

    But that didn’t work.

    First, the button I used kept submitting as soon as I pressed it. It didnt even wait for me to click Yes/Delete. So I changed the button type to “button” instead of “submit”. That stopped the form from submitting.

    But it still didn’t work.

    Turns out when you make it a type button, that input element doesn’t actually get submitted with the form. So the page was submitting after I pressed Yes/Delete, but it wasn’t going in the php part.

    I had to add a hidden field with the name I needed, and make the button that has the onclick a fake button. Like this:


    input name="DeleteItems" id="DeleteItems" type="hidden" value="true"

    input name=”DeleteItemsFake” id=”DeleteItemsFake” type=”button” value=”true” onclick=”fncConfirmForm()”

    Should have been simple huh?

    PS: I cannot figure out how to show code here without tumblr going bonkers… anyone have any ideas?

    Permalink | Comments | August 18th, 2008 at 4:00 pm | 1 year ago

    [tech] returning variables inside a prototype each loop

    I ran into a funky issue today. I was trying to get the value of a radio button by looping through all the radios with the same class name, then checking to see which was selected, setting a variable with the value of the selected item.

    At first, the most obvious and easy solution was to use prototype’s each function for the loop.


    $$('input.radio_button_css_class').each(function(input){
    if(input.checked) {
    var result_id = input.getValue();
    throw $break;
    }
    });

    [View code better here]

    It works as expected, result_id gets set with the value of the checked radio. But, as soon as I try to reference result_id outside the each function, result_id returns undefined.

    I have no idea how to get around this, even though I am really sure its just one of those prototype quirks. So I ended up going with a normal for loop.


    myCoolArray = $$('input.radio_button_css_class');
    for(i=0;i ^ myCoolArray.length; i++) {
    if(myCoolArray[i].checked) {
    var result_id = myCoolArray[i].getValue();
    break;
    }
    }

    [View code better here]

    Oh and as a side thing, trying to get all the radio buttons by #id doesn’t work, so by applying a class name to all the radio’s, and using prototype’s nifty $$ function.

    Permalink | Comments | August 15th, 2008 at 3:09 pm | 1 year ago

    [tech] Prototype Ajax.Request and arrays as parameters

    I just ran into the weirdest problem when using prototype. Here’s a post in hopes that if someone else has the same problem they know how to fix it.

    I need to pass an array as a parameter to my php script. I’m doing this using Ajax.Request. The problem is that is not passing one variable with multiple values, but the same variable multiple times with multiple values.

    So its passing this:

    arrayToPass : 1
    arrayToPass : 2
    arrayToPass : 3

    Instead of the correct way:

    arrayToPass : [1,2,3]

    I think the problem might be the array I’m passing being possibly unconventional. I’m selecting all the checkboxes in a list that have been checked with this nifty code I found online:

    $$('#NameOfTheForm input.classNameOfTheInput').each(function(box){
    arrayOfValues.push(box.getValue());
    }

    Here’s the Ajax.Request:

    new Ajax.Request(PathToYourAjaxFile, {
    parameters: { arrayToPass :
    arrayOfValues },
    evalScripts : true,
    onSuccess : function () {},
    onFailure : function () {},
    }

    The only solution I found was to enclose the variable arrayOfValues in single quotes like so. Even though its actually passing a comma separated string, at least its passing it.

    arrayToPass : ''+arrayOfValues+''

    And that’s my techie complaint for the day.

    Permalink | Comments | July 2nd, 2008 at 2:45 pm | 1 year ago