<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Niels R. &#187; Programming</title>
	<atom:link href="http://lxit.be/category/programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://lxit.be</link>
	<description>... LXIT.be ...</description>
	<lastBuildDate>Tue, 17 Aug 2010 19:04:32 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.5</generator>
		<item>
		<title>NETMF and the SparkFun SerLCD</title>
		<link>http://lxit.be/technology/netmf-and-the-sparkfun-serlcd/</link>
		<comments>http://lxit.be/technology/netmf-and-the-sparkfun-serlcd/#comments</comments>
		<pubDate>Tue, 17 Aug 2010 19:03:23 +0000</pubDate>
		<dc:creator>Niels R.</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[.NET Micro Framework]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[GHI Electronics]]></category>
		<category><![CDATA[NETMF]]></category>
		<category><![CDATA[Serial Enabled LCD]]></category>
		<category><![CDATA[SparkFun Electronics]]></category>

		<guid isPermaLink="false">http://lxit.be/?p=134</guid>
		<description><![CDATA[Well&#8230; I&#8217;ve been spending some quality time with the .NET Micro Framework the last couple weeks. I&#8217;ve been always interested in electronics and the inner parts of devices. I even bought some Atmel AVR microcontrollers and a handful of components &#8230; <a href="http://lxit.be/technology/netmf-and-the-sparkfun-serlcd/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Well&#8230; I&#8217;ve been spending some quality time with the <a title=".NET Micro Framework Portal" href="http://www.netmf.com">.NET Micro Framework</a> the last couple weeks. I&#8217;ve been always interested in electronics and the inner parts of devices. I even bought some <a title="Atmel AVR Microcontrollers - Product page" href="http://www.atmel.com/products/avr/default.asp?family_id=607&amp;source=home">Atmel AVR microcontrollers</a> and a handful of components last year to get started with microcontrollers, but it didn&#8217;t work out (so many hobby projects, so less time&#8230;).</p>
<p>In May/June I discovered NETMF and I just had to try it. Embedded devices driven by C# code is just a dream come true.</p>
<p>So after some surfing I ordered a <a title="GH Electronics - Company website" href="http://www.ghielectronics.com/">GHI Electronics</a> <a title="EMX Development System - Product details" href="http://www.ghielectronics.com/product/129">EMX Development System</a> to get started. Since I&#8217;m not that good at time management (and it&#8217;s holiday season with lots of social obligations) I didn&#8217;t come as far as I hoped to be. BUT&#8230; I would like to share some piece of code, though.</p>
<p>While working on a secret project called &#8220;BeerGuard&#8221; I created a small class to use the <a title="SparkFun Electronics" href="http://www.sparkfun.com/">SparkFun</a> SerLCD (<a title="SparkFun Serial Enabled LCD 16x2" href="http://www.sparkfun.com/commerce/product_info.php?products_id=9394">16&#215;2</a> and <a title="SparkFun Serial Enabled LCD 20x4" href="http://www.sparkfun.com/commerce/product_info.php?products_id=9568">20&#215;4</a>) with NETMF. I&#8217;m probably not the only one who has written such a class, but I&#8217;ll dump it on the Internet anyway.</p>
<p>Be aware that this is a quick implementation to get me started real quick. Not everything is tested and there is probably a lot of code improvement possible. I hope this might be a starting point for some people. Please don&#8217;t start bashing my coding style and please&#8230; post improvements and corrections!</p>
<pre class="brush:csharp">using System;
using System.IO.Ports;

namespace LXIT.Hardware
{
    public sealed class SerLCD
    {
        public enum Direction { Left, Right }

        public enum DisplayType { C16L2, C16L4, C20L2, C20L4 }

        public enum Status { On, Off }

        private readonly SerialPort _serialPort;

        private readonly DisplayType _displayType;

        public SerLCD(string portName) : this(portName, DisplayType.C16L2)
        {}

        public SerLCD(string portName, DisplayType displayType)
        {
            // Defaults for SerialPort are the same as the settings for the LCD, but I'll set them explicitly
            _serialPort = new SerialPort(portName, 9600, Parity.None, 8, StopBits.One);

            _displayType = displayType;
        }

        public void ClearDisplay()
        {
            Write(new byte[] { 0xFE, 0x01 });
        }

        public void MoveCursor(Direction direction)
        {
            MoveCursor(direction, 1);
        }

        public void MoveCursor(Direction direction, int times)
        {
            byte command;

            switch (direction)
            {
                case Direction.Left: command = 0x10; break;
                case Direction.Right: command = 0x14; break;
                default: return;
            }

            for (int i = 0; i &lt; times; i++)
            {
                Write(new byte[] { 0xFE, command });
            }
        }

        public void Open()
        {
            if (!_serialPort.IsOpen)
                _serialPort.Open();
        }

        public void SaveAsSplashScreen()
        {
            Write(new byte[] { 0x7C, 0x0A });
        }

        public void Scroll(Direction direction)
        {
            Scroll(direction, 1);
        }

        public void Scroll(Direction direction, int times)
        {
            byte command;

            switch (direction)
            {
                case Direction.Left: command = 0x18; break;
                case Direction.Right: command = 0x1C; break;
                default: return;
            }

            for (int i = 0; i &lt; times; i++)
            {
                Write(new byte[] { 0xFE, command });
            }
        }

        public void SetBlinkingBoxCursor(Status status)
        {
            byte command;

            switch (status)
            {
                case Status.On: command = 0x0D; break;
                case Status.Off: command = 0x0C; break;
                default: return;
            }

            Write(new byte[] { 0xFE, command });
        }

        public void SetBrightness(int brightness)
        {
            if (brightness &lt; 128 || brightness &gt; 157)
                throw new ArgumentOutOfRangeException("brightness", "Value of brightness must be between 128-157.");

            Write(new byte[] { 0x7C, (byte)brightness });
        }

        public void SetCursorPosition(int line, int column)
        {
            if ((_displayType == DisplayType.C16L2 || _displayType == DisplayType.C16L4) &amp;&amp; (column &lt; 1 || column &gt; 16))
                throw new ArgumentOutOfRangeException("column", "Column number must be between 1 and 16.");

            if ((_displayType == DisplayType.C20L2 || _displayType == DisplayType.C20L4) &amp;&amp; (column &lt; 1 || column &gt; 20))
                throw new ArgumentOutOfRangeException("column", "Column number must be between 1 and 20.");

            if ((_displayType == DisplayType.C16L2 || _displayType == DisplayType.C20L2) &amp;&amp; (line &lt; 1 || line &gt; 2))
                throw new ArgumentOutOfRangeException("line", "Line number must be 1 or 2.");

            if ((_displayType == DisplayType.C16L4 || _displayType == DisplayType.C20L4) &amp;&amp; (line &lt; 1 || line &gt; 4))
                throw new ArgumentOutOfRangeException("line", "Line number must be between 1 and 4.");

            int[] startPos16 = { 0, 64, 16, 80 };
            int[] startPos20 = { 0, 64, 20, 84 };
            int charPos;

            switch (_displayType)
            {
                case DisplayType.C16L2:
                case DisplayType.C16L4:
                    charPos = startPos16[line - 1] + (column - 1);
                    break;
                case DisplayType.C20L2:
                case DisplayType.C20L4:
                    charPos = startPos20[line - 1] + (column - 1);
                    break;
                default:
                    return;
            }

            Write(new byte[] { 0xFE, (byte)(charPos + 0x80) });
        }

        public void SetDisplay(Status status)
        {
            byte command;

            switch (status)
            {
                case Status.On: command = 0x0C; break;
                case Status.Off: command = 0x08; break;
                default: return;
            }

            Write(new byte[] { 0xFE, command });
        }

        public void SetDisplayType(DisplayType displayType)
        {
            switch (displayType)
            {
                case DisplayType.C16L2:
                    Write(new byte[]{0x7C, 0x04}); // 16 characters
                    Write(new byte[]{0x7C, 0x06}); // 2 lines
                    break;
                case DisplayType.C16L4:
                    Write(new byte[]{0x7C, 0x04}); // 16 characters
                    Write(new byte[]{0x7C, 0x05}); // 4 lines
                    break;
                case DisplayType.C20L2:
                    Write(new byte[]{0x7C, 0x03}); // 20 characters
                    Write(new byte[]{0x7C, 0x06}); // 2 lines
                    break;
                case DisplayType.C20L4:
                    Write(new byte[]{0x7C, 0x03}); // 20 characters
                    Write(new byte[]{0x7C, 0x05}); // 4 lines
                    break;
            }
        }

        public void SetUnderlineCursor(Status status)
        {
            byte command;

            switch (status)
            {
                case Status.On: command = 0x0E; break;
                case Status.Off: command = 0x0C; break;
                default: return;
            }

            Write(new byte[] { 0xFE, command });
        }

        public void ToggleSplashScreen()
        {
            Write(new byte[] { 0x7C, 0x09 });
        }

        public void Write(byte buffer)
        {
            Write(new[] { buffer });
        }

        public void Write(byte[] buffer)
        {
            Open();

            _serialPort.Write(buffer, 0, buffer.Length);
        }

        public void Write(char character)
        {
            Write((byte)character);
        }

        public void Write(string text)
        {
            byte[] buffer = new byte[text.Length];

            for (int i = 0; i &lt; text.Length; i++)
            {
                buffer[i] = (byte)text[i];
            }

            Write(buffer);
        }
    }
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://lxit.be/technology/netmf-and-the-sparkfun-serlcd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Vici CoolStorage ported to MonoTouch</title>
		<link>http://lxit.be/technology/vici-coolstorage-ported-to-monotouch/</link>
		<comments>http://lxit.be/technology/vici-coolstorage-ported-to-monotouch/#comments</comments>
		<pubDate>Tue, 23 Feb 2010 10:35:21 +0000</pubDate>
		<dc:creator>Niels R.</dc:creator>
				<category><![CDATA[Apple/Mac & iPhone]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[MonoTouch]]></category>
		<category><![CDATA[ORM]]></category>
		<category><![CDATA[SQLite]]></category>
		<category><![CDATA[Vici CoolStorage]]></category>
		<category><![CDATA[Vici Project]]></category>

		<guid isPermaLink="false">http://lxit.be/?p=131</guid>
		<description><![CDATA[Philippe ported Vici CoolStorage to MonoTouch over the weekend. This makes Vici CoolStorage available for iPhone development using the MonoTouch framework. Due to the lack of reflection on MonoTouch class declarations are not abstract. Classes have to be declared as &#8230; <a href="http://lxit.be/technology/vici-coolstorage-ported-to-monotouch/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Philippe ported <a title="A fully typed Object Relations Mapper (ORM) for .NET" href="http://viciproject.com/coolstorage">Vici CoolStorage</a> to <a title="Develop for iPhone using C# and .NET" href="http://monotouch.net/">MonoTouch </a>over the weekend. This makes Vici CoolStorage available for iPhone development using the MonoTouch framework.</p>
<p>Due to the lack of reflection on MonoTouch class declarations are not abstract. Classes have to be declared as concrete classes with getters and setters.</p>
<p><a title="A software library that implements a self-contained, serverless, zero-configuration, transactional SQL database engine" href="http://www.sqlite.org/">SQLite</a> is the only supported relational database on iPhone, so Vici CoolStorage for MonoTouch only supports SQLite.</p>
<p>The port is still in beta, but is more or less functional. Input from beta testers is highly appreciated!</p>
<p>Check out the beta at the <a title="Vici CoolStorage for MonoTouch - ORM" href="http://viciproject.com/wiki/Projects/CoolStorage/MonoTouch">Vici CoolStorage webpage</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://lxit.be/technology/vici-coolstorage-ported-to-monotouch/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Vici Project support has moved to StackExchange</title>
		<link>http://lxit.be/programming/vici-project-support-has-moved-to-stackexchange/</link>
		<comments>http://lxit.be/programming/vici-project-support-has-moved-to-stackexchange/#comments</comments>
		<pubDate>Wed, 18 Nov 2009 16:39:03 +0000</pubDate>
		<dc:creator>Niels R.</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[The Web]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[support]]></category>
		<category><![CDATA[Vici Project]]></category>

		<guid isPermaLink="false">http://lxit.be/?p=93</guid>
		<description><![CDATA[We all love Stack Overflow, so when Joel Spolsky told the world that the platform would be made publicity available we move the Vici Project support to StackExchange. All questions regarding Vici MVC, Vici CoolStorage, Vici Parser, Vici WinService and &#8230; <a href="http://lxit.be/programming/vici-project-support-has-moved-to-stackexchange/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>We all love <a title="Stack Overflow" href="http://stackoverflow.com/">Stack Overflow</a>, so when <a title="Joel on Software" href="http://www.joelonsoftware.com/">Joel Spolsky</a> told the world that the platform would be made publicity available we move the <a title="A collection of free tools for building next-generation online applications for .NET." href="http://viciproject.com">Vici Project</a> support to StackExchange.</p>
<p>All questions regarding <a title="An open source ASP.NET MVC framework" href="http://viciproject.com/mvc">Vici MVC</a>, <a title="An open source object relation mapper (ORM) for .NET" href="http://viciproject.com/coolstorage">Vici CoolStorage</a>, <a title="A .NET library for late-bound expression parsing and template rendering." href="http://viciproject.com/parser">Vici Parser</a>, <a title="A lightweight .NET library for creating Windows services." href="http://viciproject.com/winservice">Vici WinService</a> and all other future Vici projects can be viewed and answered on <a title="Vici Project support pages" href="http://vici.stackexchange.com">http://vici.stackexchange.com</a>.</p>
<p>The old <a title="Vici Project support pages" href="http://support.viciproject.com">http://support.viciproject.com</a> URL will redirect you to the new support location.</p>
]]></content:encoded>
			<wfw:commentRss>http://lxit.be/programming/vici-project-support-has-moved-to-stackexchange/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iPhone development books</title>
		<link>http://lxit.be/programming/iphone-development-books/</link>
		<comments>http://lxit.be/programming/iphone-development-books/#comments</comments>
		<pubDate>Sun, 21 Jun 2009 15:36:43 +0000</pubDate>
		<dc:creator>Niels R.</dc:creator>
				<category><![CDATA[Apple/Mac & iPhone]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Object-C]]></category>

		<guid isPermaLink="false">http://lxit.be/?p=80</guid>
		<description><![CDATA[Just a list of books regarding iPhone development. It&#8217;s just for personal use. Please leave a comment with your experiences of a book (what do you like/dislike about one of the books) or when a book seems to be missing &#8230; <a href="http://lxit.be/programming/iphone-development-books/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Just a list of books regarding iPhone development. It&#8217;s just for personal use. Please leave a comment with your experiences of a book (what do you like/dislike about one of the books) or when a book seems to be missing from the list.</p>
<p><strong>Addison-Wesley Professional</strong></p>
<ul>
<li>Released:
<ol>
<li><a title="Addison-Wesley Professional - iPhone Developer’s Cookbook, The: Building Applications with the iPhone SDK [ISBN 978-0-321-55545-8]" href="http://www.informit.com/store/product.aspx?isbn=0321555457">iPhone Developer’s Cookbook, The: Building Applications with the iPhone SDK</a> by Erica Sadun (October 2008)</li>
</ol>
</li>
</ul>
<p><strong>Apress</strong></p>
<ul>
<li>Released:
<ol>
<li><a title="Apress - Beginning iPhone Development: Exploring the iPhone SDK [ISBN 978-1-4302-1626-1]" href="http://www.apress.com/book/view/9781430216261">Beginning iPhone Development: Exploring the iPhone SDK</a> by Dave Marke (November 2008)</li>
</ol>
</li>
<li>Not yet released:
<ol>
<li><a title="Apress - iPhone Games Projects [ISBN 978-1-4302-1968-2]" href="http://www.apress.com/book/view/9781430219682">iPhone Games Projects</a> by PJ Cabrera (June 2009)</li>
<li><a title="Apress - iPhone Cool Projects [ISBN 978-1-4302-2357-3]" href="http://www.apress.com/book/view/9781430223573">iPhone Cool Projects</a> by Wolfgang Ante (June 2009)</li>
<li><a title="Apress - iPhone User Interface Design Projects [ISBN 978-1-4302-2359-7]" href="http://www.apress.com/book/view/9781430223597">iPhone User Interface Design Projects</a> by Dave Marke (July 2009)</li>
<li><a title="Apress - Beginning iPhone 3 Development: Exploring the iPhone SDK [ISBN 978-1-4302-2459-4]" href="http://www.apress.com/book/view/9781430224594">Beginning iPhone 3 Development: Exploring the iPhone SDK</a> by Dave Marke (July 2009)</li>
<li><a title="Apress - iPhone SDK 3 Projects [ISBN 978-1-4302-2507-2]" href="http://www.apress.com/book/view/9781430225072">iPhone SDK 3 Projects</a> by Dave Marke (September 2009)</li>
<li><a title="Apress - More iPhone 3 Development: Tackling iPhone SDK 3 [ISBN 978-1-4302-2505-8]" href="http://www.apress.com/book/view/9781430225058">More iPhone 3 Development: Tackling iPhone SDK 3</a> by Dave Marke (November 2009)</li>
</ol>
</li>
</ul>
<p><strong>Manning Publications Co.</strong></p>
<ul>
<li>Released:
<ol>
<li><a title="Manning - iPhone in Action: Introduction to Web and SDK Development [ISBN 193398886X]" href="http://www.apress.com/book/view/9781430216261">iPhone in Action: Introduction to Web and SDK Development</a> by Christopher Allen &amp; Shannon Appelcline (December 2008) ~ <a title="iPhone in Action - Tutorials, classes, and other info on iPhone SDK programming." href="http://iphoneinaction.manning.com/">Website</a></li>
</ol>
</li>
</ul>
<p><strong>O&#8217;Reilly</strong></p>
<ul>
<li>Released:
<ol>
<li><a title="O'Reilly - iPhone Open Application Development, 2nd Edition [ISBN 9780596155193]" href="http://oreilly.com/catalog/9780596155193/">iPhone Open Application Development, 2nd Edition</a> by Jonathan Zdziarski (October 2008)</li>
<li><a title="O'Reilly - iPhone SDK Application Development, 1st Edition [ISBN 9780596154059]" href="http://oreilly.com/catalog/9780596154059/">iPhone SDK Application Development, 1st Edition</a> by Jonathan Zdziarski (January 2009)</li>
<li><a title="O'Reilly - iPhone Game Development: Rough Cuts Version, 1st Edition [ISBN 9780596805265]" href="http://oreilly.com/catalog/9780596805265/">iPhone Game Development: Rough Cuts Version, 1st Edition</a> by Joe Hogue &amp; Paul Zirkle (Rough Cuts Release; June 2009 / Print Book Release: November 2009)</li>
</ol>
</li>
<li>Not yet released:
<ol>
<li><a title="O'Reilly - Programming the iPhone User Experience, 1st Edition Programming the iPhone User Experience, 1st Edition [ISBN 9780596155469]" href="http://oreilly.com/catalog/9780596155469/">Programming the iPhone User Experience, 1st Edition</a> by Toby Boudreaux (August 2009)</li>
<li><a title="O'Reilly - Head First iPhone Development, 1st Edition [ISBN 9780596803544]" href="http://oreilly.com/catalog/9780596803544/">Head First iPhone Development, 1st Edition</a> by Dan Pilone &amp; Tracey Pilone</li>
<li><a title="O'Reilly - iPhone SDK Development, 1st Edition [ISBN 9781934356258]" href="http://oreilly.com/catalog/9781934356258/">iPhone SDK Development, 1st Edition</a> by Bill Dudney, Chris Adamson &amp; Marcel Molina</li>
</ol>
</li>
</ul>
<p><strong>Wrox</strong></p>
<ul>
<li>Released:
<ol>
<li><a title="Wrox - Professional iPhone and iPod touch Programming: Handling Touch Interactions and Events for Mobile Safari [ISBN 978-0-470-26022-7]" href="http://www.wrox.com/WileyCDA/WroxTitle/iPhone-and-iPod-Touch-Programming-Handling-Touch-Interactions-and-Events-for-Mobile-Safari.productCd-047026022X.html">Professional iPhone and iPod touch Programming: Handling Touch Interactions and Events for Mobile Safari</a> by Richard Wagner (October 2007) ~ Wrox Blox PDF</li>
<li><a title="Wrox - Professional iPhone and iPod touch Programming: Building Applications for Mobile Safari [ISBN 978-0-470-26022-7]" href="http://www.wrox.com/WileyCDA/WroxTitle/Professional-iPhone-and-iPod-touch-Programming-Building-Applications-for-Mobile-Safari.productCd-0470251557.html">Professional iPhone and iPod touch Programming: Building Applications for Mobile Safari</a> by Richard Wagner (January 2008)</li>
</ol>
</li>
</ul>
<p>Currently I&#8217;m reading &#8220;<em>iPhone in Action</em>&#8221; (Manning) and  I&#8217;ve had a look into &#8220;<em>Beginning iPhone Develoment</em>&#8221; (Apress) in the bookstore. &#8220;<em>iPhone in Action</em>&#8221; doesn&#8217;t seem to be a hands-on book like &#8220;Beginning iPhone Development&#8221;. I&#8217;m considering buying the PDF version of the latter, so I can switch between books/style while getting my hands dirty.</p>
<p>I&#8217;m looking out for the upcoming Apress books (&#8220;<em>iPhone Games Projects</em>&#8221; and &#8220;<em>More iPhone 3 Development</em>&#8220;) as they seems to cover my areas of interest.</p>
<p>Of course I&#8217;ve still a lot to read of the Apple documentation at the <a title="Apple Developer Connection - iPhone Dev Center" href="http://developer.apple.com/iphone/">iPhone Dev Center</a>.</p>
<p>Holidays are coming up. Lots of time to read or lots of time to spend outside? We&#8217;ll see what Belgian weather brings&#8230;</p>
<p>PS: I&#8217;ll update this post with more info, e.g. Objective-C development books. This is just a small wrap-up of some Googling about iPhone development books.</p>
]]></content:encoded>
			<wfw:commentRss>http://lxit.be/programming/iphone-development-books/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Improve website page loading with Page Speed</title>
		<link>http://lxit.be/programming/improve-website-page-loading-with-page-speed/</link>
		<comments>http://lxit.be/programming/improve-website-page-loading-with-page-speed/#comments</comments>
		<pubDate>Fri, 12 Jun 2009 10:17:37 +0000</pubDate>
		<dc:creator>Niels R.</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[The Web]]></category>
		<category><![CDATA[Add-on]]></category>
		<category><![CDATA[Firebug]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Mozilla Firefox]]></category>
		<category><![CDATA[Page Speed]]></category>

		<guid isPermaLink="false">http://lxit.be/?p=78</guid>
		<description><![CDATA[Thanks to a colleague I discovered Google&#8217;s Firefox add-on Page Speed. It helps you determine what you can do to improve the loading speed of you web pages. Page Speed needs to be used in combination with the well known &#8230; <a href="http://lxit.be/programming/improve-website-page-loading-with-page-speed/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Thanks to a colleague I discovered Google&#8217;s Firefox add-on <a title="Use Page Speed to evaluate the performance of your web pages and to get suggestions on how to improve them." href="http://code.google.com/speed/page-speed/">Page Speed</a>. It helps you determine what you can do to improve the loading speed of you web pages.</p>
<p>Page Speed needs to be used in combination with the well known <a title="Firebug integrates with Firefox to put a wealth of web development tools at your fingertips while you browse. You can edit, debug, and monitor CSS, HTML, and JavaScript live in any web page." href="http://http://getfirebug.com/">Firebug</a> add-on.</p>
]]></content:encoded>
			<wfw:commentRss>http://lxit.be/programming/improve-website-page-loading-with-page-speed/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>You want ASP.NET MVC? Choose Vici MVC!</title>
		<link>http://lxit.be/programming/you-want-aspnet-mvc-choose-vici-mvc/</link>
		<comments>http://lxit.be/programming/you-want-aspnet-mvc-choose-vici-mvc/#comments</comments>
		<pubDate>Sun, 31 May 2009 08:16:27 +0000</pubDate>
		<dc:creator>Niels R.</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[The Web]]></category>
		<category><![CDATA[.NET 2.0]]></category>
		<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[MVC]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[ORM]]></category>
		<category><![CDATA[Vici CoolStorage]]></category>
		<category><![CDATA[Vici MVC]]></category>
		<category><![CDATA[Vici Parser]]></category>
		<category><![CDATA[Vici Project]]></category>

		<guid isPermaLink="false">http://lxit.be/?p=77</guid>
		<description><![CDATA[Yesterday, Philippe Leybaert released Vici MVC 2.0. This full-blown MVC framework for building ASP.NET web applications without using WebForms is now part of the open-source Vici Project. Philippe describes Vici Project as follows: &#8220;The idea of the Vici Project is to provide &#8230; <a href="http://lxit.be/programming/you-want-aspnet-mvc-choose-vici-mvc/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Yesterday, Philippe Leybaert released Vici MVC 2.0. This full-blown MVC framework for building ASP.NET web applications without using WebForms is now part of the open-source <a title="Vici Project - Free open-source tools for building next-generation (online) applications for .NET." href="http://viciproject.com">Vici Project</a>.</p>
<p>Philippe describes Vici Project as follows: &#8220;The idea of the Vici Project is to provide .NET developers with a collection of lightweight libraries and frameworks, and at the same time get the community involved in the development and support of these libraries.&#8221;</p>
<p>The first sub-project of the Vici Project to be released is <a title="Vici MVC - An open-source MVC Web Application Framework for .NET 2.0 or higher." href="http://viciproject.com/wiki/projects/mvc/home" target="_blank">Vici MVC</a>, formerly known as ProMesh.NET. Later this week, 2 other projects will be released as well: <a title="Vici Parser - An open-source .NET library for late-bound expression parsing and template rendering." href="http://viciproject.com/wiki/projects/parser/home" target="_blank">Vici Parser</a> (formerly LazyParser.NET/SharpTemplate.NET) and <a title="Vici CoolStorage - An open-source fully typed Object Relational Mapping (ORM) library for .NET 2.0." href="http://viciproject.com/wiki/projects/coolstorage/home" target="_blank">Vici CoolStorage</a> (formerly CoolStorage.NET).</p>
<p>I personally use Promesh.NET/Vici.Mvc with Coolstorage.NET/Vici.CoolStorage for some months now and I really enjoy developing web applications using this powerful framework.<br />
After getting tired of using WebForms I&#8217;m happy that I now again have full control of my application! No more ViewState&#8217;s, no more &#8220;wanna-be-events&#8221;, &#8230;</p>
<p>Are you a .NET web developer? Get your ass over <a title="Vici Project - Free open-source tools for building next-generation (online) applications for .NET." href="http://viciproject.com/">there</a> and try out this wonderful products!</p>
]]></content:encoded>
			<wfw:commentRss>http://lxit.be/programming/you-want-aspnet-mvc-choose-vici-mvc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MonoDevelop 2.0 and Mono 2.4 officially released</title>
		<link>http://lxit.be/linux/monodevelop-20-and-mono-24-officially-released/</link>
		<comments>http://lxit.be/linux/monodevelop-20-and-mono-24-officially-released/#comments</comments>
		<pubDate>Wed, 01 Apr 2009 08:05:05 +0000</pubDate>
		<dc:creator>Niels R.</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[mono]]></category>
		<category><![CDATA[Mono 2.4]]></category>
		<category><![CDATA[Mono Project]]></category>

		<guid isPermaLink="false">http://lxit.be/?p=76</guid>
		<description><![CDATA[The Mono project has announced the official release of Mono 2.4 and MonoDevelop 2.0. The new version of MonoDevelop introduces support for a long-awaited integrated debugging tool. Full article at Ars Technica Release notes Wanna test it right away? Download &#8230; <a href="http://lxit.be/linux/monodevelop-20-and-mono-24-officially-released/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>The Mono project has announced the official release of Mono 2.4 and MonoDevelop 2.0. The new version of MonoDevelop introduces support for a long-awaited integrated debugging tool.</p>
<p><a title="Ars Technica -  MonoDevelop 2.0 and Mono 2.4 officially released" href="http://arstechnica.com/open-source/news/2009/03/monodevelop-20-and-mono-24-officially-released.ars">Full article at Ars Technica</a></p>
<p>Release notes</p>
<p>Wanna test it right away? Download VMWare images, LiveCD or packages <a title="Mono Project - Downloads" href="http://http://www.go-mono.com/mono-downloads/">at the Mono website</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://lxit.be/linux/monodevelop-20-and-mono-24-officially-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Internet Explorer 8 and ASP.NET MVC 1.0 released on MIX09</title>
		<link>http://lxit.be/programming/internet-explorer-8-and-aspnet-mvc-10-released-on-mix09/</link>
		<comments>http://lxit.be/programming/internet-explorer-8-and-aspnet-mvc-10-released-on-mix09/#comments</comments>
		<pubDate>Fri, 20 Mar 2009 08:16:16 +0000</pubDate>
		<dc:creator>Niels R.</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[The Web]]></category>
		<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[ASP.NET MVC]]></category>
		<category><![CDATA[CoolStorage.NET]]></category>
		<category><![CDATA[IE 8]]></category>
		<category><![CDATA[Microsoft Internet Explorer]]></category>
		<category><![CDATA[MVC]]></category>
		<category><![CDATA[ProMesh.NET]]></category>
		<category><![CDATA[Vici Project]]></category>

		<guid isPermaLink="false">http://lxit.be/?p=73</guid>
		<description><![CDATA[Well, well, well&#8230; Microsoft has released two new &#8220;things&#8221;&#8230; First, you can all enjoy the official 1.0 release of ASP.NET MVC by downloading it from the Microsoft Download Center. I must say that I&#8217;m not really thrilled about it, because &#8230; <a href="http://lxit.be/programming/internet-explorer-8-and-aspnet-mvc-10-released-on-mix09/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Well, well, well&#8230; Microsoft has released two new &#8220;things&#8221;&#8230;</p>
<p>First, you can all enjoy the official 1.0 release of ASP.NET MVC by downloading it from the <a title="Microsoft Download Center - ASP.NET MVC 1.0" href="http://www.microsoft.com/downloads/details.aspx?FamilyID=53289097-73ce-43bf-b6a6-35e00103cb4b&amp;displaylang=en">Microsoft Download Center</a>.</p>
<p>I must say that I&#8217;m not really thrilled about it, because I&#8217;m already enjoyng an excellent <abbr title="Model-View-Controller">MVC</abbr> framework for ASP.NET called <a title="ProMesh.NET, web application development done right!" href="http://www.promesh.net/">ProMesh.NET</a>. It&#8217;s lightweight, open source and a perfect match with the open source <abbr title="Object Relation Mapper">ORM</abbr> <a title="CoolStorage.NET -  a fully typed Object Relational Mapping library for .NET 2.0" href="http://www.codeplex.com/CoolStorage">CoolStorage.NET</a>. Both projects will become part of the <a title="Vici Project - a coordinated and well-supported collection of free tools for building next-generation online applications for .NET." href="http://www.viciproject.com/">Vici Project</a> collection of free tools.</p>
<p>Of course I&#8217;ll try out ASP.NET MVC, but I must say I expect it to be &#8220;too much, too heavy&#8221;. I like it to be no-nonsense and lightweight.</p>
<p>Second&#8230; The horror of Internet Explorer continues&#8230; Microsoft released the 8.0 version of their web browser. As a real opposer to Internet Explorer I will not install it to use as my daily web browser, but I need it to test my web applications. You want to download it and install it out of free will, please visit the <a title="Microsoft - Internet Explorer 8: Home page" href="http://www.microsoft.com/windows/internet-explorer/default.aspx">Internet Explorer homepage</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://lxit.be/programming/internet-explorer-8-and-aspnet-mvc-10-released-on-mix09/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GetHashCode() on a 32-bit vs a 64-bit platform</title>
		<link>http://lxit.be/programming/gethashcode-on-a-32-bit-vs-a-64-bit-platform/</link>
		<comments>http://lxit.be/programming/gethashcode-on-a-32-bit-vs-a-64-bit-platform/#comments</comments>
		<pubDate>Fri, 20 Feb 2009 12:40:05 +0000</pubDate>
		<dc:creator>Niels R.</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[.NET 2.0]]></category>
		<category><![CDATA[CorFlags.exe]]></category>
		<category><![CDATA[GetHashCode]]></category>

		<guid isPermaLink="false">http://lxit.be/?p=66</guid>
		<description><![CDATA[If you compile your .NET application with the standard &#8220;Any CPU&#8221; option, it will run as a 32-bit process on a 32-bit OS and as a 64-bit process on a 64-bis process. When you use GetHashCode() the generated hashes on &#8230; <a href="http://lxit.be/programming/gethashcode-on-a-32-bit-vs-a-64-bit-platform/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>If you compile your .NET application with the standard &#8220;Any CPU&#8221; option, it will run as a 32-bit process on a 32-bit OS and as a 64-bit process on a 64-bis process.</p>
<p>When you use GetHashCode() the generated hashes on the 32-bit platform will differ from the hashes on the 64-bit platform&#8230;</p>
<p>The solution is either to not use the GetHashCode() the way you do it, or if you can&#8217;t change the way your program works you can run it in 32-bit mode by setting the 32-bit flag in the executable&#8217;s headers using <em>CorFlags.exe</em>.</p>
<p>Set the 32-bit flag:<code lang="dos">CorFlags.exe YourApplication.exe /32BIT+</code></p>
<p>Remove the 32-bit flag:<code lang="dos">CorFlags.exe YourApplication.exe /32BIT-</code></p>
<p>More info about <em>CoreFlags.exe</em> on MSDN: <a title="MSDN Library - CorFlags Conversion Tool (CorFlags.exe)" href="http://msdn.microsoft.com/en-us/library/ms164699(VS.80).aspx">http://msdn.microsoft.com/en-us/library/ms164699(VS.80).aspx</a></p>
]]></content:encoded>
			<wfw:commentRss>http://lxit.be/programming/gethashcode-on-a-32-bit-vs-a-64-bit-platform/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>GetHashCode() in .NET 1.1 vs .NET 2.0</title>
		<link>http://lxit.be/uncategorized/gethashcode-in-net-11-vs-net-20/</link>
		<comments>http://lxit.be/uncategorized/gethashcode-in-net-11-vs-net-20/#comments</comments>
		<pubDate>Thu, 19 Feb 2009 12:42:15 +0000</pubDate>
		<dc:creator>Niels R.</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[.NET 1.1]]></category>
		<category><![CDATA[.NET 2.0]]></category>
		<category><![CDATA[GetHashCode]]></category>

		<guid isPermaLink="false">http://lxit.be/?p=64</guid>
		<description><![CDATA[notepadd When migrating GarageTV from .NET 1.1 to .NET 3.5 I ran in a &#8220;strange&#8221; problem. It seems that there is a SearchBarrel table containing the links between keywords and posts (and some other info like keyword weight etc), so &#8230; <a href="http://lxit.be/uncategorized/gethashcode-in-net-11-vs-net-20/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>notepadd</p>
<p>When migrating GarageTV from .NET 1.1 to .NET 3.5 I ran in a &#8220;strange&#8221; problem.</p>
<p>It seems that there is a SearchBarrel table containing the links between keywords and posts (and some other info like keyword weight etc), so when a search is made you simply do a select using this table.</p>
<p>But&#8230; the keyword is hashed using String.GetHashCode() and that&#8217;s stored in the DB. Not clever it seems, because the GetHashCode() in .NET 2.0+ differs from the .NET 1.1 version.</p>
<blockquote><p>Quote from <a title="MSDN Library - Object.GetHashCode Method" href="http://msdn.microsoft.com/en-us/library/system.object.gethashcode.aspx">MSDN</a>: <em>&#8220;<strong>Prior to the .NET Framework version 2.0</strong>, the hash code provider was based on the <strong>System.Collections.IHashCodeProvider</strong> interface. <strong>Starting with version 2.0</strong>, the hash code provider is based on the <strong>System.Collections.IEqualityComparer</strong> interface.&#8221;</em></p></blockquote>
<p>And for your information I&#8217;ve found an implementation of the GetHashCode() of the .NET 1.1 version, so you can use this method in .NET 2.0 projects.</p>
<p><code lang="csharp"><br />
Int32 HashString(String szStr)<br />
{<br />
ulong hash = 5381;</p>
<p>foreach (int ch in szStr)<br />
{<br />
hash = ((hash &lt;&lt; 5) + hash) ^ (ulong)ch;<br />
}</p>
<p>return (Int32)hash;<br />
}</code></p>
<p>So&#8230; enjoy.</p>
]]></content:encoded>
			<wfw:commentRss>http://lxit.be/uncategorized/gethashcode-in-net-11-vs-net-20/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

