coderanger.com blog

news about what I am developing and other random thoughts


Shirky’s Law and why (most) social software fails

Monday, 28th July, 2008

This is a very interesting insight into the reasons why a lot of sites in general (not just social sites) fail … they are too complex…
Shirky’s Law and why (most) social software fails

Posted using ShareThis

Posted at 21:45 by Dan to :: General :: No Comments »


Detect if AdBlock is running

Monday, 28th July, 2008

Here is a bit of useful code to try and detect if AdBlock is running…

<script language="JavaScript" type="text/JavaScript">
// Code written and copyright by www.tweaktown.com. You will have to check with them whether you can use it...
setTimeout('detect_abp()', 10000);
var isFF = (navigator.userAgent.indexOf("Firefox") > -1) ? true : false;
var hasABP = false;

function detect_abp()
{
 if( isFF )
 {
  if( Components.interfaces.nsIAdblockPlus != undefined )
  {
   hasABP = true;
  }
  else
  {
   var AbpImage = document.createElement("IMG");
   AbpImage.id = 'abp_detector';
   AbpImage.src = '/textlink-ads.jpg';
   AbpImage.style.width = '0px';
   AbpImage.style.height = '0px';
   AbpImage.style.top = '-1000px';
   AbpImage.style.left = '-1000px';
   document.body.appendChild(AbpImage);
   hasABP = (document.getElementById('abp_detector').style.display == 'none');

   var e = document.getElementsByTagName("iframe");
   for (var i = 0; i < e.length; i++)
   {
    if(e[i].clientHeight == 0)
    {
     hasABP = true;
    }
   }
  }

  if(hasABP == true)
  {
   history.go(1);
   // Go to somewhere useful, a good example is at http://www.tweaktown.com/supportus.html
   window.location( "http://www.tweaktown.com/supportus.html" );
  }
 }
}
</script>

Posted at 19:51 by Dan to :: General :: 1 Comment »


BuildIT 2.0 Build 127 Released

Tuesday, 8th July, 2008

A new build is available that fixes a couple of bugs:

  • Fixed problem with MSDev6 projects not being parsed properly so no configurations were populating list
  • Fixed problem where copying a single (non-wildcard) file to a directory that doesn’t exist with “Create folders” selected, wouldn’t create the folder and would therefore fail to copy

Posted at 07:15 by Dan to :: BuildIT, General :: 3 Comments »


BuildIT 2.0 Build 126 Released

Monday, 2nd June, 2008

A new build is available that fixes a couple of bugs and adds some new (much requested) features:

  • Added support for Visual Studio .Net, 2003, 2005 and 2008 solutions. You can now build any or all of these solutions on machines that have any number of the environments installed.
    UPGRADERS: Beware that BuildIT will try and select the version appropriate but you ought to check and select the right one on each task
  • Added configuration of the paths used for building Visual Studio Solutions (Options dialog, Tools menu, Paths tab)
  • Added ability to multi-select items for various operations including enabling, copy/paste, drag/drop or running the selected tasks
  • Added ability to clear read-only bit on destination copied/movied files
  • Added ability to copy/move files based on the archive bit (with ability to clear the bit once copied/moved) … useful as a simple archiving/backup tool
  • Fixed the right-drag context menu (UI was previously broken due to toolkit upgrade)

Posted at 21:58 by Dan to :: BuildIT, General :: 1 Comment »


Two of the most beautiful singers together

Thursday, 13th December, 2007

If this doesn’t bring a tear to your eye then nothing will…
http://www.katiemelua.com/tesco/christmas/

Buy a copy now and support the Red Cross

Posted at 15:53 by Dan to :: General :: No Comments »


How to reduce movie and tv piracy

Friday, 7th December, 2007

I thought I would post this as its just a thought, I know people (I don’t do it myself, I can’t stand downloading stuff from torrent) who download episodes and movies from the net … why? because its not broadcast in the UK yet and has been showing in the USA for months.

Take, Series 2 of Heroes, we have no idea when we will get it over here … so those who know how will just not wait and will download it … why not!

The same can be said for movies, its blooming annoying to have to wait many months for a release over here for no obvious reason.

Well, if all TV shows and Movies were released worldwide at the same time then you remove that need and desire, you may as well watch a decent quality version on your TV or at the cinema than some cruddy version downloaded from the net.

Of course the movies wont get their boring marketing nonsense called a Movie Premiere, with the cast walking about a pointless red carpet; but that is something we can all live without!

Posted at 14:15 by Dan to :: General :: No Comments »


Does Leopard Promote Content Theft?

Wednesday, 11th July, 2007

I am just in the middle of watching Jobs’ Keynote at WWDC07 and was interested in the new ‘webclip’ technology.

From computerworld:

WebClip enables users to “scissor” a portion of a Web page and then turn it into a stand-alone Dashboard widget

This basically allows you to create a ‘widget’ on your desktop that contains a portion of someone’s website.

But doesn’t this bypass most web site terms and basically avoid you viewing adverts or the rest of the content, affectively ‘deep-linking’ into portions of the content?

I think its cool, but am somewhat unsure about its legality … what do you think?

Posted at 16:32 by Dan to :: General :: 1 Comment »


BuildIT 2.0 Build 121 Released

Sunday, 8th July, 2007

A new build is available that fixes a couple of bugs and adds some new features:

  • Fixed bug so you can get version information from different language EXEs
  • Modified so it will run a DOS Command task tool process from given search paths if a path is not given, also removed validation that exe exists so this can be done
  • Added condition operators to specify how to compare the condition values (has equals, not equal, contains, not contain and is empty)
  • Added ability to have macros in command line log paths
  • Added current build file to log so its clearer what file the log is reporting on

Previous builds; Build 120:

  • Added ability to specify a ‘condition’ on whether a task runs or not. This is a simple case insensitive comparison of the value of a specific macro. The task only runs if the value specified is exactly the same as the actual macro value
  • Added a new system macro “SCRIPTSTART” which contains the string value of the date and time the script started in format “21 July 2007 13:21″ … this can be passed into a VBS CDate or a JS Date object constructor to create a script usable date
  • Fixed bug with wrong value being saved into macro when running a DOS Command Tool Task
  • Added ability to specify if the “Send Email” task should send as Plain Text or HTML, and also can specify the Importance of the email
  • Added some more script functions for new email facilites:
    ## Sends a plain or HTML email to an already connected SMTP server with given importance. Importance can be: 0=Low; 1=Normal; 2=High
    BOOL SendSMTPEmailExtra( String strTo, String strFrom, String strSubject, String strMessage, BOOL bSendAsHtml, short nImportance )

    ## Sends a plain or HTML email with attachment to an already connected SMTP server with given importance. Importance can be: 0=Low; 1=Normal; 2=High
    BOOL SendSMTPEmailExtraAttachment( String strTo, String strFrom, String strSubject, String strMessage, BOOL bSendAsHtml, short nImportance, String strAttachmentPath )

Build 119:

  • Added ability to save return value of DOS Command Tool Task into a given macro for later use
  • Modified command line version so it exits with appropriate exit code depending on if it finished successfully or not
  • Modified output of file management tasks when operating on files due to date specifics
  • Added some exception handling on scripts to try and catch failures due to security issues
  • Added some more script functions:
    ## Returns whether given task is enabled or not. If task name doesn't exist, it returns FALSE
    BOOL IsTaskNameEnabled( String strTaskName )

    ## Returns whether given task has executed yet or not (current task would return false)
    BOOL HasTaskNameRun( String strTaskName )

    ## Returns whether given task has succeeded to execute or not (disabled tasks or current task would return false)
    BOOL HasTaskNameSucceeded( String strTaskName )

    ## Returns whether given task has failed to execute or not (disabled tasks or current task would return false)
    BOOL HasTaskNameFailed( String strTaskName )

    ## Returns the given named version field of a file with version information
    String GetFileVersionString( String strFilePath, String strVersionStringName )

    ## Returns an MD5 hashed string from given string
    String ConvertToMD5( String strUnhashedIn )

    ## Returns an SHA256 hashed string from given string
    String ConvertToSHA256( String strUnhashedIn )

Build 118:

  • Fixed same CPU bug in MSDev/VB Tasks

Build 117:

  • Fixed major bug eating up all CPU when running a DOS command
  • Fixed issue with double-clicking tickbox would edit task instead of not
  • Fixed issue with file management dialogs would not size even though they had sizing grippers
  • Added ability to use DEL and INSERT keys on files list in Manage Files task
  • Fixed crash bug with incorrectly enabled edit/delete buttons when creating a Manage File tasks
  • Fixed bug where encoded characters in XML File parameter values where not converted. This would mean that apostrophes in task names and other places would load back in as '

Posted at 22:16 by Dan to :: BuildIT, General :: 5 Comments »


Javascript cool feature of the day: on Browser Ready

Sunday, 8th July, 2007

From:
http://www.fearthecowboy.com/2007/02/javascript-cool-feature-of-day-on.html

A nice little one-liner script you can use in your HMTL page to run some a function when the browser is done loading the HTML.

I have been using this cool little snippet for a while, something I factored down for my own purposes, and tucked away in my little bag of tricks. I didn’t realize that others’ were not using something similar to this, (I saw a spate of posts where people were using document.write)[SHUDDER!]. So, I’m going to post it, and let the world rejoice:

var _my_init = document.addEventListener ? document.addEventListener("DOMContentLoaded", function(){myinit();}, false): setInterval( function(){if (/loaded|complete/.test( document.readyState )){ clearInterval(_my_init);myinit(); } }, 10);

Works in IE, FireFox, and Safari. Probably others, as I think most browsers support one of the two methods for bootstrapping an init function.

To use it, just replace the two myinit() calls with whatever you want to run, and the replace the _my_init variables to something that’ll be unique to you. I’d comment on my crazy desire to overload the living tar out of the ternary operator in javascript, but that’d be redundant.

Posted at 22:00 by Dan to :: General :: No Comments »


Creating a Multi-Tiered Product

Wednesday, 27th June, 2007

I was reading an interesting post by Craig Fitzpatrick and felt I ought to put in my two-pennies-worth.

I totally agree with his statement:

It’s the experience level of the user. And that changes over time. Newbie users LOVE simple products because they’re not intimidating. They’re easy to get started.

But although I would like to agree with the following, I am not sure how you would actually get there:

Personally, I believe the best solution is to stop trying to design a single user experience that is exactly the same for the beginner user as for the advanced user. Once again, in trying to please everyone, you risk pleasing no-one

The following points are true in my experience:

  • Designing a ‘modal’ interface does not work. Take the Expanding Menus in Office (one of the most truly awful ideas in my opinion and gives nothing but some other new ‘widget’ to be confused over).
  • Everyone thinks they are above their personal capability with most people thinking they are intermediate to advanced when in reality they are beginners
  • No-one likes to think they are stupid or dumb and will not admit a lack of knowledge
  • Customers, given the choice, due to the above points would select a modal interface beyond their knowledge

So what have you gained, you have a technically more complex product that is not going to be used in its simple mode by the people you would expect to use it.

Selling different products that are geared to different users is the correct way to do it, beginner users would have a more graphical wizardy type interface, whereas advanced users would have standard menus loaded with commands.

But this comes with some pretty major problems:

  • How do you upgrade a customer from one product to another
  • How do you explain to an existing or potential customer that the feature they really need is in the next product up … which may be more expensive, or more complicated just for that one feature
  • What if a customer didnt think your product did something and didnt bother buying it based on that … but it did do it but in a different version than he is using
  • Will they actually download 3 different versions to see which one is for them … unless its an obvious product for an already saturated market like e-mail or blog readers then they might not know what features on the feature list they need

But in my experience the last two points are major ones; you will lose customers trying out your products as they dont realise that the feature they are looking for is in a different version. And they won’t download and try 3 different versions to decide which one is for them.

So what to do … there is no easy solution other than what you think your product and market can stand.

Posted at 17:30 by Dan to :: General :: No Comments »

archives

  • July 2008
  • June 2008
  • December 2007
  • July 2007
  • June 2007
  • November 2006
  • April 2006
  • November 2005
  • October 2005
  • September 2005
  • July 2004
  • June 2004
  • November 2003
  • October 2003
  • September 2003
  • categories

  • BuildIT (23)
  • General (51)
  • MailViewIT (1)
  • blogroll

  • meta

  • Log in
  • WordPress


  • RSS 0.92
  • RSS 2.0