<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.3" -->
<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/"
	>

<channel>
	<title>Software Warlock</title>
	<link>http://softwareblog.morlok.net</link>
	<description></description>
	<pubDate>Fri, 29 Aug 2008 05:12:15 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.3</generator>
	<language>en</language>
			<item>
		<title>OOP in Cocoa versus .NET</title>
		<link>http://softwareblog.morlok.net/2008/08/29/oop-in-cocoa-versus-net/</link>
		<comments>http://softwareblog.morlok.net/2008/08/29/oop-in-cocoa-versus-net/#comments</comments>
		<pubDate>Fri, 29 Aug 2008 05:12:15 +0000</pubDate>
		<dc:creator>Warlock</dc:creator>
		
		<category><![CDATA[Cocoa]]></category>

		<guid isPermaLink="false">http://softwareblog.morlok.net/2008/08/29/oop-in-cocoa-versus-net/</guid>
		<description><![CDATA[
Cocoa is My Girlfriend has a good article discussing some of the differenences between the way .NET encourages you to write code and the way MVC is encouraged in Cocoa.  The article really speaks to the truth in that Visual Studio really encourages you to go slap your business logic write in with your [...]]]></description>
			<content:encoded><![CDATA[<p>
<a href="http://www.cimgf.com/">Cocoa is My Girlfriend</a> has a good <a href="http://www.cimgf.com/2008/07/29/cocoa-tutorial-windows-oop-vs-cocoa-mvc/">article</a> discussing some of the differenences between the way .NET encourages you to write code and the way MVC is encouraged in Cocoa.  The article really speaks to the truth in that Visual Studio really encourages you to go slap your business logic write in with your UI logic.  There are definitely .NET communities that encourage a better look at design (specifically the ALT.NET guys), but the developer base as a whole doesn&#8217;t think about it too much.</p>
]]></content:encoded>
			<wfw:commentRss>http://softwareblog.morlok.net/2008/08/29/oop-in-cocoa-versus-net/feed/</wfw:commentRss>
		</item>
		<item>
		<title>OWA/Exchange WebDAV Doesn&#8217;t Support Infinite Recurrence</title>
		<link>http://softwareblog.morlok.net/2008/08/26/owaexchange-webdav-doesnt-support-infinite-recurrence/</link>
		<comments>http://softwareblog.morlok.net/2008/08/26/owaexchange-webdav-doesnt-support-infinite-recurrence/#comments</comments>
		<pubDate>Wed, 27 Aug 2008 04:45:09 +0000</pubDate>
		<dc:creator>Warlock</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[webdav exchange owa]]></category>

		<guid isPermaLink="false">http://softwareblog.morlok.net/2008/08/26/owaexchange-webdav-doesnt-support-infinite-recurrence/</guid>
		<description><![CDATA[
You may think you have an infinitely recurring appointment, but you&#8217;re wrong.  It turns out that when working with Exchange via WebDAV, infinite recurrence is actually cut off at an arbitrary point far in the future.  This applies to accessing Exchange directly with WebDAV or by using Outlook Web Access, which is based [...]]]></description>
			<content:encoded><![CDATA[<p>
You may think you have an infinitely recurring appointment, but you&#8217;re wrong.  It turns out that when working with Exchange via WebDAV, infinite recurrence is actually cut off at an arbitrary point far in the future.  This applies to accessing Exchange directly with WebDAV or by using Outlook Web Access, which is based on WebDAV.
</p>
<p>
First, a little background.  For those of you who aren&#8217;t aware, when you access data via WebDAV on Exchange, calendar data is actually rendered as RFC 2445 iCalendar data.  The iCalendar data has a lot of extra x-name stuff that is specific to Microsoft that allows it to support the additional MAPI information that&#8217;s needed for additional properties (that&#8217;s OK, RFC 2445 allows it).  Anyway, Microsoft also provides a WebDAV-SQL dialect to query the data (not just for iCalendar stuff).  This is great, because it lets you offload a lot of your effort for searching through the data on to the Exchange server.
</p>
<p>
Where things get a bit interested is when you are working with infinitely recurring appointments (recurring appointments without an end date).  Internally, iCalendar is fine with this.  The infinite pattern can be represented by a single iCalendar event, and everything is good.  The twist is that when you search for events for a specific date range, Exchange will give you the parent event that actually represents the infinitely recurring pattern <em>and</em> a single event for each instance of your pattern that falls between your search date range.  The single events list themselves as instances via a special property.
</p>
<p>
The reason for this behavior is most likely OWA.  OWA is basically an early implementation of AJAX that has client side Javascript accessing a WebDAV back end.  By instantiating all instances of the recurring pattern for you, much work is taken off of the front end for computing when instances of the recurring pattern should go.  OWA just queries for a date range that&#8217;s either a day, week or month, and it&#8217;s given everything it needs.  Exchange is even smart, in that once it has received a query for a certain date range, it caches the instance events on the back end and they become visible via WebDAV as separate entities.
</p>
<p>The intelligent reader will notice an opportunity for problems here: if Exchange is instanciating and caching all these instances on the fly, a request with an open-ended date range search will never complete.  Exchange would just keep instancing more an more instances.  To avoid this problem, Microsoft implemented a system where you can only query <a href="http://softwareblog.morlok.net/2008/03/18/restrictions-on-date-queries-with-webdav-sql-for-exchange/">a bounded date range of up to 2 years</a>.  Once you have queried for a specific date range and the results have been cached, open-ended range queries will return already cached instances, but for places where nothing was previously cached, nothing will be returned.  Learned that gotcha the hard way.
</p>
<p>The second problem with this caching strategy is that if unchecked, it would allow a client of intentionally or otherwise perform a DOS attack on Exchange.  A client could continue to query 2 year date ranges forever, and force Exchange to cache more and more instances.  To avoid this, Microsoft has implemented a cap as to how far into the future it will allow you to go.  From what I can tell, this isn&#8217;t documented anywhere, but this is what I have determined experimentally on Exchange 2003:</p>
<ol>
<li>Instances of infinite recurring appointments only seem to expand up until (approx) 10 year after the first date of the recurring meeting.  This might actually not be time based, but rather # of occurrences based.  I used an infinitely recurring appointment daily and it was about 10 or 11 years.</li>
<li>Instances of finite recurring appointment expand arbitrarily to the future, until the end of the prescribed recurrence patter (I only tested this with recurrence patters that have a specified number of recurrences, namely recurring monthly for 999 times, I did not test this with a set end date).</li>
<li>OWA suffers from the same limitation. If you try to view an appointment 30 years out for a daily infinite recurrence, it doesn’t show up.</li>
</ol>
<p>The net result of this is that OWA will show an infinitely recurring appointment stopping sometime in the future, and your WebDAV queries might not return what you expect.</p>
]]></content:encoded>
			<wfw:commentRss>http://softwareblog.morlok.net/2008/08/26/owaexchange-webdav-doesnt-support-infinite-recurrence/feed/</wfw:commentRss>
		</item>
		<item>
		<title>OS X Leopard Password Head-fake</title>
		<link>http://softwareblog.morlok.net/2008/08/26/os-x-leopard-password-head-fake/</link>
		<comments>http://softwareblog.morlok.net/2008/08/26/os-x-leopard-password-head-fake/#comments</comments>
		<pubDate>Wed, 27 Aug 2008 03:53:48 +0000</pubDate>
		<dc:creator>Warlock</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[webdav osx]]></category>

		<guid isPermaLink="false">http://softwareblog.morlok.net/2008/08/26/os-x-leopard-password-head-fake/</guid>
		<description><![CDATA[Leopard wants to make sure you&#8217;re not just bluffing when you enter your password to access an Exchange WebDAV resource.  The first time you enter your password, it will reject it, but then if you just resubmit without changing anything, it will let you in (assuming you actually entered the correct password).  I&#8217;m [...]]]></description>
			<content:encoded><![CDATA[<p>Leopard wants to make sure you&#8217;re not just bluffing when you enter your password to access an Exchange WebDAV resource.  The first time you enter your password, it will reject it, but then if you just resubmit without changing anything, it will let you in (assuming you actually entered the correct password).  I&#8217;m not actually sure if this is a problem with OS X or Exchange.  Some other people have had trouble with authentication, as has been discussed <a href="http://www.neilturner.me.uk/2007/12/13/osx-webdav-problem.html">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://softwareblog.morlok.net/2008/08/26/os-x-leopard-password-head-fake/feed/</wfw:commentRss>
		</item>
		<item>
		<title>jQuery Resources</title>
		<link>http://softwareblog.morlok.net/2008/08/24/jquery-resources/</link>
		<comments>http://softwareblog.morlok.net/2008/08/24/jquery-resources/#comments</comments>
		<pubDate>Mon, 25 Aug 2008 02:22:40 +0000</pubDate>
		<dc:creator>Warlock</dc:creator>
		
		<category><![CDATA[Javascript]]></category>

		<category><![CDATA[User Interfaces]]></category>

		<guid isPermaLink="false">http://softwareblog.morlok.net/2008/08/24/jquery-resources/</guid>
		<description><![CDATA[I&#8217;ve been using jQuery a lot for developing some new web interface code for work.  This page provides links to a lot of other resources for effectively using jQuery.
]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been using jQuery a lot for developing some new web interface code for work.  This <a href="http://effectize.com/jquery-developer-guide">page</a> provides links to a lot of other resources for effectively using jQuery.</p>
]]></content:encoded>
			<wfw:commentRss>http://softwareblog.morlok.net/2008/08/24/jquery-resources/feed/</wfw:commentRss>
		</item>
		<item>
		<title>You will be assimilated</title>
		<link>http://softwareblog.morlok.net/2008/08/24/you-will-be-assimilated/</link>
		<comments>http://softwareblog.morlok.net/2008/08/24/you-will-be-assimilated/#comments</comments>
		<pubDate>Sun, 24 Aug 2008 23:13:23 +0000</pubDate>
		<dc:creator>Warlock</dc:creator>
		
		<category><![CDATA[Patterns]]></category>

		<guid isPermaLink="false">http://softwareblog.morlok.net/2008/08/24/you-will-be-assimilated/</guid>
		<description><![CDATA[I was reading up on implementing the Singleton Design Pattern in various languages, and I found an interesting discussion about how the Python community prefers the Borg design pattern instead.  The idea is rather than focussing on only allowing one instance of a class to be created, you just make the internal state of [...]]]></description>
			<content:encoded><![CDATA[<p>I was reading up on implementing the <a href="http://en.wikipedia.org/wiki/Singleton_pattern">Singleton Design Pattern</a> in various languages, and I found an interesting discussion about how the Python community prefers the <a href="http://code.activestate.com/recipes/66531/">Borg design pattern</a> instead.  The idea is rather than focussing on only allowing one instance of a class to be created, you just make the internal state of the objects the same (one mind, many bodies, get it?).  I thought the name was awesome.</p>
]]></content:encoded>
			<wfw:commentRss>http://softwareblog.morlok.net/2008/08/24/you-will-be-assimilated/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Javascript Date Pickers</title>
		<link>http://softwareblog.morlok.net/2008/08/07/javascript-date-pickers/</link>
		<comments>http://softwareblog.morlok.net/2008/08/07/javascript-date-pickers/#comments</comments>
		<pubDate>Fri, 08 Aug 2008 04:40:50 +0000</pubDate>
		<dc:creator>Warlock</dc:creator>
		
		<category><![CDATA[Javascript]]></category>

		<category><![CDATA[jquery javascript mootools datepicker]]></category>

		<guid isPermaLink="false">http://softwareblog.morlok.net/2008/08/07/javascript-date-pickers/</guid>
		<description><![CDATA[I&#8217;ve been looking for a good date picker for a project I&#8217;m working on, so I though I&#8217;d post the best results I&#8217;ve found so far.

UI jQuery Datepicker The standard datepicker available in the jQuery UI library.  Pretty nice, though the visuals could use some work.  The colors in the default control need [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been looking for a good date picker for a project I&#8217;m working on, so I though I&#8217;d post the best results I&#8217;ve found so far.</p>
<ul>
<li><a href="http://ui.jquery.com/functional_demos/#ui.datepicker">UI jQuery Datepicker</a> The standard datepicker available in the <a href="http://ui.jquery.com/">jQuery UI library</a>.  Pretty nice, though the visuals could use some work.  The colors in the default control need some work.</li>
<li><a href="http://www.filamentgroup.com/examples/datepicker/">http://www.filamentgroup.com/examples/datepicker/</a> Based on the original codebase for the ui.datepicker jQuery control, this is  a very impressive date range picker.  Not completely in a reusable form at this point, but good nonetheless.</li>
<li><a href="http://www.electricprism.com/aeron/calendar/">Calendar</a> This datepicker has a great visual appearance.  It is build on top of the <a href="http://mootools.net/ ">Mootools</a> libary.  This was actually my choice for a straight up datepicker until I realized that using <a href="http://jquery.com/">jQuery</a> and <a href="http://mootools.net/ ">Mootools</a> isn&#8217;t a walk in the park.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://softwareblog.morlok.net/2008/08/07/javascript-date-pickers/feed/</wfw:commentRss>
		</item>
		<item>
		<title>F# Compiler fsc.exe Command Line Options</title>
		<link>http://softwareblog.morlok.net/2008/07/05/f-compiler-fscexe-command-line-options/</link>
		<comments>http://softwareblog.morlok.net/2008/07/05/f-compiler-fscexe-command-line-options/#comments</comments>
		<pubDate>Sat, 05 Jul 2008 05:48:39 +0000</pubDate>
		<dc:creator>Warlock</dc:creator>
		
		<category><![CDATA[f#]]></category>

		<category><![CDATA[fsc]]></category>

		<guid isPermaLink="false">http://softwareblog.morlok.net/2008/07/05/f-compiler-fscexe-command-line-options/</guid>
		<description><![CDATA[I was having a bit of trouble locating documentation on the command line flags for the F# compiler (fsc.exe) so I thought I&#8217;d post the list of flags myself.  These can be obtained via fsc.exe &#8211;full-help.  I&#8217;ve also posted them in text-only form.  Note that fsc uses the *NIX style - and [...]]]></description>
			<content:encoded><![CDATA[<p>I was having a bit of trouble locating documentation on the command line flags for the F# compiler (fsc.exe) so I thought I&#8217;d post the list of flags myself.  These can be obtained via <em>fsc.exe &#8211;full-help</em>.  I&#8217;ve also posted them <a href="http://www.morlok.net/ryan/downloads/fsc-command-line-options.txt">in text-only form</a>.  Note that fsc uses the *NIX style - and &#8212; flags instead of the standard Windows /.</p>
<pre>
fsc --full-help

MSR F# Compiler, (c) Microsoft Corporation, All Rights Reserved
F# Version 1.9.2.9, compiling for .NET Framework Version v2.0.50727

Usage: fsc <options> [imported.dll &#8230; ] [file1.ml [file2.ml &#8230;] ]

Basic options:
  -I <string>: Specify a directory for the include path.
  -r <string>: Reference an F# or .NET assembly.
  -R <string>: Reference an F# or .NET assembly and copy it locally.
  -o <string>: Name the output file.
  -a: Produce a DLL.
  -g: Produce debug file. Disables optimizations if a -O flag is not given.
  &#8211;define <string>: Define the given conditional compilation symbol.
  -i: Print the inferred interface of the assembly.
  -doc <string>: Write the xmldoc of the assembly to the given file.
  -Ooff: Disable all optimizations, including JIT.
  -O0: Enable JIT optimizations.
  -O1: Enable JIT and local optimizations.
  -O: Same as -O2 (default unless -g)
  -O2: Same as -O1 but also enables cross module optimizations.
  -O3: Same as -O2 but with increased inlining and lambda lifting.
  &#8211;no-mllib:
        Do not implicitly reference mllib.dll or open
        Microsoft.FSharp.Compatibility.OCaml.Pervasives,
        useful if you wish to avoid dependencies on OCaml-compatibility library modules.
  &#8211;all-warnings: Print all warnings.
  &#8211;no-warnings: Do not print any warnings.
  &#8211;warn <int>: Report the given specific warning.
  &#8211;no-warn <int>: Do not report the given specific warning.
  &#8211;all-warnings-as-errors: Treat all warnings as errors.
  &#8211;warn-as-error <int>: Treat the given specific warning as an error.
  &#8211;gnu-style-errors: Print line number errors in GNU style.
  &#8211;namespace <string>:
        Define the default root namespace which will contain subsequent
        F# modules.
  &#8211;open <string>:
        Open the given module as an initial definition for each source
        file, useful if you wish to use an alternative functional programming library.

  &#8211;fullpaths: Compiler generates fully qualified paths.
  &#8211;clr-root <string>:
        Use to override where the compiler looks for mscorlib.dll and other framework
        components. Often needed when using &#8211;cli-version.
  &#8211;ml-compatibility: Treat F# keywords which are not OCaml keywords as identifiers.
        Also ignore OCaml-compatibility warnings.
  &#8211;copy-local <string>: Locate the given file in the search paths and copy
        it locally (e.g. a PDB).
  &#8211;compiling-fslib: <internal use only>
  &#8211;compiling-mllib: <internal use only>
  -ifile <string>: Print the inferred interface of the assembly to file.
  &#8211;target-exe: Produce an executable with a console
  &#8211;target-winexe: Produce an executable which does not have a
        stdin/stdout/stderr
  &#8211;target-dll: Produce a DLL
  &#8211;target-module: Produce a module that can be added to another assembly
  &#8211;auto-resolve: Automatically reference DLLs whose name matches a required
        F# module or namespace. Experimental.
  -c: Compile to a module (&#8211;target-module) and
        auto-resolve (&#8211;auto-resolve). Experimental.
  &#8211;standalone:
        Statically link the F# library and all transitively referenced DLLs
        that depend on the F# library into the assembly being generated.
        Disables the generation of the F# interface and optimization
        resources and renames all types beginning with Microsoft.FSharp,
        making them private to the target assembly. There must be no
        duplicate type names across any statically linked
        assemblies, no code may use reflection on any of the
        types in those assemblies, and no code may export F# library types
        as part of an API.
  &#8211;static-link <string>:
        Statically the given assembly and all transitively referenced DLLs
        that depend on this assembly.  NOTE: use an assembly name e.g. mylib
        , not a DLL name, e.g. mylib.dll.
  &#8211;keyfile <string>:
        Sign the assembly the given keypair file, as produced
        by the .NET Framework SDK &#8217;sn.exe&#8217; tool. This produces
        an assembly with a strong name. This is only relevant if producing
        an assembly to be shared amongst programs from different
        directories, e.g. to be installed in the Global Assembly Cache.
  &#8211;public-keyfile <string>:
        Delay sign with the given public key file. The assembly can
        be fully signed later using &#8217;sn.exe&#8217; from the .NET Framework SDK.
  &#8211;retargetable <string>: Specify that an assembly should be referenced in a
        retargetable fashion. Used to build binaries which are independent of
        the publisher of the referenced DLLs.
  &#8211;win32res <string>: Specify a Win32 resource file (.res)
  &#8211;platform <string>: Limit which platforms this code can run on:
                x86
                anycpu
        The default is anycpu. Other platform limitation specifications
        such as x64 and Itanium are not yet supported.
  &#8211;resource <string>: Embed the specified managed resources (.resource).
        Produce .resource files from .resx files using resgen.exe or resxc.exe.
  &#8211;link-resource <string>: Link the specified managed resource
        file (.resource). Produce .resource files from .resx files using resgen.exe
        or resxc.exe. Format may be <file>[,<stringname>[,public|private]].
  &#8211;base-address <string>: Base address for the library to be built.
  &#8211;version-file <string>:
  &#8211;version <string>:
        Specify the version numbers for the generated .NET assembly
        (e.g. 1.2.0.1).
  &#8211;cli-version <string>:
        Specify the CLI version to generate code for, regardless of the CLI you
        have installed at compile time.
        Valid values for this version of F# are:
                1.0
                1.1
                2.0
                build tags such as v2.0.x86chk
        You may have to add the right Framework directory to your include path, e.g.
                &#8211;clr-root \WINDOWS\Microsoft.NET\Framework\v1.1.4322
        You should also run the appropriate version of peverify on your
        binaries,e.g C:\Program Files\Microsoft Visual Studio .NET 2003\
        \SDK\v1.1\Bin\PEVerify.exe
        to ensure neither you nor any of the libraries you import
        have used features specific to other versions of the .NET Framework.
  &#8211;debug-file <string>:
        Name the debug output file.
  &#8211;generate-debug-file:
  &#8211;no-debug-file:
        Control whether debug information is produced or not. Unlike -g
        this does not by default turn off optimizations.
  &#8211;no-debug-file:
        Control whether debug information is produced or not. Unlike -g
        this does not by default turn off optimizations.
  &#8211;generate-html:
        Generate HTML documentation.
  &#8211;html-output-directory <string>:
        Output directory for HTML documentation.
  &#8211;html-css <string>:
        Set the name of the Cascading Style Sheet for HTML docs.
  &#8211;html-namespace-file <string>:
        Set the name of the master namespaces.html file
        assumed to be in the output directory.
  &#8211;html-namespace-file-append:
        Append to the master namespace file when generating HTML documentation.
  &#8211;no-optimization-data:
        Only add optimization information essential implementing &#8216;inline&#8217;
        constructs. Inhibitscross-module inlining but improves binary compatibility.
  &#8211;generate-optimization-data-file:
        Place optional information in a .optdata file associated with the
        generated assembly.
  &#8211;no-interface-data:
        Don&#8217;t add a resource to the generated assembly containing the
        interface data for use by other F# assemblies. The assembly can then
        only be accessed as a .NET assembly.
  &#8211;quotation-data:
        This flag is now obsolete. Use the ReflectedDefinition attribute instead.
  &#8211;generate-config-file:
        Generate a config file to ensure that a .exe runs on the
        version of the CLR specified by &#8211;cli-version.  The
        file will contain a &#8217;supportedRuntime&#8217; XML element.
  &#8211;jit-optimize:
  &#8211;no-jit-optimize:
  &#8211;local-optimize:
  &#8211;no-local-optimize:
  &#8211;cross-optimize:
  &#8211;no-cross-optimize:
        Fine grained control for JIT, local and cross-module optimizations.
  &#8211;fast-sublanguage-only:
        Restrict the F# langauge slightly to rule out constructs that are
        more difficult to compile efficiently, leading to more optimization
        opportunities for the compiler. This can significantly improve
        performance. Combines all the &#8211;no-ABC flags that follow.
  &#8211;no-inner-polymorphism:
        Do not permit inner bindings to be genuinely polymorphic.
  &#8211;permit-inner-polymorphism:
  &#8211;no-string-interning: Do not intern compiled string constants at runtime.
  &#8211;statistics: Show statistics of compiler.
  &#8211;progress: Show progress of compiler.
  &#8211;no-framework:
        Do not reference the .NET Framework assemblies by default.
  &#8211;sscli:
        Force the compiler to look use the installation
        of the SSCLI found on the path rather than an installed Microsoft CLI.
        Also produces debug information in the SSCLI format.
  &#8211;max-errors <int>: <internal use>
  &#8211;generate-filter-blocks: Generate filter blocks to allow first-chance
        exception catching for non-matching exceptions
  &#8211;stamps: <internal use>
  &#8211;ranges: <internal use>
  &#8211;terms: <internal use>
  &#8211;termsfile: <internal use>
  &#8211;ilfiles: <internal use>
  &#8211;times: <internal use>
  &#8211;detuple <int>: <internal use>
  &#8211;tlr <int>: <internal use>
  &#8211;tlrlift <int>: <internal use>
  &#8211;no-env: <internal use>
  &#8211;parse-only: <internal use only>
  &#8211;typecheck-only: <internal use only>
  &#8211;ast: <internal use only>
  &#8211;tokenize: <internal use only>
  &#8211;testInteractionParser: <internal use only>
  &#8211;light: <experimental use only>
  &#8211;lightoff: <experimental use only>
  &#8211;inline-threshold <int>: <internal use only>
  &#8211;extra-optimization-loops <int>: <internal use only>
  &#8211;generics:
  &#8211;no-generics:
        Fine grained control over whether to produce code for a .NET CLR
        that supports generics.
  &#8211;all-tailcalls:
  &#8211;no-tailcalls:
        Fine grained control over whether to emit tailcall annotations.
  &#8211;closures-as-virtuals:
        Fine grained control over the implementaion of closures.
  &#8211;multi-entrypoint-closures:
</pre>
]]></content:encoded>
			<wfw:commentRss>http://softwareblog.morlok.net/2008/07/05/f-compiler-fscexe-command-line-options/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Using Windows Authentication with an ASP.NET 1.1 Application</title>
		<link>http://softwareblog.morlok.net/2008/06/12/using-windows-authentication-with-an-aspnet-11-application/</link>
		<comments>http://softwareblog.morlok.net/2008/06/12/using-windows-authentication-with-an-aspnet-11-application/#comments</comments>
		<pubDate>Thu, 12 Jun 2008 13:37:47 +0000</pubDate>
		<dc:creator>Warlock</dc:creator>
		
		<category><![CDATA[.NET]]></category>

		<category><![CDATA[sql server]]></category>

		<category><![CDATA[windows authentication]]></category>

		<guid isPermaLink="false">http://softwareblog.morlok.net/2008/06/12/using-windows-authentication-with-an-aspnet-11-application/</guid>
		<description><![CDATA[
In many cases it is desirable to authenticate a ASP.NET web app using Windows Authentication.  Allows you to avoid storing the username/password in clear text in the web.config file, and allows for the central management of accounts without the need to maintain SQL Server accounts.


Microsoft has some helpful instructions on how to accomplish all [...]]]></description>
			<content:encoded><![CDATA[<p>
In many cases it is desirable to authenticate a ASP.NET web app using Windows Authentication.  Allows you to avoid storing the username/password in clear text in the web.config file, and allows for the central management of accounts without the need to maintain SQL Server accounts.
</p>
<p>
Microsoft has some helpful instructions on how to accomplish all this for the .NET 2.0 framework. <a href="http://msdn.microsoft.com/en-us/library/ms998292.aspx">This</a> article describes how to accomplish the configuration in .NET 2.0.  The article also links to another <a href="http://msdn.microsoft.com/en-us/library/ms998297.aspx">article</a> that describes how to create a service account for use with this type of authentication.
</p>
<p><em><br />
NOTE: All of this assumes that you want to use a single account for your web app and give that account access to the database.  The application itself is responsible for authenticating users and making sure they have rights to perform all operations within your application.  This is referred to as a trusted subsystem model.  As such, the discussion below assumes that you are not using impersonation the users that are accessing your web app.<br />
</em></p>
<p>
The same techniques can be applied to .NET 1.1 (and probably 1.0) ASP.NET apps.  There are two ways to setup the Windows Authentication: using the Network Service account on your webserver (the easy way) and using a domain authenticated account specific for your application (the hard way).
</p>
<p><b>Network Service Authentication</b></p>
<p>
Starting with the Network Service account approach, you only need to do two things:
</p>
<ol>
<li>Give the account access to your database via SQL Server Management studio (assuming SQL Server 2005; with 2000 you would use Enterprise Manager)</li>
<li>Configure your connection string in your web.config file (or wherever you are storing it)</li>
</ol>
<p>
To configure SQL Server, create a new login with the login name:
</p>
<pre>Domain\WebServerName$</pre>
<p>
So my web server, Fozzie, on the Example domain would be <em>Example\Fozzie$</em>.  Be sure to use Windows Authentication when you create the login, and be sure to map the login to the appropriate users on your desired database.
</p>
<p>To configure your database connection string, use one of the equivalent options <em>Trusted_Connection=Yes</em> or <em>Integrated_Security=SSPI</em>.  So your database connection strings would be of the form (stolen from Microsoft article):
</p>
<pre>Server=MyServer;Database=MyDb;Trusted_Connection=Yes;</pre>
<p>or</p>
<pre>Initial Catalog=MyDb;Data Source=MyServer;Integrated Security=SSPI;</pre>
<p>
The disadvantage of using the Network Service account to authenticate your application with SQL Server is that all web applications running on the same server will use the same account to authenticate, and thus will have access to each other&#8217;s databases.  If this is not acceptable, the other option is to use a domain account for your web app.
</p>
<p><b>Domain Account</b></p>
<p>
Using a domain account to run your web application will give you more granular control of the application&#8217;s access to resources and will allow you to isolate different applications running on the same server.  Configuring a web application to run as a domain account involves the following steps:
</p>
<ol>
<li>Create a domain account for use with the application</li>
<li>Give account access to database in SQL server</li>
<li>Give account needed rights to run ASP.NET application</li>
<li>Revoke right for account to log on locally to computers</li>
<li>Create app pool in IIS that uses the domain account as its process identity</li>
<li>Configure web application to use custom app pool</li>
<li>(<em>optional</em>)Create service principal names (SPNs) for the domain account</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://softwareblog.morlok.net/2008/06/12/using-windows-authentication-with-an-aspnet-11-application/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Differences Between .NET and JavaScript Date Representations</title>
		<link>http://softwareblog.morlok.net/2008/06/11/differences-between-net-and-javascript-date-representations/</link>
		<comments>http://softwareblog.morlok.net/2008/06/11/differences-between-net-and-javascript-date-representations/#comments</comments>
		<pubDate>Wed, 11 Jun 2008 18:17:58 +0000</pubDate>
		<dc:creator>Warlock</dc:creator>
		
		<category><![CDATA[.NET]]></category>

		<category><![CDATA[date javascript]]></category>

		<guid isPermaLink="false">http://softwareblog.morlok.net/2008/06/11/differences-between-net-and-javascript-date-representations/</guid>
		<description><![CDATA[As someone who spends a great deal of time working with the issues surrounding dates and times, I always appreciate a good article on the topic.  Marcelo has a good post regarding the differences in dates/times .NET developers should be aware of when working with JavaScript.
]]></description>
			<content:encoded><![CDATA[<p>As someone who spends a great deal of time working with the issues surrounding dates and times, I always appreciate a good article on the topic.  Marcelo has a good <a href="http://blogs.msdn.com/marcelolr/archive/2008/06/04/javascript-date-utc-and-local-times.aspx">post</a> regarding the differences in dates/times .NET developers should be aware of when working with JavaScript.</p>
]]></content:encoded>
			<wfw:commentRss>http://softwareblog.morlok.net/2008/06/11/differences-between-net-and-javascript-date-representations/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Vista Short Term Memory Loss</title>
		<link>http://softwareblog.morlok.net/2008/06/03/vista-short-term-memory-loss/</link>
		<comments>http://softwareblog.morlok.net/2008/06/03/vista-short-term-memory-loss/#comments</comments>
		<pubDate>Tue, 03 Jun 2008 22:43:11 +0000</pubDate>
		<dc:creator>Warlock</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://softwareblog.morlok.net/2008/06/03/vista-short-term-memory-loss/</guid>
		<description><![CDATA[My work Vista machine periodically looses its ability to copy things to the clipboard.  I run a fairly complicated environment, with multiple virtual machines open at the same time, but still, it&#8217;s the stupid clipboard.  It&#8217;s been around since the beginning of Windows and I&#8217;m running virtual machines in a Windows virtual machine host running [...]]]></description>
			<content:encoded><![CDATA[<p>My work Vista machine periodically looses its ability to copy things to the clipboard.  I run a fairly complicated environment, with multiple virtual machines open at the same time, but still, it&#8217;s the stupid clipboard.  It&#8217;s been around since the beginning of Windows and I&#8217;m running virtual machines in a Windows virtual machine host running a Windows operating system.  Regardless of where you place the blame it goes back to Microsoft.</p>
]]></content:encoded>
			<wfw:commentRss>http://softwareblog.morlok.net/2008/06/03/vista-short-term-memory-loss/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
