October 2005 - Posts


VistaDB 2.1 database for .NET has been released

This 2.1 update includes over 60 improvements, including new support for .NET 2.0 and Visual Studio .NET 2005. VistaDB is a small-footprint, embedded SQL database alternative to Jet/Access, MSDE and SQL Server Express 2005 that enables developers to build .NET 1.1 and .NET 2.0 applications. Features SQL-92 support, small 500KB embedded footprint, free 2-User VistaDB Server for remote TCP/IP data access, royalty free distribution for both embedded and server, Copy 'n Go! deployment, managed ADO.NET Provider, data management and data migration tools. Free trial is available for download.
- Learn more about VistaDB
- Repost this to your blog and receive a FREE copy of VistaDB 2.1!

From what I've read around the web their speed is pretty good, good featureset and good metadata on their .Net driver.
Maybe I'll post a review of my findings when I get  a chance to compare it with some other options available.

When your on Windows xp Home Edition you can't easily host websites with IIS.

There are some alternatives the most well known is the cassini webserver, this has been  enhanced a bit by various party's a good example of this is:

xNetserver which is a VB.Net port of Cassini with a lot of extra's built in.

What does it do:

  • XML file to set all security and configuration settings;
  • W3C Format Access logging to write connection data to disk;
  • Enhanced Disk Eventlog debugging (debugging Server errors or .NET handling errors);
  • Built into Windows Service;
  • Basic Windows Eventlog logging for critical server failures;
  • Specify the Port, Virtual Directory and Physical Path of the .NET web application in the XML file;
  • Direct File Handling and content-type handling for any configured file type (e.g.: SWF, JPEG etc.);
  • Security for maximum length of URI (Request);
  • Security for accepting either local or remote IP addresses;
  • Configure only specific IP addresses that are able to connect and process content;
  • Disable/Enable directory browsing;
  • Custom Version/Server Header configuration;
  • Security for handling only specific Request types such as GET, HEAD and POST;
  • Disable certain file extensions from being handled by the server;
  • Define multiple default document names for the server.

    Apache 2.0 now also supports Asp.Net

    http://httpd.apache.org/cli/ is the place to get mod_aspnet.

    Limitations:

    - It will only work on windows NT compatible
    - It is .Net compatible not Rotor not MONO
    - It needs Apache 2.0

    Other then that it seems like a very good choice.

  • One of the big things in stopping people from adapting Ruby on Rails is it's lack of a  good editor.

    Now it seems that this is a thing of the past.

    Some people have made it possible to make Dreamweaver mx 2004 into a good Ruby on Rails editor.

    The howto for rhtml files.

    The howto for intellisence on .rb files.

    This is a very big step for Ruby on Rails.

    More about Ruby on Rails and comparing it to Asp.Net will come later.

    Today is another fine day to read up on some database knowledge:

    A wikipedia article examining differences between the big databases.


    and

    an article about the different sql dialects



    Interesting development going on currently surrounding MySql every ones favorite sql 92 / ACID incompliant database.

    MySql AB has recently transfered the license of MySql from LPGL to PGL.
    For those not so well informed in what the difference is:
    "using the Library GPL permits use of the library in proprietary programs; using the ordinary GPL for a library makes it available only for free programs."
    And offcourse GPL code may not be used in anything which isn't licensed with a GPL compatible license.

    MySql is offcourse dually licensed Commercial + GPL so if you want to use it for anything commercial then you have have to pay up, unless your making use of the web loophole:

    "At present, companies that distribute GPL-licensed software must make the source code publicly available, including any modifications they've made. Though the rule covers many businesses that use GPL-licensed software for commercial ends, it doesn't cover Web companies that use such software to offer their services through the Web, as they're not actually distributing the software."

    Ok, so the whole thing became a lot less .Net friendly :P

    Now there is a new development on the MySql horizon: Oracle buys INNO DB

    Which looks like a very tactical move by Oracle to crush MySql...
    MySql 5 which just went into release candidate mode, might have looked a bit too much like a "real database".

    All things said be very aware of where MySql is going... and if you have alternatives for a new project I suggest you have a good look at them.

    Things might get ugly around MySql soon.

    I saw a good definition of Web 2.0 today through Curt Hibbs blog, from O'Reilly:

    Web 2.0 is the network as platform, spanning all connected devices; Web 2.0 applications are those that make the most of the intrinsic advantages of that platform: delivering software as a continually-updated service that gets better the more people use it, consuming and remixing data from multiple sources, including individual users, while providing their own data and services in a form that allows remixing by others, creating network effects through an "architecture of participation," and going beyond the page metaphor of Web 1.0 to deliver rich user experiences.





    Usually Joelonsoftware.com produces some interesting points of conversation around the blogospere.

    His latest posting is a really good (IMHO)  post about setting priorities in a project.
    One of the good things in having a time based schedule and not a feature based schedule is that you can usually drop a few features which could be called fluf.

    For getting to the good part of the post just skip half of it, because the first part is all fluff no stuff.

    Anyway here's the post
    Which also goes pretty well with this post. About setting a shipping date.

    Hope you like it. 
    Google launched a new service a while back:
    reader.google.com

    which looks quite nice,  it's an easy interface for keeping in touch with blogs and it's Ajax based so no page refreshes.
    Following up on some articles on google's reader I also found another free blog reading tool:
    Bloxor.

    Which looks even better to work with.
    A screenshot:



    There is one big downside to bloxor though. It uses XUL so it can only be used from Firefox / Mozilla / Netscape.

    The buzzwords of the moment:

    Linq for the .Net world, Ruby for the open source world.

    Jon Udel wrote the following example for the .Net world to show of the nice things about Linq:

    The following snippet does a three-way join across an XML data source and two CLR objects. The XML data source is the content of this blog. The objects are a dictionary of date mappings, and an array of strings. The output is constructed as XML.

    Sam Ruby responded with a bit of Ruby code which does largely the same.

    The .Net implementationThe Ruby implementation

    XDocument doc = XDocument.Load("blog.xml");

    var d  = new Dictionary<string,string>();
    d.Add("2005/09","September 2005");
    d.Add("2005/08","August 2005");

    var a = new string[] { "greasemonkey", "ajax" };

    var query =
      from
        item in doc.Descendants("item"),
        key in d.Keys,
        tag in a
      where item.Element("date").Value.Contains(key) &&
            item.Element("tags").Value.Contains(tag)
      orderby
        (string) item.Element("date") descending
      select new XElement("item",
        new XElement("month",d[key]),
        item.Element("date"),
        item.Element("title"),
        item.Element("tags"));

    foreach (var result in query)
      Console.WriteLine(result);

    doc = REXML::Document.new open("blog.xml")
    d = {"2005/09"=>"September 2005", "2005/08"=>"August 2005"}
    a = ["greasemonkey", "ajax"]

    xml = Builder::XmlMarkup.new

    REXML::XPath.match(doc,"//item").select {|item|

      d.keys.find {|key| item.elements["date"].text.include? key} and
      a.find {|tag| item.elements["tags"].text.include? tag}

    }.sort_by {|item| item.elements["date"].text}.reverse.each {|item|

      xml.item {
        xml.month d[d.keys.find {|key| item.elements["date"].text.include? key}]
        xml.date item.elements["date"].text
        xml.title item.elements["title"].text
        xml.tags item.elements["tags"].text
      }

    }

    puts xml.to_s

     

    The output:

    <item>
       <month>September 2005</month>
       <date>2005/09/26</date>
       <title>A channel changer for the Bloglines river of news</title>
       <tags>greasemonkey bloglines</tags>
    </item>
    <item>
       <month>August 2005</month>
       <date>2005/08/10</date>
       <title>Architecture of participation, architecture of control</title>
       <tags>firefox greasemonkey security opensource</tags>
    </item>

    The moral of this comparison is that there might already be an answer to this problem... available today.
    That being said the Ruby code doesn't have intellisence while coding, this in contrast to the .Net code.

    There are also some other small differences, you can read about these in the original articles:

    .Net code origin.
    Ruby code origin.

     

    An interview by O'Reilly Network with  David Heinemeier Hansson about the origin and design decissions made for Rails.

    http://www.oreillynet.com/lpt/a/6170