<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Geek Scrapbook &#187; Cash Tracker</title>
	<atom:link href="http://www.geekscrapbook.com/category/cash-tracker/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.geekscrapbook.com</link>
	<description>The .Net developer&#039;s everyday how-to guide.</description>
	<lastBuildDate>Sun, 22 May 2011 01:57:14 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.2</generator>
		<item>
		<title>Cash Tracker 0.9 (beta) Now Available for Download</title>
		<link>http://www.geekscrapbook.com/2010/08/16/cash-tracker-0-9-beta-now-available-for-download/</link>
		<comments>http://www.geekscrapbook.com/2010/08/16/cash-tracker-0-9-beta-now-available-for-download/#comments</comments>
		<pubDate>Tue, 17 Aug 2010 00:30:05 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[Cash Tracker]]></category>
		<category><![CDATA[Code Release]]></category>

		<guid isPermaLink="false">http://www.geekscrapbook.com/2010/08/16/cash-tracker-0-9-beta-now-available-for-download/</guid>
		<description><![CDATA[After several months of testing/tweaking, I have released a beta version of Cash Tracker. I believe it to be a stable product at this point that is simply lacking in some extra features. You can go to the Cash Tracker page to download and install using Click-Once. I have also made the latest source code [...]]]></description>
			<content:encoded><![CDATA[<p>After several months of testing/tweaking, I have released a beta version of Cash Tracker. I believe it to be a stable product at this point that is simply lacking in some extra features. You can go to the <a href="http://www.geekscrapbook.com/cash-tracker" target="_blank">Cash Tracker</a> page to download and install using Click-Once. I have also made the latest source code available on that page. Feel free to leave comments with any feature requests.</p>
<p><strong>The Roadmap      <br /></strong>I believe I am the only person who uses Cash Tracker on a consistent basis, but I’ve found the application so useful that I’m going to plow ahead until I’m satisfied. So, for the Cash Tracker 1.0 release I plan to unveil some big new features. Plus, I’ve determined to create an online version of the tool. Here are the steps needed to proceed to that point:</p>
<ol>
<li>Add most or all of the features on the upcoming features list </li>
<li>Acquire a catchy web domain name and SSL certificate </li>
<li>Possibly re-brand Cash Tracker under a different name for the web (i.e. whatever catchy domain name I find) </li>
<li>Port the Windows project to a data-driven website project using ASP.NET and SQL Server technologies</li>
</ol>
<p><strong>Contributions</strong>     <br />If you’d like to contribute to the project, just <a href="mailto:dave@geekscrapbook.com" target="_blank">drop me an email</a>; I’ll be happy to set up a source control server. The project doesn’t really need funding beyond a web domain and SSL certificate purchase, but an extra pair of coding hands would definitely accelerate the release timeline.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.geekscrapbook.com/2010/08/16/cash-tracker-0-9-beta-now-available-for-download/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Coming Soon! Screen Tracker: A Video Screen Capture Tool Built Using C# and .NET</title>
		<link>http://www.geekscrapbook.com/2010/08/16/coming-soon-screen-tracker-a-video-screen-capture-tool-built-using-c-and-net/</link>
		<comments>http://www.geekscrapbook.com/2010/08/16/coming-soon-screen-tracker-a-video-screen-capture-tool-built-using-c-and-net/#comments</comments>
		<pubDate>Mon, 16 Aug 2010 20:09:19 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[Cash Tracker]]></category>
		<category><![CDATA[Screen Tracker]]></category>

		<guid isPermaLink="false">http://www.geekscrapbook.com/2010/08/16/coming-soon-screen-tracker-a-video-screen-capture-tool-built-using-c-and-net/</guid>
		<description><![CDATA[It’s been a while since I worked on anything I’d consider “hobby code” on my own time. Recently, I had an idea for a utility that will require me to produce a library that will record video capture from the screen. I won’t say what it is, because if I can pull it off I [...]]]></description>
			<content:encoded><![CDATA[<p>It’s been a while since I worked on anything I’d consider “hobby code” on my own time. Recently, I had an idea for a utility that will require me to produce a library that will record video capture from the screen. I won’t say what it is, because if I can pull it off I will probably be visiting a patent office first. However, as I learn more about video capture (and audio capture as well), I will package up what I’ve produced into utilities that may be useful for someone else.</p>
<p><strong>So what goodies do you have for us?      <br /></strong>The tool I will post (most likely tonight or tomorrow, under the name Screen Tracker) will do the following:</p>
<ol>
<li>Record frames from the screen or a portion of the screen to a working directory. </li>
<li>Compile the frames into an AVI formatted video file. </li>
</ol>
<p>And my upcoming feature wish-list:</p>
<ol>
<li>Audio recording (either through the computer itself or via a microphone, maybe both) </li>
<li>The ability to add an .mp3 or .wav audio track </li>
</ol>
<p>Audio/video is not a world I am well-versed in, so don’t hold your breath on the wish-list <img src='http://www.geekscrapbook.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Just hope my great idea motivates me to make useful tools for you.</p>
<p><strong>Cash Tracker going Beta      <br /></strong>I’ve been using my latest version of <a href="http://www.geekscrapbook.com/cash-tracker">Cash Tracker</a> for a while, now, and it’s been working beautifully for me. I will probably post the most recent code and installer tonight or tomorrow as well. It’s ready for beta status, so I’ll update that designation as well (and maybe someone else will actually start using it!).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.geekscrapbook.com/2010/08/16/coming-soon-screen-tracker-a-video-screen-capture-tool-built-using-c-and-net/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Serializing Data with System.Runtime.Serialization.DataContractSerializer</title>
		<link>http://www.geekscrapbook.com/2010/03/06/serializing-data-with-system-runtime-serialization-datacontractserializer/</link>
		<comments>http://www.geekscrapbook.com/2010/03/06/serializing-data-with-system-runtime-serialization-datacontractserializer/#comments</comments>
		<pubDate>Sat, 06 Mar 2010 15:16:57 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[Cash Tracker]]></category>
		<category><![CDATA[Code Samples]]></category>

		<guid isPermaLink="false">http://www.geekscrapbook.com/2010/03/06/serializing-data-with-system-runtime-serialization-datacontractserializer/</guid>
		<description><![CDATA[Last time we discussed Serializing Data with System.Xml.Serialization.XmlSerializer. We will be using the same sample solution for this article. With .Net 3.5, Microsoft released the DataContractSerializer. It has a variety of uses, but at the very least it’s an improvement over the XmlSerializer. In Cash Tracker we started out by using the XmlSerializer to save [...]]]></description>
			<content:encoded><![CDATA[<p>Last time we discussed <a href="http://www.geekscrapbook.com/2010/03/06/serializing-data-with-system-xml-serialization-xmlserializer/" target="_blank">Serializing Data with System.Xml.Serialization.XmlSerializer</a>. We will be using the same sample solution for this article.</p>
<p>With .Net 3.5, Microsoft released the DataContractSerializer. It has a variety of uses, but at the very least it’s an improvement over the XmlSerializer. In <a href="http://www.geekscrapbook.com/cash-tracker" target="_blank">Cash Tracker</a> we started out by using the XmlSerializer to save files, but quickly found it inadequate, the reason being XmlSerializer does not play well with <strong>mixed access properties</strong>. </p>
<p>For an example, let’s look again at our Person class:</p>
<pre class="code"><span style="color: blue">public class </span><span style="color: #2b91af">Person </span>{
    <span style="color: blue">public string </span>FirstName { <span style="color: blue">get</span>; <span style="color: blue">set</span>; }
    <span style="color: blue">public string </span>LastName { <span style="color: blue">get</span>; <span style="color: blue">set</span>; }
    <span style="color: blue">public string </span>Initials { <span style="color: blue">get</span>; <span style="color: blue">private set</span>; }

    <span style="color: blue">private </span>Person() {
    }
    <span style="color: blue">public </span>Person(<span style="color: blue">string </span>first, <span style="color: blue">string </span>last) {
        <span style="color: blue">this</span>.FirstName = first;
        <span style="color: blue">this</span>.LastName = last;

        <span style="color: blue">this</span>.Initials = <span style="color: #2b91af">String</span>.Format(<span style="color: #a31515">&quot;{0}.{1}.&quot;</span>, FirstName[0], LastName[0]);
    }
}</pre>
<pre class="code"><font face="Tahoma">Notice I’ve added a new property with a private mutator. Also, I added a constructor to take advantage of the new property and made my default constructor private. Now when we try to serialize using the XmlSerializer we get an error:</font></pre>
<blockquote>
<p>Unable to generate a temporary class (result=1).<br />
    <br />error CS0200: Property or indexer &#8216;Person.Initials&#8217; cannot be assigned to &#8212; it is read only</p>
</blockquote>
<p><strong>What to do?</strong></p>
<p>In .Net 3.5, to get around this problem, <a href="http://connect.microsoft.com/VisualStudio/feedback/details/96882/xmlserializer-does-not-handle-properties-with-mixed-access-modifiers" target="_blank">Microsoft suggests using the DataContractSerializer</a>, so we will investigate switching to the new technology here. First, we need a reference to System.Runtime.Serialization:</p>
<p><a href="http://www.geekscrapbook.com/wp-content/uploads/2010/03/image2.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.geekscrapbook.com/wp-content/uploads/2010/03/image_thumb2.png" width="400" height="451" /></a> </p>
<p>Once that’s done it’s actually pretty simply converting our old code. The new code looks like this:</p>
<pre class="code"><span style="color: blue">static void </span>XmlSerializePerson(<span style="color: #2b91af">Person </span>myPerson, <span style="color: blue">string </span>fileName) {
    <span style="color: #2b91af">DataContractSerializer </span>xs = <span style="color: blue">new </span><span style="color: #2b91af">DataContractSerializer</span>(<span style="color: blue">typeof</span>(<span style="color: #2b91af">Person</span>));

    <span style="color: blue">using </span>(<span style="color: #2b91af">FileStream </span>fs = <span style="color: blue">new </span><span style="color: #2b91af">FileStream</span>(fileName, <span style="color: #2b91af">FileMode</span>.Create, <span style="color: #2b91af">FileAccess</span>.Write)) {
        xs.WriteObject(fs, myPerson);
    }
}

<span style="color: blue">static </span><span style="color: #2b91af">Person </span>XmlDeserializePerson(<span style="color: blue">string </span>fileName) {
    <span style="color: #2b91af">DataContractSerializer </span>xs = <span style="color: blue">new </span><span style="color: #2b91af">DataContractSerializer</span>(<span style="color: blue">typeof</span>(<span style="color: #2b91af">Person</span>));

    <span style="color: blue">using </span>(<span style="color: #2b91af">FileStream </span>fs = <span style="color: blue">new </span><span style="color: #2b91af">FileStream</span>(fileName, <span style="color: #2b91af">FileMode</span>.Open, <span style="color: #2b91af">FileAccess</span>.Read)) {
        <span style="color: blue">return </span>(<span style="color: #2b91af">Person</span>)xs.ReadObject(fs);
    }
}</pre>
<p><a href="http://11011.net/software/vspaste"></a>Notice we simply re-used the old methods, changing the object and methods used to serialize our Person. Our code will now execute as expected:</p>
<p><a href="http://www.geekscrapbook.com/wp-content/uploads/2010/03/image3.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://www.geekscrapbook.com/wp-content/uploads/2010/03/image_thumb3.png" width="400" height="269" /></a> </p>
<p><strong>Download the Solution</strong></p>
<p><strong></strong></p>
<p>You can download a zip file of the solution by clicking the link below.</p>
<p><a href="http://www.geekscrapbook.com/wp-content/uploads/2010/03/DataContractSerializerDemo.zip" target="_blank">DataContractSerializerDemo.zip</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.geekscrapbook.com/2010/03/06/serializing-data-with-system-runtime-serialization-datacontractserializer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cash Tracker (pre-alpha) Now Available for Download</title>
		<link>http://www.geekscrapbook.com/2010/03/05/cash-tracker-alpha-now-available-for-download/</link>
		<comments>http://www.geekscrapbook.com/2010/03/05/cash-tracker-alpha-now-available-for-download/#comments</comments>
		<pubDate>Sat, 06 Mar 2010 03:38:15 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[Cash Tracker]]></category>
		<category><![CDATA[Code Release]]></category>

		<guid isPermaLink="false">http://www.geekscrapbook.com/2010/03/05/cash-tracker-alpha-now-available-for-download/</guid>
		<description><![CDATA[I’m happy to announce there’s now a somewhat usable version of Cash Tracker available for download. Click here to get it! It’s really rough; I’m giving it a version of 0.7. I don’t have any error handling in place, so if you put the wrong values into the tracker it will probably scream at you [...]]]></description>
			<content:encoded><![CDATA[<p>I’m happy to announce there’s now a somewhat usable version of Cash Tracker available for download. <strong><a href="http://www.geekscrapbook.com/cashtrackerinstall/publish.htm" target="_blank">Click here to get it!</a></strong></p>
<p>It’s really rough; I’m giving it a version of 0.7. I don’t have any error handling in place, so if you put the wrong values into the tracker it will probably scream at you and then die. If you’re not a geek you probably want to wait at least until version 0.9 gets released. Until then, I’m probably not going to settle on a reliable file type, so .tfx files saved before 0.9 probably won’t be compatible with later versions.</p>
<p>For a current list of features, check the Cash Tracker’s <a href="http://www.geekscrapbook.com/cash-tracker" target="_blank">main page</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.geekscrapbook.com/2010/03/05/cash-tracker-alpha-now-available-for-download/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Announcing Cash Tracker</title>
		<link>http://www.geekscrapbook.com/2010/03/05/announcing-cash-tracker/</link>
		<comments>http://www.geekscrapbook.com/2010/03/05/announcing-cash-tracker/#comments</comments>
		<pubDate>Fri, 05 Mar 2010 04:13:14 +0000</pubDate>
		<dc:creator>Dave</dc:creator>
				<category><![CDATA[Cash Tracker]]></category>

		<guid isPermaLink="false">http://www.geekscrapbook.com/2010/03/05/announcing-cash-tracker/</guid>
		<description><![CDATA[I’ve undertaken a personal project in my spare time. It’s a personal finance application I’m calling Cash Tracker. You can read the technical details on the Cash Tracker page. The idea for Cash Tracker came to me when I was trying to find an easy way track my own finances. I wanted something I could [...]]]></description>
			<content:encoded><![CDATA[<p>I’ve undertaken a personal project in my spare time. It’s a personal finance application I’m calling <strong>Cash Tracker</strong>. You can read the technical details on the <a href="http://www.geekscrapbook.com/cash-tracker/" target="_blank">Cash Tracker page</a>.</p>
<p>The idea for Cash Tracker came to me when I was trying to find an easy way track my own finances. I wanted something I could put my income and bills into and get a simple projection of my account balance throughout the year. Then, if I didn’t mind making adjustments later to reconcile (thus improving the projections as time goes by), I wanted to be able to enter a manual transaction here and there, too. But my main focus was <strong>keeping it simple</strong>. So, I wrote a very simple program that reads in a set of recurrences (bills, income) and transactions (non-recurring expenses or adjustments to bills/income). Then, it displays a set of numbers that are designed to help give me peace of mind about the future, like my project low and high balances for the year. To help me reconcile with my balance at the bank as the year goes on, I had the program output a running total I could open in Excel and compare with the bank.</p>
<p>Right now, that’s pretty much all the Cash Tracker does. <strong>It’s ugly</strong>, but it works as well as I need it to and keeps me from worrying about my finances. The project I’m undertaking is to bring Cash Tracker from “personal helper” to “helper to a lot of people” by making it easier for people to use who can’t write code or format a flat file correctly; people who don’t know what a CSV file is or what XML looks like. And, of course, I want to bring the Cash Tracker to other people like me who just don’t want to waste time on a “big” personal finance application, but still want to feel secure financially and have some numbers to support themselves with. I’m doing this solely because my Cash Tracker has helped me organize my own finances <strong>so much </strong>over the past 3 months.</p>
<p>I think Cash Tracker will appeal to many people because it makes maintaining finances so painless. Now that I have all my income and expenses into the program, it takes me just a few minutes every week or two to make the current projected balance line up with my actual balance. That includes the time I spend editing <strong>ugly, tab-delimited files</strong>. I am sure I can speed up the process even more.</p>
<p>So, the goal right now is to get the Cash Tracker into a form that other people can actually use. Eventually, I’d like to get it to “auto-magical” status, which would look something like this:</p>
<ol>
<li>Select your financial institution </li>
<li>Enter your login credentials </li>
<li>Hit “Track It!” </li>
<li>&lt;magic&gt; </li>
<li>View a list of your regular expenses and income, your projected high and low balances this year, your projected balance for any date in the future, etc. </li>
</ol>
<p>We’re talking <strong>zero maintenance</strong>. I believe we can get there, but we’re going to take baby steps.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.geekscrapbook.com/2010/03/05/announcing-cash-tracker/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

