<?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>Dang&#039;s Weblog &#187; Development</title>
	<atom:link href="http://gryniewicz.com/blogs/dang/category/development/feed/" rel="self" type="application/rss+xml" />
	<link>http://gryniewicz.com/blogs/dang</link>
	<description></description>
	<lastBuildDate>Thu, 18 Aug 2011 17:56:51 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Bare git-svn repo I can commit from?</title>
		<link>http://gryniewicz.com/blogs/dang/2011/01/31/bare-git-svn-repo-i-can-commit-from/</link>
		<comments>http://gryniewicz.com/blogs/dang/2011/01/31/bare-git-svn-repo-i-can-commit-from/#comments</comments>
		<pubDate>Mon, 31 Jan 2011 14:34:56 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://gryniewicz.com/blogs/dang/?p=520</guid>
		<description><![CDATA[Dear lazyweb. I&#8217;ve asked google, and I&#8217;m not sure I can do what I want to do, but maybe one of you knows how. At work, we use subversion (ick) as our VCS.  I, of course, use git-svn.  However, this means that I have to have a multiple git-svn repos if I want to have [...]]]></description>
			<content:encoded><![CDATA[<p>Dear lazyweb.</p>
<p>I&#8217;ve asked google, and I&#8217;m not sure I can do what I want to do, but maybe one of you knows how.</p>
<p>At work, we use subversion (ick) as our VCS.  I, of course, use git-svn.  However, this means that I have to have a multiple git-svn repos if I want to have multiple outstanding change-sets (uncommitted to local git) at a time.  I know, I&#8217;m supposed to commit early and often and rebase (and I do) but sometimes it&#8217;s horribly inconvenient to have to stop what I&#8217;m doing, commit, check out a new branch, make a small change, commit, and switch back.  In addition, I sometimes need stable checkouts for testing (some bugs can take days to reproduce, and rebuilding breaks debugging).   However, keeping track of all these git-svn repos is a pain, and getting new ones is very time-consuming, involving either a new &#8216;git svn clone&#8217; or a copy of an existing repo.</p>
<p>What I&#8217;d like is a git to svn bridge.  That is, a bare git-svn repo with appropriate hooks that I can clone (using git), work from, pull from (the pull hook would git svn fetch), and push to (the push hook would git svn dcommit).  As nearly as I can tell, I can&#8217;t do this, because git-svn seems to need a checkout for some things (git svn rebase, for example; git svn fetch didn&#8217;t seem to pull the changes into the repo&#8217;s history), but cloning and pushing in git seems to need a bare repo.</p>
<p>So, oh lazy web, is it possible to do what I want?</p>
]]></content:encoded>
			<wfw:commentRss>http://gryniewicz.com/blogs/dang/2011/01/31/bare-git-svn-repo-i-can-commit-from/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Quantum Bug</title>
		<link>http://gryniewicz.com/blogs/dang/2010/10/01/quantum-bug/</link>
		<comments>http://gryniewicz.com/blogs/dang/2010/10/01/quantum-bug/#comments</comments>
		<pubDate>Fri, 01 Oct 2010 17:23:04 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Funny]]></category>
		<category><![CDATA[Techie]]></category>

		<guid isPermaLink="false">http://gryniewicz.com/blogs/dang/?p=510</guid>
		<description><![CDATA[quantum bug: (noun) A bug in your code that is in a superposition of triggering and not triggering.  Examining the state of said bug (via code inspection, accidental triggering, whatever) causes it to collapse into one of the two states permanently.  All future tests exercising the bug will hit either pass or fail, depending on [...]]]></description>
			<content:encoded><![CDATA[<p>quantum bug: (noun)</p>
<p>A bug in your code that is in a superposition of triggering and not triggering.  Examining the state of said bug (via code inspection, accidental triggering, whatever) causes it to collapse into one of the two states permanently.  All future tests exercising the bug will hit either pass or fail, depending on the collapsed state.</p>
<p>Note: It may seem that all quantum bugs collapse to triggering, since they are only noticeable if they trigger.  In fact, the wave function for the code determines the probability of collapsing to triggering or not.</p>
<p>See also: heisenbug.</p>
]]></content:encoded>
			<wfw:commentRss>http://gryniewicz.com/blogs/dang/2010/10/01/quantum-bug/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Android is Open</title>
		<link>http://gryniewicz.com/blogs/dang/2008/10/21/android-is-open/</link>
		<comments>http://gryniewicz.com/blogs/dang/2008/10/21/android-is-open/#comments</comments>
		<pubDate>Tue, 21 Oct 2008 18:37:26 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://gryniewicz.com/blogs/dang/2008/10/21/android-is-open/</guid>
		<description><![CDATA[Okay, now Android is Open.   Congrats, Google. How long for a port to the Nokia Internet Tablet family (preferably the 770)?  Anyone? ]]></description>
			<content:encoded><![CDATA[<p>Okay, <a href="http://feeds.rlove.org/~r/rlove/~3/8cxRrReWybU/android-is-now-open-source.html">now</a> Android is Open.   Congrats, Google.</p>
<p>How long for a port to the Nokia Internet Tablet family (preferably the 770)?  Anyone?  <img src='http://gryniewicz.com/blogs/dang/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://gryniewicz.com/blogs/dang/2008/10/21/android-is-open/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Developer-User machine divide</title>
		<link>http://gryniewicz.com/blogs/dang/2008/10/20/the-developer-user-machine-divide/</link>
		<comments>http://gryniewicz.com/blogs/dang/2008/10/20/the-developer-user-machine-divide/#comments</comments>
		<pubDate>Mon, 20 Oct 2008 14:16:11 +0000</pubDate>
		<dc:creator>Daniel</dc:creator>
				<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://gryniewicz.com/blogs/dang/2008/10/20/the-developer-user-machine-divide/</guid>
		<description><![CDATA[I just had an epiphany.  Well, not really, but an interesting thought, at least. Computers are getting faster, and more capable.  In particular, the amount of RAM available to computers has increased in leaps and bounds.  My first computer (and IBM PCjr) had 64K of RAM, and that was part of an expensive upgrade from [...]]]></description>
			<content:encoded><![CDATA[<p>I just had an epiphany.  Well, not really, but an interesting thought, at least.</p>
<p>Computers are getting faster, and more capable.  In particular, the amount of RAM available to computers has increased in leaps and bounds.  My first computer (and IBM PCjr) had 64K of RAM, and that was part of an expensive upgrade from the default.  The laptop I&#8217;m typing this on has 2G of RAM, and the workstations sitting next to it have 4G and 6G respectively.  That&#8217;s a huge increase, over the past 25 years.</p>
<p>However, in my daily use of my laptop, 2G doesn&#8217;t seem to be enough.  After a few days of uptime, my free RAM (defined on Linux as the amount used by disk cache, rather than the amount actually free, since RAM is basically never actually free) drops below 100M.  This is not an acceptible amount of disk cache, and it causes my machine to slow way down, and even to go into swap storms sometimes.  If I then go and emerge something written in C++, I trigger the OOM killer.  On a 2G box.  How does this happen?</p>
<p>One posited (and believeable) reason is the Developer-User machine divide.  The reasoning goes thus:</p>
<p>Software development is a resource intensive operation.  Compilers, debuggers, emulators, and so on, take lots of CPU and RAM to run fast.  Developers are rather high paid individuals.  Thus, most companies maximize ROI by getting developers large, fast development machines, so they don&#8217;t spend all their time waiting for tools to execute.  Similarly, FOSS developers tend to spring for decent development boxes if they possibly can, because software development quickely becomes painful on low end boxes.  Naturally, if a developer has a large, fast development box, they&#8217;re going to use it whenever they can, for normal, day-to-day tasks.</p>
<p>Typical users, on the other hand, have (by definition) average machines.  They tend to be middle-to-low end, with much less CPU, RAM, and disk than a typical developer machine.   (Unless it&#8217;s a gaming rig, of course, which ends up way in the top end for similar reasons to developers having good boxes).  This means that the box a developer typically uses for day-to-day activities (mail, browsing, chatting, office, and so on) tends to be faster and have more RAM than the box a typical end user has.   This is the Developer-User machine divide.</p>
<p>I&#8217;ve read a number of posited solutions to this.  The most common is that developers should use &#8220;typical&#8221; boxes for day-to-day activities, rather than their development machines.  This is not going to happen.  First off, if you have a choice of 2 computers, one of which is much faster, you&#8217;re going to use the fast one, right?  Second, especially for FOSS, developers typically don&#8217;t have the <strong>funds</strong>  to have multiple machines like this.  Any extra machines I have, for example, are typically either old dev machines that are below even the average curve and run my network, or specialized machines (say my elisa box) which cannot be used day-to-day.   I&#8217;m going to use my laptop (which, granted, is not a beefy as my workstations at work, but is still, even 1.5 years later, beefier than anything any of my relatives have).</p>
<p>So, my reasoning went like this:  We need a little daemon that lurks in the background, sucking up RAM and keeping your CPU at it&#8217;s lowest frequency, until it detects software development in progress.  Then, it should free up RAM (temoprarily, of course) and jack up the CPU frequency, so that development happens fast.  When development is done, it lowers the CPU again, and sucks RAM back up.  This, of course, is problematic, difficult, and easily open to abuse (say a tight-loop script of gcc niced).</p>
<p>Then it hit me: a VM is the perfect solution.  It&#8217;s slower by it&#8217;s very nature, and it can have strictly limited RAM.  Developers should run their day-to-day programs in a VM!  Then, they can allocate, say 512M of RAM to the VM, and leave the rest outside for normal development activities.  Granted, this leaves it open for cheating, but at least developers would start to feel the pain of normal users, start to bridge the machine divide.</p>
<p>Will this happen?  Probably not, at least not on a large scale.  Many developers, of course, already develop in a virtual machine of some variety, for other reasons (need Windows on Linux or vice versa, for example).  But in general, the first reason why developers don&#8217;t already use slow machines applies, and many developers (myself included) don&#8217;t have the time to track down complex time/space trade offs in complex software (I&#8217;m looking at you, Evolution!) to make their VM&#8217;d selves happy.</p>
<p>Will <strong>I</strong> do it? Again, probably not.  This is because my primary development is Gentoo maintenance.  This means that I can&#8217;t isolate my development to outside my VM, since I&#8217;d need to keep the VM itself up-to-date with ~arch software.  I&#8217;ll think about solutions, but there may not be a good one (maybe distcc to the host box?).  Additionally, the majority of my development work for FOSS is packaging software for Gentoo, which means I don&#8217;t usually do much actual development on that software, and what I generally do is bug fixing, not in-depth development.  Then again, maybe I will do it, just to force myself to dig into these issues.  It certainly could be a useful experiment.</p>
<p>Now, the question is: how do I get my VM to gracefully recover when my video doesn&#8217;t resume?  <img src='http://gryniewicz.com/blogs/dang/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<p>Question for the Lazy-Web:</p>
<p>Has this been done?  Are there tools for syncing, switching, backing up, and so on?  Does, for example, VMware do this internally?</p>
]]></content:encoded>
			<wfw:commentRss>http://gryniewicz.com/blogs/dang/2008/10/20/the-developer-user-machine-divide/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

