<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/rss2full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>Jonas Bush</title><link>http://community.axosoft.com/blogs/jonasb/default.aspx</link><description>...it's Blog Blog Blog!</description><dc:language>en</dc:language><generator>CommunityServer 2.1 SP2 (Build: 61120.2)</generator><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/axosoft/JonasB" type="application/rss+xml" /><item><title>PureChat demo video at Mix 08</title><link>http://feeds.feedburner.com/~r/axosoft/JonasB/~3/247614827/purechat-demo-video-at-mix-08.aspx</link><pubDate>Fri, 07 Mar 2008 21:58:00 GMT</pubDate><guid isPermaLink="false">d315da8f-0088-447e-a94f-056123fb98a9:15259</guid><dc:creator>Jonas</dc:creator><slash:comments>0</slash:comments><comments>http://community.axosoft.com/blogs/jonasb/comments/15259.aspx</comments><wfw:commentRss>http://community.axosoft.com/blogs/jonasb/commentrss.aspx?PostID=15259</wfw:commentRss><description>&lt;P&gt;Dan and I were at Mix 08 this year, and we had an opportunity to film a short video showing installation and use of PureChat 1.1.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;Enjoy:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://visitmix.com/blogs/OpenSpace/Demo-of-PureChat-from-Axosoft"&gt;http://visitmix.com/blogs/OpenSpace/Demo-of-PureChat-from-Axosoft&lt;/A&gt;&lt;/P&gt;&lt;img src="http://community.axosoft.com/aggbug.aspx?PostID=15259" width="1" height="1"&gt;</description><category domain="http://community.axosoft.com/blogs/jonasb/archive/tags/PureChat+Mix2008/default.aspx">PureChat Mix2008</category><feedburner:origLink>http://community.axosoft.com/blogs/jonasb/archive/2008/03/07/purechat-demo-video-at-mix-08.aspx</feedburner:origLink></item><item><title>PureChat v1.1 Released!</title><link>http://feeds.feedburner.com/~r/axosoft/JonasB/~3/241720136/purechat-v1-1-released.aspx</link><pubDate>Tue, 26 Feb 2008 21:11:00 GMT</pubDate><guid isPermaLink="false">d315da8f-0088-447e-a94f-056123fb98a9:15153</guid><dc:creator>Jonas</dc:creator><slash:comments>0</slash:comments><comments>http://community.axosoft.com/blogs/jonasb/comments/15153.aspx</comments><wfw:commentRss>http://community.axosoft.com/blogs/jonasb/commentrss.aspx?PostID=15153</wfw:commentRss><description>&lt;P&gt;At the end of January, we &lt;A class="" href="http://community.axosoft.com/blogs/jonasb/archive/2008/01/30/announcing-axosoft-purechat.aspx" target=_blank&gt;unveiled&lt;/A&gt; our first release of PureChat. Today I'm happy and proud to announce version 1.1 of PureChat, available for download at &lt;A href="http://www.axosoft.com/products/purechat.aspx"&gt;http://www.axosoft.com/products/purechat.aspx&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;Version 1.1 includes some very cool new features, the most notable of which is we've done away with the requirement that the hosting site be an ASP.Net web site. You still need a .NET 2.0 or 3.5 server to install PureChat, but the site that you want people to request chats from no longer has to be ASP.Net based. What we did for 1.1 was remove the web user control, and replace it with a very small snippet of HTML and javascript. Just drop that snippet anywhere on your web site, and you are all set. :)&lt;/P&gt;
&lt;P&gt;Another announcement is (I believe) a first for Axosoft, in that we are also selling the source code, both for single-site licensing, as well as for redistribution. Now if you want to add things like database functionality, or include PureChat in your own application for redistribution, you have that capability.&lt;/P&gt;
&lt;P&gt;We're looking forward to the next few months to see what overall response is, and what new features we'll be adding to PureChat down the road.&lt;/P&gt;&lt;img src="http://community.axosoft.com/aggbug.aspx?PostID=15153" width="1" height="1"&gt;</description><category domain="http://community.axosoft.com/blogs/jonasb/archive/tags/PureChat/default.aspx">PureChat</category><feedburner:origLink>http://community.axosoft.com/blogs/jonasb/archive/2008/02/26/purechat-v1-1-released.aspx</feedburner:origLink></item><item><title>Axosoft PureChat</title><link>http://feeds.feedburner.com/~r/axosoft/JonasB/~3/227421176/announcing-axosoft-purechat.aspx</link><pubDate>Wed, 30 Jan 2008 20:27:00 GMT</pubDate><guid isPermaLink="false">d315da8f-0088-447e-a94f-056123fb98a9:14825</guid><dc:creator>Jonas</dc:creator><slash:comments>3</slash:comments><comments>http://community.axosoft.com/blogs/jonasb/comments/14825.aspx</comments><wfw:commentRss>http://community.axosoft.com/blogs/jonasb/commentrss.aspx?PostID=14825</wfw:commentRss><description>&lt;P&gt;&lt;FONT face=verdana,geneva&gt;At Axosoft, after we ship major releases of OnTime, we typically have some time to unwind and work on other side projects. These have been ways for the developers here to learn new technologies, or to try out new features and additions to technologies we're currently using. So after we launched OnTime 2008, we had to come up with something else to do to try and let our brains cool down for awhile. :) We also wanted to try and work on something that may have more practical uses in the future, rather than working on purely theoretical ideas.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana&gt;One of the ideas we came up with was a web-based chat application that could be used for things like technical and pre-sales support. With that in mind, I'm thrilled to be able to announce that we're launching our first product other than OnTime for commercial release: &lt;A class="" href="http://www.axosoft.com/products/purechat.aspx" target=_blank&gt;Axosoft PureChat&lt;/A&gt;.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana&gt;There's plenty of other places where we will talk about PureChat from a marketing and sales standpoint, so I wanted to highlight some of the technical aspects of the product.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana&gt;PureChat is written entirely with C# and javascript, against the 2.0 .NET framework. It uses Microsoft's &lt;A class="" href="http://asp.net/ajax/" target=_blank&gt;ASP.Net AJAX&lt;/A&gt;, as well as selected controls from the &lt;A class="" href="http://asp.net/ajax/ajaxcontroltoolkit/" target=_blank&gt;AJAX Control Toolkit&lt;/A&gt;.&amp;nbsp;Before I go any further, I just want to say that the Atlas (I think I'll always call it Atlas, it's shorter and sounds better) javascript framework really adds a lot of value and productivity for doing any sort of extensive work in javascript. Major kudos go out to that team at Microsoft.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana&gt;When we were thinking about the initial goal for&amp;nbsp;PureChat, the main goal was simplicity of use and installation. Everything in PureChat is web-based, there are no thick client apps to install or run, for&amp;nbsp;either the&amp;nbsp;chat operators, or the end users that are requesting chats. As far as installation, there is a small dll (around 520kb as of this writing) that is the&amp;nbsp;PureChat&amp;nbsp;assembly. If your web site does not currently use ASP.Net AJAX or the AJAX Control Toolkit, we provide those assemblies as well in the release. There are also a dozen or so files you will have to copy in to your website architecture. These are the markup pages, user controls and other support files that make PureChat run. To get PureChat up and running, all you have to do is drop the markup for a user control onto your page (typically this would be a master page or a control that resides in a master page, for example a header control). Once that's done, we provide starter images that you can use to represent when an operator is available for a chat. A chat will only be available to be requested when there is an operator logged in and present, ready for incoming chat requests.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana&gt;One of the more interesting things we were able to, from a developer's standpoint, was the creation of grids and treeviews completely in code, and then sending the resulting HTML to the client. We use the built-in gridview and treeview controls that come with ASP.Net on the operator's console, to display things like the list of pending chats, the operators that are currently logged on, and other pieces of information. We create these objects completely through code, render them to a string, and then return the string as part of class that gets returned to the client, serialized as a JSON object.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana&gt;Again, we're very excited about this new product. Please leave any comments you might have here, or on the &lt;A class="" href="http://community.axosoft.com/forums/50/ShowForum.aspx" target=_blank&gt;forums&lt;/A&gt;.&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://community.axosoft.com/aggbug.aspx?PostID=14825" width="1" height="1"&gt;</description><category domain="http://community.axosoft.com/blogs/jonasb/archive/tags/PureChat/default.aspx">PureChat</category><feedburner:origLink>http://community.axosoft.com/blogs/jonasb/archive/2008/01/30/announcing-axosoft-purechat.aspx</feedburner:origLink></item><item><title>Handling Back and Forward in your Application</title><link>http://feeds.feedburner.com/~r/axosoft/JonasB/~3/149431721/handling-back-and-forward-in-your-application.aspx</link><pubDate>Wed, 29 Aug 2007 00:21:00 GMT</pubDate><guid isPermaLink="false">d315da8f-0088-447e-a94f-056123fb98a9:12985</guid><dc:creator>Jonas</dc:creator><slash:comments>1</slash:comments><comments>http://community.axosoft.com/blogs/jonasb/comments/12985.aspx</comments><wfw:commentRss>http://community.axosoft.com/blogs/jonasb/commentrss.aspx?PostID=12985</wfw:commentRss><description>&lt;p&gt;For something we're working on for our next version, I wanted to be able to handle a user clicking on the "back" button on their mouse to do something in OnTime. Turns out this is pretty straightforward in .Net. There's a notification windows sends called &lt;a href="http://msdn2.microsoft.com/en-us/library/ms646275.aspx" target="_blank"&gt;WM_APPCOMMAND&lt;/a&gt;, and the parameters it sends will tell you if the user is pushing the "back" button. The code is fairly simple:&lt;/p&gt;&lt;p&gt;&lt;font face="courier new,courier"&gt;private const int WM_APPCOMMAND = 0x0319;&lt;br&gt;private const int APPCOMMAND_BROWSER_BACKWARD = 1;&lt;br&gt;private const int APPCOMMAND_BROWSER_FORWARD = 2;&lt;br&gt;protected override void WndProc(ref Message m)&lt;br&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (m.Msg == WM_APPCOMMAND)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; int command = (m.LParam.ToInt32() &amp;gt;&amp;gt; 16) &amp;amp; 0x0FFF;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; switch (command)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; case APPCOMMAND_BROWSER_BACKWARD:&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; //go back&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; case APPCOMMAND_BROWSER_FORWARD:&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; //go forward&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; base.WndProc(ref m);&lt;br&gt;}&lt;/font&gt;&lt;/p&gt;&lt;p&gt;You'll see the point of this code in the near future, once we start unveiling some of the new features slated for the next version of OnTime.&lt;br&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://community.axosoft.com/aggbug.aspx?PostID=12985" width="1" height="1"&gt;</description><category domain="http://community.axosoft.com/blogs/jonasb/archive/tags/.NET/default.aspx">.NET</category><feedburner:origLink>http://community.axosoft.com/blogs/jonasb/archive/2007/08/28/handling-back-and-forward-in-your-application.aspx</feedburner:origLink></item><item><title>Inspecting SQL Session State</title><link>http://feeds.feedburner.com/~r/axosoft/JonasB/~3/132460627/inspecting-sql-session-state.aspx</link><pubDate>Tue, 10 Jul 2007 23:44:00 GMT</pubDate><guid isPermaLink="false">d315da8f-0088-447e-a94f-056123fb98a9:12372</guid><dc:creator>Jonas</dc:creator><slash:comments>0</slash:comments><comments>http://community.axosoft.com/blogs/jonasb/comments/12372.aspx</comments><wfw:commentRss>http://community.axosoft.com/blogs/jonasb/commentrss.aspx?PostID=12372</wfw:commentRss><description>&lt;P&gt;We use SQL session state on our hosted environment for OnTime 2007, and we wanted to see what sessions were currently active, and how many sessions were active for a given application. Our first glance at the table structures provided didn't yield any immediate clues. There is an ASPStateTempApplications table that looks like this:&lt;/P&gt;
&lt;P&gt;&lt;IMG title="Applications Table" style="WIDTH:355px;HEIGHT:136px;" height=136 alt="Applications Table" src="http://community.axosoft.com/photos/jonasb/images/12373/original.aspx" width=355&gt;&lt;/P&gt;
&lt;P&gt;In this table, 'AppName' refers to the IIS path of the application; for example '/lm/w3vc/1/root/MyWebSite'.&lt;/P&gt;
&lt;P&gt;Then there is an ASPStateTempSessions table that looks like this:&lt;/P&gt;
&lt;P&gt;&lt;IMG title="Sessions table" style="WIDTH:360px;HEIGHT:328px;" height=328 alt="Sessions table" src="http://community.axosoft.com/photos/jonasb/images/12374/original.aspx" width=360&gt;&lt;/P&gt;
&lt;P&gt;As you can see, there's no AppId column in the sessions table. :) We knew there must be a way that a session entry was tied to an application, it just took some digging into Reflector to find it. It turns out that the SessionId column in the sessions table is a concatenation of an arbitrary identifier from asp.net and the AppId's value in hexadecimal. So all we needed now was a way in T-SQL to convert a hex value to decimal:&lt;/P&gt;&lt;FONT color=#0000ff size=2&gt;
&lt;P&gt;&lt;FONT face="courier new,courier"&gt;CREATE&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="courier new,courier"&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;FUNCTION&lt;/FONT&gt;&lt;FONT size=2&gt; dbo&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;.&lt;/FONT&gt;&lt;FONT size=2&gt;fnHexToInt&lt;BR&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="courier new,courier" color=#808080 size=2&gt;(&lt;BR&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face="courier new,courier"&gt;@HexValue &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="courier new,courier"&gt;&lt;FONT color=#0000ff size=2&gt;nvarchar&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;8&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&lt;FONT face="courier new,courier"&gt;)&lt;BR&gt;&lt;/FONT&gt;&lt;FONT face="courier new,courier"&gt;)&lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;
&lt;P&gt;&lt;FONT face="courier new,courier"&gt;RETURNS&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="courier new,courier" size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT face="courier new,courier"&gt;int&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="courier new,courier"&gt;AS&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="courier new,courier"&gt;BEGIN&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="courier new,courier"&gt;DECLARE&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="courier new,courier" size=2&gt; @tempResult &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT face="courier new,courier"&gt;bigint&lt;BR&gt;&lt;/FONT&gt;&lt;FONT face="courier new,courier"&gt;SET&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="courier new,courier"&gt;&lt;FONT size=2&gt; @tempResult &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt; 0&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;
&lt;P&gt;&lt;FONT face="courier new,courier"&gt;DECLARE&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="courier new,courier" size=2&gt; @result &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT face="courier new,courier"&gt;int&lt;BR&gt;&lt;/FONT&gt;&lt;FONT face="courier new,courier"&gt;SET&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="courier new,courier"&gt;&lt;FONT size=2&gt; @result &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt; 0&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;
&lt;P&gt;&lt;FONT face="courier new,courier"&gt;DECLARE&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="courier new,courier" size=2&gt; @tempInt &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT face="courier new,courier"&gt;bigint&lt;BR&gt;&lt;/FONT&gt;&lt;FONT face="courier new,courier"&gt;SET&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="courier new,courier"&gt;&lt;FONT size=2&gt; @tempInt &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt; 1&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;
&lt;P&gt;&lt;FONT face="courier new,courier"&gt;DECLARE&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="courier new,courier"&gt;&lt;FONT size=2&gt; @HexSet &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;nvarchar&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;16&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;)&lt;BR&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT face="courier new,courier"&gt;SET&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="courier new,courier"&gt;&lt;FONT size=2&gt; @HexSet &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff0000 size=2&gt;'0123456789abcdef'&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="courier new,courier" color=#008000 size=2&gt;
&lt;P&gt;/* Do actual conversion */&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT face="courier new,courier"&gt;WHILE&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="courier new,courier"&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt;len&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;@HexValue&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;)&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&amp;gt;&lt;/FONT&gt;&lt;FONT size=2&gt; 0&lt;BR&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="courier new,courier" color=#0000ff size=2&gt;BEGIN&lt;BR&gt;&lt;/FONT&gt;&lt;FONT face="courier new,courier"&gt;&lt;FONT color=#0000ff size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SET&lt;/FONT&gt;&lt;FONT size=2&gt; @tempResult &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt; @tempResult &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;+&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;@tempInt &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;*&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt;CHARINDEX&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(right(&lt;/FONT&gt;&lt;FONT size=2&gt;@HexValue&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;,&lt;/FONT&gt;&lt;FONT size=2&gt; 1&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;),&lt;/FONT&gt;&lt;FONT size=2&gt; @HexSet&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;)&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;-&lt;/FONT&gt;&lt;FONT size=2&gt; 1&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;))&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="courier new,courier"&gt;&lt;FONT color=#0000ff size=2&gt;SET&lt;/FONT&gt;&lt;FONT size=2&gt; @tempInt &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt; @tempInt &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;*&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face="courier new,courier"&gt; 16&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="courier new,courier"&gt;&lt;FONT color=#0000ff size=2&gt;SET&lt;/FONT&gt;&lt;FONT size=2&gt; @hexValue &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;LEFT(&lt;/FONT&gt;&lt;FONT size=2&gt;@HexValue&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;,&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt;LEN&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;@HexValue&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;)&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;-&lt;/FONT&gt;&lt;FONT size=2&gt;1&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;)&lt;BR&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="courier new,courier" color=#0000ff size=2&gt;END&lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="courier new,courier" color=#008000 size=2&gt;
&lt;P&gt;/* Handle overflow for int */&lt;BR&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT face="courier new,courier"&gt;IF&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="courier new,courier"&gt;&lt;FONT size=2&gt; @tempResult &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&amp;lt;=&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face="courier new,courier"&gt; 2147483647&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Courier New"&gt;&lt;FONT color=#0000ff size=2&gt;SET&lt;/FONT&gt;&lt;FONT size=2&gt; @result &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt; @tempResult&lt;BR&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT face="courier new,courier"&gt;ELSE&lt;BR&gt;&lt;/FONT&gt;&lt;FONT face="courier new,courier"&gt;BEGIN&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="courier new,courier"&gt;&lt;FONT color=#0000ff size=2&gt;DECLARE&lt;/FONT&gt;&lt;FONT size=2&gt; @offset &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;int&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="courier new,courier"&gt;&lt;FONT color=#0000ff size=2&gt;SET&lt;/FONT&gt;&lt;FONT size=2&gt; @offset &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt; @tempResult &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;-&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face="courier new,courier"&gt; 2147483648&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="courier new,courier"&gt;&lt;FONT color=#0000ff size=2&gt;SET&lt;/FONT&gt;&lt;FONT size=2&gt; @result &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;2147483648 &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;-&lt;/FONT&gt;&lt;FONT size=2&gt; @offset&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;)&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;*&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;-&lt;/FONT&gt;&lt;FONT size=2&gt;1&lt;BR&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT face="courier new,courier"&gt;END&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="courier new,courier"&gt;RETURN&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face="courier new,courier"&gt; @result&lt;/FONT&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="courier new,courier" color=#0000ff size=2&gt;
&lt;P&gt;END&lt;/P&gt;&lt;/FONT&gt;&lt;FONT face="courier new,courier" size=2&gt;
&lt;P&gt;GO&lt;/P&gt;&lt;/FONT&gt;
&lt;P&gt;Now that we have that function, we can use this T-SQL command to get the number of current sessions for every application:&lt;/P&gt;&lt;FONT color=#0000ff size=2&gt;
&lt;P&gt;&lt;FONT face="courier new,courier"&gt;SELECT&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="courier new,courier"&gt;&lt;FONT size=2&gt; A&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;.&lt;/FONT&gt;&lt;FONT size=2&gt;AppName&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;,&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt;COUNT&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(&lt;/FONT&gt;&lt;FONT size=2&gt;A&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;.&lt;/FONT&gt;&lt;FONT size=2&gt;AppName&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;)&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;AS&lt;/FONT&gt;&lt;FONT size=2&gt; NumSessions&lt;BR&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT face="courier new,courier"&gt;FROM&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face="courier new,courier"&gt; ASPStateTempSessions S&lt;BR&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&lt;FONT face="courier new,courier"&gt;JOIN&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;&lt;FONT face="courier new,courier"&gt; ASPStateTempApplications A&lt;BR&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT face="courier new,courier"&gt;ON&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="courier new,courier"&gt;&lt;FONT size=2&gt; dbo&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;.&lt;/FONT&gt;&lt;FONT size=2&gt;fnHexToInt&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;(RIGHT(&lt;/FONT&gt;&lt;FONT size=2&gt;SessionId&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;,&lt;/FONT&gt;&lt;FONT size=2&gt; 8&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;))&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;=&lt;/FONT&gt;&lt;FONT size=2&gt; A&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;.&lt;/FONT&gt;&lt;FONT size=2&gt;AppId&lt;BR&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT face="courier new,courier"&gt;WHERE&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="courier new,courier"&gt;&lt;FONT size=2&gt; S&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;.&lt;/FONT&gt;&lt;FONT size=2&gt;Expires &lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;&amp;gt;&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#ff00ff size=2&gt;getdate&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;()&lt;BR&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;FONT face="courier new,courier"&gt;GROUP&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="courier new,courier"&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;by&lt;/FONT&gt;&lt;FONT size=2&gt; A&lt;/FONT&gt;&lt;FONT color=#808080 size=2&gt;.&lt;/FONT&gt;&lt;FONT size=2&gt;AppName&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT size=2&gt;This will be very useful to us for monitoring and tuning our hosted servers. Hopefully this code can be of use to you also. :)&lt;/P&gt;&lt;/FONT&gt;&lt;img src="http://community.axosoft.com/aggbug.aspx?PostID=12372" width="1" height="1"&gt;</description><category domain="http://community.axosoft.com/blogs/jonasb/archive/tags/ASP.Net/default.aspx">ASP.Net</category><category domain="http://community.axosoft.com/blogs/jonasb/archive/tags/SQL/default.aspx">SQL</category><feedburner:origLink>http://community.axosoft.com/blogs/jonasb/archive/2007/07/10/inspecting-sql-session-state.aspx</feedburner:origLink></item><item><title>Dynamic Page Compression in ASP.Net 2.0</title><link>http://feeds.feedburner.com/~r/axosoft/JonasB/~3/116021382/dynamic-page-compression-in-asp-net-2-0.aspx</link><pubDate>Sat, 12 May 2007 00:02:00 GMT</pubDate><guid isPermaLink="false">d315da8f-0088-447e-a94f-056123fb98a9:11606</guid><dc:creator>Jonas</dc:creator><slash:comments>0</slash:comments><comments>http://community.axosoft.com/blogs/jonasb/comments/11606.aspx</comments><wfw:commentRss>http://community.axosoft.com/blogs/jonasb/commentrss.aspx?PostID=11606</wfw:commentRss><description>&lt;p&gt;&lt;font size="2"&gt;&lt;font face="verdana,geneva"&gt;Something I just recently discovered is that, using an HTTP module, you can implement gzip compression for your website in ASP.Net 2.0. The cool thing about doing it through an HTTP module versus using IIS is that with the HTTP module, you can have some logic that decides what pages will be compressed.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font size="2"&gt;&lt;font face="verdana,geneva"&gt;Very nifty stuff. Thanks to the article &lt;a href="http://www.microsoft.com/belux/msdn/nl/community/columns/desmet/compression.mspx" target="_blank"&gt;here&lt;/a&gt; for the source and inspiration.&lt;br&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://community.axosoft.com/aggbug.aspx?PostID=11606" width="1" height="1"&gt;</description><category domain="http://community.axosoft.com/blogs/jonasb/archive/tags/ASP.Net/default.aspx">ASP.Net</category><feedburner:origLink>http://community.axosoft.com/blogs/jonasb/archive/2007/05/11/dynamic-page-compression-in-asp-net-2-0.aspx</feedburner:origLink></item><item><title>Cross-Platform RSS Reader (With C++ Source)</title><link>http://feeds.feedburner.com/~r/axosoft/JonasB/~3/111705333/cross-platform-rss-reader.aspx</link><pubDate>Tue, 24 Apr 2007 23:12:00 GMT</pubDate><guid isPermaLink="false">d315da8f-0088-447e-a94f-056123fb98a9:11361</guid><dc:creator>Jonas</dc:creator><slash:comments>0</slash:comments><comments>http://community.axosoft.com/blogs/jonasb/comments/11361.aspx</comments><wfw:commentRss>http://community.axosoft.com/blogs/jonasb/commentrss.aspx?PostID=11361</wfw:commentRss><description>&lt;P&gt;&lt;FONT face=verdana,geneva&gt;As part of some downtime after our release of OnTime 2007 and the Axosoft Community Site, the developers here took a couple weeks to work on some other projects. As a learning exercise, myself and Adam, another developer here decided to write an RSS reader that would be single-source, and work on multiple platforms. Rather than stay with .Net and use Mono to work on the mac, we decided to use C++ as the language of choice.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana&gt;This was my first foray into the world of unmanaged code, not to mention my first chance to work with an Apple computer for anything other than iTunes. We had to use several external libraries to accomplish this, they are listed below:&lt;/FONT&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;FONT face=Verdana&gt;Boost (&lt;A href="http://www.boost.org/"&gt;http://www.boost.org/&lt;/A&gt;) - Boost provides a great serialization library, which we used for storing the RSS feeds you've subscribed to to disk. They also have a date/time library which we partially used.&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT face=Verdana&gt;wxWidgets (&lt;A href="http://www.wxwidgets.org/"&gt;http://www.wxwidgets.org/&lt;/A&gt;) - wxWidgets is the GUI library we went with. It provides a cross-platform way to declare your UI elements, and uses an XML format to store data about your window elements (somewhat akin to how WPF uses XAML). I ended up using DialogBlocks (&lt;A href="http://www.anthemion.co.uk/dialogblocks/download.htm"&gt;http://www.anthemion.co.uk/dialogblocks/download.htm&lt;/A&gt;) as the GUI builder.&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT face=Verdana&gt;cURL (&lt;A href="http://curl.haxx.se/download.html"&gt;http://curl.haxx.se/download.html&lt;/A&gt;) - cURL provides a way to do web requests (as well as many other supported protocols).&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT face=Verdana&gt;Xerces (&lt;A href="http://xerces.apache.org/"&gt;http://xerces.apache.org/&lt;/A&gt;) - Xerces is a validating XML parser.&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT face=Verdana&gt;Xalan (&lt;A href="http://xalan.apache.org/"&gt;http://xalan.apache.org/&lt;/A&gt;)&amp;nbsp;- Xalan provides libraries for doing XSL transformations.&lt;/FONT&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;FONT face=Verdana&gt;This was a very interesting learning experience for me (Adam, my cohort in this, has significantly more experience than I at unmanaged development). Coming from a .Net world, and never having to significantly worry about things like pointers or memory leaks to C++ really opened my eyes to a new programming style, and I think I've learned some concepts that I can apply in C# as well.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana&gt;Screenshots:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://community.axosoft.com/photos/jonasb/images/11362/500x356.aspx"&gt;&lt;/P&gt;
&lt;P&gt;Windows&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://community.axosoft.com/photos/jonasb/images/11363/500x356.aspx"&gt;&lt;/P&gt;
&lt;P&gt;Mac&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The source code is &lt;A class="" href="http://community.axosoft.com/files/folders/axosoftlabs/default.aspx" target=_blank&gt;here&lt;/A&gt;, so you can peruse through it if you dare. ;)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://community.axosoft.com/aggbug.aspx?PostID=11361" width="1" height="1"&gt;</description><category domain="http://community.axosoft.com/blogs/jonasb/archive/tags/Miscellaneous/default.aspx">Miscellaneous</category><category domain="http://community.axosoft.com/blogs/jonasb/archive/tags/Axosoft+Labs/default.aspx">Axosoft Labs</category><feedburner:origLink>http://community.axosoft.com/blogs/jonasb/archive/2007/04/24/cross-platform-rss-reader.aspx</feedburner:origLink></item><item><title>Readonly Textboxes</title><link>http://feeds.feedburner.com/~r/axosoft/JonasB/~3/103628251/ReadonlyTextboxes.aspx</link><pubDate>Thu, 22 Mar 2007 16:14:00 GMT</pubDate><guid isPermaLink="false">d315da8f-0088-447e-a94f-056123fb98a9:10799</guid><dc:creator>Jonas</dc:creator><slash:comments>1</slash:comments><comments>http://community.axosoft.com/blogs/jonasb/comments/10799.aspx</comments><wfw:commentRss>http://community.axosoft.com/blogs/jonasb/commentrss.aspx?PostID=10799</wfw:commentRss><description>&lt;P&gt;&lt;FONT face=verdana,geneva&gt;Hey, I'm blogging again!&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana&gt;During our work on OnTime 2007, we completely rewrote the web portion from scratch, to take full advantage of the new features in ASP.Net 2.0. Doing this let us see some interesting changes in the framework. One of them is as follows:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana&gt;In OnTime, you have the option of making a field readonly using field templates. For example, if you didn't want people changing the name of a defect, you could accomplish that with field templates and workflow. OnTime dynamically creates the add/edit defect page based on your field template, so if you have a readonly field, it creates code similar to the following:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;code&gt;&lt;span style="color: Black;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;TextBox tb &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;new&lt;/span&gt; TextBox();&lt;br /&gt;tb.Id &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; &lt;span style="color: #666666;background-color: #e4e4e4;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;"Name"&lt;/span&gt;;&lt;br /&gt;tb.ReadOnly &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; &lt;span style="color: Blue;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;true&lt;/span&gt;;&lt;br /&gt;tb.Text &lt;span style="color: Red;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;=&lt;/span&gt; &lt;span style="color: #666666;background-color: #e4e4e4;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;"Test Defect"&lt;/span&gt;;&lt;br /&gt;Page.Form.Controls.Add(tb);&lt;/span&gt;&lt;/code&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana&gt;So this textbox doesn't actually exist on the page at design time. Due to a way we handle postback events, and an interesting quirk in how the TextBox control handes the &lt;A class="" target=_blank&gt;LoadPostData&lt;/A&gt; method (note, you need &lt;A class="" href="http://www.aisto.com/roeder/dotnet/Download.aspx?File=Reflector" target=_blank&gt;Reflector&lt;/A&gt; 5.0 or greater to see that link), the data inside the textbox would disappear after postback. Since we needed a way to make the textbox readonly, and we couldn't use the server-side property to affect that, we ended up changing it to this:&lt;/FONT&gt;&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&lt;code&gt;&lt;span style="color: Black;background-color: Transparent;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;tb.Attributes.Add(&lt;span style="color: #666666;background-color: #e4e4e4;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;"readonly"&lt;/span&gt;, &lt;span style="color: #666666;background-color: #e4e4e4;font-family: Courier New;font-size: 11px;font-weight: normal;"&gt;"readonly"&lt;/span&gt;);&lt;/span&gt;&lt;/code&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana&gt;Which let us keep the textbox readonly (that's all the ReadOnly property was doing to the resultant HTML anyway), and trick ASP.Net into not tossing away our data.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana&gt;Hopefully this can save some of you the headache we ran into!&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="FONT-FAMILY:verdana,geneva;"&gt;&lt;FONT size=1&gt;(Edit: for whatever reason, that code:// link isn't showing up, so you can just cut and paste it here)&lt;/FONT&gt;&lt;/P&gt;
&lt;P style="FONT-FAMILY:verdana,geneva;"&gt;&lt;FONT size=1&gt;code://System.Web:2.0.0.0:b03f5f7f11d50a3a/System.Web.UI.WebControls.TextBox/LoadPostData(String,System.Collections.Specialized.NameValueCollection):Boolean&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://community.axosoft.com/aggbug.aspx?PostID=10799" width="1" height="1"&gt;</description><category domain="http://community.axosoft.com/blogs/jonasb/archive/tags/OnTime/default.aspx">OnTime</category><category domain="http://community.axosoft.com/blogs/jonasb/archive/tags/ASP.Net/default.aspx">ASP.Net</category><feedburner:origLink>http://community.axosoft.com/blogs/jonasb/archive/2007/03/22/ReadonlyTextboxes.aspx</feedburner:origLink></item><item><title>OnTime 2006 - Perforce Support</title><link>http://feeds.feedburner.com/~r/axosoft/JonasB/~3/103454389/ontime-2006-perforce-support.aspx</link><pubDate>Wed, 28 Sep 2005 22:15:00 GMT</pubDate><guid isPermaLink="false">d315da8f-0088-447e-a94f-056123fb98a9:2169</guid><dc:creator>Jonas</dc:creator><slash:comments>4</slash:comments><comments>http://community.axosoft.com/blogs/jonasb/comments/2169.aspx</comments><wfw:commentRss>http://community.axosoft.com/blogs/jonasb/commentrss.aspx?PostID=2169</wfw:commentRss><description>&lt;p&gt;&lt;font face="Verdana" size="2"&gt;I just put the wraps on the code for the Perforce Plugin for OnTime 2006.&amp;nbsp; You can expect it in the next beta drop we do.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana" size="2"&gt;Coming from using VSS and Vault, perforce seemed very complex initially.&amp;nbsp; Thankfully, they have extensive documentation on their website, which really helped accelerate my learning curve.&amp;nbsp; The Perforce plugin for OnTime will support all the same functionality as the existing plugins; you can check items in and out from OnTime, view the history of a file, and see a file at a specific revision.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana" size="2"&gt;There was quite a challenging issue I had to overcome while writing this, and Google proved no help, so I thought I'd document it here.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana" size="2"&gt;When you submit a changelist through perforce's command line, it normally pops up a form (using notepad by default) where you can put in a description (comments) of your changelist.&amp;nbsp; In VSS and Vault, I could specify comments through the commandline:&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Courier New" size="2"&gt;vault checkin “myfile.cs” -c “my comments here” (or something like that)&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana" size="2"&gt;Perforce doesn't support that, but it does support reading in a file from disk that contains that form, so you can issue this command:&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Courier New" size="2"&gt;p4 submit -i &amp;lt; “mychangelist.txt”&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana" size="2"&gt;However, there's a problem when trying to do this through .NET.&amp;nbsp; Rather than just being able to say:&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Courier New" size="2"&gt;Process p = new Process();&lt;br&gt;p.StartInfo.FileName = @”c:\program files\perforce\p4.exe”;&lt;br&gt;p.StartInfo.Arguments = “ -i &amp;lt; \”mychangelist.txt\””;&lt;br&gt;p.StartInfo.UseShellExecute = false;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;&lt;font size="2"&gt;I had to use the Process object's StandardInput property to actually write the contents of that file directly to the process. I'm not 100% sure why that is (any of you reading this that know the reason, by all means let me know), but it took some probing and guesswork to find the solution:&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;&lt;font size="2"&gt;&lt;font face="Courier New"&gt;Process p = new Process();&lt;br&gt;p.StartInfo.FileName = @“c:\program files\perforce\p4.exe“;&lt;br&gt;p.StartInfo.Arguments = “ -i “;&lt;br&gt;p.StartInfo.UseShellExecute = false;&lt;br&gt;p.StartInfo.RedirectStandardInput = true;&lt;br&gt;p.Start();&lt;br&gt;p.StandardInput.WriteLine(/* contents of the file here */);&lt;br&gt;p.StandardInput.Flush();&lt;br&gt;p.StandardInput.Close();&lt;/font&gt;&lt;br&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;&lt;font size="2"&gt;And success!&amp;nbsp; Our changelist gets submitted.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana"&gt;&lt;font size="2"&gt;We're really thrilled with all the feedback we've gotten so far from Beta 1.&amp;nbsp; Keep it coming!&amp;nbsp; We'll be doing another Beta drop here in the coming weeks, which will include the perforce plugin, as well as other new features.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;font face="Verdana"&gt;&lt;font size="-0"&gt;&lt;font size="2"&gt;&lt;font size="-0"&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;img src="http://community.axosoft.com/aggbug.aspx?PostID=2169" width="1" height="1"&gt;</description><feedburner:origLink>http://community.axosoft.com/blogs/jonasb/archive/2005/09/28/ontime-2006-perforce-support.aspx</feedburner:origLink></item><item><title>Live from the PDC (sort of)</title><link>http://feeds.feedburner.com/~r/axosoft/JonasB/~3/103454390/live-from-the-pdc-sort-of.aspx</link><pubDate>Mon, 12 Sep 2005 04:38:00 GMT</pubDate><guid isPermaLink="false">d315da8f-0088-447e-a94f-056123fb98a9:2150</guid><dc:creator>Jonas</dc:creator><slash:comments>0</slash:comments><comments>http://community.axosoft.com/blogs/jonasb/comments/2150.aspx</comments><wfw:commentRss>http://community.axosoft.com/blogs/jonasb/commentrss.aspx?PostID=2150</wfw:commentRss><description>&lt;p&gt;&lt;font face="Verdana" size="2"&gt;So we're here in sunny Los Angeles for the PDC.&amp;nbsp; We're staying at The Standard in downtown LA, which is quite the interesting place.&amp;nbsp; Tomorrow is booth setup day, so hopefully we'll&amp;nbsp;have some good pictures of our booth layout.&amp;nbsp; Be sure to stop by to see demos of OnTime, and possible a preview of what's to come in OnTime 2006!&lt;/font&gt;&lt;/p&gt;&lt;img src="http://community.axosoft.com/aggbug.aspx?PostID=2150" width="1" height="1"&gt;</description><feedburner:origLink>http://community.axosoft.com/blogs/jonasb/archive/2005/09/11/live-from-the-pdc-sort-of.aspx</feedburner:origLink></item><item><title>FireFox again</title><link>http://feeds.feedburner.com/~r/axosoft/JonasB/~3/103454391/firefox-again.aspx</link><pubDate>Tue, 26 Jul 2005 22:20:00 GMT</pubDate><guid isPermaLink="false">d315da8f-0088-447e-a94f-056123fb98a9:1877</guid><dc:creator>Jonas</dc:creator><slash:comments>0</slash:comments><comments>http://community.axosoft.com/blogs/jonasb/comments/1877.aspx</comments><wfw:commentRss>http://community.axosoft.com/blogs/jonasb/commentrss.aspx?PostID=1877</wfw:commentRss><description>&lt;P&gt;&lt;FONT face=Verdana size=2&gt;While browsing some other blogs, I found &lt;A href="http://weblogs.asp.net/dr.netjes/archive/2005/06/23/414712.aspx"&gt;this&lt;/A&gt; post talking about how FireFox handles whitespace as a DOM node.&amp;nbsp; The example he gave triggered something in my head, and I realized that we had the same issue in OnTime.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;In the web version, you can choose to have datagrid rows highlight when you move over them.&amp;nbsp; When we implemented multi-edit functionality, we had to change some things that affect the way the row's CSS is changed (related to alternating row colors and such).&amp;nbsp; The javascript I came up with worked in IE, but for the life of me I couldn't get it to work in Firefox.&amp;nbsp; We eventually decided to leave it in as is, and the bug got pushed to the back of our minds.&amp;nbsp; So when I saw the above-mentioned post, it sprang right back to the front.&amp;nbsp; After some testing, I came up with a way to replace this:&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" color=#0000ff size=2&gt;elem = thisRow.childNodes[0].childNodes[0];&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;with a custom function that would return the first child node of an element that contained a tagName property.&amp;nbsp; The end result is that in FireFox (as of 5.3, which is still in development), when you mouse over a datagrid row, it will light up, just like its IE bretheren!&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://community.axosoft.com/aggbug.aspx?PostID=1877" width="1" height="1"&gt;</description><feedburner:origLink>http://community.axosoft.com/blogs/jonasb/archive/2005/07/26/firefox-again.aspx</feedburner:origLink></item><item><title>OnTime v6 and Source Code Control - Part 3</title><link>http://feeds.feedburner.com/~r/axosoft/JonasB/~3/103454392/ontime-v6-and-source-code-control-part-3.aspx</link><pubDate>Thu, 14 Jul 2005 14:47:00 GMT</pubDate><guid isPermaLink="false">d315da8f-0088-447e-a94f-056123fb98a9:1855</guid><dc:creator>Jonas</dc:creator><slash:comments>6</slash:comments><comments>http://community.axosoft.com/blogs/jonasb/comments/1855.aspx</comments><wfw:commentRss>http://community.axosoft.com/blogs/jonasb/commentrss.aspx?PostID=1855</wfw:commentRss><description>&lt;P&gt;&lt;FONT face=Verdana size=1&gt;Part 1 can be found &lt;A href="http://blogs.axosoft.com/jonasb/archive/2005/07/05/1827.aspx"&gt;here&lt;/A&gt;.&lt;BR&gt;Part 2 can be found &lt;A href="http://blogs.axosoft.com/jonasb/archive/2005/07/06/1829.aspx"&gt;here&lt;/A&gt;.&lt;/FONT&gt;&lt;/P&gt;&lt;FONT face=Verdana size=2&gt;
&lt;P&gt;Previously, I've demonstrated how we can set up a Source Control Provider in OnTime, and add a link between a defect in OnTime and a file under Source Control.&amp;nbsp; Now I'll show you the fun part, how to check files in and out through OnTime.&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://localhost/photos/jonasb/images/3352/500x330.aspx"&gt;&lt;/P&gt;
&lt;P&gt;Here we see our defect with the file link that was created last time. Now, you can click on the "check out button", and presto:&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://localhost/photos/jonasb/images/3353/500x330.aspx"&gt;&lt;/P&gt;
&lt;P&gt;We see now that OnTime is telling us that the file is checked out. Let's go edit it.&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://localhost/photos/jonasb/images/3354/500x350.aspx"&gt;&lt;/P&gt;
&lt;P&gt;We've edited our file and saved it, so let's come back to OnTime and check it back in.&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://localhost/photos/jonasb/images/3355/original.aspx"&gt;&lt;/P&gt;
&lt;P&gt;After we put in any checkin comments and click on "Checkin", the file is now checked back in to Vault. However, we may need to see what the history of the file as well. Through OnTime, we can do this also:&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://localhost/photos/jonasb/images/3356/500x329.aspx"&gt;&lt;/P&gt;
&lt;P&gt;Click on "View History" and the history for the file is brought up (you can also select a version of the file and click on "View" to see the file as it existed at that version):&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://localhost/photos/jonasb/images/3357/original.aspx"&gt;&lt;/P&gt;
&lt;P&gt;Here is Vault's history explorer for comparison:&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://localhost/photos/jonasb/images/3359/500x310.aspx"&gt;&lt;/P&gt;We've also added the SCM integration into OnTime for VS.Net: 
&lt;P&gt;&lt;IMG src="http://localhost/photos/jonasb/images/3361/473x375.aspx"&gt;&lt;/P&gt;
&lt;P&gt;That just about covers everything as far as SCM integration goes. As always if you have any questions or comments, please let me know.&lt;/P&gt;&lt;/FONT&gt;&lt;img src="http://community.axosoft.com/aggbug.aspx?PostID=1855" width="1" height="1"&gt;</description><feedburner:origLink>http://community.axosoft.com/blogs/jonasb/archive/2005/07/14/ontime-v6-and-source-code-control-part-3.aspx</feedburner:origLink></item><item><title>OnTime v6 and Source Code Control - Part 2</title><link>http://feeds.feedburner.com/~r/axosoft/JonasB/~3/103454393/ontime-v6-and-source-code-control-part-2.aspx</link><pubDate>Wed, 06 Jul 2005 18:24:00 GMT</pubDate><guid isPermaLink="false">d315da8f-0088-447e-a94f-056123fb98a9:1829</guid><dc:creator>Jonas</dc:creator><slash:comments>2</slash:comments><comments>http://community.axosoft.com/blogs/jonasb/comments/1829.aspx</comments><wfw:commentRss>http://community.axosoft.com/blogs/jonasb/commentrss.aspx?PostID=1829</wfw:commentRss><description>&lt;P&gt;&lt;FONT face=Verdana size=2&gt;In my &lt;A href="http://blogs.axosoft.com/jonasb/archive/2005/07/05/1827.aspx"&gt;last post&lt;/A&gt;, I showed you how to set up a project in OnTime to use the new Source Control Management features.&amp;nbsp; Today, I'll show you the more useful bits, being able to check items in and out from OnTime.&lt;/P&gt;
&lt;P&gt;
&lt;HR id=null&gt;

&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://localhost/photos/jonasb/images/3348/500x330.aspx"&gt;&lt;/P&gt;
&lt;P&gt;Here's the new "SCM Files" tab, which is where you can view any file links you have already made. Click on the "Add Link" button and you'll see this screen:&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://localhost/photos/jonasb/images/3349/500x351.aspx"&gt;&lt;/P&gt;
&lt;P&gt;Notice that the folder view on the left is limited to a "default folder" that you can choose on the Manage SCM form. If you want to see all the files in your chosen repository/database, check the "Show All Files" checkbox.&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://localhost/photos/jonasb/images/3351/500x351.aspx"&gt;&lt;/P&gt;
&lt;P&gt;Here you can see we've added a link to dataaccess.cs. Now we can save this link and access it from the main OnTime window:&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://localhost/photos/jonasb/images/3352/500x330.aspx"&gt;&lt;/P&gt;
&lt;P&gt;Next time: checking items out and in through OnTime!&lt;/P&gt;&lt;/FONT&gt;&lt;img src="http://community.axosoft.com/aggbug.aspx?PostID=1829" width="1" height="1"&gt;</description><feedburner:origLink>http://community.axosoft.com/blogs/jonasb/archive/2005/07/06/ontime-v6-and-source-code-control-part-2.aspx</feedburner:origLink></item><item><title>OnTime v6 and Source Code Control - Part 1</title><link>http://feeds.feedburner.com/~r/axosoft/JonasB/~3/103454394/ontime-v6-and-source-code-control-part-1.aspx</link><pubDate>Tue, 05 Jul 2005 22:34:00 GMT</pubDate><guid isPermaLink="false">d315da8f-0088-447e-a94f-056123fb98a9:1827</guid><dc:creator>Jonas</dc:creator><slash:comments>8</slash:comments><comments>http://community.axosoft.com/blogs/jonasb/comments/1827.aspx</comments><wfw:commentRss>http://community.axosoft.com/blogs/jonasb/commentrss.aspx?PostID=1827</wfw:commentRss><description>&lt;P&gt;&lt;FONT face=Verdana size=2&gt;One of the features we're adding into the next version of OnTime is source control integration.&amp;nbsp; As we near completion on this feature, I thought I'd take some time to give a small preview of how this will work. I would love to do a preview release to get this into your hands, but I don't think we'll be able to do that outside of our actual beta, so the screenshots will have to do.&lt;/FONT&gt;&lt;/P&gt;&lt;FONT face=Verdana size=2&gt;
&lt;P&gt;
&lt;HR id=null&gt;

&lt;P&gt;&lt;/P&gt;
&lt;P&gt;(Throughout this, I will use the term SCM to mean Source Control Management).&lt;/P&gt;
&lt;P&gt;You can manage your SCM settings on a per-project basis:&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://localhost/photos/jonasb/images/3340/500x331.aspx"&gt;&lt;/P&gt;
&lt;P&gt;OnTime uses a plugin-style architecture for SCM configuration.&amp;nbsp; When OnTime v6 ships, we will support (at a minimum) VSS and SourceGear vault.&amp;nbsp; (If you're reading this and you use something different, &lt;A href="mailto:jonasbNOSPAM@axosoft.com"&gt;tell me&lt;/A&gt;! (remove NOSPAM for better email delivery)).&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://localhost/photos/jonasb/images/3342/500x240.aspx"&gt;&lt;/P&gt;
&lt;P&gt;Since we use &lt;A href="http://www.sourcegear.com/vault/index.html"&gt;Vault&lt;/A&gt; here at Axosoft, we'll start there:&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://localhost/photos/jonasb/images/3343/500x240.aspx"&gt;&lt;/P&gt;
&lt;P&gt;Rather than go with an API-based approach, we decided to use the command line clients for VSS and Vault (Vault has an API, but it's not frozen, and SourceSafe's requires an NDA just to see).&amp;nbsp; Since every other source control tool that I'm aware of uses a command line client in some way, we decided this would be the best route to take.&amp;nbsp; In fact, SourceGear seemed to anticipate someone doing this, their command line client returns XML!&amp;nbsp; &lt;A href="http://subversion.tigris.org/"&gt;Subversion&lt;/A&gt;'s command line client also appears to have an option to return XML.&amp;nbsp; So if you do use&amp;nbsp;a different source control provider, you can choose to implement the interface we've defined and write your own plugin for OnTime (contact me for more details).&lt;/P&gt;
&lt;P&gt;So on this screen, you would need to provide the location of your vault command line client, as well as your authentication information for your vault server.&amp;nbsp; (You can also optionally provide the path to the Vault GUI client, so that it can be launched from within OnTime).&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://localhost/photos/jonasb/images/3345/500x240.aspx"&gt;&lt;/P&gt;
&lt;P&gt;Unlike SourceSafe, Vault can have multiple repositories for a single installation (SourceSafe's method of handling multiple databases is a little different, so their configuration screens will look a little different).&amp;nbsp; On the next screen, you must select a repository, and you can also select a default folder for the project you are working on.&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://localhost/photos/jonasb/images/3347/500x240.aspx"&gt;&lt;/P&gt;&lt;p&gt;In my next post, I'l look at adding links between items&amp;nbsp;within OnTime and items in your&amp;nbsp;configured source control provider.&lt;/p&gt;&lt;p&gt;Edit: Part 2 is up &lt;A href="http://blogs.axosoft.com/jonasb/archive/2005/07/06/1829.aspx"&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;/FONT&gt;&lt;img src="http://community.axosoft.com/aggbug.aspx?PostID=1827" width="1" height="1"&gt;</description><feedburner:origLink>http://community.axosoft.com/blogs/jonasb/archive/2005/07/05/ontime-v6-and-source-code-control-part-1.aspx</feedburner:origLink></item><item><title>VSTS 2005 revisited</title><link>http://feeds.feedburner.com/~r/axosoft/JonasB/~3/103454395/vsts-2005-revisited.aspx</link><pubDate>Tue, 10 May 2005 17:13:00 GMT</pubDate><guid isPermaLink="false">d315da8f-0088-447e-a94f-056123fb98a9:721</guid><dc:creator>Jonas</dc:creator><slash:comments>5</slash:comments><comments>http://community.axosoft.com/blogs/jonasb/comments/721.aspx</comments><wfw:commentRss>http://community.axosoft.com/blogs/jonasb/commentrss.aspx?PostID=721</wfw:commentRss><description>&lt;P&gt;&lt;FONT face=Verdana size=2&gt;And another thing!&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;It'd really be cool if you could create a new Team Project that was populated with sample data, so you can get an idea of how to use the system and see some of the reporting capabilities.&amp;nbsp; (Some of the reports are dependent upon data over time, which is just easier to achieve w/ sample data that's provided).&amp;nbsp; Although, I don't think there's an easy way to delete a team project in the Beta 2 edition, so perhaps it's just as well that they don't include this right now. :)&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://community.axosoft.com/aggbug.aspx?PostID=721" width="1" height="1"&gt;</description><feedburner:origLink>http://community.axosoft.com/blogs/jonasb/archive/2005/05/10/vsts-2005-revisited.aspx</feedburner:origLink></item><item><title>VSTS 2005</title><link>http://feeds.feedburner.com/~r/axosoft/JonasB/~3/103454396/vsts-2005.aspx</link><pubDate>Tue, 10 May 2005 00:18:00 GMT</pubDate><guid isPermaLink="false">d315da8f-0088-447e-a94f-056123fb98a9:713</guid><dc:creator>Jonas</dc:creator><slash:comments>0</slash:comments><comments>http://community.axosoft.com/blogs/jonasb/comments/713.aspx</comments><wfw:commentRss>http://community.axosoft.com/blogs/jonasb/commentrss.aspx?PostID=713</wfw:commentRss><description>&lt;P&gt;&lt;FONT face=Verdana size=2&gt;As a part of doing some competitive analysis, we've installed the latest Beta of Microsoft's Visual Studio Team Suite, including the Team Foundation Server. Due to be released sometime later this year (in theory), the latest version of the .NET IDE includes some powerful integration tools for team developers, including integrated management tools for source code control, builds, code analysis and testing, as well as our area of focus, Work Item Tracking. In order to get a feel for everything, we setup the Team Foundation Server, Team Build Server and the Visual Studio Team Suite here, with the intent on using the system for a small project. After tracking down the latest instructions (http://blogs.msdn.com/robcaron/archive/2005/04/23/411192.aspx), our install was up and ready to go. Here are some of my installations after settings things up and playing around for a day or so: &lt;/FONT&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;FONT face=Verdana size=2&gt;The setup, as it stands right now, is fairly complex, requiring a very specific environment to be able to test the entire suite successfully. I've read that as we get closer to release, certain requirements will start disappearing (e.g., TFS currently uses AD/AM to store security information, which will migrate to be stored in SQL by release). &lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT face=Verdana size=2&gt;The initial impression of everything is quite favorable. I really like having all the different tools (SCM, Build systems, unit testing, work item tracking) in a single application, all very tightly interwoven. As an example, when you check in a change to the source control server, you can associate the changeset with one or more work items. Later, when you perform a team build, you can see a list of all the changesets and all the work items that went into that build. This would be stellar for developers in larger organizations, wondering if their changes got merged into the build or not. &lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT face=Verdana size=2&gt;There are some things that seem lacking. As it stands right now, you can set up email notifications when certain things happen, but there are only 4 "alert triggers", and the interface you use to define who gets what email isn't very robust. Currently you just enter in email addresses in plain text; I'm kind of surprised there isn't a way to integrate w/ Exchange Server somehow. &lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT face=Verdana size=2&gt;Also, a work item has a (seemingly) fixed number of fields you can enter data in, there doesn't seem to be a way to enter in any custom fields. Also, with only a couple exceptions that I found, you can't customize the data that goes into any (non-text) fields. So for the status of a bug, for example, there's only 3 or 4 choices that you can pick from. I think these choices (and other pick list values) are defined by the methodology you chose when setting up the project initially. In Beta 2, only MSF Agile is available, but you can export it to disk, edit it, and then reimport it to get your own methodology. As far as I know, the data for each process is stored in a collection of XML files, so the editing is easy, but I don't know how much guidance you can expect from MS at this stage. &lt;/FONT&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;There's a lot of features in the suite that I don't think I've even delved into yet, so I'm excited to be able to play around with it some more over the next few days. I'll post more impressions here as I get them. :)&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://community.axosoft.com/aggbug.aspx?PostID=713" width="1" height="1"&gt;</description><feedburner:origLink>http://community.axosoft.com/blogs/jonasb/archive/2005/05/09/vsts-2005.aspx</feedburner:origLink></item><item><title>OnTime 2005 and FireFox</title><link>http://feeds.feedburner.com/~r/axosoft/JonasB/~3/103454397/ontime-2005-and-firefox.aspx</link><pubDate>Wed, 30 Mar 2005 16:44:00 GMT</pubDate><guid isPermaLink="false">d315da8f-0088-447e-a94f-056123fb98a9:447</guid><dc:creator>Jonas</dc:creator><slash:comments>3</slash:comments><comments>http://community.axosoft.com/blogs/jonasb/comments/447.aspx</comments><wfw:commentRss>http://community.axosoft.com/blogs/jonasb/commentrss.aspx?PostID=447</wfw:commentRss><description>&lt;FONT face=Verdana size=2&gt;We've had lots of comments and feedback since we released OnTime 2005 about how the web version looks in non-IE browsers, specifically FireFox.&amp;nbsp; With the latest patch (5.0.2) now available on our website for download, I believe we've nailed down&amp;nbsp;most of the major rendering issues that were still plaguing FireFox users.&amp;nbsp; If there are any more cases where a page isn't rendering properly in FireFox (or in IE, or Safari or Netscape or Lynx or whatever), post a comment here, or send me an email at &lt;A href="mailto:jonasb@axosoft.com"&gt;jonasb@axosoft.com&lt;/A&gt;&amp;nbsp;and I'll be sure to look into it (although I can't promise much support for Lynx ;)).&lt;/FONT&gt;&lt;img src="http://community.axosoft.com/aggbug.aspx?PostID=447" width="1" height="1"&gt;</description><feedburner:origLink>http://community.axosoft.com/blogs/jonasb/archive/2005/03/30/ontime-2005-and-firefox.aspx</feedburner:origLink></item><item><title>Computer Zen</title><link>http://feeds.feedburner.com/~r/axosoft/JonasB/~3/103454398/computer-zen.aspx</link><pubDate>Thu, 24 Mar 2005 19:33:00 GMT</pubDate><guid isPermaLink="false">d315da8f-0088-447e-a94f-056123fb98a9:399</guid><dc:creator>Jonas</dc:creator><slash:comments>0</slash:comments><comments>http://community.axosoft.com/blogs/jonasb/comments/399.aspx</comments><wfw:commentRss>http://community.axosoft.com/blogs/jonasb/commentrss.aspx?PostID=399</wfw:commentRss><description>&lt;P&gt;&lt;FONT face=Verdana size=2&gt;Scott Hanselman over at &lt;A href="http://www.hanselman.com/blog/"&gt;Computer Zen&lt;/A&gt;&amp;nbsp;has a great list of tools that he uses, which can be found &lt;A href="http://www.hanselman.com/blog/content/radiostories/2003/09/09/scottHanselmansUltimateDeveloperAndPowerUsersToolsList.html"&gt;here&lt;/A&gt;.&amp;nbsp; The screen ruler and the zoomin tool are great for helping to figure out why CSS, FireFox and IE aren't behaving nicely (although that's probably an altogether&amp;nbsp;different story).&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://community.axosoft.com/aggbug.aspx?PostID=399" width="1" height="1"&gt;</description><feedburner:origLink>http://community.axosoft.com/blogs/jonasb/archive/2005/03/24/computer-zen.aspx</feedburner:origLink></item><item><title>VS2005 Chat</title><link>http://feeds.feedburner.com/~r/axosoft/JonasB/~3/103454399/vs2005-chat.aspx</link><pubDate>Fri, 18 Mar 2005 19:55:00 GMT</pubDate><guid isPermaLink="false">d315da8f-0088-447e-a94f-056123fb98a9:366</guid><dc:creator>Jonas</dc:creator><slash:comments>0</slash:comments><comments>http://community.axosoft.com/blogs/jonasb/comments/366.aspx</comments><wfw:commentRss>http://community.axosoft.com/blogs/jonasb/commentrss.aspx?PostID=366</wfw:commentRss><description>&lt;P&gt;&lt;FONT face=Verdana size=2&gt;There was an MSDN chat today on VS2005, you can see an unformatted, unedited transcript &lt;A href="http://channel9.msdn.com/ShowPost.aspx?PostID=49356"&gt;here&lt;/A&gt;.&amp;nbsp; One of the things I was interested in is if the Unit Testing tools were going to make it into the non-VSTS editions of VS2005, which apparently, they're not, saying &amp;#8220;NUnit is good enough&amp;#8221; for the people who aren't using Team System.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Verdana size=2&gt;While part of me is glad that they embrace 3rd party ISV's and such (even though NUnit isn't sold for profit, and, hello, OnTime is :)), another part of me doesn't like where this is headed.&amp;nbsp; Especially with MS coming out with versions of VS aimed at hobbyists and students, I would think that something like &lt;a href="http://www.nunit.org/tdd-book.html"&gt;Unit Testing&lt;/a&gt; would be something you'd want the kids to pick up on sooner, rather than later.&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://community.axosoft.com/aggbug.aspx?PostID=366" width="1" height="1"&gt;</description><feedburner:origLink>http://community.axosoft.com/blogs/jonasb/archive/2005/03/18/vs2005-chat.aspx</feedburner:origLink></item><item><title>Favorite OnTime Feature</title><link>http://feeds.feedburner.com/~r/axosoft/JonasB/~3/103454400/favorite-ontime-feature.aspx</link><pubDate>Sat, 05 Feb 2005 05:42:00 GMT</pubDate><guid isPermaLink="false">d315da8f-0088-447e-a94f-056123fb98a9:243</guid><dc:creator>Jonas</dc:creator><slash:comments>0</slash:comments><comments>http://community.axosoft.com/blogs/jonasb/comments/243.aspx</comments><wfw:commentRss>http://community.axosoft.com/blogs/jonasb/commentrss.aspx?PostID=243</wfw:commentRss><description>&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;So I was looking over the code today as well as the beta announcement and wondered what your favorite existing OnTime feature is, as well as (if you're using the beta), what your favorite new feature is.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT face="Courier New" size=2&gt;I think my favorite new feature is the multi-editing capabilities (and not just because I wrote them ;)).&amp;nbsp; It's an excellent time-saver, and I really like how it's implemented in the web version (although getting FireFox and IE code to exist peacefully is quite an endeavor).&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://community.axosoft.com/aggbug.aspx?PostID=243" width="1" height="1"&gt;</description><feedburner:origLink>http://community.axosoft.com/blogs/jonasb/archive/2005/02/04/favorite-ontime-feature.aspx</feedburner:origLink></item><item><title>"Hello World"</title><link>http://feeds.feedburner.com/~r/axosoft/JonasB/~3/103454401/hello-world.aspx</link><pubDate>Fri, 04 Feb 2005 20:13:00 GMT</pubDate><guid isPermaLink="false">d315da8f-0088-447e-a94f-056123fb98a9:242</guid><dc:creator>Jonas</dc:creator><slash:comments>0</slash:comments><comments>http://community.axosoft.com/blogs/jonasb/comments/242.aspx</comments><wfw:commentRss>http://community.axosoft.com/blogs/jonasb/commentrss.aspx?PostID=242</wfw:commentRss><description>&lt;FONT face="Courier New" size=2&gt;I've never been one for blogging much, but here at Axosoft we are all about the community, so I blog. Now that we've released the &lt;A href="http://www.axosoft.com/products/ontime2005_beta.aspx"&gt;OnTime 2005 Beta&lt;/A&gt;, we're hunkering down for release mode.  We're definitely thrilled with how many new features we were able to add to the new version, not to mention the new products, OnTime Customer Portal and OnTime Enterprise Server.  All of us here are very excited at the opportunities for our customers these new products will open up.&lt;/FONT&gt;&lt;img src="http://community.axosoft.com/aggbug.aspx?PostID=242" width="1" height="1"&gt;</description><feedburner:origLink>http://community.axosoft.com/blogs/jonasb/archive/2005/02/04/hello-world.aspx</feedburner:origLink></item></channel></rss>
