<?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>Puppies, Flowers, Rainbows and Kittens &#187; Software Engineering</title>
	<atom:link href="http://blog.kevingoldsmith.com/category/software-engineering/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.kevingoldsmith.com</link>
	<description>Sarcasm and vitriol wrapped in a twee bow.</description>
	<lastBuildDate>Mon, 30 Jan 2012 15:10:13 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Speaking on the &#8220;Teach Parallel&#8221; show on IntelTV tomorrow</title>
		<link>http://blog.kevingoldsmith.com/2011/05/16/speaking-on-the-teach-parallel-show-on-inteltv-tomorrow/</link>
		<comments>http://blog.kevingoldsmith.com/2011/05/16/speaking-on-the-teach-parallel-show-on-inteltv-tomorrow/#comments</comments>
		<pubDate>Tue, 17 May 2011 00:57:58 +0000</pubDate>
		<dc:creator>kevin</dc:creator>
				<category><![CDATA[Software Engineering]]></category>
		<category><![CDATA[adobe]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[hiring]]></category>
		<category><![CDATA[intel]]></category>
		<category><![CDATA[inteltv]]></category>
		<category><![CDATA[interview]]></category>
		<category><![CDATA[jobs]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://blog.kevingoldsmith.com/?p=870</guid>
		<description><![CDATA[[crosspost from my adobe.com blog] Tomorrow morning, I&#8217;ll be speaking with Paul Steinberg of Intel and Tom Murphy of Contra Costa college about the criticality of understanding parallel programming techniques for industry. In my previous role on the Adobe Image Foundation, it was an obvious requirement for our hiring candidates. We were building tools for [...]]]></description>
			<content:encoded><![CDATA[<p>[<a href="http://blogs.adobe.com/kevin-goldsmith/2011/05/speaking-on-the-teach-parallel-show-on-inteltv-tomorrow.html">crosspost from my adobe.com blog</a>]</p>
<p>Tomorrow morning, I&#8217;ll be speaking with Paul Steinberg of Intel and Tom Murphy of Contra Costa college about the criticality of understanding parallel programming techniques for industry.</p>
<p>In my previous role on the Adobe Image Foundation, it was an obvious requirement for our hiring candidates. We were building tools for a insanely parallel problem, image and video processing. Now that I&#8217;m working on a new product, it would maybe seem that it would not be as important. In fact, our threading models are even more complicated than in my previous group. My expectations around threading knowledge for incoming candidates are just as high.</p>
<p>Even the most modest mobile hardware is going (or has gone) parallel. In addition, the expectations from a user perspective around interactivity with their applications is never higher. A laggy touch interface is death to an application (or a platform). Going to get coffee while your image renders on a desktop is a thing of the past. User&#8217;s expectations of the software we write is higher than ever and it is nearly impossible to get this interactivity without taking advantage of multi-threading on today&#8217;s multi-core processors.</p>
<p>The tools continue to improve, but the threading models continue to evolve. A fundamental understanding of multi-threading is critical for anyone moving into Software Engineering or looking to stay current in their field.</p>
<p>I always enjoy talking with Paul and Tom, and expect that we&#8217;ll have a lively conversation.</p>
<p><a href="http://software.intel.com/en-us/tv/">Tune in live on May 17, 10:00 AM PDT</a></p>
<p><a href="http://origin-software.intel.com/en-us/blogs/2011/05/09/does-parallelism-matter-to-hiring-managers/">Here is Paul&#8217;s post on the subject.</a></p>
<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.kevingoldsmith.com%2F2011%2F05%2F16%2Fspeaking-on-the-teach-parallel-show-on-inteltv-tomorrow%2F&amp;layout=standard&amp;show_faces=true&amp;width=400&amp;action=like&amp;colorscheme=light" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:400px;height:60px;margin-top:5px;"></iframe>]]></content:encoded>
			<wfw:commentRss>http://blog.kevingoldsmith.com/2011/05/16/speaking-on-the-teach-parallel-show-on-inteltv-tomorrow/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Speaking at the AMD Fusion Developer Summit &#8211; June</title>
		<link>http://blog.kevingoldsmith.com/2011/04/11/speaking-at-the-amd-fusion-developer-summit-june/</link>
		<comments>http://blog.kevingoldsmith.com/2011/04/11/speaking-at-the-amd-fusion-developer-summit-june/#comments</comments>
		<pubDate>Tue, 12 Apr 2011 07:57:04 +0000</pubDate>
		<dc:creator>kevin</dc:creator>
				<category><![CDATA[Meta]]></category>
		<category><![CDATA[Software Engineering]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[AMD]]></category>
		<category><![CDATA[conference]]></category>
		<category><![CDATA[pixel bender]]></category>
		<category><![CDATA[speaking]]></category>
		<category><![CDATA[talks]]></category>

		<guid isPermaLink="false">http://blog.kevingoldsmith.com/?p=867</guid>
		<description><![CDATA[If you are planning on attending the AMD Fusion Developer Summit in Bellevue, WA in June, come see me talk about Pixel Bender (probably for the last time!) with Bob Archer. Here is the description of the session: Pixel Bender is a domain-specific image processing language created by the Adobe Image Foundation, and includes a [...]]]></description>
			<content:encoded><![CDATA[<p>If you are planning on attending the AMD Fusion Developer Summit in Bellevue, WA in June, come see me talk about Pixel Bender (probably for the last time!) with Bob Archer. Here is the description of the session:</p>
<blockquote><p>Pixel Bender is a domain-specific image processing language created by the Adobe Image Foundation, and includes a runtime designed to work well across heterogeneous hardware, scaling efficiently for multiple cores. This runtime currently ships in a number of Adobe&#8217;s flagship products. Bob Archer, Technical Lead, and Kevin Goldsmith, Engineering Manager, will talk about the design of the language, compilers, and runtime. They will also discuss how the Adobe system can incorporate complimentary technologies like OpenCL and can scale to accommodate new hardware paradigms like the AMD Fusion processors.</p></blockquote>
<p>Hope to see you there!</p>
<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.kevingoldsmith.com%2F2011%2F04%2F11%2Fspeaking-at-the-amd-fusion-developer-summit-june%2F&amp;layout=standard&amp;show_faces=true&amp;width=400&amp;action=like&amp;colorscheme=light" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:400px;height:60px;margin-top:5px;"></iframe>]]></content:encoded>
			<wfw:commentRss>http://blog.kevingoldsmith.com/2011/04/11/speaking-at-the-amd-fusion-developer-summit-june/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HPC on the (relative) cheap using public cloud providers</title>
		<link>http://blog.kevingoldsmith.com/2011/04/11/hpc-on-the-relative-cheap-using-public-cloud-providers/</link>
		<comments>http://blog.kevingoldsmith.com/2011/04/11/hpc-on-the-relative-cheap-using-public-cloud-providers/#comments</comments>
		<pubDate>Tue, 12 Apr 2011 07:49:21 +0000</pubDate>
		<dc:creator>kevin</dc:creator>
				<category><![CDATA[Software Engineering]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[The Internet]]></category>
		<category><![CDATA[amazon]]></category>
		<category><![CDATA[cloud computing]]></category>
		<category><![CDATA[Cycle Computing]]></category>
		<category><![CDATA[EC2]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[high performance computing]]></category>
		<category><![CDATA[hpc]]></category>
		<category><![CDATA[supercomputing]]></category>

		<guid isPermaLink="false">http://blog.kevingoldsmith.com/?p=864</guid>
		<description><![CDATA[For the past several years, I&#8217;ve been working on leveraging high-performance computing techniques for high-throughput data intensive processing on desktop computers for stuff like image and video processing. Its been fun tracking what the multi-processing end of HPC has been doing, where the top 100 super-computer list has been very competitive and very active. Countries, [...]]]></description>
			<content:encoded><![CDATA[<p>For the past several years, I&#8217;ve been working on leveraging high-performance computing techniques for high-throughput data intensive processing on desktop computers for stuff like image and video processing. Its been fun tracking what the multi-processing end of HPC has been doing, where the top 100 super-computer list has been very competitive and very active. Countries, IHVs and universities vie for who can generate more teraflops; spending millions and millions of dollars on the cooling plants alone for their dedicated data centers. These super computers exist to solve the <strong>BIG PROBLEMS</strong> of computing, and aren&#8217;t really useful beyond that.</p>
<p>At the same time, I&#8217;ve been following the public computing clouds like Amazon&#8217;s EC2, Google&#8217;s App Engine and Rack Space&#8217;s Public Cloud. These have been interesting for providing compute on the other end of the spectrum, occasional compute tasks, or higher average workloads with the occasional spike capability (like web apps). The public clouds are made up of thousands of servers and certainly rival or best the super computers in numbers of cores and raw compute power, but they exist for a different purpose.</p>
<p><a href="http://www.theregister.co.uk/2011/04/06/cycle_computing_hpc_cloud/">This article in The Register</a> really got me excited. Especially when I read this:</p>
<blockquote><p>Stowe tells El Reg that during December last year, Cycle Computing set up increasingly large clusters on behalf of customers to start testing the limits. First, it did a 2,000-core cluster in early December, and then a 4,096-core cluster in late December. The 10,000-core cluster that Cycle Computing set up and ran for eight hours on behalf of Genentech would have ranked at 114 on the Top 500 computing list from last November (the most current ranking), so it was not exactly a toy even if the cluster was ephemeral.</p></blockquote>
<p>The cost of running this world-class super computer?</p>
<blockquote><p>Genentech loaded up its code and ran the job for eight hours at a total cost of $8,480, including EC2 compute and S3 storage capacity charges from Amazon and the fee for using the Cycle Computing tools as a service.</p></blockquote>
<p>Real world HPC is now coming into price points where it is accessible to even small companies or research groups. This seems like a ripe opportunity for companies who can apply HPC-techniques to solve real problems for others, and for tools vendors who can make using these ephemeral clouds easier for companies who want to take advantage of them without having to build up high-end expertise in-house.</p>
<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.kevingoldsmith.com%2F2011%2F04%2F11%2Fhpc-on-the-relative-cheap-using-public-cloud-providers%2F&amp;layout=standard&amp;show_faces=true&amp;width=400&amp;action=like&amp;colorscheme=light" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:400px;height:60px;margin-top:5px;"></iframe>]]></content:encoded>
			<wfw:commentRss>http://blog.kevingoldsmith.com/2011/04/11/hpc-on-the-relative-cheap-using-public-cloud-providers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>On Test-Driven Development</title>
		<link>http://blog.kevingoldsmith.com/2011/04/09/on-test-driven-development/</link>
		<comments>http://blog.kevingoldsmith.com/2011/04/09/on-test-driven-development/#comments</comments>
		<pubDate>Sat, 09 Apr 2011 14:15:35 +0000</pubDate>
		<dc:creator>kevin</dc:creator>
				<category><![CDATA[Software Engineering]]></category>

		<guid isPermaLink="false">http://blog.kevingoldsmith.com/?p=860</guid>
		<description><![CDATA[I was having a conversation with someone the other day about unit testing. OK, actually I was interviewing someone for a Quality Engineering position on my team. We were talking about the difference between white-box tests that quality engineers write and tests that developers write. I suggested that good white-box testers test the functionality and [...]]]></description>
			<content:encoded><![CDATA[<p>I was having a conversation with someone the other day about unit testing. OK, actually I was interviewing someone for a Quality Engineering position on my team. We were talking about the difference between white-box tests that quality engineers write and tests that developers write. </p>
<p>I suggested that good white-box testers test the functionality and the failure cases (the intent of the function) and developers test the code that they&#8217;ve written (the function as coded). This then lead me to a new revelation around test-first development methodologies (or possibly reminded me of something I had forgotten).</p>
<p>I have been a proponent of writing tests first, since I first started doing Extreme Programming and read Kent Beck&#8217;s original book, <a href="http://www.amazon.com/gp/product/0321278658/ref=as_li_qf_sp_asin_tl?ie=UTF8&#038;tag=booksforvirtualw&#038;linkCode=as2&#038;camp=1789&#038;creative=9325&#038;creativeASIN=0321278658">Extreme Programming Explained: Embrace Change</a><img src="http://www.assoc-amazon.com/e/ir?t=booksforvirtualw&#038;l=as2&#038;o=1&#038;a=0321278658" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /> while working at Bootleg Networks (thanks <a href="http://www.mangione.com/">Carmine</a> for making me do that, by the way). Although admittedly, like many developers, I haven&#8217;t always been that rigorous at following that rule.</p>
<p>What I like about writing the tests before the function is that it clarifies my thinking about what the function should do, it alerts me to the corner cases, it gives me reasons to consider if the function is doing too much, and it gives me a way to instantly know if the function works once it is written. Writing the tests first also makes sure that the tests are written at all. Once the function is coded, it sometimes gets tempting to move on to the next bit of coding work with the intention of filling in the tests later.</p>
<p>What I hadn&#8217;t considered about writing the tests before the code is that it puts me into a quality mindset without having any bias to the code as I&#8217;d written it. I&#8217;m divorced from my own blind-spots around my coding. This actually leads me to writing better tests because I have no assumptions about how the code should work or fail. I&#8217;m testing the functionality, not the code.</p>
<p>Maybe I&#8217;d thought about this before, but I hadn&#8217;t really considered that benefit recently until that moment. Now, when I start to get lazy about writing my unit tests before my implementation, I&#8217;ll have a better reason to keep up my discipline.</p>
<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.kevingoldsmith.com%2F2011%2F04%2F09%2Fon-test-driven-development%2F&amp;layout=standard&amp;show_faces=true&amp;width=400&amp;action=like&amp;colorscheme=light" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:400px;height:60px;margin-top:5px;"></iframe>]]></content:encoded>
			<wfw:commentRss>http://blog.kevingoldsmith.com/2011/04/09/on-test-driven-development/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A simple tip for prospective job seekers</title>
		<link>http://blog.kevingoldsmith.com/2010/10/30/a-simple-tip-for-prospective-job-seekers/</link>
		<comments>http://blog.kevingoldsmith.com/2010/10/30/a-simple-tip-for-prospective-job-seekers/#comments</comments>
		<pubDate>Sat, 30 Oct 2010 08:47:28 +0000</pubDate>
		<dc:creator>kevin</dc:creator>
				<category><![CDATA[Software Engineering]]></category>
		<category><![CDATA[job]]></category>
		<category><![CDATA[job hunting]]></category>
		<category><![CDATA[resume]]></category>
		<category><![CDATA[tip]]></category>

		<guid isPermaLink="false">http://blog.kevingoldsmith.com/?p=849</guid>
		<description><![CDATA[If you are graduating with a degree in Computer Science and you are applying to companies in the software field; it is probably not a good idea to say something like &#8220;I&#8217;m looking for a job where I don&#8217;t have to sit in front of a computer all day&#8221; in your summary statement.]]></description>
			<content:encoded><![CDATA[<p>If you are graduating with a degree in Computer Science and you are applying to companies in the software field; it is probably not a good idea to say something like &#8220;I&#8217;m looking for a job where I don&#8217;t have to sit in front of a computer all day&#8221; in your summary statement.</p>
<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.kevingoldsmith.com%2F2010%2F10%2F30%2Fa-simple-tip-for-prospective-job-seekers%2F&amp;layout=standard&amp;show_faces=true&amp;width=400&amp;action=like&amp;colorscheme=light" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:400px;height:60px;margin-top:5px;"></iframe>]]></content:encoded>
			<wfw:commentRss>http://blog.kevingoldsmith.com/2010/10/30/a-simple-tip-for-prospective-job-seekers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New Flash Experiment posted: Image Navigation via Overlay</title>
		<link>http://blog.kevingoldsmith.com/2010/05/12/new-flash-experiment-posted-image-navigation-via-overlay/</link>
		<comments>http://blog.kevingoldsmith.com/2010/05/12/new-flash-experiment-posted-image-navigation-via-overlay/#comments</comments>
		<pubDate>Wed, 12 May 2010 09:03:05 +0000</pubDate>
		<dc:creator>kevin</dc:creator>
				<category><![CDATA[Software Engineering]]></category>
		<category><![CDATA[actionscript]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[experiments]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[HCI]]></category>
		<category><![CDATA[image]]></category>
		<category><![CDATA[processing]]></category>
		<category><![CDATA[ui]]></category>
		<category><![CDATA[user interface]]></category>
		<category><![CDATA[XD]]></category>

		<guid isPermaLink="false">http://blog.kevingoldsmith.com/?p=827</guid>
		<description><![CDATA[I&#8217;ve been working on a lot of Pixel Bender experiments and wanted a nice UI to allow zooming in to examine the effected pixels. I decided to use the method of having an overlaid box on a scaled version of the image that corresponds to a zoomed separate display. I looked around and found some [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.kevingoldsmith.com/labs/ImageNavDemo/"><img class="alignleft" title="Image Navigation demo" src="http://www.kevingoldsmith.com/labs/ImageNavDemo.jpg" alt="screenshot" width="200" height="200" /></a> I&#8217;ve been working on a lot of Pixel Bender experiments and wanted a nice UI to allow zooming in to examine the effected pixels. I decided to use the method of having an overlaid box on a scaled version of the image that corresponds to a zoomed separate display. I looked around and found some nice sample code on <a href="http://www.flexer.info/2008/10/16/how-to-crop-and-resize-an-image-used-as-background-for-canvas/">FLEX{er}</a> written by Stelian Crisan. I mostly added nice UI to adjust the parameters in his code.</p>
<p><a href="http://www.kevingoldsmith.com/labs/ImageNavDemo/">The experiment is posted on the labs area of my site.</a></p>
<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.kevingoldsmith.com%2F2010%2F05%2F12%2Fnew-flash-experiment-posted-image-navigation-via-overlay%2F&amp;layout=standard&amp;show_faces=true&amp;width=400&amp;action=like&amp;colorscheme=light" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:400px;height:60px;margin-top:5px;"></iframe>]]></content:encoded>
			<wfw:commentRss>http://blog.kevingoldsmith.com/2010/05/12/new-flash-experiment-posted-image-navigation-via-overlay/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Moving to scrum: changes</title>
		<link>http://blog.kevingoldsmith.com/2010/05/01/moving-to-scrum-changes/</link>
		<comments>http://blog.kevingoldsmith.com/2010/05/01/moving-to-scrum-changes/#comments</comments>
		<pubDate>Sun, 02 May 2010 04:35:35 +0000</pubDate>
		<dc:creator>kevin</dc:creator>
				<category><![CDATA[Software Engineering]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[scrum]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://blog.kevingoldsmith.com/?p=817</guid>
		<description><![CDATA[So we started this product cycle with two geographically-dispersed mixed-discipline scrum teams on two week sprints. Specifically, the geographical co-mingling was designed to break up some of the silos that had built up on the team due to the existing functional teams being in different cities. By the third sprint, we&#8217;ve now switched back to [...]]]></description>
			<content:encoded><![CDATA[<p>So we started this product cycle with two geographically-dispersed mixed-discipline scrum teams on two week sprints. Specifically, the geographical co-mingling was designed to break up some of the silos that had built up on the team due to the existing functional teams being in different cities. By the third sprint, we&#8217;ve now switched back to scrum teams that mimic the original functional and geographic splits and are now on four week cycles. This has made cross-team communication more difficult, but has made everyone a lot happier by keeping the scrum meetings more relevant to everyone on the team. I can definitely see why people like this more, it lets people focus on what they are doing, but I do think we are losing something by not spreading the knowledge of the different parts of the project around the team. Also, not having multiple functional areas represented in the scrum meetings means that some fresh perspectives are lost in any of the technical discussions that come up. Over the next few sprints we&#8217;ll try this out and see if this is working. I think this will probably be what we stick with, and we&#8217;ll need to address the cross-team communication issues separately.</p>
<p>Switching to four week sprints was mostly to reduce the amount of time spent in the scrum meetings themselves relative to the amount of working time. Between planning poker, retrospectives and sprint planning, a lot of time is lost to the process itself in a two week sprint. For a team used to working on 6 week sprints, fitting stories into 2 week chunks was also difficult. I like the idea of two week sprints, but in practice, it was difficult for a team that is new to scrum. We&#8217;ll maybe try 2 week sprints in a future product cycle.</p>
<p>We still haven&#8217;t switched to our planned internally created scrum tool which itself makes things difficult. Our backlog is an excel spreadsheet and our tracking is all on Wikis. Hopefully, we&#8217;ll be converted over to the tool by the next sprint, which should make life a bit easier on me and the scrum master.</p>
<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.kevingoldsmith.com%2F2010%2F05%2F01%2Fmoving-to-scrum-changes%2F&amp;layout=standard&amp;show_faces=true&amp;width=400&amp;action=like&amp;colorscheme=light" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:400px;height:60px;margin-top:5px;"></iframe>]]></content:encoded>
			<wfw:commentRss>http://blog.kevingoldsmith.com/2010/05/01/moving-to-scrum-changes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pixel Bender Synthesizer Experiment</title>
		<link>http://blog.kevingoldsmith.com/2010/04/23/pixel-bender-synthesizer-experiment/</link>
		<comments>http://blog.kevingoldsmith.com/2010/04/23/pixel-bender-synthesizer-experiment/#comments</comments>
		<pubDate>Sat, 24 Apr 2010 01:18:13 +0000</pubDate>
		<dc:creator>kevin</dc:creator>
				<category><![CDATA[Software Engineering]]></category>
		<category><![CDATA[actionscript]]></category>
		<category><![CDATA[adobe]]></category>
		<category><![CDATA[audio]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[flex]]></category>
		<category><![CDATA[pbj]]></category>
		<category><![CDATA[pixel bender]]></category>
		<category><![CDATA[pixelbender]]></category>
		<category><![CDATA[processing]]></category>
		<category><![CDATA[signal]]></category>

		<guid isPermaLink="false">http://blog.kevingoldsmith.com/?p=808</guid>
		<description><![CDATA[The subject of using Pixel Bender for audio processing on the Flash platform comes up a lot. Audio processing is very processor-intensive and math-heavy, so it would seem natural to leverage Pixel Bender to improve performance of audio within a SWF. At some point, last year, I was talking to Justin Everett-Church about doing a [...]]]></description>
			<content:encoded><![CDATA[<p>The subject of using Pixel Bender for audio processing on the Flash platform comes up a lot. Audio processing is very processor-intensive and math-heavy, so it would seem natural to leverage Pixel Bender to improve performance of audio within a SWF. At some point, last year, I was talking to Justin Everett-Church about doing a demo for Flash Player 10.1 multi-touch features. A synth seemed like a good idea, and it would let me kill two birds with one stone. So I coded up a synth (with a lame Flex UI) and Justin took that and made it pretty and added multi-touch support. That 2nd part of the demo never worked out the way we meant it too (missed the MAX 2009 keynote by <em>this much</em>). After that, I planned on cleaning up the code and posting it, but I got busy shipping CS5 and well, 7 months later, I finally got around to posting it. Right now it is just the playable demo with the crummy Flex UI.</p>
<p>It is a total processor hog, on purpose. I basically wanted to use it to push the limit of what could be done in the player, so I kept adding more filters and processors to it until the audio started to break up on my Core Duo 2 Mac Book Pro and then stepped back just a little. It turns out that you can actually do a ton of audio processing interactively in the player leveraging Pixel Bender. This was also designed to run as an AIR app, which means that if you really want to play with it, close all your other tabs. Really.</p>
<p><a title="Pixel Bender Synth" href="http://www.kevingoldsmith.com/labs/PBSynth-v1/"><img class="alignnone size-medium wp-image-809" title="pbSynthV1" src="http://blog.kevingoldsmith.com/wp-content/uploads/2010/04/pbSynthV1-300x184.jpg" alt="UI for synth" width="300" height="184" /></p>
<p>Pixel Bender Synth Experiment</a><br />
<span id="more-808"></span><br />
I&#8217;ll be posting all the code on the page eventually.</p>
<p>Some techy details:</p>
<ul>
<li>Each Pixel Bender shader is encapsulated within an Actionscript class and launched via a ShaderJob.</li>
<li>Each Pixel Bender filter processes two samples at once to double throughput.</li>
<li>The synth uses three Pixel Bender Shaders as does the Reverb, the other filters use one.</li>
<li>The delay-based filters (reverb/delay) are using simple bit-bucket style delay in actionscript, but the delayed signals are mixed back with the main signal via Pixel Bender shaders.</li>
<li>All signal paths are stereo. When mixing two stereo inputs, a pixel4 representing the 2 sets of stereo channels is used. When processing/generating a single stereo signal, a pixel4 representing two sequential stereo samples is used.</li>
<li>The filters are ordered as such:<br /><a href="http://blog.kevingoldsmith.com/wp-content/uploads/2010/04/Pixel-Bender-Synth.png"><img class="alignnone size-medium wp-image-810" title="Pixel Bender Synth Block Diagram" src="http://blog.kevingoldsmith.com/wp-content/uploads/2010/04/Pixel-Bender-Synth-245x300.png" alt="Pixel Bender Synth Block Diagram" width="245" height="300" /></a></li>
</ul>
<p>Will post more info soon. Ask any questions in the comments. Thanks!</p>
<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.kevingoldsmith.com%2F2010%2F04%2F23%2Fpixel-bender-synthesizer-experiment%2F&amp;layout=standard&amp;show_faces=true&amp;width=400&amp;action=like&amp;colorscheme=light" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:400px;height:60px;margin-top:5px;"></iframe>]]></content:encoded>
			<wfw:commentRss>http://blog.kevingoldsmith.com/2010/04/23/pixel-bender-synthesizer-experiment/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Section 3.3.1 is not new behaviour from Apple</title>
		<link>http://blog.kevingoldsmith.com/2010/04/15/section-3-3-1-is-not-new-behaviour-from-apple/</link>
		<comments>http://blog.kevingoldsmith.com/2010/04/15/section-3-3-1-is-not-new-behaviour-from-apple/#comments</comments>
		<pubDate>Thu, 15 Apr 2010 17:06:01 +0000</pubDate>
		<dc:creator>kevin</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Software Engineering]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[industry]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://blog.kevingoldsmith.com/?p=797</guid>
		<description><![CDATA[[disclaimer: I am an Adobe employee and an Adobe and Apple shareholder, my opinions are my own and not those of my employer.] Like the rest of the software industry, I&#8217;ve been pondering what the effect section 3.3.1 of the iPhone 4.0 SDK will have. I had fully been planning to make an iPhone application [...]]]></description>
			<content:encoded><![CDATA[<p>[<em>disclaimer: I am an Adobe employee and an Adobe and Apple shareholder, my opinions are my own and not those of my employer.</em>]</p>
<p>Like the rest of the software industry, I&#8217;ve been pondering what the effect section 3.3.1 of the iPhone 4.0 SDK will have. I had fully been planning to make an iPhone application at some point. I had planned to do the initial version with Flex to prototype, but then also spend time doing a Cocoa version to better learn that SDK for myself. This iPhone 4.0 SDK announcement honestly has me questioning if I do really want to develop for the iPhone. Not just because of a higher-minded sense of indignity at Apple&#8217;s lack of openness of their platform, but rather because of that combined with their somewhat arbitrary and opaque app store approval process. Could I spend months of my spare time learning ObjectiveC and working on an iPhone application only to have that time be a complete waste if the App store reviewers decide that they don&#8217;t want that app in the store?</p>
<p>Thinking about it this morning, I realized that not only was Apple&#8217;s move to lock in developers nothing new, but that I&#8217;d already written about it before (in fact, I&#8217;ve been blogging about it since almost the day I started doing professional development for the Macintosh): <a href="http://blog.kevingoldsmith.com/2008/03/06/iphone-sdk-the-carrot-for-cocoa-the-stick-for-flash/">iPhone SDK: The carrot for Cocoa, the stick for Flash</a>, <a href="http://blog.kevingoldsmith.com/2007/06/15/the-difference-between-being-an-apple-developer-and-a-microsoft-developer/">The difference between being an Apple developer and a Microsoft developer</a>, <a href="http://blog.kevingoldsmith.com/2006/08/12/developers-developers-developers-developers/">Developers Developers Developers Developers</a>.</p>
<p><a href="http://daringfireball.net/2010/04/why_apple_changed_section_331">Gruber had the motivation right</a>, I think, but I also think he got the ramifications wrong. Since Steve returned to Apple, they have been applying the screws tighter and tighter to their developers, trying to get them to lock in. It was somewhat indirect at first, but the long term implication was clear: &#8220;We&#8217;ll tell you how to develop for our platform, if you do as we say, then you&#8217;ll be fine. If you don&#8217;t do it the way we tell you, your life will be a never-ending stream of headaches.&#8221; The move to Intel (forcing all developers onto X-Code and a big rewrite of any PPC-assembly) was step one, the move to 64-bit (dropping support for Carbon after promising it) was step two. The iPhone 4.0 SDK is just the most obvious move in this process because it basically spells it out. You no longer have a choice: it is Apple&#8217;s way or the highway. The problem is the App store. On the Mac, I control my own distribution. On the iPhone platform, Apple does. That means that they no longer have to negotiate with their developers, they can now finally dictate to them.</p>
<p>As a developer, this makes the iPhone platform a lot less attractive because I also can&#8217;t be sure that they won&#8217;t change the terms again. Once I&#8217;m locked in, I&#8217;m locked in. Apple can do whatever they want and I&#8217;m forced to rewrite my apps or get forced out. As someone who writes software for a living, this scares the crap outta me.</p>
<p><object type="application/x-shockwave-flash" width="425" height="350" data="http://i.adultswim.com/adultswim/video2/tools/swf/viralplayer.swf"><param name="allowFullScreen" value="true" /><param name="movie" value="http://i.adultswim.com/adultswim/video2/tools/swf/viralplayer.swf"/><param name="FlashVars" value="id=8a2505951d8bc25a011d9d9b41680168" /><embed src="http://i.adultswim.com/adultswim/video2/tools/swf/viralplayer.swf" type="application/x-shockwave-flash" FlashVars="id=8a2505951d8bc25a011d9d9b41680168" allowFullScreen="true" width="425" height="350"></embed></object></p>
<p>Here are some other blog posts that I thought were good reading around this:<br />
<a href="http://radar.oreilly.com/2010/04/the-ipad-isnt-a-computer-its-a.html">The iPad isn&#8217;t a computer, it&#8217;s a distribution channel (O&#8217;Reilly Radar)</a><br />
<a href="http://37signals.com/svn/posts/2273-five-rational-arguments-against-apples-331-policy">Five rational arguments against Apple&#8217;s 3.3.1 policy (37 Signals blog)</a></p>
<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.kevingoldsmith.com%2F2010%2F04%2F15%2Fsection-3-3-1-is-not-new-behaviour-from-apple%2F&amp;layout=standard&amp;show_faces=true&amp;width=400&amp;action=like&amp;colorscheme=light" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:400px;height:60px;margin-top:5px;"></iframe>]]></content:encoded>
			<wfw:commentRss>http://blog.kevingoldsmith.com/2010/04/15/section-3-3-1-is-not-new-behaviour-from-apple/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Interesting UX presentation from Theresa Neil</title>
		<link>http://blog.kevingoldsmith.com/2010/03/14/interesting-ux-presentation-from-theresa-neil/</link>
		<comments>http://blog.kevingoldsmith.com/2010/03/14/interesting-ux-presentation-from-theresa-neil/#comments</comments>
		<pubDate>Sun, 14 Mar 2010 14:40:48 +0000</pubDate>
		<dc:creator>kevin</dc:creator>
				<category><![CDATA[Software Engineering]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[The Internet]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[experience]]></category>
		<category><![CDATA[interaction]]></category>
		<category><![CDATA[RIA]]></category>
		<category><![CDATA[slide deck]]></category>
		<category><![CDATA[slideshare]]></category>
		<category><![CDATA[UX]]></category>
		<category><![CDATA[websites]]></category>
		<category><![CDATA[XD]]></category>

		<guid isPermaLink="false">http://blog.kevingoldsmith.com/?p=784</guid>
		<description><![CDATA[RIA Screen Layouts View more presentations from Theresa Neil. The deck is a nice, loose, taxonomy of different design styles (some of the examples seem to have multiple styles to me), the examples are really good and actually pointed out some cool sites that I hadn&#8217;t heard about. Definitely worth a flip through if you [...]]]></description>
			<content:encoded><![CDATA[<p><img style="visibility:hidden;width:0px;height:0px;" border=0 width=0 height=0 src="http://counters.gigya.com/wildfire/IMP/CXNID=2000002.0NXC/bT*xJmx*PTEyNjg1NzcyNTYzNjEmcHQ9MTI2ODU3NzI1OTI4NiZwPTEwMTkxJmQ9c3NfZW1iZWQmZz*yJm89NDc*ODdkNzQ1OGFl/NGNhN2FjZmMyNjg5ZDJkZDU4MzUmb2Y9MA==.gif" />
<div style="width:425px" id="__ss_3119721"><strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/theresaneil/ria-screen-layouts" title="RIA Screen Layouts">RIA Screen Layouts</a></strong><object width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=riascreenlayouts-100210011828-phpapp02&#038;stripped_title=ria-screen-layouts" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=riascreenlayouts-100210011828-phpapp02&#038;stripped_title=ria-screen-layouts" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object>
<div style="padding:5px 0 12px">View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/theresaneil">Theresa Neil</a>.</div>
</div>
<p>The deck is a nice, loose, taxonomy of different design styles (some of the examples seem to have multiple styles to me), the examples are really good and actually pointed out some cool sites that I hadn&#8217;t heard about. Definitely worth a flip through if you have an interest in this stuff.</p>
<p><a href="http://www.ahmedrabieh.com/?p=256">via Ahmed Rabieh</a></p>
<iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fblog.kevingoldsmith.com%2F2010%2F03%2F14%2Finteresting-ux-presentation-from-theresa-neil%2F&amp;layout=standard&amp;show_faces=true&amp;width=400&amp;action=like&amp;colorscheme=light" scrolling="no" frameborder="0" allowTransparency="true" style="border:none; overflow:hidden; width:400px;height:60px;margin-top:5px;"></iframe>]]></content:encoded>
			<wfw:commentRss>http://blog.kevingoldsmith.com/2010/03/14/interesting-ux-presentation-from-theresa-neil/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 1.686 seconds -->

