<?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>Michel Billard &#187; Projects</title>
	<atom:link href="http://www.mbillard.com/category/projects/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.mbillard.com</link>
	<description>News and information about me, Michel Billard. I'm a Web developer with a formation in software engineering.</description>
	<lastBuildDate>Wed, 19 Oct 2011 18:34:35 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.1</generator>
		<item>
		<title>Introducing CSharpSharp</title>
		<link>http://www.mbillard.com/172/introducing-csharpsharp/</link>
		<comments>http://www.mbillard.com/172/introducing-csharpsharp/#comments</comments>
		<pubDate>Sun, 10 Apr 2011 20:46:17 +0000</pubDate>
		<dc:creator>Michel Billard</dc:creator>
				<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://www.mbillard.com/?p=172</guid>
		<description><![CDATA[I have just released a new project of mine called CSharpSharp. It&#8217;s a collection of classes and extension methods that aim to improve the code usability of the C# language. Ever since C# 3.0 was released, I’ve been thinking about the possibilities opened by the extension methods. Extension methods allow developers to extend existing classes [...]]]></description>
			<content:encoded><![CDATA[<p>I have just released a new project of mine called CSharpSharp. It&#8217;s a collection of classes and extension methods that aim to improve the code usability of the C# language.</p>
<blockquote><p>Ever since C# 3.0 was released, I’ve been thinking about the  possibilities opened by the extension methods. Extension methods allow  developers to extend existing classes by providing them with additional  methods. The beauty of this is that we can now create beautiful code  APIs on existing classes without compromising its internal design.</p></blockquote>
<p>You can learn more about the project by reading <a title="CSharpSharp introduction post" href="http://www.crossbrowser.net/504/introducing-csharpsharp/">my post over at crossbrowser</a> or by heading to <a title="CSharpSharp project homepage" href="http://code.google.com/p/csharpsharp/">its homepage hosted on Google Code</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mbillard.com/172/introducing-csharpsharp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My undergraduate thesis (PFE)</title>
		<link>http://www.mbillard.com/80/my-undergraduate-thesis-pfe/</link>
		<comments>http://www.mbillard.com/80/my-undergraduate-thesis-pfe/#comments</comments>
		<pubDate>Wed, 28 Jan 2009 19:02:33 +0000</pubDate>
		<dc:creator>Michel Billard</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[PFE]]></category>
		<category><![CDATA[Polytechnique]]></category>

		<guid isPermaLink="false">http://www.mbillard.com/?p=80</guid>
		<description><![CDATA[During the final year of the software engineering degree at the Polytechnique, students have to undertake a major project which counts for one or two classes (3 to 6 credits). That project can be done alone, with someone else or in a small team. By choosing to work with a small team, you&#8217;ll get a [...]]]></description>
			<content:encoded><![CDATA[<p>During the final year of the software engineering degree at the <a title="Polytechnique de Montréal" href="http://www.polymtl.ca/" target="_blank">Polytechnique</a>, students have to undertake a major project which counts for one or two classes (3 to 6 credits). That project can be done alone, with someone else or in a small team. By choosing to work with a small team, you&#8217;ll get a good real-work experience by working closely with a company to do one of their research-and-development projects. If you do it alone or with a friend, you get to do any project you want, as long as your supervisor approves it.</p>
<p>I had an idea for a project that would allow me to learn quite a few things, so I decided to do the project alone (there was not enough in it for more than one person).</p>
<h3>The project</h3>
<h4>Description and Goals</h4>
<p>I decided to build a Web application to improve my Web development skills. Mostly, I wanted to learn how to use Ajax and to use the object-oriented design philosophy in a Web development project. I was also using <a title="phpMyAdmin" href="http://www.phpmyadmin.net/home_page/index.php" target="_blank">phpMyAdmin</a> regularly for my projects at the time and I always felt it had too many features and options. I was only using a tiny portion of the tool and felt a simplified tool could be useful for users like me who didn&#8217;t need everything. I also wanted to add some &#8220;on-the-spot&#8221; editing of the values in the tables as is possible with desktop applications like <a title="SQL Server Management Studio Express" href="http://www.microsoft.com/downloads/details.aspx?FamilyId=C243A5AE-4BD1-4E3D-94B8-5A0F62BF7796&amp;displaylang=en" target="_blank">SQL Server Management Studio</a>.</p>
<p>So I started working on my Ajax-powered online database management system (DBMS).</p>
<h4>Requirements and Specifications</h4>
<p>The first step was to determine what were the requirements (which I was fixing myself) and which tools at my disposal would help me fulfill those requirements.</p>
<p>The requirements were:</p>
<ul>
<li>Object-oriented design</li>
<li>Ajax (no postbacks)</li>
<li>User-friendly</li>
</ul>
<p>And the tools were:</p>
<ul>
<li>PHP 5+ for its OO support</li>
<li>JavaScript</li>
<li>CSS for the styling</li>
<li><a title="xampp for windows" href="http://www.apachefriends.org/en/xampp-windows.html" target="_blank">XAMPP Lite</a> for testing</li>
</ul>
<h4>Features</h4>
<p>I then determined what features I would put in my first iteration of the application. My goal was not to have a full-featured product ready by the time the project ended, it was more of a proof-of-concept to show that it was feasible to create a simple online DBMS.</p>
<p>Here&#8217;s a list of the features that made the cut for the first iteration:</p>
<ul>
<li>Creation and deletion of databases</li>
<li>Creation, modification and deletion of tables within a database
<ul>
<li>Addition, modification and deletion of fields for the table (field name, type, default value, auto increment, &#8230;)</li>
</ul>
</li>
<li>Insertion, edition and deletion of rows in the tables</li>
<li>Query editor to execute written queries on the data</li>
<li>User-friendly navigation</li>
</ul>
<h4>Implementation</h4>
<p>I will leave the details of the implementation for a future post, but I managed to implement most of the features while respecting my requirements and specifications. The only missing feature from the list above was the table modification feature.</p>
<h4>Conclusion</h4>
<p>To me, this project was a tremendous success, I managed to do almost everything I had planned and at the end I had a mostly usable online DBMS. It had a few bugs and was missing some critical features, but I learned so much from it. It also helped me get my current job at Hint Innovation since the development philosophy I used for this project was really similar to the way we work at Hint.</p>
<p>Indeed, the way I designed my classes and objects was very similar to the way <a title="Domain-driven design" href="http://en.wikipedia.org/wiki/Domain-driven_design" target="_blank">Domain-driven design</a> (DDD) approaches design. At Hint Innovation, we embrace the DDD philosophy and I only have good words for it. While doing my undergraduate thesis I didn&#8217;t know that my approach to OO design was so different, but since I&#8217;ve started working at Hint, I&#8217;ve seen the similarities between my approach and the Domain-driven design philosophy.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mbillard.com/80/my-undergraduate-thesis-pfe/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

