<?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>codemonkey.org.uk &#187; Uncategorized</title>
	<atom:link href="http://codemonkey.org.uk/category/uncategorized/feed/" rel="self" type="application/rss+xml" />
	<link>http://codemonkey.org.uk</link>
	<description>Dave Jones' Linux &#38; opensource stuff.</description>
	<lastBuildDate>Tue, 03 Jan 2012 14:52:48 +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>Winter NAMM 2011.</title>
		<link>http://codemonkey.org.uk/2011/01/19/winter-namm-2011/</link>
		<comments>http://codemonkey.org.uk/2011/01/19/winter-namm-2011/#comments</comments>
		<pubDate>Thu, 20 Jan 2011 01:06:34 +0000</pubDate>
		<dc:creator>davej</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://codemonkey.org.uk/?p=299</guid>
		<description><![CDATA[I took some time off this last week to travel to Anaheim,CA. Most people go there to go to Disneyland. I had other plans. Thanks to some friends, I managed to blag my way into the NAMM show. Even though I was on vacation, and there solely to take in the latest and greatest in [...]<p><a href="http://codemonkey.org.uk/2011/01/19/winter-namm-2011/">Winter NAMM 2011.</a> is a post from: <a href="http://codemonkey.org.uk">codemonkey.org.uk</a></p>



No related posts.]]></description>
			<content:encoded><![CDATA[<p>I took some time off this last week to travel to Anaheim,CA.  Most people go there to go to Disneyland. I had other plans. Thanks to some friends, I managed to blag my way into the <a href="http://www.namm.org" rel="nofollow" >NAMM</a> show.</p>
<p>Even though I was on vacation, and there solely to take in the latest and greatest in musical instruments, I was curious to find out just how much stuff is running Linux.  Most of the manufacturers I spoke with wouldn&#8217;t tell me anything (and appeared quite puzzled that I&#8217;d even care).  The only obvious ones were from manufacturers I already knew about (like the Muse receptor, Korg&#8217;s etc..)</p>
<p>There was one revealing moment however that I found amusing.  In 1979, the <a href="https://secure.wikimedia.org/wikipedia/en/wiki/Fairlight_CMI" rel="nofollow" >Fairlight CMI</a> was *the* sampling synth.  Back then, its lightpen input device must have seemed like something from the future. (Here&#8217;s <a href="http://www.youtube.com/watch?v=n6QsusDS_8A" rel="nofollow" >Quincy Jones demoing it</a>).   Anyway.. Fairlight instruments have returned, and created a retro style reproduction of the original CMI. One of my friends managed to capture <a href="http://fdiskc.com/syn/namm/2011/Fairlight_CMI-30A_linux.html" rel="nofollow" >a photograph of it when the synth UI crashed</a>. Yup, looks like Ubuntu to me.</p>
<p>There&#8217;s really no escape from Linux. It&#8217;s everywhere you look.</p>
<p>I returned last night refreshed from time off from daily work, but also inspired in many ways by new things, and new people I met. Escaping the frozen wasteland of Boston for the sunnier climate did wonders for my general mood too. As draining as the whole experience was, I&#8217;m sure I&#8217;ll be going back next year.</p>
<p>(For those who care about any of the other things I saw there, I took <a href="http://attacksustain.com/photos/2011-Winter-NAMM" rel="nofollow" >a bunch of photographs</a> too).</p>
<p><a href="http://codemonkey.org.uk/2011/01/19/winter-namm-2011/">Winter NAMM 2011.</a> is a post from: <a href="http://codemonkey.org.uk">codemonkey.org.uk</a></p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://codemonkey.org.uk/2011/01/19/winter-namm-2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>System call fuzzing continued.</title>
		<link>http://codemonkey.org.uk/2010/12/15/system-call-fuzzing-continued/</link>
		<comments>http://codemonkey.org.uk/2010/12/15/system-call-fuzzing-continued/#comments</comments>
		<pubDate>Wed, 15 Dec 2010 19:03:25 +0000</pubDate>
		<dc:creator>davej</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://codemonkey.org.uk/?p=297</guid>
		<description><![CDATA[Work is ongoing on the system call fuzzer I wrote about last month. Since I initially talked about it, it&#8217;s found a few more bugs. CVE-2010-4256: Pipe fcntl local denial of service. The inode struct in the kernel contains this union.. union { struct pipe_inode_info *i_pipe; struct block_device *i_bdev; struct cdev *i_cdev; }; A missing [...]<p><a href="http://codemonkey.org.uk/2010/12/15/system-call-fuzzing-continued/">System call fuzzing continued.</a> is a post from: <a href="http://codemonkey.org.uk">codemonkey.org.uk</a></p>



No related posts.]]></description>
			<content:encoded><![CDATA[<p>Work is ongoing on the system call fuzzer I wrote about <a href="http://codemonkey.org.uk/2010/11/09/system-call-abuse/">last month</a>.  Since I initially talked about it, it&#8217;s found a few more bugs.</p>
<p><a href="http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2010-4256" rel="nofollow" >CVE-2010-4256</a>: Pipe fcntl local denial of service.<br />
The inode struct in the kernel contains this union..<br />
<code><br />
        union {<br />
                struct pipe_inode_info  *i_pipe;<br />
                struct block_device     *i_bdev;<br />
                struct cdev             *i_cdev;<br />
        };<br />
</code></p>
<p>A missing &#8220;is this a pipe&#8221; check in pipe_fcntl allowed a user to perform pipe ioctl&#8217;s on inodes that were not pipes. (ie, block/char devs).  Things blew up pretty quickly.</p>
<p><a href="http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2010-4347" rel="nofollow" >CVE-2010-4347: Incorrect sysfs permissions</a><br />
One of the things the fuzzer does is to pass random file descriptors to syscalls that expect them.  At first, it generated a few itself on startup by creating a bunch of files.  I changed this to open any files that were readable/writable from sysfs, procfs and /dev.  It prints out what it managed to open on startup.  I immediately noticed something that stood out like a sore thumb.<br />
/sys/kernel/debug/acpi/custom_method was world writable.  As this file allows a user to upload new ACPI tables to the kernel, this is a fairly obvious local root. Thankfully debugfs isn&#8217;t mounted by default on most systems.<br />
This discovery prompted a further investigation into S_IWUGO users in the kernel, which led to a slew of fixes (mostly in the staging tree). A patch is also pending to checkpatch.pl to warn about any new additions, as exporting a file from the kernel with this mode is nearly always a bad idea.</p>
<p>There&#8217;s still a lot more work to do, mostly annotating each and every system call.<br />
An annotated syscall looks like <a href="http://git.codemonkey.org.uk/?p=trinity.git;a=blob;f=syscalls/fcntl.h;h=e45aa1d9bab34795cbb34aa5471c5a26463f3f07;hb=HEAD" rel="nofollow" >this</a>.  It&#8217;s time consuming to read through every syscall and add every possible argument, so right now there are only a dozen or so (out of ~300) fully annotated syscalls. I suspect more kernel bugs to be found as coverage increases.</p>
<p>After lwn picked up on my last post, I got a number of interesting mails, some offering more suggestions for improvements.  One interesting mail I got was from Tavis Ormandy at google, who has been working on <a href="http://code.google.com/p/iknowthis" rel="nofollow" >a similar tool</a>.  We&#8217;ve taken some different design decisions which has meant that both tools may pick up on different bugs, so I don&#8217;t think either is really a replacement for the other.  I&#8217;ve definitely found it inspirational to read through a &#8216;competing&#8217; tool though. Worth checking out if you found my fuzzer interesting at all.</p>
<p>Finally, I changed the name of the project. There were a number of other syscall fuzzers out there all called &#8216;scrashme&#8217;.  To differentiate, mine is now named &#8216;Trinity&#8217;. (Cloning information at <a href="http://codemonkey.org.uk/2010/11/09/system-call-abuse/">original post</a> has been updated).  I chose the name after rat-holing on wikipedia for several hours, reading about <a href="https://secure.wikimedia.org/wikipedia/en/wiki/Trinity_%28nuclear_test%29" rel="nofollow" >nuclear tests</a>. I always liked the Oppenheimer quote &#8220;Now I am become Death, the destroyer of worlds&#8221;. For a project that intentionally attempts to destroy, it seemed fitting.</p>
<p>Now, back to annotating..</p>
<p><a href="http://codemonkey.org.uk/2010/12/15/system-call-fuzzing-continued/">System call fuzzing continued.</a> is a post from: <a href="http://codemonkey.org.uk">codemonkey.org.uk</a></p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://codemonkey.org.uk/2010/12/15/system-call-fuzzing-continued/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Musings on suspend &amp; resume regressions.</title>
		<link>http://codemonkey.org.uk/2010/12/01/musings-suspend-resume-regressions/</link>
		<comments>http://codemonkey.org.uk/2010/12/01/musings-suspend-resume-regressions/#comments</comments>
		<pubDate>Thu, 02 Dec 2010 00:19:17 +0000</pubDate>
		<dc:creator>davej</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://codemonkey.org.uk/?p=294</guid>
		<description><![CDATA[Suspend/Resume support on Linux has come a long way over the last few years. In the early Fedora releases, we explicitly didn&#8217;t support it, because we knew just how bad things were. When we added the initial support to Fedora (circa FC4 or 5 iirc), we had tested it on a bunch of laptops we [...]<p><a href="http://codemonkey.org.uk/2010/12/01/musings-suspend-resume-regressions/">Musings on suspend &#038; resume regressions.</a> is a post from: <a href="http://codemonkey.org.uk">codemonkey.org.uk</a></p>



No related posts.]]></description>
			<content:encoded><![CDATA[<p>Suspend/Resume support on Linux has come a long way over the last few years.  In the early Fedora releases, we explicitly didn&#8217;t support it, because we knew just how bad things were.  When we added the initial support to Fedora (circa FC4 or 5 iirc), we had tested it on a bunch of laptops we had in the office (which translated to: &#8220;omg, so many thinkpad models&#8221; + a handful of outliers). After the initial release, obviously more users started expecting it to work on more varied hardware, which over time has been a mixed bag of success/misery.</p>
<p>One common thing throughout all of this though, has been the problem of regressions. Someone who had suspend/resume on Fedora work out of the box on one Fedora release, expects it to work just as well if not better on the next release.</p>
<p>A common refrain from users who see regressions like this is &#8220;suspend still works in Windows after I apply updates&#8221;.<br />
The big difference of course is that these other operating systems aren&#8217;t on six month release cycles, with a kernel that&#8217;s still seeing <a href="http://www.linuxfoundation.org/docs/lf_linux_kernel_development_2010.pdf" rel="nofollow" >huge rate of change</a> every 12 weeks.</p>
<p>But the nature of suspend/resume itself is an incredibly fragile process on any operating system.<br />
I&#8217;ve seen both Windows and OS X fail to resume after installing updates and/or third party drivers. I.e., as soon as something is introduced that wasn&#8217;t the &#8216;tested gold master&#8217;  configuration.  It turns out that it&#8217;s a really, really tough problem to support every possible hardware platform out there, even if you&#8217;re a huge company like Microsoft, or if you&#8217;re a company that controls the hardware you run on, like Apple.</p>
<p>The big problem with diagnosing problems with suspend/resume though is that they typically need a developer with hands-on access to the machine in question. Short of cornering Matthew Garrett at a conference though, the only options are back and forth via email/bugzilla, which isn&#8217;t necessarily the most optimal way to debug things. Additionally, the <a href="https://fedoraproject.org/wiki/KernelCommonProblems#Suspend.2FResume_failure" rel="nofollow" >methods for diagnosing suspend/resume failures</a> are still kinda in the dark ages.</p>
<p>Five years ago, things were pretty hopeless. Today, they aren&#8217;t great but they&#8217;re a lot better. Maybe in another five years things will be robust enough that we can take it for granted as a feature that always works. I personally feel that they have to for features like aggressive runtime power management to become more prevalent.</p>
<p><a href="http://codemonkey.org.uk/2010/12/01/musings-suspend-resume-regressions/">Musings on suspend &#038; resume regressions.</a> is a post from: <a href="http://codemonkey.org.uk">codemonkey.org.uk</a></p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://codemonkey.org.uk/2010/12/01/musings-suspend-resume-regressions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>chasing a heisenbug.</title>
		<link>http://codemonkey.org.uk/2010/11/17/chasing-heisenbug/</link>
		<comments>http://codemonkey.org.uk/2010/11/17/chasing-heisenbug/#comments</comments>
		<pubDate>Thu, 18 Nov 2010 02:49:19 +0000</pubDate>
		<dc:creator>davej</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://codemonkey.org.uk/?p=292</guid>
		<description><![CDATA[I&#8217;ve spent the last three days tearing out what little hair I have. For a while now (since circa 2.6.36rc6&#8242;s release) I haven&#8217;t been able to boot a more recent kernel on my laptop. It&#8217;s been one of those things I&#8217;ve been meaning to dig into for a while, but what with kernel summit, plumbers [...]<p><a href="http://codemonkey.org.uk/2010/11/17/chasing-heisenbug/">chasing a heisenbug.</a> is a post from: <a href="http://codemonkey.org.uk">codemonkey.org.uk</a></p>



No related posts.]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve spent the last three days tearing out what little hair I have.<br />
For a while now (since circa 2.6.36rc6&#8242;s release) I haven&#8217;t been able to boot a more recent kernel on my laptop.<br />
It&#8217;s been one of those things I&#8217;ve been meaning to dig into for a while, but what with kernel summit, plumbers conf, and being distracted with <a href="http://codemonkey.org.uk/2010/11/09/system-call-abuse/">other projects</a>, I back-burnered it for a while, hoping that someone would magically fix it while I did something else.</p>
<p>With the syscall fuzzer running out of things to break in 2.6.36, it became more pressing to move the laptop onto something more recent, which meant I had to track it down.  Initially I suspected kernel bug.  It froze during booting just after initializing usb, printing two messages about disabling interrupts. I bisected it using a bunch of old rpm&#8217;s from koji, and found the exact kernel version that it broke on.  During that day, a bunch of acpi patches got merged, so I figured one of those was to blame.  Hours and hours of bisecting/compiling/rebooting later, bisect told me lies.<br />
Linus pointed out that maybe one of my assumptions was incorrect. Perhaps 2.6.36rc6 which I marked as &#8216;good&#8217; was broken too. So I did a local compile of the kernel that was working fine as an rpm, and sure enough it was also broken.</p>
<p>I checked the compiler version. Hadn&#8217;t changed.  Then it dawned on me that maybe there was something in the initramfs that was breaking.  I diffed a working vs broken initramfs, and got a ton of &#8216;Binary files foo differs&#8217; messages, but nothing in the dracut scripts themselves. My thought at this point: something that got updated during f14 broke initramfs&#8217;s, and the version that I created my rc6 kernel from was made using an earlier toolset.  To test this prognosis, I regenerated the working initramfs with the current tools, rebooted, and sure enough.. boom.</p>
<p>At this point I had dozens of possible suspect packages.  I ended up doing a complete f14 reinstall. Booted a test kernel just fine. yum updated to current. boom.  Now I knew for sure I was on the right path.  I reinstalled again. Then went through a painful cycle of..</p>
<p>update one package<br />
remove and then install kernel package (thus regenerating the initramfs)<br />
reboot</p>
<p>hours later&#8230; I was fully updated, and everything works fine.</p>
<p>I have no idea why the bug isn&#8217;t manifesting now. I have this nagging feeling it&#8217;ll be back at some point.<br />
(This blog entry is mostly to remind myself what happened in case it does rear its head again).</p>
<p>Some days I hate computers.</p>
<p><a href="http://codemonkey.org.uk/2010/11/17/chasing-heisenbug/">chasing a heisenbug.</a> is a post from: <a href="http://codemonkey.org.uk">codemonkey.org.uk</a></p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://codemonkey.org.uk/2010/11/17/chasing-heisenbug/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>system call abuse.</title>
		<link>http://codemonkey.org.uk/2010/11/09/system-call-abuse/</link>
		<comments>http://codemonkey.org.uk/2010/11/09/system-call-abuse/#comments</comments>
		<pubDate>Tue, 09 Nov 2010 19:40:13 +0000</pubDate>
		<dc:creator>davej</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://codemonkey.org.uk/?p=290</guid>
		<description><![CDATA[Long time no blog. For a while I&#8217;ve been working on a system call fuzzing tool. A really long time ago, Kurt Garloff wrote one, which I added some improvements to, which just blasted random crap in every register, and called random calls. After it triggered some really stupid bugs which got fixed pretty quickly, [...]<p><a href="http://codemonkey.org.uk/2010/11/09/system-call-abuse/">system call abuse.</a> is a post from: <a href="http://codemonkey.org.uk">codemonkey.org.uk</a></p>



No related posts.]]></description>
			<content:encoded><![CDATA[<p>Long time no blog.</p>
<p>For a while I&#8217;ve been working on a system call fuzzing tool. A really long time ago, Kurt Garloff wrote one, which I added some improvements to, which just blasted random crap in every register, and called random calls. After it triggered some really stupid bugs which got fixed pretty quickly, it rarely found anything again. Sometimes when a new syscall was added, someone would miss something, and it would trigger some new bug, but for the most part every call just -EINVAL&#8217;d immediately.</p>
<p>So I started exploring the idea of writing a tool that instead of passing random junk, actually passed semi sensible data. If the first thing a syscall does is check if a value is between 0 and 3, then passing rand() % 3 is going to get us further into the function than it would if we had just passed rand() unmasked.  There are a bunch of other things that can be done too. If a syscall expects a file descriptor, pass one. If it expects an address of a structure, pass it realistic looking addresses (kernel addresses, userspace addresses, &#8216;weird&#8217; looking addresses).</p>
<p>The new tool <a href="http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=63bfd7384b119409685a17d5c58f0b56e5dc03da" rel="nofollow" >just found its first real bug</a>.  If perf is running, and mprotect is being fuzzed, then we get an oops. Oops indeed.</p>
<p>I suspect it&#8217;ll find some more bugs over time as I add more twists on &#8216;random&#8217; data. I already have a bunch of ideas that I want to implement (some are listed in the TODO).  Seeing a bunch of people at the kernel summit / plumbers conf last week gave me a whole bunch more ideas too.</p>
<p>The git tree for the tool is at git://git.codemonkey.org.uk/trinity.git<br />
(<a href="http://git.codemonkey.org.uk/?p=trinity.git;a=summary" rel="nofollow" >gitweb</a>)<br />
Snapshot tarballs are at <a href="http://codemonkey.org.uk/projects/trinity/">http://codemonkey.org.uk/projects/trinity/</a></p>
<p><a href="http://codemonkey.org.uk/2010/11/09/system-call-abuse/">system call abuse.</a> is a post from: <a href="http://codemonkey.org.uk">codemonkey.org.uk</a></p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://codemonkey.org.uk/2010/11/09/system-call-abuse/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SELinux on low memory systems.</title>
		<link>http://codemonkey.org.uk/2010/07/29/selinux-memory-systems/</link>
		<comments>http://codemonkey.org.uk/2010/07/29/selinux-memory-systems/#comments</comments>
		<pubDate>Fri, 30 Jul 2010 01:15:22 +0000</pubDate>
		<dc:creator>davej</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[selinux]]></category>

		<guid isPermaLink="false">http://www.codemonkey.org.uk/?p=288</guid>
		<description><![CDATA[My router is a pretty underpowered machine. It has 512MB of RAM, and its &#8216;disk&#8217; is a 2GB flash card on a CF to ATA adaptor (read as: really slow). But given its job is just routing packets 99% of the time, neither of these deficiencies are an issue. Asides from one problem. Every time [...]<p><a href="http://codemonkey.org.uk/2010/07/29/selinux-memory-systems/">SELinux on low memory systems.</a> is a post from: <a href="http://codemonkey.org.uk">codemonkey.org.uk</a></p>



No related posts.]]></description>
			<content:encoded><![CDATA[<p>My router is a pretty underpowered machine. It has 512MB of RAM, and its &#8216;disk&#8217; is a 2GB flash card on a CF to ATA adaptor (read as: really slow). But given its job is just routing packets 99% of the time, neither of these deficiencies are an issue.</p>
<p>Asides from one problem.  Every time I did a yum update that pulled in an selinux policy update, it would consistently exhaust all the ram in the machine. I filed a bug on this,  and as usual, Dan Walsh dropped some selinux knowledge that I had no idea about.</p>
<blockquote><p>
You can customize the bzip block size and &#8220;small&#8221; flag via<br />
/etc/selinux/semanage.conf. After applying you can add entries like these to<br />
your /etc/selinux/semanage.conf to trade off memory vs disk space (block size)<br />
and to trade off memory vs runtime (small):</p>
<p>bzip-blocksize=4<br />
bzip-small=true</p>
<p>You can also disable bzip compression altogether for your module store<br />
via:<br />
bzip-blocksize=0
</p></blockquote>
<p>Since I put that first tweak in place, it&#8217;s survived several policy updates without a hiccup.</p>
<p><a href="http://codemonkey.org.uk/2010/07/29/selinux-memory-systems/">SELinux on low memory systems.</a> is a post from: <a href="http://codemonkey.org.uk">codemonkey.org.uk</a></p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://codemonkey.org.uk/2010/07/29/selinux-memory-systems/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>nuforce udac</title>
		<link>http://codemonkey.org.uk/2010/07/03/nuforce-udac/</link>
		<comments>http://codemonkey.org.uk/2010/07/03/nuforce-udac/#comments</comments>
		<pubDate>Sat, 03 Jul 2010 23:33:15 +0000</pubDate>
		<dc:creator>davej</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[hardware]]></category>
		<category><![CDATA[nuforce]]></category>
		<category><![CDATA[sound]]></category>
		<category><![CDATA[udac]]></category>

		<guid isPermaLink="false">http://www.codemonkey.org.uk/?p=285</guid>
		<description><![CDATA[I&#8217;m obsessed with music. I can&#8217;t imagine a day without it. Regardless of what I&#8217;m doing, there&#8217;s pretty much always something playing in the background. From time to time I move my work setup from one room to another, just to shake things up, and break some habits. Recently I did this, and it involved [...]<p><a href="http://codemonkey.org.uk/2010/07/03/nuforce-udac/">nuforce udac</a> is a post from: <a href="http://codemonkey.org.uk">codemonkey.org.uk</a></p>



No related posts.]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m obsessed with music. I can&#8217;t imagine a day without it. Regardless of what I&#8217;m doing, there&#8217;s pretty much always something playing in the background.  From time to time I move my work setup from one room to another, just to shake things up, and break some habits. Recently I did this, and it involved using a different machine to usual as my desktop.<br />
After setting up, I noticed that something just didn&#8217;t sound right with my music. All the high end frequencies sounded harsh and mashed together. The low end wasn&#8217;t anything amazing either. I tried some different speakers. It sounded even worse. At this point I thought I was going crazy, and tried some headphones (my tried and tested <a href="http://www.amazon.com/gp/product/B000065BPB?ie=UTF8&#038;tag=codemonkeyorg-20&#038;linkCode=as2&#038;camp=1789&#038;creative=390957&#038;creativeASIN=B000065BPB" rel="nofollow" >Sennheiser HD-280&#8242;s</a><img src="http://www.assoc-amazon.com/e/ir?t=codemonkeyorg-20&#038;l=as2&#038;o=1&#038;a=B000065BPB" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> &#8212; What I like about these is that I&#8217;ve used them long enough that I know what to expect from them, so I know when something isn&#8217;t sounding right).  Again, it sounded lifeless and dull, and high frequencies were almost painful.</p>
<p>What the hell was going on ? I started wondering if I could blame it on software. Maybe there was something in the driver that I could tweak. Maybe Pulseaudio was doing something wrong.  I spent an afternoon looking for things to configure, going as far as disabling power management features in the hope that was the cause. In the end, I gave up. I just decided that the &#8220;High Definition Audio Controller&#8221; built into the ICH7 chipset, or some other components in the audio signal path on the motherboard was crap.</p>
<p>A few months ago, <a href="http://www.c133.org" rel="nofollow" >Chris Lee</a> visited, and brought with him a <a href="http://www.amazon.com/gp/product/B003Y5FRNS/ref=as_li_ss_tl?ie=UTF8&#038;tag=codemonkeyorg-20&#038;linkCode=as2&#038;camp=1789&#038;creative=390957&#038;creativeASIN=B003Y5FRNS" rel="nofollow" >NuForce Icon uDAC</a><img src="http://www.assoc-amazon.com/e/ir?t=codemonkeyorg-20&#038;l=as2&#038;o=1&#038;a=B002VNIRWM" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />. (He also brought a pair of $1500 headphones for which he took much ridicule for being an audiophile). I got the chance to try out his setup at the time, and I admit it did sound great (even with my cheapo $99 headphones).</p>
<p>Remembering all this, I decided to pick up a udac, and give it a shot. As suspected, it worked perfectly. Complete plug and play experience, with no complications, and the crystal clear audio that I wanted. I can hear bass frequencies again. High frequencies are reproduced in a manner that doesn&#8217;t sound like tinnitus.</p>
<p>It&#8217;s weird. I used to think that the days of add-in sound cards were over with the advent of onboard motherboard sound. For as long as there exist motherboard implementations that sound this bad, I&#8217;m thankful that you can still pick up inexpensive quality solutions.</p>
<p><a href="http://codemonkey.org.uk/2010/07/03/nuforce-udac/">nuforce udac</a> is a post from: <a href="http://codemonkey.org.uk">codemonkey.org.uk</a></p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://codemonkey.org.uk/2010/07/03/nuforce-udac/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Russian spies. Ad-hoc networks.</title>
		<link>http://codemonkey.org.uk/2010/07/01/russian-spies-adhoc-networks/</link>
		<comments>http://codemonkey.org.uk/2010/07/01/russian-spies-adhoc-networks/#comments</comments>
		<pubDate>Thu, 01 Jul 2010 23:08:46 +0000</pubDate>
		<dc:creator>davej</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[adhoc]]></category>
		<category><![CDATA[networking]]></category>
		<category><![CDATA[wireless]]></category>

		<guid isPermaLink="false">http://www.codemonkey.org.uk/?p=284</guid>
		<description><![CDATA[I&#8217;ve been following the recent news story about the russian spy ring that was busted in the US. In particular, I found this blog has some fascinating info on how they were allegedly operating. The bit about a truck pulling up with an ad-hoc wireless network for the spy to connect to intrigued me. It [...]<p><a href="http://codemonkey.org.uk/2010/07/01/russian-spies-adhoc-networks/">Russian spies. Ad-hoc networks.</a> is a post from: <a href="http://codemonkey.org.uk">codemonkey.org.uk</a></p>



No related posts.]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been following the recent news story about the russian spy ring that was busted in the US.  In particular, I found <a href="http://garwarner.blogspot.com/2010/06/anna-chapman-and-mikhail-semenko-vs-fbi_29.html" rel="nofollow" >this blog</a> has some fascinating info on how they were allegedly operating.  The bit about a truck pulling up with an ad-hoc wireless network for the spy to connect to intrigued me. It seems like an obvious thing to do reading about it, but it made me realize, I don&#8217;t think I&#8217;ve ever actually used ad-hoc networking (for spy related activities or otherwise).</p>
<p><a href="http://codemonkey.org.uk/2010/07/01/russian-spies-adhoc-networks/">Russian spies. Ad-hoc networks.</a> is a post from: <a href="http://codemonkey.org.uk">codemonkey.org.uk</a></p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://codemonkey.org.uk/2010/07/01/russian-spies-adhoc-networks/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>interesting windows 8 leaked info.</title>
		<link>http://codemonkey.org.uk/2010/06/28/interesting-windows-8-leaked-info/</link>
		<comments>http://codemonkey.org.uk/2010/06/28/interesting-windows-8-leaked-info/#comments</comments>
		<pubDate>Tue, 29 Jun 2010 04:25:55 +0000</pubDate>
		<dc:creator>davej</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://www.codemonkey.org.uk/?p=281</guid>
		<description><![CDATA[I found this article interesting. The power management slides could be retitled &#8220;what Linux has done in the last three years&#8221;. So windows 7 didn&#8217;t ship with a dynamic timer tick ? Surprising. Linux isn&#8217;t perfect when it comes to power management, but we&#8217;re a lot better than we were, and it&#8217;s interesting to see [...]<p><a href="http://codemonkey.org.uk/2010/06/28/interesting-windows-8-leaked-info/">interesting windows 8 leaked info.</a> is a post from: <a href="http://codemonkey.org.uk">codemonkey.org.uk</a></p>



No related posts.]]></description>
			<content:encoded><![CDATA[<p>I found <a href="http://msftkitchen.com/2010/06/windows-8-plans-leaked-numerous-details-revealed.html" rel="nofollow" >this article</a> interesting.  The power management slides could be retitled &#8220;what Linux has done in the last three years&#8221;.  So windows 7 didn&#8217;t ship with a dynamic timer tick ?  Surprising.   Linux isn&#8217;t perfect when it comes to power management, but we&#8217;re a lot better than we were, and it&#8217;s interesting to see Windows now planning on using some of the same innovations.</p>
<p>The &#8216;fast startup&#8217; slides are interesting too.  The &#8216;logoff &#038; hibernate&#8217; is the only real &#8216;new&#8217; feature there afaics.  It&#8217;s interesting to see terms used that have become passe in Linux like &#8216;cache prefetching&#8217; and &#8216;parallel startup&#8217;.</p>
<p><a href="http://codemonkey.org.uk/2010/06/28/interesting-windows-8-leaked-info/">interesting windows 8 leaked info.</a> is a post from: <a href="http://codemonkey.org.uk">codemonkey.org.uk</a></p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://codemonkey.org.uk/2010/06/28/interesting-windows-8-leaked-info/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Spot the shell bug.</title>
		<link>http://codemonkey.org.uk/2010/03/29/spot-shell-bug/</link>
		<comments>http://codemonkey.org.uk/2010/03/29/spot-shell-bug/#comments</comments>
		<pubDate>Mon, 29 Mar 2010 18:31:27 +0000</pubDate>
		<dc:creator>davej</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[lazyweb]]></category>
		<category><![CDATA[shell]]></category>
		<category><![CDATA[spot-the-bug]]></category>

		<guid isPermaLink="false">http://www.codemonkey.org.uk/?p=280</guid>
		<description><![CDATA[This is bugging me. I&#8217;m missing something obvious here, and I can&#8217;t see what. I have this script that I use to sync the fedora rawhide tree locally. It works fine. But something odd happens with the tests for complete trees. As you can see in this screenshot, sometimes the &#8216;incomplete&#8217; message gets printed in [...]<p><a href="http://codemonkey.org.uk/2010/03/29/spot-shell-bug/">Spot the shell bug.</a> is a post from: <a href="http://codemonkey.org.uk">codemonkey.org.uk</a></p>



No related posts.]]></description>
			<content:encoded><![CDATA[<p>This is bugging me.  I&#8217;m missing something obvious here, and I can&#8217;t see what.<br />
I have <a href="http://davej.fedorapeople.org/sync.sh" rel="nofollow" >this script</a> that I use to sync the fedora rawhide tree locally.  It works fine.  But something odd happens with the tests for complete trees.</p>
<p>As you can see in <a href="/images/shell-colors-wtf.png" rel="nofollow" >this screenshot</a>, sometimes the &#8216;incomplete&#8217; message gets printed in green, even though the echo is prefixed with the escape codes for red.</p>
<p>lazyweb , wtf is going on here?</p>
<p>UPDATE: Duhh. typo on line 37. The &#8216;incomplete&#8217; should say &#8216;complete&#8217;<br />
(When trying to debug this, I replaced &#8216;complete&#8217; and &#8216;incomplete&#8217; with &#8216;red&#8217; and &#8216;green&#8217;. *headdesk*)</p>
<p><a href="http://codemonkey.org.uk/2010/03/29/spot-shell-bug/">Spot the shell bug.</a> is a post from: <a href="http://codemonkey.org.uk">codemonkey.org.uk</a></p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://codemonkey.org.uk/2010/03/29/spot-shell-bug/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

