<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Chris Gaskell's blog</title>
  <link rel="alternate" type="text/html" href="http://www.developerdotstar.com/community/blog/chrisgaskell"/>
  <link rel="self" type="application/atom+xml" href="http://www.developerdotstar.com/community/blog/119/atom/feed"/>
  <id>http://www.developerdotstar.com/community/blog/119/atom/feed</id>
  <updated>2007-04-26T07:57:24-07:00</updated>
  <entry>
    <title>Some Interesting Links</title>
    <link rel="alternate" type="text/html" href="http://www.developerdotstar.com/community/node/554" />
    <id>http://www.developerdotstar.com/community/node/554</id>
    <published>2006-08-21T01:23:58-07:00</published>
    <updated>2006-08-21T11:02:01-07:00</updated>
    <author>
      <name>Chris Gaskell</name>
    </author>
    <category term="Software Development" />
    <category term="Software Development Articles" />
    <category term="Career and Profession" />
    <category term="Human Factors (Peopleware)" />
    <category term="Security" />
    <category term="Software Design" />
    <category term="developer.* Links Blog" />
    <summary type="html"><![CDATA[<p>A friend (and former boss) has put together a list of books and links that he finds useful. There is some good stuff, thought I'd share it here.<br />
<a href="http://cazano7.spaces.live.com/" title="http://cazano7.spaces.live.com/">http://cazano7.spaces.live.com/</a></p>
    ]]></summary>
    <content type="html"><![CDATA[<p>A friend (and former boss) has put together a list of books and links that he finds useful. There is some good stuff, thought I'd share it here.</p>
<p><a href="http://cazano7.spaces.live.com/" title="http://cazano7.spaces.live.com/">http://cazano7.spaces.live.com/</a></p>
    ]]></content>
  </entry>
  <entry>
    <title>My MacBook, First Impressions</title>
    <link rel="alternate" type="text/html" href="http://www.developerdotstar.com/community/node/535" />
    <id>http://www.developerdotstar.com/community/node/535</id>
    <published>2006-07-28T05:37:14-07:00</published>
    <updated>2006-07-28T07:45:04-07:00</updated>
    <author>
      <name>Chris Gaskell</name>
    </author>
    <category term="Blog Post" />
    <category term="Apple and Macintosh" />
    <category term="Hardware (General)" />
    <summary type="html"><![CDATA[<p>Iâ€™ve been an owner of a MacBook for over a month now and here is my review.</p>
    ]]></summary>
    <content type="html"><![CDATA[<p>Iâ€™ve been an owner of a MacBook for over a month now and here is my review.</p>
<p><strong>HARDWARE &amp; DESIGN</strong></p>
<p>It would be difficult for anybody to say that since the first IPod, Apple hardware hasnâ€™t been some of the most beautiful &amp; elegant. The MacBook is no different with its rounded corners, slim design, wafer thin construction &amp; the much-needed illuminated Apple logo on the lid.</p>
<p><img src="http://www.developerdotstar.com/community/files/hardware.jpg" align="left">Still what put the MacBook in a league of its own in my eyes is the hardware it ships with standard. Everything from DVD burner, wireless, Bluetooth and built in web cam come as standard.<br />
Have a look at <a href="http://www.apple.com/uk/macbook/specs.html" title="http://www.apple.com/uk/macbook/specs.html">http://www.apple.com/uk/macbook/specs.html</a></p>
<p><strong>MAC OS X</strong></p>
<p><img src="http://www.developerdotstar.com/community/files/osX.jpg" align="right">Having nearly no exposure to the Apple operating system I picked up the fundamentals very quickly. The OS is clean, straightforward and uncluttered. It took a while to get used to one file menu for all and a single mouse button but now in some respects I prefer it.</p>
<p>I know another .NET developer who upon returning home at night prefers to use MacOS. I donâ€™t want to start the OS debate here, in my opinion in comes down simply to using something different. </p>
<p><strong>DUAL BOOTING</strong></p>
<p><img src="http://www.developerdotstar.com/community/files/bootcamp.gif" align="left">One of the main things that caught my eye is the ability to dual boot with Windows. I wanted something that I could take to show clients development websites and a machine I could use whilst on the train to code .NET. I have windows installed, it runs on itâ€™s own partition, looks after itself and works very well. To boot Windows I simply hold down the ALT key during boot and select Windows.</p>
<p><strong>PROCESSOR</strong><br />
2GHz Intel Core Duo</p>
<p><img src="http://www.developerdotstar.com/community/files/coreduo.gif" align="right">The dual-core Intel CPU is blisteringly fast. In spite of the fact that the 1024MB of RAM is being shared with the video card, this little laptop screams. For example Photo Booth is a little application that lets you use the built-in camera to take pictures of yourself and apply various warps, distortions, and special effects. Here is where you can really see the speed of this machine: it previews nine of the available special effects in near real time (I notice a quarter- to half-second lag between when you move and when all the previews show the move). Applications launch with amazing speed and the system itself boots really fast.</p>
<p><strong>SCREEN</strong><br />
13.4-inch Glossy</p>
<p><img src="http://www.developerdotstar.com/community/files/macbook.jpg" align="left">I was really sceptical about having a smaller, glossy screen after working with my 15-inch matte-finish IBM notebook for the last 2 years. What about glare? What about size? Well, glare has not been a problem indoors but outdoors under direct sunlight the screen is nearly unusable.</p>
<p>In terms of size I discovered that I'm not losing as much as I thought. The 13.4-inch screen has a 1280x800 resolution. The 15-inch screen on my notebook is 1280x854. By telling the dock to auto hide I reclaimed more than 54 pixels, so I have a little more real estate (pixel-wise) than before. Also, this screen is much crisper and brighter than the notebook screen.</p>
<p><strong>NIGGLES</strong></p>
<p>Along with the MacBook itself, I purchased a Mighty Mouse. The little scroll ball, which allows for vertical and horizontal scrolling, is one of those things that you immediately "get". It's a great innovation. However, the MacBook has its USB ports located halfway to the front of the left side of laptop. If you are right-handed, this means the mouse cable must go all the way around laptop, leaving you a little short on cord to be really comfortable. Either the mouse cable needs another 4 inches of length or Apple should place a USB plug where it would be more accessible. </p>
<p><img src="http://www.developerdotstar.com/community/files/remote.gif" align="right">Another minor complaint is that the MacBook has a Mini-DVI connector rather than VGA. That's okay, but they don't include a DVI-to-VGA cable, so you have to buy it separately for Â£10 if you want to connect to a projector or separate monitor. Also I would need a separate adapter to convert Mini-DVI to S-Video to plug into my TV. Not a big issue? Well the MacBook comes preinstalled with an application called Front Row, a media centre application, great but I canâ€™t plug it into my TV</p>
<p><strong>SUMMARY</strong></p>
<p><img src="http://www.developerdotstar.com/community/files/smile.jpg" align="left">The MacBook is a well-built, high-performance machine that's a sheer pleasure to use. It has a few minor design flaws, but is a great little machine. I think the 2.0 GHz white MacBook is the sweet spot in Apple's current line-up for features, performance, and price. Upgrade the RAM to 1GB to get the most from it. I'm looking forward to OS 10.6 that will most likely bring Windows applications to the Mac without the need for dual booting.</p>
    ]]></content>
  </entry>
  <entry>
    <title>Web 2.0 - As Seen from the Eyes of Chris Gaskell</title>
    <link rel="alternate" type="text/html" href="http://www.developerdotstar.com/community/node/534" />
    <id>http://www.developerdotstar.com/community/node/534</id>
    <published>2006-07-27T04:53:52-07:00</published>
    <updated>2006-07-28T07:44:44-07:00</updated>
    <author>
      <name>Chris Gaskell</name>
    </author>
    <category term="Software Development" />
    <category term="Human Factors (Peopleware)" />
    <category term="Internet and WWW" />
    <category term="Open Source Software" />
    <category term="Threading, Multicore, Concurrent Programming" />
    <category term="Usability, Interaction, and User Interface Design" />
    <category term="Web Design" />
    <category term="Web Development" />
    <summary type="html"><![CDATA[<p>My thoughts on Web 2.0. Let me know what you think...</p>
    ]]></summary>
    <content type="html"><![CDATA[<p>My thoughts on Web 2.0 Let me know what you think...</p>
<p><strong>WHY CHANGE?</strong><br />
We moved away from services hosted on a mainframe and accessed by remote dumb terminals years ago. Then we installed the client/server model. This led to applications running on our PCâ€™s, which without being connected to network services canâ€™t perform the simplest of tasks.</p>
<p>Using a notebook PC or Mac has many advantages. But what happens when you want to access your desktop tools from another location? And what happens if your notebook PC gets stolen?</p>
<p>Web 2.0 promises to change all of this. You store information on the network so it is secured, backed up and available wherever you are. It provides similar functionality and simulates a familiar user interface to that available on the desktop, but without the need for Windows or Mac OS - all you need is a standard web browser and an internet connection.</p>
<p><strong>WEB 2.0 DEFINED</strong><br />
Web 2.0 uses more advanced internet technologies. Itâ€™s the next step towards a more interactive environment delivered through a rich user interface inside the browser.</p>
<p>Web 2.0 is only a group name for collection of technologies and applications. Various technologies are being used for Web 2.0, although most of these are built upon existing technologies such as XML, Web Services and JavaScript.</p>
<p><strong>AJAX</strong><br />
One of the key technologies used in Web 2.0 is AJAX. Asynchronous JavaScript and XML is a web development technique for creating rich, interactive web applications. </p>
<p>The key theme with AJAX is to shift a great deal of processing to the clientâ€™s browser, exchanging data with the server behind the scenes, so that the entire web page does not have to be reloaded each time the user makes a change. This increases the page's interactivity, speed, and usability.</p>
<p><strong>REDEFINING THE WEB</strong><br />
Web 2.0 allows web developers to create true applications rather than functional Websites. Www2.writely.com is a great example. Rather than writing word documents through desktop applications you can write them with the same level of functionality, wherever you may be, without the need to install Word and pay licence fees. This is what users really need â€“ the ability to create documents, save them online, print from the web, and access it all from anywhere with a browser.</p>
<p>Interestingly Writely was purchased by Google this year who themselves have released Web 2.0 applications such as Google Maps.</p>
<p><strong>INTERNET REUNITED?</strong><br />
The richness of functionality in AJAX, web services and XML are starting to create true web applications that are being labelled as Web 2.0. Add RSS feeds to the mix and suddenly you have the ability to create applications that can retrieve information based on the userâ€™s actions and needs.</p>
<p>The Internet may become what it has long been marketed as: users stipulate what, how and when they receive information, users share information and users define their space and how it is used. Sites such as flickr, and pageflakes already do this and myspace is one of the most used sites on the Web.</p>
<p><strong>FINALLY</strong><br />
Depending on your point of view - Web 2.0 is coming, has been here for years or is simply a storm in a teacup. Whatever you think thereâ€™s no doubting that the users are now in control â€“ will your average punter accept new rich web interfaces? The truth is the Internet is the only where all this can be possible â€“ roll on Web 3.0!</p>
<p><strong>FANCY MORE?</strong><br />
<a href="http://www.oreillynet.com/pub/a/oreilly/tim/news/2005/09/30/what-is-web-20.htmlb">The defacto article</a> (thanks Phil).</p>
    ]]></content>
  </entry>
  <entry>
    <title>Using Data with ASP.Net - 10 of my &#039;Best Practices&#039;</title>
    <link rel="alternate" type="text/html" href="http://www.developerdotstar.com/community/node/531" />
    <id>http://www.developerdotstar.com/community/node/531</id>
    <published>2006-07-24T01:16:19-07:00</published>
    <updated>2006-07-26T07:13:49-07:00</updated>
    <author>
      <name>Chris Gaskell</name>
    </author>
    <category term=".NET" />
    <category term="Database Performance" />
    <category term="Databases General" />
    <category term="Process and Methodology" />
    <summary type="html"><![CDATA[<p>It can hardly be said that any serious programmer has had to deal with database programming at least some time in their careers. So it would be logical then to make sure your code to these underlying databases are as efficient as possible. Hopefully I will share some of the best practices I have learned in dealing with ADO.Net programming.</p>
    ]]></summary>
    <content type="html"><![CDATA[<p>It can hardly be said that any serious programmer has had to deal with database programming at least some time in their careers. So it would be logical then to make sure your code to these underlying databases are as efficient as possible. Hopefully I will share some of the best practices I have learned in dealing with ADO.Net programming. These techniques were learned from a variety of sources, many of them I cannot remember sorry but are public Internet sources. Hopefully you will find them equally as useful as I do.</p>
<p><strong>Best Practice #1</strong></p>
<blockquote><p>Always use built in .Net data providers.</p></blockquote>
<p>The built in .Net data providers allow you to take advantage of both the .Net framework and the full power of the database.</p>
<p><strong>Best Practice #2</strong></p>
<blockquote><p>Always use a config file to store your connection strings. Also it might be a good idea to encrypt these connection strings especially if stored in a dubious location.</p></blockquote>
<p>It is always best to store data that might change in a location outside of your application where you can easily update the connection strings. Also encrypting the connection strings is always a good idea from a security standpoint.</p>
<p><strong>Best Practice #3</strong></p>
<blockquote><p>Prefer to use the sorting methods on the SQL Server such as the ORDER BY, HAVING and GROUP BY statements.</p></blockquote>
<p>By performing the sorting on the server side as opposed to the client side you save time because the server can perform the work faster.</p>
<p><strong>Best Practice #4</strong></p>
<blockquote><p>You should always try to limit the number of rows in a resultset. This can be performed typically by using the TOP keyword or other similar methods.</p></blockquote>
<p>By limiting the amount of information you send through the wire you make the application seem faster.</p>
<p><strong>Best Practice #5</strong></p>
<blockquote><p>It is always best to use CommandBehavior.CloseConnection when you use the ExecuteReader method of a Command object.</p></blockquote>
<p>This allows for better connection pooling as the connections that are opened are returned quickly.</p>
<p><strong>Best Practice #6</strong></p>
<blockquote><p>It is always best to cancel before closing a DataReader object if you are finished reading any more rows.</p></blockquote>
<p>The close method of the DataReader class continues to read all remaining rows before it finally closes the object. This is a wasteful use of resources.</p>
<p><strong>Best Practice #7</strong></p>
<blockquote><p>It is always best to use a parameterized command (usually a stored procedure) over dynamic SQL queries.</p></blockquote>
<p>This will improve performance and reduce the chance SQL injection attack while also making your code much more easier to maintain.</p>
<p><strong>Best Practice #8</strong></p>
<blockquote><p>It is always best to implement some sort of resultset pagination when dealing with results of 50 or more rows.</p></blockquote>
<p>Although not an easy task in most cases using this technique you can increase performance on both your server database and your client application as less overhead and network traffic is taking place at any one time.</p>
<p><strong>Best Practice #9</strong></p>
<blockquote><p>It is usually best to implement a timestamp field against all rows â€“ I usually have â€˜creationdateâ€™ and â€˜lastupdateâ€™ fields.</p></blockquote>
<p>This will allow you to detect when the database has been updated, and makes it much easier to check your code is interacting with the data source correctly.</p>
<p><strong>Best Practice #10</strong></p>
<blockquote><p>Don't return data via ordinals e.g SELECT *</p></blockquote>
<p>Although a SELECT * may be the quickest way of coding it is certainly the slowest way of returning all the columns - and how often do you <i>actually</i> use all the columns? Specify the columns you are selecting.</p>
    ]]></content>
  </entry>
  <entry>
    <title>CSS Layout - The &#039;One True Layout&#039;</title>
    <link rel="alternate" type="text/html" href="http://www.developerdotstar.com/community/node/529" />
    <id>http://www.developerdotstar.com/community/node/529</id>
    <published>2006-07-20T16:33:00-07:00</published>
    <updated>2006-07-21T06:51:00-07:00</updated>
    <author>
      <name>Chris Gaskell</name>
    </author>
    <category term="Cascading Style Sheets (CSS)" />
    <category term="Web Design" />
    <category term="Web Development" />
    <summary type="html"><![CDATA[<p>I had recently been using Alex Robinson's 3-column CSS technique called "<a href="http://www.fu2k.org/alex/css/layouts/3Col_NN4_FMFM_C.mhtml" target="_blank">ordered columns, float-margin/float-margin</a>" for some website designs. But he has superceded that with the <a href="http://www.positioniseverything.net/articles/onetruelayout/" target="_blank">One True Layout</a>.</p>
    ]]></summary>
    <content type="html"><![CDATA[<p>I had recently been using Alex Robinson's 3-column CSS technique called "<a href="http://www.fu2k.org/alex/css/layouts/3Col_NN4_FMFM_C.mhtml" target="_blank">ordered columns, float-margin/float-margin</a>" for some website designs. </p>
<p><b>But</b> he has superceded that with the <a href="http://www.positioniseverything.net/articles/onetruelayout/" target="_blank">One True Layout</a>. OTL allows you to keep your content sections in a logical sequence, a bonus when making chnages to complex pages.</p>
<p><a href="http://www.positioniseverything.net/articles/onetruelayout/examples" target="_blank">Check out the examples</a> for an idea of what you can achieve. In particular, look at the Nested Rounded Corners example, something I'm sure will come in handy one day!</p>
    ]]></content>
  </entry>
  <entry>
    <title>Center Align a Main Content div in All Browsers</title>
    <link rel="alternate" type="text/html" href="http://www.developerdotstar.com/community/node/528" />
    <id>http://www.developerdotstar.com/community/node/528</id>
    <published>2006-07-20T15:32:41-07:00</published>
    <updated>2007-04-26T07:57:24-07:00</updated>
    <author>
      <name>Chris Gaskell</name>
    </author>
    <category term="Cascading Style Sheets (CSS)" />
    <category term="Web Design" />
    <category term="Web Development" />
    <summary type="html"><![CDATA[<p>Editor's note: after a friendly reader (see comment below) pointed out that this article was a pretty much word-for-word copy of another article, we have removed the text of the original article posted here and instead direct you to the article that was copied, "<a href="http://www.andybudd.com/archives/2004/02/css_crib_sheet_3_centering_a_div/index.php">CSS Crib sheet #3 - Centering a Div</a>," by Andy Budd.</p>
    ]]></summary>
    <content type="html"><![CDATA[<p>Editor's note: after a friendly reader (see comment below) pointed out that this article was a pretty much word-for-word copy of another article, we have removed the text of the original article posted here and instead direct you to the article that was copied, "<a href="http://www.andybudd.com/archives/2004/02/css_crib_sheet_3_centering_a_div/index.php">CSS Crib sheet #3 - Centering a Div</a>," by Andy Budd.</p>
<p>We apologize for this incident. Plagiarism is something we take seriously, and appreciate the opportunity to correct this issue on our site.</p>
<p>Sincerely,<br />
Daniel Read</p>
    ]]></content>
  </entry>
</feed>
