<?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>Tim Anderson's ITWriting &#187; database</title>
	<atom:link href="http://www.itwriting.com/blog/category/database/feed" rel="self" type="application/rss+xml" />
	<link>http://www.itwriting.com/blog</link>
	<description>Tech writing blog</description>
	<lastBuildDate>Mon, 15 Mar 2010 20:35:55 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>MySQL comes to Amazon&#8217;s cloud. Anyone for Quadruple Extra Large?</title>
		<link>http://www.itwriting.com/blog/1924-mysql-comes-to-amazons-cloud-anyone-for-quadruple-extra-large.html</link>
		<comments>http://www.itwriting.com/blog/1924-mysql-comes-to-amazons-cloud-anyone-for-quadruple-extra-large.html#comments</comments>
		<pubDate>Tue, 27 Oct 2009 09:35:03 +0000</pubDate>
		<dc:creator>tim</dc:creator>
				<category><![CDATA[amazon]]></category>
		<category><![CDATA[azure]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[sql]]></category>

		<guid isPermaLink="false">http://www.itwriting.com/blog/1924-mysql-comes-to-amazons-cloud-anyone-for-quadruple-extra-large.html</guid>
		<description><![CDATA[<p>Amazon has announced the Amazon Relational Database Service:</p>
<p>Amazon RDS gives you access to the full capabilities of a familiar MySQL database. This means the code, applications, and tools you already use today with your existing MySQL databases work seamlessly with Amazon RDS. Amazon RDS automatically patches the database software and backs up your database, storing <p><i>...continue reading</i> <a href="http://www.itwriting.com/blog/1924-mysql-comes-to-amazons-cloud-anyone-for-quadruple-extra-large.html">MySQL comes to Amazon&#8217;s cloud. Anyone for Quadruple Extra Large?</a></p>


Related posts:<ol><li><a href='http://www.itwriting.com/blog/577-amazon-elastic-compute-cloud-gets-persistent-storage.html' rel='bookmark' title='Permanent Link: Amazon Elastic Compute Cloud gets persistent storage'>Amazon Elastic Compute Cloud gets persistent storage</a></li>
<li><a href='http://www.itwriting.com/blog/1490-cloud-computing-survey-more-fog-than-cloud.html' rel='bookmark' title='Permanent Link: Cloud Computing survey: more fog than cloud'>Cloud Computing survey: more fog than cloud</a></li>
<li><a href='http://www.itwriting.com/blog/1966-pdc-day-one-windows-in-the-cloud.html' rel='bookmark' title='Permanent Link: PDC day one: Windows in the cloud'>PDC day one: Windows in the cloud</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Amazon has announced the <a href="http://aws.amazon.com/rds/?ref_=pe_12300_13473310">Amazon Relational Database Service</a>:</p>
<blockquote><p>Amazon RDS gives you access to the full capabilities of a familiar MySQL database. This means the code, applications, and tools you already use today with your existing MySQL databases work seamlessly with Amazon RDS. Amazon RDS automatically patches the database software and backs up your database, storing the backups for a user-defined retention period. You also benefit from the flexibility of being able to scale the compute resources or storage capacity associated with your relational database instance via a single API call. As with all Amazon Web Services, there are no up-front investments required, and you pay only for the resources you use.</p>
</blockquote>
<p>The cost starts at $0.11 per hour for a small database instance (1.7GB RAM, 1 virtual core, 64-bit), increasing in stages as more power is required. The engagingly-titled “Quadruple Extra Large DB Instance” offers 68GB RMA and 8 virtual cores, at $3.10 per hour.</p>
<p>In addition, you pay for database storage at $0.10 per GB-month, $0.10 per 1 million I/O requests, $.10 per GB transferred in, and $0.17 per GB transferred out.</p>
<p>That’s a worrying collection of charges, but the usual logic applies: if you need a hefty database server for a defined period, say to cover a special event, this will work out more cost-effective than installing your own servers.</p>
<p>You can also install MySQL or other database servers on general-purpose Amazon <a href="http://aws.amazon.com/ec2/">EC2</a> instances, but this pre-built solution looks attractive.</p>
<p>Microsoft started its cloud database initiative with a preview of SQL Server Data Services, offering a limited database API more like <a href="http://aws.amazon.com/simpledb/">Amazon SimpleDB</a>. Then Microsoft decided to offer <a href="http://www.microsoft.com/windowsazure/sqlazure/">full SQL Server</a> on its Azure cloud. However, Azure is still a Community Tech Preview, and during the interim period Amazon has come up with its own fully relational solution.</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:d9d8f1d3-3da9-4275-a09b-1dee5b1ea812" class="wlWriterEditableSmartContent">Technorati Tags: <a href="http://technorati.com/tags/mysql" rel="tag">mysql</a>,<a href="http://technorati.com/tags/amazon" rel="tag">amazon</a>,<a href="http://technorati.com/tags/microsoft" rel="tag">microsoft</a>,<a href="http://technorati.com/tags/azure" rel="tag">azure</a></div>


<p>Related posts:<ol><li><a href='http://www.itwriting.com/blog/577-amazon-elastic-compute-cloud-gets-persistent-storage.html' rel='bookmark' title='Permanent Link: Amazon Elastic Compute Cloud gets persistent storage'>Amazon Elastic Compute Cloud gets persistent storage</a></li>
<li><a href='http://www.itwriting.com/blog/1490-cloud-computing-survey-more-fog-than-cloud.html' rel='bookmark' title='Permanent Link: Cloud Computing survey: more fog than cloud'>Cloud Computing survey: more fog than cloud</a></li>
<li><a href='http://www.itwriting.com/blog/1966-pdc-day-one-windows-in-the-cloud.html' rel='bookmark' title='Permanent Link: PDC day one: Windows in the cloud'>PDC day one: Windows in the cloud</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.itwriting.com/blog/1924-mysql-comes-to-amazons-cloud-anyone-for-quadruple-extra-large.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Why the EU should not worry about Oracle and MySQL</title>
		<link>http://www.itwriting.com/blog/1763-why-the-eu-should-not-worry-about-oracle-and-mysql.html</link>
		<comments>http://www.itwriting.com/blog/1763-why-the-eu-should-not-worry-about-oracle-and-mysql.html#comments</comments>
		<pubDate>Fri, 04 Sep 2009 14:55:11 +0000</pubDate>
		<dc:creator>tim</dc:creator>
				<category><![CDATA[Sun]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[oracle]]></category>

		<guid isPermaLink="false">http://www.itwriting.com/blog/1763-why-the-eu-should-not-worry-about-oracle-and-mysql.html</guid>
		<description><![CDATA[<p>The European Commission is examining Oracle’s acquisition of Sun and has concerns about the implications for MySQL:</p>
<p>Competition Commissioner Neelie Kroes said: “The Commission has to examine very carefully the effects on competition in Europe when the world&#8217;s leading proprietary database company proposes to take over the world&#8217;s leading open source database company. In particular, the <p><i>...continue reading</i> <a href="http://www.itwriting.com/blog/1763-why-the-eu-should-not-worry-about-oracle-and-mysql.html">Why the EU should not worry about Oracle and MySQL</a></p>


Related posts:<ol><li><a href='http://www.itwriting.com/blog/599-schwartz-vs-mickos-on-mysql-and-open-source.html' rel='bookmark' title='Permanent Link: Schwartz vs Mickos on MySQL and open source'>Schwartz vs Mickos on MySQL and open source</a></li>
<li><a href='http://www.itwriting.com/blog/508-how-sun-will-profit-from-mysql.html' rel='bookmark' title='Permanent Link: How Sun will profit from MySQL'>How Sun will profit from MySQL</a></li>
<li><a href='http://www.itwriting.com/blog/478-sun-gets-a-database-manager-but-oracle-owns-its-innodb-engine.html' rel='bookmark' title='Permanent Link: Sun gets a database manager, but Oracle owns its InnoDB engine'>Sun gets a database manager, but Oracle owns its InnoDB engine</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>The European Commission is <a href="http://europa.eu/rapid/pressReleasesAction.do?reference=IP/09/1271&amp;format=HTML&amp;aged=0&amp;language=EN&amp;guiLanguage=en" target="_blank">examining Oracle’s acquisition of Sun</a> and has concerns about the implications for MySQL:</p>
<blockquote><p>Competition Commissioner Neelie Kroes said: “The Commission has to examine very carefully the effects on competition in Europe when the world&#8217;s leading proprietary database company proposes to take over the world&#8217;s leading open source database company. In particular, the Commission has an obligation to ensure that customers would not face reduced choice or higher prices as a result of this takeover. Databases are a key element of company IT systems. In the current economic context, all companies are looking for cost-effective IT solutions, and systems based on open-source software are increasingly emerging as viable alternatives to proprietary solutions. The Commission has to ensure that such alternatives would continue to be available”.</p>
</blockquote>
<p>The most remarkable thing about this investigation is that it exists. One of the supposed benefits of open source is that, come what may, your product cannot be abandoned at the whim of some commercial giant; you have the code, and as long as a viable community of users and developers exists, its future is in your hands. So why is the EU worried?</p>
<p>The issue I suppose is that while Oracle cannot remove code from the community, it would have it in its power to disrupt MySQL – in fact, that is happening already. It could refuse to invest in further development, and encourage customers with support agreements to move to the latest Oracle solution instead. I am not saying that is likely; I have no idea what Oracle plans, and it already owns <a href="http://www.innodb.com/" target="_blank">Innobase</a>, which supplies the most widely-used transactional engine for MySQL, without obvious adverse affects.</p>
<p>Still, it is important to think clearly about the case. I’ve just been talking to Simon Cattlin at <a href="http://www.ingres.com/" target="_blank">Ingres</a>, who is using the opportunity to mention that worried MySQL customers are making enquiries at his company. He also argues that the EU’s intervention proves the increasing importance of open source technology.</p>
<p>That latter point is true; but there is some doublethink going on here. There are two sides to MySQL. On one side it’s powering a zillion mostly non-critical web applications for free, while on the other it is a serious business contender covered by support contracts. It is all the free users that make it “the world’s leading open source database company”, not the relatively small number of commercial licensees; and it was Sun’s failure to shift users from one to the other that accounted (among other things) for its decline.</p>
<p>So which of these groups is the EU concerned about? If it’s the free users, I don’t think it should worry too much. The existing product works, the community will maintain it, and forks are already appearing, not least <a href="http://askmonty.org/wiki/index.php/Main_Page" target="_blank">MariaDB</a> from a company started by MySQL creator Monty Widenius. </p>
<p>On the other hand, if it is the Enterprise users, I don’t think the EU should worry either, because it is not a big enough deal to warrant anti-competitive concerns. Cattlin told me that Ingres actually had higher revenue that MySQL at the time of the Sun takeover.</p>
<p>It makes no sense to conflate the free and commercial users into one, and use the number of free users to justify action which mainly concerns the commercial users.</p>
<p>That said, it’s true that having an open source product owned and mainly developed by a commercial company is always somewhat uncomfortable. One of the reasons the <a href="http://www.apache.org" target="_blank">Apache</a> web server succeeds is because it belongs to an independent foundation. There is rarely a clean separation between what is commercial and what is open source though: the money has to come from somewhere, and entities like Apache and <a href="http://www.eclipse.org" target="_blank">Eclipse</a> survive on staff and funds contributed by profit-making companies.</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:ab6ab959-c762-44aa-a8f2-1713944b7f2c" class="wlWriterEditableSmartContent">Technorati Tags: <a href="http://technorati.com/tags/ingres" rel="tag">ingres</a>,<a href="http://technorati.com/tags/mysql" rel="tag">mysql</a>,<a href="http://technorati.com/tags/oracle" rel="tag">oracle</a>,<a href="http://technorati.com/tags/sun" rel="tag">sun</a>,<a href="http://technorati.com/tags/apache" rel="tag">apache</a>,<a href="http://technorati.com/tags/eclipse" rel="tag">eclipse</a></div>


<p>Related posts:<ol><li><a href='http://www.itwriting.com/blog/599-schwartz-vs-mickos-on-mysql-and-open-source.html' rel='bookmark' title='Permanent Link: Schwartz vs Mickos on MySQL and open source'>Schwartz vs Mickos on MySQL and open source</a></li>
<li><a href='http://www.itwriting.com/blog/508-how-sun-will-profit-from-mysql.html' rel='bookmark' title='Permanent Link: How Sun will profit from MySQL'>How Sun will profit from MySQL</a></li>
<li><a href='http://www.itwriting.com/blog/478-sun-gets-a-database-manager-but-oracle-owns-its-innodb-engine.html' rel='bookmark' title='Permanent Link: Sun gets a database manager, but Oracle owns its InnoDB engine'>Sun gets a database manager, but Oracle owns its InnoDB engine</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.itwriting.com/blog/1763-why-the-eu-should-not-worry-about-oracle-and-mysql.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SQLite C# port raises hopes for a Silverlight local database manager</title>
		<link>http://www.itwriting.com/blog/1674-sqlite-c-port-raises-hopes-for-a-silverlight-local-database-manager.html</link>
		<comments>http://www.itwriting.com/blog/1674-sqlite-c-port-raises-hopes-for-a-silverlight-local-database-manager.html#comments</comments>
		<pubDate>Mon, 03 Aug 2009 07:53:54 +0000</pubDate>
		<dc:creator>tim</dc:creator>
				<category><![CDATA[database]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[silverlight]]></category>
		<category><![CDATA[software development]]></category>
		<category><![CDATA[visual studio]]></category>

		<guid isPermaLink="false">http://www.itwriting.com/blog/1674-sqlite-c-port-raises-hopes-for-a-silverlight-local-database-manager.html</guid>
		<description><![CDATA[<p>Yesterday programmer Noah Hart announced a port of SQLite to C#:</p>
<p>I am pleased to announce that the C# port is done to the point where others can look at it.</p>

<p>Unfortunately the code was taken offline almost immediately afterwards, thanks to the intervention of the author of SQLite, D Richard Hipp:</p>
<p>Noah, you are welcomed, even encouraged, <p><i>...continue reading</i> <a href="http://www.itwriting.com/blog/1674-sqlite-c-port-raises-hopes-for-a-silverlight-local-database-manager.html">SQLite C# port raises hopes for a Silverlight local database manager</a></p>


Related posts:<ol><li><a href='http://www.itwriting.com/blog/1681-c-sqlite-now-published.html' rel='bookmark' title='Permanent Link: C#-SQLite now published'>C#-SQLite now published</a></li>
<li><a href='http://www.itwriting.com/blog/1695-proof-of-concept-c-sqlite-running-in-silverlight.html' rel='bookmark' title='Permanent Link: Proof of concept: C#-SQLite running in Silverlight'>Proof of concept: C#-SQLite running in Silverlight</a></li>
<li><a href='http://www.itwriting.com/blog/242-sqlite-will-be-everywhere.html' rel='bookmark' title='Permanent Link: SQLite will be everywhere'>SQLite will be everywhere</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Yesterday programmer Noah Hart <a href="http://www.mail-archive.com/sqlite-users@sqlite.org/msg44921.html">announced</a> a port of <a href="http://sqlite.org/">SQLite</a> to C#:</p>
<blockquote><p>I am pleased to announce that the C# port is done to the point where others can look at it.</p>
</blockquote>
<p>Unfortunately the code was taken offline almost immediately afterwards, thanks to the intervention of the author of SQLite, D Richard Hipp:</p>
<blockquote><p>Noah, you are welcomed, even encouraged, to take the source code to SQLite and translate it in any way you want and do whatever you want with it. But you need to make it abundantly clear to everyone on your site and in the comments of your source code that your code is <strong>not</strong> the original SQLite &#8230; SQLite is a registered trade mark. If I don&#8217;t defend the trademark, then I could lose it. So, I really do need to insist that you not use the name &quot;SQLite&quot; for your product. </p>
</blockquote>
<p>The reason given is that Dr Hipp does not want to receive support requests for the port, though the intervention is a little surprising since there are other 3rd party adaptions out there that do use the SQLite name, though these generally modify or wrap the original code rather than porting it completely. </p>
<p>Still, Hart has taken it in his stride and it looks as if the code may be back soon under the name sqlsharp – a <a href="http://code.google.com/p/sqlsharp/">Google code project</a> with that name has been created. I hope this is the name since I <a href="http://www.mail-archive.com/sqlite-users@sqlite.org/msg44944.html">suggested it</a>, though it is rather an obvious one and I might not have been the first.</p>
<p>Why the interest? First, it’s always interesting to compare languages. Currently, Hart says his executable compiles to 528kb vs 506kb for the native version, and performs <a href="http://www.nabble.com/Re%3A-ANN%3A--SQLite-3.6.16.C--p24769455.html">3-5 times more slowly</a> (results in rows per second):</p>
<table>
<tbody>
<tr>
<td>Test</td>
<td>SQLite3 C#</td>
<td>SQLite3</td>
</tr>
<tr>
<td>Inserts</td>
<td>300K</td>
<td>1300K</td>
</tr>
<tr>
<td>Selects</td>
<td>1500K</td>
<td>8450K</td>
</tr>
<tr>
<td>Updates</td>
<td>60K</td>
<td>300K</td>
</tr>
<tr>
<td>Deletes</td>
<td>250K</td>
<td>700K</td>
</tr>
</tbody>
</table>
<p>Although that may seem disappointing, SQLite is remarkably fast so even 5 times slower is still acceptable in many contexts; and there are no doubt many possibilities for optimisation.</p>
<p>What’s the point? Hart says it was a C# learning exercise, which is fair enough. Others are hopeful for a local database manager for Microsoft Silverlight, writing to isolated storage. Competitor <a href="http://www.adobe.com/products/air/">Adobe AIR</a> includes SQLite in the runtime, as does <a href="http://gears.google.com/">Google Gears</a>.</p>
<p>Silverlight may a stretch for Hart’s port. Silverlight does not allow platform invoke or code marked as unsafe; and while there are apparently only a few p/invoke calls I’m guessing there may be many unsafe sections since the original SQLite makes heavy use of pointers.*</p>
<p>Although Silverlight is an implementation of the .NET Framework, it does not include the System.Data namespace. It does include System.Linq.</p>
<p>There are a few other efforts at creating a local database manager for Silverlight, including <a href="http://www.mcobject.com/perst">McObject’s Perst</a>, db4o (<a href="http://developer.db4o.com/blogs/product_news/archive/2009/06/10/in-the-search-of-silver.aspx">work in progress</a>), and <a href="http://silverdb.codeplex.com/">Silverlight Database</a> which works by persisting XML.</p>
<p>*<strong>Update</strong>: the project has now been <a href="http://code.google.com/p/csharp-sqlite/">published as csharp-sqlite</a>, which is an excellent name; it looks as if Hipp relented to some extent. Now that I’ve seen the code I find I’m wrong about unsafe sections. In fact, I added C#-Sqlite to a Silverlight project and it failed to compile with a mere 53 errors, many of them related to file locking – possibly less necessary in isolated storage? A Silverlight port looks feasible. </p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:3abe022e-b390-4c56-ba7d-6ae37eab11f0" class="wlWriterEditableSmartContent">Technorati Tags: <a href="http://technorati.com/tags/silverlight" rel="tag">silverlight</a>,<a href="http://technorati.com/tags/sqlite" rel="tag">sqlite</a>,<a href="http://technorati.com/tags/sqlsharp" rel="tag">sqlsharp</a>,<a href="http://technorati.com/tags/database" rel="tag">database</a></div>


<p>Related posts:<ol><li><a href='http://www.itwriting.com/blog/1681-c-sqlite-now-published.html' rel='bookmark' title='Permanent Link: C#-SQLite now published'>C#-SQLite now published</a></li>
<li><a href='http://www.itwriting.com/blog/1695-proof-of-concept-c-sqlite-running-in-silverlight.html' rel='bookmark' title='Permanent Link: Proof of concept: C#-SQLite running in Silverlight'>Proof of concept: C#-SQLite running in Silverlight</a></li>
<li><a href='http://www.itwriting.com/blog/242-sqlite-will-be-everywhere.html' rel='bookmark' title='Permanent Link: SQLite will be everywhere'>SQLite will be everywhere</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.itwriting.com/blog/1674-sqlite-c-port-raises-hopes-for-a-silverlight-local-database-manager.html/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>The end of the Borland story: acquired by Micro Focus</title>
		<link>http://www.itwriting.com/blog/1413-the-end-of-the-borland-story-acquired-by-micro-focus.html</link>
		<comments>http://www.itwriting.com/blog/1413-the-end-of-the-borland-story-acquired-by-micro-focus.html#comments</comments>
		<pubDate>Wed, 06 May 2009 18:14:25 +0000</pubDate>
		<dc:creator>tim</dc:creator>
				<category><![CDATA[borland]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[delphi]]></category>

		<guid isPermaLink="false">http://www.itwriting.com/blog/1413-the-end-of-the-borland-story-acquired-by-micro-focus.html</guid>
		<description><![CDATA[<p>It is not unexpected, but still sad to see loss-making Borland acquired by Micro Focus for a knock-down price of $75m. Borland’s release says little beyond the financial details. Micro Focus, which is also acquiring Compuware’s ASQ (Automated Software Quality) tools (such as QADirector, DevPartner and Optimal Trace, I presume) says:</p>
<p>Acquiring Borland and the Compuware <p><i>...continue reading</i> <a href="http://www.itwriting.com/blog/1413-the-end-of-the-borland-story-acquired-by-micro-focus.html">The end of the Borland story: acquired by Micro Focus</a></p>


Related posts:<ol><li><a href='http://www.itwriting.com/blog/1418-the-compuware-tools-that-are-going-to-micro-focus.html' rel='bookmark' title='Permanent Link: The Compuware tools that are going to Micro Focus'>The Compuware tools that are going to Micro Focus</a></li>
<li><a href='http://www.itwriting.com/blog/49-borland-keeps-its-developer-tools-after-all.html' rel='bookmark' title='Permanent Link: Borland keeps its developer tools after all'>Borland keeps its developer tools after all</a></li>
<li><a href='http://www.itwriting.com/blog/124-codegear-borland-to-support-php-tools.html' rel='bookmark' title='Permanent Link: CodeGear (Borland) to support PHP tools'>CodeGear (Borland) to support PHP tools</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>It is not unexpected, but still sad to see loss-making Borland acquired by Micro Focus for a knock-down price of $75m. <a href="http://www.borland.com/us/company/news/press_releases/2009/05_06_09_borland_to_be_acquired_by_micro_focus.html" target="_blank">Borland’s release</a> says little beyond the financial details. Micro Focus, which is also <a href="http://investor.compuware.com/releasedetail.cfm?ReleaseID=381984" target="_blank">acquiring</a> Compuware’s ASQ (Automated Software Quality) <a href="http://www.compuware.com/solutions/3596_ENG_HTML.htm" target="_blank">tools</a> (such as QADirector, DevPartner and Optimal Trace, I presume) <a href="http://www.microfocus.com/AboutMicroFocus/pressroom/releases/pr20090506308750.asp" target="_blank">says</a>:</p>
<blockquote><p>Acquiring Borland and the Compuware Testing and ASQ Business will give Micro Focus a leading market position in the highly complementary Application Testing / ASQ market. This market is estimated to be worth c.US$2 billion a year and is logically adjacent to Micro Focus’ core application management and modernization business.&#160; The move into the ASQ market is consistent with Micro Focus’ stated strategy of extending in logically adjacent segments to expand its addressable market.</p>
</blockquote>
<p>Why sad? Well, if you were around in the eighties and nineties you will remember a bold company which came up with a series of excellent products: Turbo Pascal, Borland C/C++, Quattro Pro, Paradox, and of course the incomparable Windows development tool Delphi. The visual development model in Delphi was successfully transitioned to Java in the JBuilder product, which in its early versions used a Delphi-compiled IDE.</p>
<p>These developer-focused products live on, of course, mostly in the hands of <a href="http://www.embarcadero.com/" target="_blank">Embarcadero</a>. The Borland that has been acquired is what was left when, in my developer-centric opinion, the best parts had already left.</p>
<p>What went wrong at Borland? It is mostly the victim of changes in the industry, made worse today by the economic downturn. It was a tools company, and the tools market was hit by the double blow of excellent open-source competition on one side (Eclipse, GCC) and vendor-subsidised tools on the other (Visual Studio).</p>
<p>Still, there were some spectacular own goals along the way. The 1991 acquisition of Ashton-Tate, at the time the market leader in PC database managers, was one, mainly because dBASE IV was not very good and did nothing to help Borland transition to Windows; in any case, Borland already had a better product in the form of Paradox.</p>
<p>Talking of Paradox, Paradox for Windows was another disaster. Wonderful product, but mostly incompatible with its DOS predecessor, and probably a tad too complex as well. It also had to compete with Microsoft Access, which was both cheaper and part of the impregnable Microsoft Office suite.</p>
<p>The company made up for it with Delphi; but even that under-performed relative to its quality. Enterprises felt safer with Microsoft’s Visual Basic. JBuilder did well at first; but its market share diminished rapidly in the face of competition from Eclipse and NetBeans. In retrospect, Borland should have made its core Java IDE free much earlier, to build a community round it, though competing with free is never easy.</p>
<p>Since it was so hard making money out of compilers and IDEs, Borland changed tack in order to target Enterprise ALM (Application Lifecycle Management). It could have worked, but it wasn’t actually a great fit with the independent developers who formed a large part of its customer base, and who tended to ignore large, complex and expensive supplementary tools in favour of just getting on with coding.</p>
<p>The nadir was 1998 when Borland changed its name to Inprise, to reflect its Enterprise focus. “Many thought Borland had gone out of business”, <a href="http://en.wikipedia.org/wiki/Borland" target="_blank">says Wikipedia</a>. It was changed back to Borland in 2001.</p>
<p>Another mis-step was the way Borland (then Inprise) handled <a href="http://www.codegear.com/products/interbase" target="_blank">InterBase</a>, its client-server database. In 2000, with a burst of community enthusiasm, the product was made open source. A couple of years later, it changed its mind and continued to develop InterBase as a proprietary product; but by then <a href="http://www.firebirdsql.org/" target="_blank">FireBird</a> had been born, based on the open source code.</p>
<p>Thought for the day: Borland paid more for TogetherSoft in 2002 (around $185m, including $82.5m cash), than Micro Focus is paying now for Borland.</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:83649097-0c33-468d-8d57-08440c026529" class="wlWriterEditableSmartContent">Technorati Tags: <a href="http://technorati.com/tags/borland" rel="tag">borland</a>,<a href="http://technorati.com/tags/micro+focus" rel="tag">micro focus</a>,<a href="http://technorati.com/tags/dbase" rel="tag">dbase</a>,<a href="http://technorati.com/tags/jbuilder" rel="tag">jbuilder</a>,<a href="http://technorati.com/tags/togethersoft" rel="tag">togethersoft</a></div>


<p>Related posts:<ol><li><a href='http://www.itwriting.com/blog/1418-the-compuware-tools-that-are-going-to-micro-focus.html' rel='bookmark' title='Permanent Link: The Compuware tools that are going to Micro Focus'>The Compuware tools that are going to Micro Focus</a></li>
<li><a href='http://www.itwriting.com/blog/49-borland-keeps-its-developer-tools-after-all.html' rel='bookmark' title='Permanent Link: Borland keeps its developer tools after all'>Borland keeps its developer tools after all</a></li>
<li><a href='http://www.itwriting.com/blog/124-codegear-borland-to-support-php-tools.html' rel='bookmark' title='Permanent Link: CodeGear (Borland) to support PHP tools'>CodeGear (Borland) to support PHP tools</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.itwriting.com/blog/1413-the-end-of-the-borland-story-acquired-by-micro-focus.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>A Silverlight database application with image upload</title>
		<link>http://www.itwriting.com/blog/1374-a-silverlight-database-application-with-image-upload.html</link>
		<comments>http://www.itwriting.com/blog/1374-a-silverlight-database-application-with-image-upload.html#comments</comments>
		<pubDate>Sun, 26 Apr 2009 21:46:59 +0000</pubDate>
		<dc:creator>tim</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[silverlight]]></category>
		<category><![CDATA[software development]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[visual studio]]></category>
		<category><![CDATA[web authoring]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://www.itwriting.com/blog/?p=1374</guid>
		<description><![CDATA[<p>I’ve been amusing myself creating a simple online database application using Silverlight. I had this mostly working a while back, but needed to finish off some pieces in order to get it fully functional.</p>
<p></p>
<p>This is created using Silverlight 2.0 and demonstrates the following:</p>

A bound DataGrid (as you can see, work is still needed to get <p><i>...continue reading</i> <a href="http://www.itwriting.com/blog/1374-a-silverlight-database-application-with-image-upload.html">A Silverlight database application with image upload</a></p>


Related posts:<ol><li><a href='http://www.itwriting.com/blog/1883-silverlight-data-image-upload-example-code.html' rel='bookmark' title='Permanent Link: Silverlight data, image upload example code'>Silverlight data, image upload example code</a></li>
<li><a href='http://www.itwriting.com/blog/712-sample-code-for-a-very-very-simple-vb-database-application.html' rel='bookmark' title='Permanent Link: Sample code for a very very simple VB database application'>Sample code for a very very simple VB database application</a></li>
<li><a href='http://www.itwriting.com/blog/1674-sqlite-c-port-raises-hopes-for-a-silverlight-local-database-manager.html' rel='bookmark' title='Permanent Link: SQLite C# port raises hopes for a Silverlight local database manager'>SQLite C# port raises hopes for a Silverlight local database manager</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>I’ve been amusing myself creating a simple online database application using <a href="http://silverlight.net/default.aspx" target="_blank">Silverlight</a>. I had this mostly working a while back, but needed to finish off some pieces in order to get it fully functional.</p>
<p><img src="http://www.itwriting.com/images/silverlightdata.jpg" /></p>
<p>This is created using Silverlight 2.0 and demonstrates the following:</p>
<ul>
<li>A bound DataGrid (as you can see, work is still needed to get the dates formatted sensibly). </li>
<li>Integration with ASP.NET authentication. You have to log in to see the data, and you have to log in with admin rights to be able to update it. </li>
<li>Create,Retrieve,Update,Delete using ASP.NET web services. </li>
<li>Image upload using Silverlight and an ASP.NET handler. </li>
<li>Filter a DataGrid (idea taken from <a href="http://www.mostlydevelopers.com/mostlydevelopers/blog/post/2009/02/19/Silverlight-DataGrid-ItemsSource-Filter.aspx" target="_blank">here</a>). </li>
<li>Written in Visual Studio 2008, and hosted on this site, which runs Debian Linux, hence <a href="http://www.mono-project.com/Main_Page" target="_blank">Mono</a> and <a href="http://www.mysql.com/" target="_blank">MySQL</a>. Would you have known if I had not told you? </li>
</ul>
<p>You can try it <a href="http://www.itwriting.com/silverlightdata/" target="_blank">here</a>. I’ll post the code eventually, but it will be a couple of months as it links in with another article.</p>
<p>MVP Ken Cox <a href="http://silverlight.net/blogs/jesseliberty/archive/2008/10/19/silverlight-and-data.aspx#113546" target="_blank">notes</a> in a comment to Jesse Liberty’s blog:</p>
<blockquote><p>Hundreds of us are scouring the Internet for a realistic (but manageable and not over-engineered) sample of manipulating data (CRUD operations) in a Silverlight 2 application. There are promising pieces of the puzzle scattered all over the place. Unfortunately, after investing time in a sample, we discover it lacks a key element &#8211; like actually saving changed data back to the database.</p>
</blockquote>
<p>I can safely say that mine is not over-engineered, and that yes, it does write data.</p>
</p>
<div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:e5172167-ba67-4fd1-8180-d355a2217295" class="wlWriterEditableSmartContent">Technorati Tags: <a href="http://technorati.com/tags/silverlight" rel="tag">silverlight</a>,<a href="http://technorati.com/tags/database" rel="tag">database</a>,<a href="http://technorati.com/tags/mono" rel="tag">mono</a>,<a href="http://technorati.com/tags/mysql" rel="tag">mysql</a>,<a href="http://technorati.com/tags/asp.net" rel="tag">asp.net</a></div>


<p>Related posts:<ol><li><a href='http://www.itwriting.com/blog/1883-silverlight-data-image-upload-example-code.html' rel='bookmark' title='Permanent Link: Silverlight data, image upload example code'>Silverlight data, image upload example code</a></li>
<li><a href='http://www.itwriting.com/blog/712-sample-code-for-a-very-very-simple-vb-database-application.html' rel='bookmark' title='Permanent Link: Sample code for a very very simple VB database application'>Sample code for a very very simple VB database application</a></li>
<li><a href='http://www.itwriting.com/blog/1674-sqlite-c-port-raises-hopes-for-a-silverlight-local-database-manager.html' rel='bookmark' title='Permanent Link: SQLite C# port raises hopes for a Silverlight local database manager'>SQLite C# port raises hopes for a Silverlight local database manager</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.itwriting.com/blog/1374-a-silverlight-database-application-with-image-upload.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>SQLite developer argues for quick bug disclosure and fixes, despite egg on face</title>
		<link>http://www.itwriting.com/blog/1162-sqlite-developer-argues-for-quick-bug-disclosure-and-fixes-despite-egg-on-face.html</link>
		<comments>http://www.itwriting.com/blog/1162-sqlite-developer-argues-for-quick-bug-disclosure-and-fixes-despite-egg-on-face.html#comments</comments>
		<pubDate>Fri, 16 Jan 2009 15:30:34 +0000</pubDate>
		<dc:creator>tim</dc:creator>
				<category><![CDATA[database]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[software development]]></category>

		<guid isPermaLink="false">http://www.itwriting.com/blog/1162-sqlite-developer-argues-for-quick-bug-disclosure-and-fixes-despite-egg-on-face.html</guid>
		<description><![CDATA[<p>SQLite developer D Richard Hipp has posted to his mailing list to announce a third release in the space of a few days, to fix bugs discovered in version 3.6.10:</p>
<p>Some concern has been expressed that we are releasing too frequently. (Three releases in one week is a lot!) The concern is that this creates the <p><i>...continue reading</i> <a href="http://www.itwriting.com/blog/1162-sqlite-developer-argues-for-quick-bug-disclosure-and-fixes-despite-egg-on-face.html">SQLite developer argues for quick bug disclosure and fixes, despite egg on face</a></p>


Related posts:<ol><li><a href='http://www.itwriting.com/blog/1674-sqlite-c-port-raises-hopes-for-a-silverlight-local-database-manager.html' rel='bookmark' title='Permanent Link: SQLite C# port raises hopes for a Silverlight local database manager'>SQLite C# port raises hopes for a Silverlight local database manager</a></li>
<li><a href='http://www.itwriting.com/blog/1681-c-sqlite-now-published.html' rel='bookmark' title='Permanent Link: C#-SQLite now published'>C#-SQLite now published</a></li>
<li><a href='http://www.itwriting.com/blog/242-sqlite-will-be-everywhere.html' rel='bookmark' title='Permanent Link: SQLite will be everywhere'>SQLite will be everywhere</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.sqlite.org" target="_blank">SQLite</a> developer D Richard Hipp has <a href="http://article.gmane.org/gmane.comp.db.sqlite.general/43748" target="_blank">posted to his mailing list</a> to announce a third release in the space of a few days, to fix bugs discovered in version 3.6.10:</p>
<blockquote><p>Some concern has been expressed that we are releasing too frequently. (Three releases in one week is a lot!) The concern is that this creates the impression of volatility and unreliability. We have been told that we should delay releases in order to create the impression of stability. But the SQLite developers feel that truth is more important than perception, not the other way around. We think it is important to make the highest quality and most stable version of SQLite available to users at all times. This week has seen two important bugs being discovered shortly after a major release, and so we have issued two emergency patch releases after the regularly scheduled major release. This makes us look bad. This puts &quot;egg on our face.&quot; We do not like that. But, three releases also ensures that the best quality SQLite code base is available available to you at all times.</p>
</blockquote>
<p>He goes on to say that an extended beta period would be unlikely to reduce the risk of bugs found on release, because most bugs in SQLite are found by internal testing rather than by external users. He also argues against withholding releases until they “testing is finished”:</p>
<blockquote><p>The fallacy there is that we never finish testing. We are constantly writing new test cases for SQLite and thinking of new ways to stress and potentially break the code. This is a continuous, never-ending, and on-going process. All existing tests pass before each release. But we will always be writing new tests the day after a release, regardless of how long we delay that release. And sometimes those new tests will uncover new problems.</p>
</blockquote>
<p>Anyone who has ever developed an application will know that sinking feeling when problems are discovered in code that has been distributed. Thoroughly implemented unit testing, as in SQLite, improves quality greatly. When bugs are found though, full disclosure and prompt fixes are the best possible response, so I agree with Hipp’s general approach here.</p>
<div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:fdd9857c-5484-4826-92ee-31a23c5c51f0" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px">Technorati tags: <a href="http://technorati.com/tags/sqlite" rel="tag">sqlite</a>, <a href="http://technorati.com/tags/software+development" rel="tag">software development</a>, <a href="http://technorati.com/tags/testing" rel="tag">testing</a>, <a href="http://technorati.com/tags/database" rel="tag">database</a>, <a href="http://technorati.com/tags/open+source" rel="tag">open source</a></div>


<p>Related posts:<ol><li><a href='http://www.itwriting.com/blog/1674-sqlite-c-port-raises-hopes-for-a-silverlight-local-database-manager.html' rel='bookmark' title='Permanent Link: SQLite C# port raises hopes for a Silverlight local database manager'>SQLite C# port raises hopes for a Silverlight local database manager</a></li>
<li><a href='http://www.itwriting.com/blog/1681-c-sqlite-now-published.html' rel='bookmark' title='Permanent Link: C#-SQLite now published'>C#-SQLite now published</a></li>
<li><a href='http://www.itwriting.com/blog/242-sqlite-will-be-everywhere.html' rel='bookmark' title='Permanent Link: SQLite will be everywhere'>SQLite will be everywhere</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.itwriting.com/blog/1162-sqlite-developer-argues-for-quick-bug-disclosure-and-fixes-despite-egg-on-face.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>SQL Server 2008 is done</title>
		<link>http://www.itwriting.com/blog/812-sql-server-2008-is-done.html</link>
		<comments>http://www.itwriting.com/blog/812-sql-server-2008-is-done.html#comments</comments>
		<pubDate>Thu, 07 Aug 2008 13:41:15 +0000</pubDate>
		<dc:creator>tim</dc:creator>
				<category><![CDATA[database]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[software development]]></category>

		<guid isPermaLink="false">http://www.itwriting.com/blog/812-sql-server-2008-is-done.html</guid>
		<description><![CDATA[<p>Microsoft has announced that SQL Server 2008 is released to manufacturing – ie. the bits are done, even if you can’t buy it yet. MSDN subscribers can download it now.</p>
</p>
</p>
<p>This is the product that was “launched” back in February; it’s been a long delay but I get the impression that the SQL team likes to <p><i>...continue reading</i> <a href="http://www.itwriting.com/blog/812-sql-server-2008-is-done.html">SQL Server 2008 is done</a></p>


Related posts:<ol><li><a href='http://www.itwriting.com/blog/271-microsoft-sets-launch-day-for-visual-studio-2008-sql-server-2008-windows-server-2008.html' rel='bookmark' title='Permanent Link: Microsoft sets launch day for Visual Studio 2008, SQL Server 2008, Windows Server 2008'>Microsoft sets launch day for Visual Studio 2008, SQL Server 2008, Windows Server 2008</a></li>
<li><a href='http://www.itwriting.com/blog/390-sql-server-2008-will-miss-own-launch-party.html' rel='bookmark' title='Permanent Link: SQL Server 2008 will miss own launch party'>SQL Server 2008 will miss own launch party</a></li>
<li><a href='http://www.itwriting.com/blog/559-small-business-server-2008-no-isa-server-no-built-in-tape-backup.html' rel='bookmark' title='Permanent Link: Small Business Server 2008: no ISA Server, no built-in tape backup'>Small Business Server 2008: no ISA Server, no built-in tape backup</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Microsoft has announced that <a href="http://www.microsoft.com/presspass/press/2008/aug08/08-06SQLServer2008PR.mspx">SQL Server 2008 is released to manufacturing</a> – ie. the bits are done, even if you can’t buy it yet. MSDN subscribers can download it now.</p>
</p>
</p>
<p>This is the product that was “launched” back in February; it’s been a long delay but I get the impression that the SQL team likes to wait until its release really is ready.</p>
<p><a href="http://www.microsoft.com/sqlserver/2008/en/us/">SQL Server 2008</a> is more like a suite of products than a single product now. It has a large range of editions from Compact to Enterprise, and product areas like Analysis Services and Reporting Services are distinct from the core engine.</p>
<p>The pieces that interest me most are the spatial data types, sparse columns, FILESTREAM data type, and the various object-relational layers including LINQ, Entity Framework, ADO.NET Data Services, and the ongoing work with SQL Server Data Services (which is far from done yet).</p>
<p>DBAs will likely have a very different view of what is important, as will Business Intelligence specialists.</p>
<p>SQL Server has prospered by being cheaper than than the likes of Oracle and DB2, and by integrating smoothly with Windows and Active Directory. I wonder if it will feel pressure from even more cost-effective open source offerings like <a href="http://www.mysql.com/">MySQL</a>, as they become more Enterprise-ready?</p>
<div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:72f83271-0a57-4608-9d6a-f6d8cd91a5ea" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px">Technorati tags: <a href="http://technorati.com/tags/sql+server+2008" rel="tag">sql server 2008</a>, <a href="http://technorati.com/tags/microsoft" rel="tag">microsoft</a>, <a href="http://technorati.com/tags/mysql" rel="tag">mysql</a>, <a href="http://technorati.com/tags/oracle" rel="tag">oracle</a>, <a href="http://technorati.com/tags/db2" rel="tag">db2</a></div>


<p>Related posts:<ol><li><a href='http://www.itwriting.com/blog/271-microsoft-sets-launch-day-for-visual-studio-2008-sql-server-2008-windows-server-2008.html' rel='bookmark' title='Permanent Link: Microsoft sets launch day for Visual Studio 2008, SQL Server 2008, Windows Server 2008'>Microsoft sets launch day for Visual Studio 2008, SQL Server 2008, Windows Server 2008</a></li>
<li><a href='http://www.itwriting.com/blog/390-sql-server-2008-will-miss-own-launch-party.html' rel='bookmark' title='Permanent Link: SQL Server 2008 will miss own launch party'>SQL Server 2008 will miss own launch party</a></li>
<li><a href='http://www.itwriting.com/blog/559-small-business-server-2008-no-isa-server-no-built-in-tape-backup.html' rel='bookmark' title='Permanent Link: Small Business Server 2008: no ISA Server, no built-in tape backup'>Small Business Server 2008: no ISA Server, no built-in tape backup</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.itwriting.com/blog/812-sql-server-2008-is-done.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Where is your SQL Server CE Database?</title>
		<link>http://www.itwriting.com/blog/689-where-is-your-sql-server-ce-database.html</link>
		<comments>http://www.itwriting.com/blog/689-where-is-your-sql-server-ce-database.html#comments</comments>
		<pubDate>Fri, 20 Jun 2008 13:20:30 +0000</pubDate>
		<dc:creator>tim</dc:creator>
				<category><![CDATA[database]]></category>
		<category><![CDATA[software development]]></category>

		<guid isPermaLink="false">http://www.itwriting.com/blog/?p=689</guid>
		<description><![CDATA[<p>Maybe not where you think. Now, I admit I am three years late with this bug strange feature of Visual Studio but it wasted some of my time today so it is still worth reporting.</p>
<p>I’ve been writing about creating database applications in Visual Studio. Specifically, I was looking at what happens if you download Visual <p><i>...continue reading</i> <a href="http://www.itwriting.com/blog/689-where-is-your-sql-server-ce-database.html">Where is your SQL Server CE Database?</a></p>


Related posts:<ol><li><a href='http://www.itwriting.com/blog/451-amazon-simpledb-a-database-for-the-web.html' rel='bookmark' title='Permanent Link: Amazon SimpleDB: a database server for the internet'>Amazon SimpleDB: a database server for the internet</a></li>
<li><a href='http://www.itwriting.com/blog/712-sample-code-for-a-very-very-simple-vb-database-application.html' rel='bookmark' title='Permanent Link: Sample code for a very very simple VB database application'>Sample code for a very very simple VB database application</a></li>
<li><a href='http://www.itwriting.com/blog/630-winfs-reborn-sql-server-as-a-file-system.html' rel='bookmark' title='Permanent Link: WinFS reborn: SQL Server as a file system'>WinFS reborn: SQL Server as a file system</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Maybe not where you think. Now, I admit I am three years late with this <strike>bug</strike> strange feature of Visual Studio but it wasted some of my time today so it is still worth reporting.</p>
<p>I’ve been writing about creating database applications in Visual Studio. Specifically, I was looking at what happens if you download Visual Basic Express and take the quickest, easiest route to knocking together a database application.</p>
<p>The default local database engine these days is SQL Server Compact 3.5:</p>
<blockquote><p>When you create applications, the preferred local database is SQL Server Compact 3.5.</p>
</blockquote>
<p><a href="http://msdn.microsoft.com/en-us/library/aa983341.aspx">says MSDN</a>.</p>
<p>OK, so you add a new database to your project and accept various defaults. The wizard then asks you whether you would like to “copy the file to your project and modify the connection”?</p>
<p><img src="http://www.itwriting.com/images/vbdatadialog.gif" /> </p>
<p>Sounds reasonable, if you can figure out what it means. Default is Yes, so OK do it.</p>
<p>Mistake. Don’t do that. Not, at least, without reading and understanding <a href="http://msdn.microsoft.com/en-us/library/ms246989.aspx">this document</a>. But I digress. Next up, you are asked another question: </p>
<blockquote><p>Storing connection strings in your application configuration file eases maintenance and deployment … do you want to save the connection string to the application configuration file?</p>
</blockquote>
<p>It’s another option that sounds good. OK, do it.</p>
<p>Now you set up a little table or two, add some data-bound controls, and off you go. Run the app, enter some data, save it. Run the app again … and all your data has disappeared. Why?</p>
<p>Well, it has to be either that the updates are silently failing; or that the database file is getting overwritten. It’s the latter. It turns out that VB is treating your database like any other resource, and copying to bin/debug when you run the app. This is the copy you are connecting to, you update it, but next time you build and run it gets overwritten.</p>
<p>None of this is obvious, because when you look at the connection string in the application settings (which VB hides by default, sigh), it shows the database file in the root of your project folder. Click Test Connection, all is fine. The only warning sign is that the connection string looks like this:</p>
<blockquote><p>Data Source=|DataDirectory|\test.sdf</p>
</blockquote>
<p>So where is |DataDirectory| set? That’s not obvious either. <a href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=702378&amp;SiteID=1">Read here</a> for the answer. It’s an application property that is not visible anywhere, that gets set to different values depending on how you deploy the app. I can see why someone thought this was a smart idea; but the implementation is horrible. It gives you the illusion of having one database file, when in fact you have multiple copies (source, debug, release etc) overwriting one another, and during testing you are never editing the correct one.</p>
<p>Once you have worked this out you can fix it, of course. But here’s another problem. You are the single user of a database. You insert a record and save it, using all the generated data-bound stuff that Visual Studio provides. Works fine. Then you edit the record you just inserted, and save again. Boom. Concurrency exception. Why?</p>
<p>It is all do to with a limitation of SQL Server Compact 3.5. It can’t handle multiple SQL statements. This means that a feature of the ADO.NET TableAdapter, called <strong>Refresh the Data Table</strong> in the configuration wizard, is not available. This option kicks in when you have an identity column that auto-increments, which is by the easiest way to create a primary key. In this scenario, the actual value of the identity column is not known until after you make the insert, because it is generated by the database engine. Normally, the TableAdapter would retrieve it with a Select statement immediately after the Insert statement. However, with SQL Server Compact 3.5 that does not work. </p>
<p>The result is that saving a record works fine, but next time around the row has an incorrect primary key in the DataSet. No wonder you get a concurrency exception.</p>
<p>You can work around this in code, of course. But what surprises me is just how hard Microsoft has made all this for the kind of newbie programmer who might pick up VB Express. In fact, easy database programming in VB has marched backwards since Visual Basic 3 back in 1993.</p>
<p>By the way, I also dislike the way VB adds so much database gunk to your main form, again by default. What if you add another form to your app? What if you want to delete the first form? It all gets messy fast. </p>
<p>Look at <a href="http://www.rubyonrails.org/">Ruby on Rails</a>. It has simple database handling that works. OK, you are going to have to modify that code eventually; and I accept that database apps have an inherent complexity that no amount of wizards, O/R layers or even &quot;Convention over Configuration” can remove. I still think that simple, single table, single user apps should be, well, simple. Not in VB, unfortunately.</p>
<div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:9a0b553a-6a25-46d0-8b42-ae96f9c47748" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px">Technorati tags: <a href="http://technorati.com/tags/ado.net" rel="tag">ado.net</a>, <a href="http://technorati.com/tags/visual+basic" rel="tag">visual basic</a>, <a href="http://technorati.com/tags/sql+server+ce" rel="tag">sql server ce</a></div>


<p>Related posts:<ol><li><a href='http://www.itwriting.com/blog/451-amazon-simpledb-a-database-for-the-web.html' rel='bookmark' title='Permanent Link: Amazon SimpleDB: a database server for the internet'>Amazon SimpleDB: a database server for the internet</a></li>
<li><a href='http://www.itwriting.com/blog/712-sample-code-for-a-very-very-simple-vb-database-application.html' rel='bookmark' title='Permanent Link: Sample code for a very very simple VB database application'>Sample code for a very very simple VB database application</a></li>
<li><a href='http://www.itwriting.com/blog/630-winfs-reborn-sql-server-as-a-file-system.html' rel='bookmark' title='Permanent Link: WinFS reborn: SQL Server as a file system'>WinFS reborn: SQL Server as a file system</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.itwriting.com/blog/689-where-is-your-sql-server-ce-database.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Bet on Entity Framework, not LINQ to SQL</title>
		<link>http://www.itwriting.com/blog/668-bet-on-adonet-data-services-not-linq-to-sql.html</link>
		<comments>http://www.itwriting.com/blog/668-bet-on-adonet-data-services-not-linq-to-sql.html#comments</comments>
		<pubDate>Tue, 10 Jun 2008 07:09:55 +0000</pubDate>
		<dc:creator>tim</dc:creator>
				<category><![CDATA[database]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[web authoring]]></category>

		<guid isPermaLink="false">http://www.itwriting.com/blog/?p=668</guid>
		<description><![CDATA[<p>So says Roger Jennings in his post Is the ADO.NET team abandoning LINQ to SQL? His main points in favour of ADO.NET Data Services (formerly Astoria) Entity Framework:</p>

It is the focus of more energetic development 
It already has richer features 
It supports multiple database engines, not just SQL Server 

<p>As Andres Aguiar, software architect at <p><i>...continue reading</i> <a href="http://www.itwriting.com/blog/668-bet-on-adonet-data-services-not-linq-to-sql.html">Bet on Entity Framework, not LINQ to SQL</a></p>


Related posts:<ol><li><a href='http://www.itwriting.com/blog/391-why-entity-framework-when-we-have-linq-to-sql.html' rel='bookmark' title='Permanent Link: Why Entity Framework when we have LINQ to SQL?'>Why Entity Framework when we have LINQ to SQL?</a></li>
<li><a href='http://www.itwriting.com/blog/390-sql-server-2008-will-miss-own-launch-party.html' rel='bookmark' title='Permanent Link: SQL Server 2008 will miss own launch party'>SQL Server 2008 will miss own launch party</a></li>
<li><a href='http://www.itwriting.com/blog/698-microsoft-accused-of-reinventing-ejb-ouch.html' rel='bookmark' title='Permanent Link: Microsoft accused of reinventing EJB &ndash; ouch!'>Microsoft accused of reinventing EJB &ndash; ouch!</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>So says Roger Jennings in his post <a href="http://oakleafblog.blogspot.com/2008/05/is-adonet-team-abandoning-linq-to-sql.html" target="_blank">Is the ADO.NET team abandoning LINQ to SQL</a>? His main points in favour of <span style="text-decoration: line-through">ADO.NET Data Services (formerly Astoria</span><strike>)</strike> Entity Framework:</p>
<ul>
<li>It is the focus of more energetic development </li>
<li>It already has richer features </li>
<li>It supports multiple database engines, not just SQL Server </li>
</ul>
<p>As Andres Aguiar, software architect at <a href="http://www.infragistics.com" target="_blank">Infragistics</a>, notes in a comment, this has a lot to do with internal politics at Microsoft:</p>
<blockquote><p>The Data Programmability Team never owned LinQ to SQL, it was owned by the C# team. That&#8217;s why we have two O/R mappers, both teams wanted to ship theirs. The C# team looks to be thinking about functional programming now. The Data Programmability will always be thinking about data. That&#8217;s why the EF [Entity Framework] is the safe choice.</p>
</blockquote>
<p>Although LINQ to SQL is now (apparently) owned by the SQL Server team, it still doesn’t seem plausible or sensible that both will get equal attention. We also <a href="http://blogs.msdn.com/mattwar/archive/2008/05/04/mocks-nix-an-extensible-linq-to-sql-datacontext.aspx" target="_blank">learn from Matt Warren</a> that LINQ to SQL was deliberately tied to SQL Server only:</p>
<blockquote><p>LINQ to SQL was actually designed to be host to more types of back-ends than just SQL server. It had a provider model targeted for RTM, but was disabled before the release. Don’t ask me why. Be satisfied to know that is was not a technical reason.</p>
</blockquote>
<p>Note that this wasn’t necessarily a plot in favour of SQL Server world dominance; keeping the entire stack as a Microsoft stack no doubt makes support easier. That said, to me this is the big weakness of LINQ to SQL.</p>
<p>I was <a href="http://www.itwriting.com/blog/?p=393" target="_blank">impressed by Astoria</a> when I first saw it at the European Tech Ed in 2007. I am not surprised it is gaining ground.</p>
<div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:6e9e6c47-833c-4d97-8169-8edf58c6eb6e" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px">Technorati tags: <a href="http://technorati.com/tags/astoria" rel="tag">astoria</a>, <a href="http://technorati.com/tags/linq+to+sql" rel="tag">linq to sql</a>, <a href="http://technorati.com/tags/ado.net+data+services" rel="tag">ado.net data services</a>, <a href="http://technorati.com/tags/.net" rel="tag">.net</a>, <a href="http://technorati.com/tags/microsoft" rel="tag">microsoft</a>, <a href="http://technorati.com/tags/sql+server" rel="tag">sql server</a></div>


<p>Related posts:<ol><li><a href='http://www.itwriting.com/blog/391-why-entity-framework-when-we-have-linq-to-sql.html' rel='bookmark' title='Permanent Link: Why Entity Framework when we have LINQ to SQL?'>Why Entity Framework when we have LINQ to SQL?</a></li>
<li><a href='http://www.itwriting.com/blog/390-sql-server-2008-will-miss-own-launch-party.html' rel='bookmark' title='Permanent Link: SQL Server 2008 will miss own launch party'>SQL Server 2008 will miss own launch party</a></li>
<li><a href='http://www.itwriting.com/blog/698-microsoft-accused-of-reinventing-ejb-ouch.html' rel='bookmark' title='Permanent Link: Microsoft accused of reinventing EJB &ndash; ouch!'>Microsoft accused of reinventing EJB &ndash; ouch!</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.itwriting.com/blog/668-bet-on-adonet-data-services-not-linq-to-sql.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>WinFS reborn: SQL Server as a file system</title>
		<link>http://www.itwriting.com/blog/630-winfs-reborn-sql-server-as-a-file-system.html</link>
		<comments>http://www.itwriting.com/blog/630-winfs-reborn-sql-server-as-a-file-system.html#comments</comments>
		<pubDate>Fri, 16 May 2008 09:00:06 +0000</pubDate>
		<dc:creator>tim</dc:creator>
				<category><![CDATA[database]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[software development]]></category>
		<category><![CDATA[vista]]></category>
		<category><![CDATA[web authoring]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://www.itwriting.com/blog/?p=630</guid>
		<description><![CDATA[<p>Fascinating interview with Quentin Clark, who led the cancelled WinFS project at Microsoft. Jon Udell is the interviewer.</p>
<p>Clark talks about how technology from WinFS is now emerging as the Entity Framework in ADO.NET (part of .NET 3.5 SP1) and the FileStream column type in SQL Server 2008 &#8211; a connection I&#8217;d already made at the <p><i>...continue reading</i> <a href="http://www.itwriting.com/blog/630-winfs-reborn-sql-server-as-a-file-system.html">WinFS reborn: SQL Server as a file system</a></p>


Related posts:<ol><li><a href='http://www.itwriting.com/blog/394-tech-ed-reflections.html' rel='bookmark' title='Permanent Link: Tech Ed reflections'>Tech Ed reflections</a></li>
<li><a href='http://www.itwriting.com/blog/812-sql-server-2008-is-done.html' rel='bookmark' title='Permanent Link: SQL Server 2008 is done'>SQL Server 2008 is done</a></li>
<li><a href='http://www.itwriting.com/blog/271-microsoft-sets-launch-day-for-visual-studio-2008-sql-server-2008-windows-server-2008.html' rel='bookmark' title='Permanent Link: Microsoft sets launch day for Visual Studio 2008, SQL Server 2008, Windows Server 2008'>Microsoft sets launch day for Visual Studio 2008, SQL Server 2008, Windows Server 2008</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Fascinating <a href="http://perspectives.on10.net/blogs/jonudell/Where-is-WinFS-now/" target="_blank">interview with Quentin Clark</a>, who led the cancelled WinFS project at Microsoft. <a href="http://blog.jonudell.net/" target="_blank">Jon Udell</a> is the interviewer.</p>
<p>Clark talks about how technology from WinFS is now emerging as the Entity Framework in ADO.NET (part of .NET 3.5 SP1) and the FileStream column type in SQL Server 2008 &#8211; a <a href="http://www.itwriting.com/blog/?p=394" target="_blank">connection I&#8217;d already made</a> at the Barcelona TechEd last year. He also mentions the new HierarchyID column type that enables fast querying of paths, the concept of rows which contain other rows. He adds that a future version of SQL Server will support the Win32 API so that it can support a file system:</p>
<blockquote><p>In the next release we anticipate putting those two things together, the filesystem piece and the hierarchical ID piece, into a supported namespace. So you&#8217;ll be able to type //machinename/sharename, up pops an Explorer window, drag and drop a file into it, go back to the database, type SELECT *, and suddenly a record appears.</p>
</blockquote>
<p>Put that together with the work Microsoft is doing on synchronization, and you get offline capability too &#8211; something more robust than <a href="http://windowshelp.microsoft.com/Windows/en-US/Help/93a550df-34cd-4497-85d0-8732602f59591033.mspx" target="_blank">offline files in Vista</a>. Clark says SharePoint will also benefit from SQL Server&#8217;s file system features.</p>
<p>Note that Live Mesh does some of this too. I guess SQL Server is there in the Live Mesh back end, but it strikes me Microsoft is at risk of developing too many ways to do the same thing.</p>
<p>The piece of WinFS that shows no sign of returning is the shared data platform, which was meant to enable applications to share data:</p>
<blockquote><p>&#8230; all that stuff is gone. The schemas, and a layer that we internally referred to as base, which was about the enforcement of the schemas, all that stuff we&#8217;ve put on the shelf. Because we didn&#8217;t need it.</p>
</blockquote>
<div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:0d7978c2-9992-491e-b9e4-88a13231f28b" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px">Technorati tags: <a href="http://technorati.com/tags/winfs" rel="tag">winfs</a>, <a href="http://technorati.com/tags/sql%20server%202008" rel="tag">sql server 2008</a>, <a href="http://technorati.com/tags/ado.net" rel="tag">ado.net</a>, <a href="http://technorati.com/tags/entity%20framework" rel="tag">entity framework</a></div>


<p>Related posts:<ol><li><a href='http://www.itwriting.com/blog/394-tech-ed-reflections.html' rel='bookmark' title='Permanent Link: Tech Ed reflections'>Tech Ed reflections</a></li>
<li><a href='http://www.itwriting.com/blog/812-sql-server-2008-is-done.html' rel='bookmark' title='Permanent Link: SQL Server 2008 is done'>SQL Server 2008 is done</a></li>
<li><a href='http://www.itwriting.com/blog/271-microsoft-sets-launch-day-for-visual-studio-2008-sql-server-2008-windows-server-2008.html' rel='bookmark' title='Permanent Link: Microsoft sets launch day for Visual Studio 2008, SQL Server 2008, Windows Server 2008'>Microsoft sets launch day for Visual Studio 2008, SQL Server 2008, Windows Server 2008</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.itwriting.com/blog/630-winfs-reborn-sql-server-as-a-file-system.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
