<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
   <channel>
      <title>Gilles&apos; PhD</title>
      <link>http://www.dubochet.ch/gilles/blogs/phd/</link>
      <description></description>
      <language>en</language>
      <copyright>Copyright 2006</copyright>
      <lastBuildDate>Thu, 07 Jul 2005 10:50:28 +0100</lastBuildDate>
      <generator>http://www.sixapart.com/movabletype/?v=3.2b3</generator>
      <docs>http://blogs.law.harvard.edu/tech/rss</docs> 

            <item>
         <title>DBC Mark 1</title>
         <description><![CDATA[<p>ScalaDBC Mark 1 is now finished. I have added it to the webapp CVS server. It is tested, but not very thoroughly. S&eacute;bastien N. will hopefully start testing it in a real-life application as soon as he comes back from vacation. Please, read the extended entry for some comments about why a Mark 2 version will be needed.</p>]]></description>
         <link>http://www.dubochet.ch/gilles/blogs/phd/2005/07/07/dbc_mark_1.html</link>
         <guid>http://www.dubochet.ch/gilles/blogs/phd/2005/07/07/dbc_mark_1.html</guid>
         <category>Status</category>
         <pubDate>Thu, 07 Jul 2005 10:50:28 +0100</pubDate>
      </item>
            <item>
         <title>ScalaDBC, ScalaDALL and al.</title>
         <description><![CDATA[<p>This blog has been a little forsaken. But with this heat-weave over Europe, it is the right time to bring it back to life (all right, that isn't a reason). So here is my current status:</p>

<p>ScalaDBC, the generic database library for Scala is more or less working. Well, actually it is working as far as I can tell, but I haven't put it through any serious testing (special cases etc.). There are two things that need to be finished though:<ol><li>Automatic type conversion of database types to native Scala types using views. Bug #449 is a problem here, but I can't quite understand how and why.</li><li>A factory (and I mean a <a href="http://supergrass.densitron.net/diary4/berlin/wolfsburg.JPG">real hard-core factory</a>) to write statement (queries) AST in a nice way. This is already partially working (one can write "selectBag fields ("a", "b" as "c") from ("a" join "b")") but it isn't supporting quite enough of the SQL standard to be useful yet. Currently, I'm stuck with a bug that might be a Scala bug, but I still have to track it down to be sure.</li></ol></p>

<p>ScalaDALL is the name I am giving to the database library using for-comprehensions and specific optimisations that is the next task after ScalaDBC. I have started some exploratory work for this as I was really getting frustrated with the bugs that where hindering the advance of ScalaDBC. But there isn't anything really working yet.</p>

<p>Otherwise, I also did a little poster that you can find next to my office's door.</p>]]></description>
         <link>http://www.dubochet.ch/gilles/blogs/phd/2005/06/27/scaladbc_scaladall_and_al.html</link>
         <guid>http://www.dubochet.ch/gilles/blogs/phd/2005/06/27/scaladbc_scaladall_and_al.html</guid>
         <category>Status</category>
         <pubDate>Mon, 27 Jun 2005 18:10:20 +0100</pubDate>
      </item>
            <item>
         <title>Better transactions</title>
         <description><![CDATA[<p>I have improved the retry mechanism for my simple transaction library. There are two improvements: Firstly, memory usage is now constant with relation to the number of retries. Second, the time that a thread will wait until it retries is now calculated in a smarter way: the more a thread has retried getting the lock, the more it will wait until it tries again.</p>

<p>The current version of the library is useable, but there are at least two things that I think should be improved if one wants to use it in real applications:<ul><li>Allow more user control on the way the wait time before a retry is calculated &mdash; as this is key to the performance one will get. This could be done by supporting "pluggable wait policy" for example.</li><li>Implement an even more optimistic policy that does not lock variables at all, but instead calculated the entire locked section as if it was alone, and only once this is done, just before committing, test whether some other thread was messing around with the data.</li></ul></p>]]></description>
         <link>http://www.dubochet.ch/gilles/blogs/phd/2005/05/09/better_transactions.html</link>
         <guid>http://www.dubochet.ch/gilles/blogs/phd/2005/05/09/better_transactions.html</guid>
         <category>Status</category>
         <pubDate>Mon, 09 May 2005 11:15:32 +0100</pubDate>
      </item>
            <item>
         <title>ScalaDBC: first results</title>
         <description><![CDATA[<p>I have obtained the first data from a database through ScalaDBC. Nothing extraordinary yet, but at least, something is working. I will now expand ScalaDBC's capabilities (it is very limited for now) and smooth all edges that are still a bit rough (and there are plenty of them).</p>]]></description>
         <link>http://www.dubochet.ch/gilles/blogs/phd/2005/05/05/scaladbc_first_results.html</link>
         <guid>http://www.dubochet.ch/gilles/blogs/phd/2005/05/05/scaladbc_first_results.html</guid>
         <category>Status</category>
         <pubDate>Thu, 05 May 2005 11:27:37 +0100</pubDate>
      </item>
            <item>
         <title>Meeting the LABOS</title>
         <description><![CDATA[<p>Martin, Iulian an me met a delegation of the LABOS (Steven Dropsho and Willy Zwaenepoel) to discuss whether they share our interest in finding better ways to access databases by modifying a (modern&nbsp;/ OO&nbsp;/ functional) programming language.</p>

<p>For them, a database interface library or language is interesting if one of the following behaviours are better than what currently exists. But in all cases, a decrease in performance is a show-stopper.<ul><li>Complexity of code is demonstrably reduced. But cleaner code with the same complexity is a no-show. Of course, in that case, they are not really interested in the problem itself but rather the result.</li><li>Performance (in an arbitrary definition) somehow increases. For large systems, and in particular distributed systems, performance becomes an overwhelming problem and offering something that solves or mitigates this would be very useful.</li><li>And a particular instance of performance that interest them particularly: make middle-ware programs simpler. That means that some of the processing done currently in the middle-ware program at run-time might be done at compile time by looking at the queries. An example of such processing is to find the intersection between queries (used for efficient locking of data). Tackling this problem as such is very specialised and not really in my field though.</li></ul>In short, the part that interests them directly (pre-processing of queries for middle-ware) does not really intersect with what interests me. However, if we develop a system that can be used to do library-specific optimisations at compile-time, they might have some very interesting use cases to provide: a database library that optimise for a specific middle-ware system. Such a library has the potential to become very important in large distributed application programming.</p>]]></description>
         <link>http://www.dubochet.ch/gilles/blogs/phd/2005/04/28/meeting_the_labos.html</link>
         <guid>http://www.dubochet.ch/gilles/blogs/phd/2005/04/28/meeting_the_labos.html</guid>
         <category>Querying</category>
         <pubDate>Thu, 28 Apr 2005 18:20:05 +0100</pubDate>
      </item>
            <item>
         <title>Optimism is paying off (and other stories)</title>
         <description><![CDATA[<p>The first optimistic transaction library is now working. The results are rather satisfactory, but improvement is still needed. If you read on, some test results are described. This for-comprehension as a monad proved to be something that I had troubles to grasp, especially since all the different parts (<code>for</code>, <code>flatMap</code>, etc) are named as if they were only for the list comprehension. Anyway, it is now working. </p>

<p>I have also started implementing the library for the database access that will be optimised &agrave; la SLinks. Of course, it is quite uninteresting by itself without the changes to the compiler to support its optimisation. But there is a start for everything. Plenty of work remaining for this though.</p>]]></description>
         <link>http://www.dubochet.ch/gilles/blogs/phd/2005/04/22/optimism_is_paying_off_and_oth.html</link>
         <guid>http://www.dubochet.ch/gilles/blogs/phd/2005/04/22/optimism_is_paying_off_and_oth.html</guid>
         <category>Status</category>
         <pubDate>Fri, 22 Apr 2005 19:02:42 +0100</pubDate>
      </item>
            <item>
         <title>Transactions</title>
         <description><![CDATA[<p>I have been working (with Burak's help) on writing a simple library providing atomic transactions in Scala. To do this, the for comprehension is diverted from its original use to be considered as a monad instead. In practice, here is how an atomic exchange of the value of two variables would look like:</p><pre>val x = new atomic.Variable[Int];
val y = new atomic.Variable[Int];
val z = new atomic.Variable[Int];
x.value = 1; y.value = 2;
(for (
  val a <- x.get();
  val _ <- z.put(a);
  val b <- y.get();
  val _ <- x.put(b);
  val c <- z.get();
  val d <- y.put(c);
) yield d) run
</pre><p>
The problem now is that the for loop as a monad is something that I find very difficult to get an intuition about. I have a very simple version that locks down the entire program when evaluating the atomic bloc, but this is of course hopelessly inefficient. But when I try to improve from this basic version, I am having troubles grasping how things interact around this comprehension/monad, and getting the right intuition on how to do it. Please, read on for a small explanation on the locking mechanisms I intend to add.</p>]]></description>
         <link>http://www.dubochet.ch/gilles/blogs/phd/2005/04/20/transactions.html</link>
         <guid>http://www.dubochet.ch/gilles/blogs/phd/2005/04/20/transactions.html</guid>
         <category>Status</category>
         <pubDate>Wed, 20 Apr 2005 12:23:05 +0100</pubDate>
      </item>
            <item>
         <title>A world of weblogs</title>
         <description><![CDATA[<p>One more weblog on the Internet, what a deal. But this one is special: it speaks about me! On this blog, I will post thoughts and ideas about my work for my PhD, or any other interesting computer science things I might stumble upon during the day.</p>

<p>Very shortly: I started my PhD at the <a href="http://lampwww.epfl.ch/">laboratoire des m&eacute;thodes de programmation</a> (LAMP) at the <a href="http://www.epfl.ch/">EPFL</a> in Lausanne under the supervision of Prof. Martin Odersky on the fourth of April 2005. Currently, I intend to work on how to support relational database querying in a completely transparent (that is without SQL) yet efficient (that is with SQL) way in modern programming languages. The project might quickly extend to include more general querying for a variety of data repository systems (who said XQuery?). The modern programming language that will be used as a reference here is the LAMP's very own language, <a href="http://scala.epfl.ch/">Scala</a>.</p>]]></description>
         <link>http://www.dubochet.ch/gilles/blogs/phd/2005/04/12/a_world_of_weblogs.html</link>
         <guid>http://www.dubochet.ch/gilles/blogs/phd/2005/04/12/a_world_of_weblogs.html</guid>
         <category>Anything</category>
         <pubDate>Tue, 12 Apr 2005 19:25:58 +0100</pubDate>
      </item>
      
   </channel>
</rss>
