I came across a problem today getting a JQuery tooltip to appear over a flash movie. To avoid this issue you need to add the following property inside your flash movie object tag.

<param name="wmode" value="transparent" />

and/or add the following attribute to the <embed /> tag


I’ve been doing a lot of work with Umbraco lately and I came across a problem this week with regards to password protecting custom sections within the Umbraco CMS. If you want to know how, have a look at the forum post I started on the Umbraco forum.

I found an easier solution to the problem after marking the answer to the solution.

Import umbraco.BusinessLogic on all of your pages within the custom section and then inherit your pages from umbraco.BasePages.UmbracoEnsuredPage

Forum post

Nov 24

Busy busy busy

Posted in: Blog, general | No Comments

I’ve not posted for a while due to it being a busy couple of months at Peach Digital. I have been working with a number of great clients, Vue Cinemas, Goals, Stewart Milne Homes and Daysoft. Lots of new projects on the go and lots to keep me busy. All good…

I found a nice little plugin today that allows you to use the HTML you want when creating a post. Many people will have found the built in WYSIWYG editor for WordPress frustrating as it adds <br/> tags automatically in place of carriage returns even when you are using the editor in HTML mode.

The following plugin lets you turn this functionality off on a per post basis:

Get plugin »»

I have seen several posts around the web where people have created custom error handling code in the global.asax file. The problem a lot of developers seem to come across is obtaining the actual line number where the error occured.

The main issue I have seen is developers using the following code to obtain information on the error that has occured:

System.Exception myError = Server.GetLastError();

This is where they are going wrong. The above code gives information on the last error that has been recorded as the event bubbles up through the layers, and not the information that was recorded when the actual error occured. The following line of code will obtain the Exception object describing the original error:

System.Exception myError = Server.GetLasteError().GetBaseException();

When an error occurs in my applications I like to send an email to myself with the error information and also write to a log file located on the server. Below is an example of the code I use in the global.asax file to achieve this:

void Application_Error(object sender, EventArgs e) 
    // Code that runs when an unhandled error occurs
    if (System.Configuration.ConfigurationManager.AppSettings.Get("SYS_ERROR_LOG_ACTIVE") == "YES") {
        System.Exception myError = Server.GetLastError().GetBaseException();
        //Do not send email if error is page not found
        if (myError.Message.IndexOf("does not exist.") == -1)
             HttpContext con = HttpContext.Current;
             System.Diagnostics.StackTrace myStack = new System.Diagnostics.StackTrace(true);

             CreateLogFiles Err = new CreateLogFiles();
             Err.ErrorLog("Offending URL: " + con.Request.Url.ToString() + Environment.NewLine +
             "Source: " + myError.Source + Environment.NewLine +
             "Message: " + myError.Message + Environment.NewLine +
             "--- Full Error --- " + Environment.NewLine + myError.StackTrace.ToString());

             //Create MailDefinition

             System.Web.UI.WebControls.MailDefinition md = new MailDefinition();
             md.IsBodyHtml = false;

             System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage("SENDER EMAIL ADDRESS", "RECIPIENT EMAIL ADDRESS");
             msg.Subject = ConfigurationManager.AppSettings.Get("SYS_ADMIN_SITE_NAME") + "Error Details";
             msg.Body = "Offending URL: " + con.Request.Url.ToString() + Environment.NewLine +
             "Source: " + myError.Source + Environment.NewLine +
             "Message: " + myError.Message + Environment.NewLine +
             "--- Full Error --- " + Environment.NewLine + myError.StackTrace.ToString();

             System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient();

If anyone has any questions on the use of this code, fire away.

I came across this video on Steelso’s blog. Totally amazing although possibly a bit cruel having species that are used to migrating thousands of miles stuck in a giant fish tank.

Aug 26

IE8 Centering a DIV

Posted in: Blog, css | 7 Comments

After thinking my website worked perfect on all browsers, IE8 came along and ruined it!! I can't wait for the day that Microsoft are banned from developing web browsers. The common CSS for centering a DIV on IE8 as shown below doesn't work:

margin:0 auto;}

To solve this you need the following CSS:

text-align: center;}

margin:0 auto;

Using text-align: center; centers the DIV for IE, and the text-align: left; margin: 0 auto; will align the text to the left, and center the DIV for other browsers.

Hopefully this little tip will prevent some page builders from having a nervous breakdown :)

I wanted to use code snippets today to avoid writting code over and over again. I have found that the documentation on where to find the Code Snippets Manager directs you at Tools > Code Snippets Manager. If you can’t find it here like I found, heres how you add it to the menu:

  • Go to the Tools menu and click Customize.
  • Select the Commands tab.
  • In the Categories section scroll down until you find Tools and select Tools.
  • Search for Code Snippets Manager in the Commands section.
  • Drag the Code Snippets Manager icon and drop it onto the Tools menu and close the Customize window.

When working with databases there are certain tasks that you will find you need to perform regularly. One such task that I find I often need to perform is to delete duplicate records from a database. The following code requires that your table has an identity column, that will be used to identify the duplicate records.

WHERE ID NOT IN (SELECT MAX(ID ) FROM YourTable GROUP BY Column1, Column2, Column3)

The ID column in this example is the identity column and Column1, Column2 and Column3 contain the duplicate data that you want to identify.

I am currently working on a multilingual website for a client offering villas and townhouses to let and buy in Spain. The website uses a custom CMS system and .NETs resource files to manage the content for the different languages. Once the site is live I will put up a tutorial on how I did this, as a lot of the methods I found on the web weren’t really up to scratch. I don’t want to give anything away until the site is finished so stay tuned…
 Page 2 of 3 « 1  2  3 »

Tools I Use

Web development, custom web based business applications, CMS systems.
Custom CMS systems using the Umbraco open source CMS based on ASP.NET.
I use Wordpress for small to medium scale CMS systems.
Dreamweaver, Flash, Flex and Photoshop are my tools of choice for interface design.

Read more about my Skills »


The ramblings, thoughts and opinions expressed on this website are my own personal opinions and do not represent my employer's views or the views of any companies I have worked for in the past.

About me

Welcome to my portfolio website. My name is Marc Love and I am a Web Developer based in Glasgow, Scotland.

I have worked for some of the top digital agencies in Glasgow during my career and have recently started up my own digital agency, madebycrunch with my web designer colleague Paul Daly. Our aim is to design and develop cutting edge websites that make a significant difference to the success of your business.

We are currently working on a range of different projects that you will be able to see very soon on the new madebycrunch website.

This site contains a selection of the projects I have worked on throughout my career.

Feel free to visit my Blog or take a closer look at my Portfolio.

Also check out a new service I have launched (November 2014) providing premium Umbraco Themes and Starter Kits.

Get in touch!

If you are looking for freelance web developer or web designer services please get in touch via my contact page or the info below.

Tel: 0141 275 4848
Mob: 07795 417 980

St Georges Buildings
5 St Vincent Place
Glasgow, G1 2DH