<?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>Open Cage Software</title>
	<atom:link href="http://opencagesoftware.com/feed" rel="self" type="application/rss+xml" />
	<link>http://opencagesoftware.com</link>
	<description></description>
	<lastBuildDate>Fri, 18 Feb 2011 05:07:57 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.3</generator>
		<item>
		<title>FogBugzpp &#8211; a C++ wrapper for the FogBugz XML API</title>
		<link>http://opencagesoftware.com/%page%</link>
		<comments>http://opencagesoftware.com/%page%#comments</comments>
		<pubDate>Fri, 18 Feb 2011 03:16:39 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://opencagesoftware.com/?p=101</guid>
		<description><![CDATA[I really like FogBugz.  It just works.  And the fine folks at Fog Creek make it so easy to get an account (for free!) if you are a one or two person startup. I work on a few projects outside &#8230; <a class="more-link" href="http://opencagesoftware.com/%page%">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I really like FogBugz.  It just works.  And the fine folks at Fog Creek make it so easy to get an account (for free!) if you are a one or two person startup.</p>
<p>I work on a few projects outside of my day job (which also uses FogBugz) and one of the things I&#8217;d like to add to the products for my day job and side projects is the ability to send Windows minidump files to FogBugz automatically.  One way to do that is through email.  Unfortunately that did not work so well for us.  Using the C++ bugzscout wrapper does not allow file attachments.  The good news is that one can use the FogBugz XML API to access a FogBugz account &#8211; including file attachments.  The not so good new is that while the API has some neat wrappers for .NET, there is nothing like that for unmanaged C++ code.</p>
<p>The solution?  A <a href="http://fogbugzpp.codeplex.com/" onclick="pageTracker._trackPageview('/outgoing/fogbugzpp.codeplex.com/?referer=');">codeplex open source project</a>.  Then I <a href="http://blog.stackoverflow.com/2011/01/free-vote-based-advertising-launches-third-round/" onclick="pageTracker._trackPageview('/outgoing/blog.stackoverflow.com/2011/01/free-vote-based-advertising-launches-third-round/?referer=');">found the StackOverflow open source ads!</a> I threw up a really bad logo and <a href="http://meta.stackoverflow.com/questions/74983" onclick="pageTracker._trackPageview('/outgoing/meta.stackoverflow.com/questions/74983?referer=');">entered the &#8220;contest&#8221;</a>.  The <a href="http://fogbugz.stackexchange.com/questions/6728" onclick="pageTracker._trackPageview('/outgoing/fogbugz.stackexchange.com/questions/6728?referer=');">FogCreek</a> and SO staff pitched in to help me out and came up with not one, but two great logos to use.</p>
<p>Come join us, or just wait for the functionality to be released.</p>
<p><a href="http://fogbugzpp.codeplex.com/" onclick="pageTracker._trackPageview('/outgoing/fogbugzpp.codeplex.com/?referer=');"><img class="alignnone size-full wp-image-105" title="fogbugzpp" src="http://opencagesoftware.com/wp-content/uploads/2011/02/fogbugzpp.png" alt="" width="219" height="99" /></a></p>
<p>And thanks again Michael, Aviral and Yi for the help.</p>
]]></content:encoded>
			<wfw:commentRss>http://opencagesoftware.com/%page%/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Build &#8216;Promotion&#8217;</title>
		<link>http://opencagesoftware.com/%page%</link>
		<comments>http://opencagesoftware.com/%page%#comments</comments>
		<pubDate>Mon, 03 Jan 2011 22:04:27 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://opencagesoftware.com/?p=77</guid>
		<description><![CDATA[We use hudson CI (Continuous Integration) server at Open Cage.  We really like it.  It has great support, is cross-platform, works with a lot of other development tools we use, and is pretty easy to learn, configure and maintain. I &#8230; <a class="more-link" href="http://opencagesoftware.com/%page%">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>We use <a href="http://hudson-ci.org/" onclick="pageTracker._trackPageview('/outgoing/hudson-ci.org/?referer=');">hudson </a>CI (Continuous Integration) server at Open Cage.  We really like it.  It has great support, is cross-platform, works with a lot of other development tools we use, and is pretty easy to learn, configure and maintain.</p>
<p>I recently found yet one more reason to love it.  I can trigger builds remotely via instant messaging.  This is not really necessary for normal projects since commits to our version control system trigger builds.  I wanted the IM trigger functionality so that I (or any other developer) could &#8216;promote&#8217; a development/candidate build to &#8216;stable&#8217; or public status.</p>
<p>All our builds are FTPed to a server, however the directory they are in is not public.  We also have a public-facing directory for builds we have tested and are confident in.  Prior to using hudson for this process I had to manually log in to the server and copy the file(s).  This usually had to take place after working hours since I have a day-job, thus the copy was not immediate.  Also, my partner has no interest in figuring out how to log in and copy the files on the ftp server, but he interacts with customers and does a lot of the testing that determines if/when builds are approved for release.  It makes sense that he should be able to trigger the process.</p>
<p>So, after some poking around and not being able to get an email trigger to work, I tried the <a href="http://wiki.hudson-ci.org/display/HUDSON/Jabber+Plugin" onclick="pageTracker._trackPageview('/outgoing/wiki.hudson-ci.org/display/HUDSON/Jabber+Plugin?referer=');">Jabber plugin</a> for hudson.  It was pretty easy to configure and after a few simple tests I found that it fit the bill perfectly.</p>
<p>So now when my partner or I need to publish a build to the world, instead of logging in to an ftp site, finding the right file, copying files, waiting for them to transfer and then logging out, all I have to do is go to my google chat window, start an IM with the build machine account I created, and type:</p>
<blockquote><p>!build Promote 1234</p></blockquote>
<p>and it is done.  In the example above, &#8216;Promote&#8217; is the name of the parameterized build/project that does the copy/promotion and &#8217;1234&#8242; is the svn revision number of the build I want to publish.</p>
<p>So, once again, to the folks at hudson and to the plugin developers: Thank you for a wonderful tool.</p>
]]></content:encoded>
			<wfw:commentRss>http://opencagesoftware.com/%page%/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Back in action</title>
		<link>http://opencagesoftware.com/%page%</link>
		<comments>http://opencagesoftware.com/%page%#comments</comments>
		<pubDate>Sat, 25 Dec 2010 05:16:02 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://opencagesoftware.com/?p=7</guid>
		<description><![CDATA[After about a year of redirecting Open Cage Software&#8217;s website we&#8217;re back in action.  Our main product, SyringePumpPro, was sold to another company who have done a great job making improvements and supporting the product better than we could. While &#8230; <a class="more-link" href="http://opencagesoftware.com/%page%">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>After about a year of redirecting Open Cage Software&#8217;s website we&#8217;re back in action.  Our main product, <a title="Syringe Pump Pro's new home Down Under" href="http://www.syringepumppro.com" target="_self" onclick="pageTracker._trackPageview('/outgoing/www.syringepumppro.com?referer=');">SyringePumpPro</a>, was sold to another company who have done a great job making improvements and supporting the product better than we could.</p>
<p>While we were quite happy with the product, partners and customers, we felt that we were too busy on other projects to support the software and make the upgrades that the customers and hardware manufacturer deserved.</p>
]]></content:encoded>
			<wfw:commentRss>http://opencagesoftware.com/%page%/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>No API for you!</title>
		<link>http://opencagesoftware.com/%page%</link>
		<comments>http://opencagesoftware.com/%page%#comments</comments>
		<pubDate>Thu, 14 May 2009 21:50:25 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://opencagesoftware.com/?p=38</guid>
		<description><![CDATA[An old nitpick of mine just resurfaced with a vengeance, and since the most compelling things for me to write about seem to be annoyances and complaints, this will fit right in. I am working on a start up with &#8230; <a class="more-link" href="http://opencagesoftware.com/%page%">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div>
<p>An old nitpick of mine just resurfaced with a vengeance, and since  the most compelling things for me to write about seem to be annoyances  and complaints, this will fit right in.</p>
<p>I am working on a start up with a partner.  We’re going to be  supporting some hardware cards with our software application.  Well, we <em>thought </em>we  were going to support hardware cards.  It now turns out we’re going to  support only one card manufacturer.  Unfortunately the other   manufacturer thinks it’s better to restrict access to its API than to  give it away for free.  You can’t get their API unless you buy the card,  and we have not yet bought their card.</p>
<p>We’re software developers.  We’re a startup.  We’re staying clear of  investors for now.  Our startup is bootstrapping itself and exotic  hardware is an expenditure we’re going to live without for now.  We  don’t want to spend $10,000 right now on a piece of hardware just to get  access to an API.<br />
We’re not losing sleep over this – the more reasonable manufacturer’s  cards are a fraction of the cost, and deliver the same, if not more  functionality.  In fact, if the unreasonable company let us use their  API we wouldn’t have found the competitor with a better value, so we are  happy this has happened.  However, that doesn’t change the fact that  the policy is dumb.</p>
<p>I have seen this kind of idiotic thinking in the past &#8211; for some  reason some companies selling a service or data or hardware think that  they should keep their APIs/interface a secret to protect something.   Protect what, exactly?  From people trying to use their products?  I  would have imagined that you’d WANT to give people access to it &#8211; even  offer to help them with writing applications for you API and hardware or  service.  After all, the more developers that write software for your  products the more access you have to end users. (read $$)</p>
<p>APIs shouldn’t be revenue generators – the services or data they  provide are the revenue generators.  Provide easy access to the APIs and  help developers.</p>
<p>We weren’t trying to get something for free.  We were hoping to  provide value to our customers who already own the hardware cards and  wished to use our software as well.  Most likely now they will see our  solution, look at the vendors we support, notice the price difference,  perhaps ask why we don’t support the other vendor (yet) and likely  switch to the cheaper hardware we selected.  So, in not allowing us  access to an API, the intransigent manufacturer has cost themselves many  sales.</p>
<p>We have every intention of supporting the one who rejected us &#8211;  eventually.  They are a big name in the field &#8211; the name everyone seems  to know.   But they are going to lag in sales for our solution and  market because of this stupid, screwed up posture.</p>
<p>There is no business justification for putting up roadblocks to your APIs.  None.</p>
<p>If you are selling services, products or anything else and you have  an API to access them: please, think about your policies.  If you don’t  allow third party vendors or anyone else access to the API for free, you  are putting up barriers and likely costing yourselves business.</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://opencagesoftware.com/%page%/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>First Impressions</title>
		<link>http://opencagesoftware.com/%page%</link>
		<comments>http://opencagesoftware.com/%page%#comments</comments>
		<pubDate>Wed, 21 Jan 2009 22:01:09 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://opencagesoftware.com/?p=46</guid>
		<description><![CDATA[I remember most of the first days I had at many of my companies. Some were glorious. Others were like the first moments of a prison sentence. There is a saying about first impressions. I forget what it is, but &#8230; <a class="more-link" href="http://opencagesoftware.com/%page%">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I remember most of the first days I had at many  of my companies.  Some were glorious.  Others were like the first  moments of a prison sentence.  There is a saying about first  impressions.  I forget what it is, but hopefully by the end of this  article it will come to me.  Impressions are so important that  apparently some French artists invented a whole new kind of art in honor  of them.   But let’s get back to my story…</p>
<p>When my new hires were scheduled to start I did all  that I could to make sure they felt welcomed.  I had limited powers of  course, but small gestures like finding an unstained chair for them to  use and a computer that had more than 128MB of RAM were appreciated.</p>
<p>My views were not shared by all my peers.   Apparently some took the terms “working manager” and “hands-on-manager”  to heart.  They liked to spend lots of time looking at code and they  dreaded talking to their reports except to “call them into their office”  to tell them what to do and how to do it.   Of course, I never worked  as a manager.  Work is for suckers.  I avoided work.  So I had to make  sure the people who reported to me made up for my laziness.  And boy,  did they ever!</p>
<p>Chris was a new hire.  He showed up on time.  I  discovered him wandering around the reception area on his first day.  I  welcomed him and showed him to his new home/cube and left him there then  went to inform his manager that his fresh young hire right out of  college had arrived.  Peter (we’ll call him Peter for now) hardly looked  up from his buggy code and mumbled something about being too busy –  lots of (bad) code to write that day apparently.  I thought he was  kidding.  Nope, he wasn’t.  Apparently this golden boy was too important  to waste time greeting, introducing and getting his new report started.   Of course, I was not that special or important, so I had plenty of  time to waste on a new employee.  I introduced Chris around to everyone  (including his very busy manager), got him a company t-shirt, and showed  him where the bathroom was – all very, very important things.  (At  least to me and my bladder and I think to Chris’s)</p>
<p>I never could figure out why we didn’t do more to  knock the socks off new hires on their first day.  I am sure that during  their first personal calls of the day (either while at work or when  they got home) they were asked how the new job was or how they liked the  new company.  Here’s where we stop the film and pause it and the  narrator steps in front to pose a dilemma and present a choice to the  viewers.  What do you want that new hire to say?</p>
<blockquote><p>“Man, this place is  fantastic – they had free Snapple and bagels for me and dancing girls  popped out of the cake and there was a valet in the bathroom to dry my  hands for me…” (well, maybe no cake or girls)</p></blockquote>
<p>or</p>
<blockquote><p>“My boss was too busy  to greet me and introduce me to the team, but that’s ok, he scheduled a  time for us to meet next week when he has time.  I found the bathroom  myself and I should have a phone at my desk by the end of the week, but I  don’t really need it yet because they haven’t found me a permanent  office.  The temporary computer they gave me to use doesn’t have a  development environment on it, but at least it has the internets so I  can check monster.com again for other jobs.”</p></blockquote>
<p>Chances are that this new hire knows other  competent people and those people might be looking for good companies to  work for.  One scenario above makes it easy to get candidates lined up  at your interview room – the other one predisposes new hires to line up  at the HR office for exit interviews or just never show up to work  again.  Some people are too busy fighting fires and fixing all the bad  code they wrote to consider the consequences.</p>
<p>You never get a second chance at a first  impression.  (I hate clichés like that, but it happens to agree with my  sentiments, so there it is.)</p>
]]></content:encoded>
			<wfw:commentRss>http://opencagesoftware.com/%page%/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Just Do It</title>
		<link>http://opencagesoftware.com/%page%</link>
		<comments>http://opencagesoftware.com/%page%#comments</comments>
		<pubDate>Thu, 01 Jan 2009 21:58:42 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://opencagesoftware.com/?p=42</guid>
		<description><![CDATA[No, I didn’t work for Nike. I did work for many people who seemed not to understand logic and were not impressed with doing things the right way. After getting lucky on my first real task at a software company, &#8230; <a class="more-link" href="http://opencagesoftware.com/%page%">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>No, I didn’t work  for Nike.  I did work for many people who seemed not to understand logic  and were not impressed with doing things the right way.  After getting  lucky on my first real task at a software company, I was told we  absolutely had to have a this great new feature put into the code.  The  required assembly language part was all done.  My job was to make the  call to the assembly language and put it into the product.  Somewhere.   Anywhere. Now.</p>
<p>This “must have feature” was the greatly hyped <a href="http://support.intel.com/support/processors/pentiumiii/sb/CS-007579.htm" onclick="pageTracker._trackPageview('/outgoing/support.intel.com/support/processors/pentiumiii/sb/CS-007579.htm?referer=');">Intel® Pentium® Processor serial number</a>.   After getting the secret orders I ran back to my office to plan my  whiz-bang implementation.  But. There. Was. One. Minor. Problem.  There  was no context for this information.  It was meaningless.  It helped no  one.  So I made an ass of myself and raised the question, “Why are we  doing this?  It isn’t used anywhere in the product.”  (I didn’t even get  to the part where I asked what we should do for multi-processor  machines)</p>
<p>I needn’t have worried.  A careful,  well-thought-out argument came back my way: “Just do it.”  Apparently  having the Intel® logo on our box in the stores would make the product  boxes fly off the shelves even faster.  At least that is what the  marketing and product geniuses claimed.  So I “just did it.”  It was as  useful as an ice cube in Antarctica.  And I had a hand in it.  What a  proud day that was for me.</p>
<p>But wait.  It gets even better.  The objections  started slowly and imperceptibly, but as momentum gained the apparently  super-duper-useless feature <a href="http://www.cdt.org/privacy/issues/pentium3/" onclick="pageTracker._trackPageview('/outgoing/www.cdt.org/privacy/issues/pentium3/?referer=');">became a liability</a>.   People were afraid of the serial number.  It could identify them.   Products that touted being able to take advantage of the serial number  were seen as Big Brotherly, and not in a Philadelphia loving kind of  way.</p>
<p>I don’t recall what became of the code I put into  the product, but hopefully it was removed or quietly optimized out of  the product by a compiler that was smarter than my managers and knew the  code wasn’t getting called.</p>
<p>Just Do It.  But first, make sure it is useful.</p>
]]></content:encoded>
			<wfw:commentRss>http://opencagesoftware.com/%page%/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

