<?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>Musings and Ponderous Ponderings</title>
	<atom:link href="http://blog.zacbrown.org/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.zacbrown.org</link>
	<description>Zac muses, semi-frequently and with zest.</description>
	<lastBuildDate>Thu, 04 Aug 2011 17:25:11 +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>Knowledge &#8211; I need to read more.</title>
		<link>http://blog.zacbrown.org/2011/08/04/knowledge/</link>
		<comments>http://blog.zacbrown.org/2011/08/04/knowledge/#comments</comments>
		<pubDate>Thu, 04 Aug 2011 15:57:46 +0000</pubDate>
		<dc:creator>zbrown</dc:creator>
				<category><![CDATA[learning]]></category>

		<guid isPermaLink="false">http://blog.zacbrown.org/?p=40</guid>
		<description><![CDATA[I&#8217;ve come to realize that I do not know nearly as much as I ought to. As such, I&#8217;m endeavoring to remedy this abysmal realization by reading more non-fiction. Current things on my list to read: Salt &#8211; Mark Kurlansky Free Culture &#8211; Lawrence Lessig (reading this again) Chivalry &#8211; Maurice Hugh Keen Medicine&#8217;s 10 [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve come to realize that I do not know nearly as much as I ought to. As such, I&#8217;m endeavoring to remedy this abysmal realization by reading more non-fiction.</p>
<p>Current things on my list to read:</p>
<ul>
<li>Salt &#8211; Mark Kurlansky</li>
<li>Free Culture &#8211; Lawrence Lessig (reading this again)</li>
<li>Chivalry &#8211; Maurice Hugh Keen</li>
<li>Medicine&#8217;s 10 Greatest Discoveries &#8211; Gerald W. Friedland</li>
<li>Understanding Physics &#8211; Isaac Asimov</li>
<li>QED &#8211; Richard Feynman</li>
<li>Structure and Interpretation of Computer Programs (SICP) &#8211; Sussman &amp; Abelson</li>
</ul>
<p>Current hopeful/wishlist (because it&#8217;s heady material):</p>
<ul>
<li>The Feynman Lectures on Physics &#8211; Richard Feynman</li>
</ul>
<p>Most of the books above are pretty short reads with the exception of the two physics tomes. I&#8217;ll be swearing off fiction till I&#8217;ve read these and educated myself better in areas I ought to have more knowledge in.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.zacbrown.org/2011/08/04/knowledge/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Food trucks and Pork</title>
		<link>http://blog.zacbrown.org/2011/07/31/food-trucks-and-pork/</link>
		<comments>http://blog.zacbrown.org/2011/07/31/food-trucks-and-pork/#comments</comments>
		<pubDate>Mon, 01 Aug 2011 04:39:25 +0000</pubDate>
		<dc:creator>zbrown</dc:creator>
				<category><![CDATA[dining]]></category>

		<guid isPermaLink="false">http://blog.zacbrown.org/?p=44</guid>
		<description><![CDATA[&#60;Engage stream of consciousness mode&#62; This past week I&#8217;ve gone out of my way to visit some food trucks and farmer&#8217;s markets that I don&#8217;t typically get a chance to go to. Those included Where Ya At Matt (Creole foodtruck), Maximus/Minimus (Pork truck) and the Queen Anne Farmer&#8217;s Market which has Proper British Bacon as [...]]]></description>
			<content:encoded><![CDATA[<p><strong>&lt;Engage stream of consciousness mode&gt;</strong></p>
<p>This past week I&#8217;ve gone out of my way to visit some food trucks and farmer&#8217;s markets that I don&#8217;t typically get a chance to go to. Those included Where Ya At Matt (Creole foodtruck), Maximus/Minimus (Pork truck) and the Queen Anne Farmer&#8217;s Market which has Proper British Bacon as a vendor. Of these three delicious sojourns, two were pork-centric, per my pork love affair.</p>
<p>I&#8217;ve often wanted to try British Bacon, never realizing that it was so distinctly different from American bacon. American bacon comes from the pig&#8217;s belly while British bacon comes from the pig&#8217;s back and is far more lean. When fried in a pan, it is similar in flavor/texture to fresh Canadian bacon but the cut of meat is different. Suffice to say, I will be buying much more of it in the future from the convenient deliveries that Proper British Bacon makes to Microsoft campus.</p>
<p>Along with my delicious newly acquired pork product for home, I&#8217;ve finally discovered something resembling good BBQ in Seattle. Maximus/Minimus makes an excellent BBQ pork sandwich. The meat is tender and flavorful. The sauce, light while still bold. Most of all, unlike mediocre BBQ establishments, the meat was not drenched in sauce to hide any mistakes made while cooking the meat.</p>
<p>Now I&#8217;ll just have to find a way to make these places a regular weekly visit along with Thai Curry Simple&#8230;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.zacbrown.org/2011/07/31/food-trucks-and-pork/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Intellisensing my way to victory&#8230;</title>
		<link>http://blog.zacbrown.org/2011/07/28/intellisensing-my-way-to-victory/</link>
		<comments>http://blog.zacbrown.org/2011/07/28/intellisensing-my-way-to-victory/#comments</comments>
		<pubDate>Fri, 29 Jul 2011 02:28:13 +0000</pubDate>
		<dc:creator>zbrown</dc:creator>
				<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://blog.zacbrown.org/?p=36</guid>
		<description><![CDATA[Caroline and I were discussing some issues I was seeing in a dogfood version of the next version of Visual Studio. I noted that I was having trouble with Intellisense and C++. It was making programming with some APIs that I&#8217;m not entirely familiar with difficult. In trying to describe this I quipped this little [...]]]></description>
			<content:encoded><![CDATA[<p>Caroline and I were discussing some issues I was seeing in a dogfood version of the next version of Visual Studio. I noted that I was having trouble with Intellisense and C++. It was making programming with some APIs that I&#8217;m not entirely familiar with difficult. In trying to describe this I quipped this little gem:</p>
<blockquote><p>It&#8217;s hard to program when you don&#8217;t really know the APIs and if the APIs aren&#8217;t designed well they don&#8217;t match with the concepts. For example, I&#8217;m trying to use an RSS API and it doesn&#8217;t match up with the RSS standard, they call &lt;description&gt; &#8220;Subtitle&#8221;. If it matched, I could just <strong>Intellisense my way to victory</strong>.</p></blockquote>
<p>So in the future, I hope C++ Intellisense improves and the API gets designed a little better so that I can Intellisense my way to victory <img src='http://blog.zacbrown.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.zacbrown.org/2011/07/28/intellisensing-my-way-to-victory/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Words of Wisdom 1 &#8211; Chuck Moore</title>
		<link>http://blog.zacbrown.org/2011/06/30/words-of-wisdom-1-chuck-moore/</link>
		<comments>http://blog.zacbrown.org/2011/06/30/words-of-wisdom-1-chuck-moore/#comments</comments>
		<pubDate>Fri, 01 Jul 2011 00:15:14 +0000</pubDate>
		<dc:creator>zbrown</dc:creator>
				<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://blog.zacbrown.org/?p=33</guid>
		<description><![CDATA[Chuck Moore is the creator of the Forth programming language and a brilliant engineer. The creation of Forth is unlike many of the older languages in that it was created by an engineering need, not an academic need (i.e. Smalltalk or Lisp). I&#8217;ve been relearning Forth lately, trying to get a stronger footing in the [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://en.wikipedia.org/wiki/Charles_H._Moore" target="_blank">Chuck Moore</a> is the creator of the Forth programming language and a brilliant engineer. The creation of Forth is unlike many of the older languages in that it was created by an engineering need, not an academic need (i.e. Smalltalk or Lisp).</p>
<p>I&#8217;ve been relearning Forth lately, trying to get a stronger footing in the language and trying to pick up some of the principles so that I can apply them elsewhere in my work at MSFT. I was reading through Leo Brodie&#8217;s <span style="text-decoration: underline;">Thinking Forth</span> and stumbled on this little pearl of a quote from Chuck Moore:</p>
<blockquote><p>Sometimes the possibilities for simplification aren&#8217;t immediately obvious.</p>
<p>There&#8217;s this problem of zooming in a digitized graphics display, such as CAD systems. You have a picture on the screen and you want to zoom in on a portion to see the details.</p>
<p>I used to implement it so that you move the cursor to the position of interest, then press a button, and it zooms until you have a window of the desired size. That was the way I&#8217;ve always done it. Until I realized that that was stupid. I never needed to zoom with such fine resolution.</p>
<p>So instead of moving the cursor a pixel at a time, I jump the cursor by units of, say, ten. And instead of increasing the size of box, I jump the size of the box. You don&#8217;t have a choice of sizes. You zoom by a factor of four. The in-between sizes are not interesting. You can do it as many times as you like.</p>
<p>By quantizing things fairly brutally, you make it easier to work with, more responsive, and simpler.</p></blockquote>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.zacbrown.org/2011/06/30/words-of-wisdom-1-chuck-moore/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Data and Language &#8211; Part 2</title>
		<link>http://blog.zacbrown.org/2011/05/09/data-and-language-part-2/</link>
		<comments>http://blog.zacbrown.org/2011/05/09/data-and-language-part-2/#comments</comments>
		<pubDate>Mon, 09 May 2011 20:17:08 +0000</pubDate>
		<dc:creator>zbrown</dc:creator>
				<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://blog.zacbrown.org/?p=19</guid>
		<description><![CDATA[The other night I posted something of a stream of consciousness about my impressions of where programming paradigms are headed. In short I tried to state the following (even if it was not obvious): Object-orientation, while useful, does not scale well to the size of the data sets we now work with and try to [...]]]></description>
			<content:encoded><![CDATA[<p>The other night I posted something of a stream of consciousness about my impressions of where programming paradigms are headed. In short I tried to state the following (even if it was not obvious):</p>
<ol>
<li>Object-orientation, while useful, does not scale well to the size of the data sets we now work with and try to manipulate. Following closely to the OO mantra and making most everything an object works but becomes unwieldy as you create programs of sufficient size. I cannot say that program size scales linearly with dataset size, but program size does scale in proportion to dataset size AND what you want to do to that data.</li>
<li>Functional programming does deal with the complexity of many environments  by pulling program state out of the equation and letting the developer focus on the data. The problem with functional languages is that they often do not convey the meaning of their code quite as clearly as one would hope. It seems to me that many functional languages lead toward writing clever or novel code. <strong>In software engineering, clever code is never really as clever as you thought it was.</strong></li>
<li>I did not even mention Structured/Procedural programming (i.e. classic Pascal or C) since we have passed the point of those languages being useful with large data sets.</li>
</ol>
<p><a href="http://wcook.blogspot.com/2011/05/smalltalk-and-future.html" target="_blank">Cook is certainly on to something</a> with a &#8220;Smalltalk of Modeling.&#8221; I spent most of my college years programming computational models for biologists. In that time, I got a lot of experience trying to build models of large data sets using Java. I would create these complex and mind boggling programs in order to achieve the model constraints we were looking for. This is the single greatest influence for my statement in #1. The rest of the influence comes from experience in designing systems recently. When dealing with large data sets, a model-based approach appears to be a more tenable approach.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.zacbrown.org/2011/05/09/data-and-language-part-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Data and Language</title>
		<link>http://blog.zacbrown.org/2011/05/02/data-and-language/</link>
		<comments>http://blog.zacbrown.org/2011/05/02/data-and-language/#comments</comments>
		<pubDate>Tue, 03 May 2011 05:03:38 +0000</pubDate>
		<dc:creator>zbrown</dc:creator>
				<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://blog.zacbrown.org/?p=16</guid>
		<description><![CDATA[The core purpose of a computer is to manipulate data. Regardless of what a person does with a computer, ultimately they are transforming data. With the addition of the Internet, we have even more data to manipulate. In my recent ponderings, I&#8217;ve been reading William Cook&#8217;s thoughts on a new &#8220;Smalltalk of Modeling&#8221; which has [...]]]></description>
			<content:encoded><![CDATA[<p>The core purpose of a computer is to manipulate data. Regardless of what a person does with a computer, ultimately they are transforming data. With the addition of the Internet, we have even more data to manipulate.</p>
<p>In my recent ponderings, I&#8217;ve been reading William Cook&#8217;s thoughts on a new <a href="http://wcook.blogspot.com/2011/05/smalltalk-and-future.html" target="_blank">&#8220;Smalltalk of Modeling&#8221;</a> which has lead my own thoughts on new languages. Object Orientation has run its course in terms of how far we can take it. Modeling objects interaction scales only about as well as a human&#8217;s ability to converse with more than five people at a time. We can learn from our own interactions with others about what the limits are of OO. If a human cannot interact with more than several people at a time, it stands to reason that a developer would have difficulty in reasoning about a system with exceedingly complex object-oriented relationships. We interact with thousands of people through out our lives, being able to recall the details of those interactions is nearly impossible except with the most exceptional interactions. Similarly, &#8220;well written&#8221; OO programs employ a large number of objects but this also means that once a program reaches a certain critical mass, the interaction of the subsystems becomes unwieldy and difficult to track.</p>
<p>Cook mentions focusing on the forest rather than the trees. My own interpretation of this is that we are approaching a point of needing a new model which can cope with the complexity and enormity of the data sets available to us. Building models of the data and manipulating the models will become the paradigm of programming with the enormous data sets. At least this is the argument Cook makes.</p>
<p>I for one am open to other paradigms. Functional programming offers its own benefits but I am unconvinced that it will gain widespread popularity. Haskell, for example, has a certain elegance but anecdotal evidence has shown that programs written in Haskell never look nearly as clear or elegant as the examples. Perhaps it is my inexperience or the overwhelming amount of developing I have done in C, C++, C#, Java and Python but I just cannot get behind the cleverness of Haskell.</p>
<p>Perhaps Cook is on to something with this &#8220;Smalltalk of Modeling&#8221;. I will be watching.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.zacbrown.org/2011/05/02/data-and-language/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Microsoft: One Year On The Job</title>
		<link>http://blog.zacbrown.org/2011/04/27/microsoft-one-year-on-the-job/</link>
		<comments>http://blog.zacbrown.org/2011/04/27/microsoft-one-year-on-the-job/#comments</comments>
		<pubDate>Thu, 28 Apr 2011 03:53:25 +0000</pubDate>
		<dc:creator>zbrown</dc:creator>
				<category><![CDATA[career]]></category>

		<guid isPermaLink="false">http://blog.zacbrown.org/2011/04/27/microsoft-one-year-on-the-job/</guid>
		<description><![CDATA[It was a dreary February day in 2010 when I started at Microsoft. I sat bored, reading my Kindle in New Employee Orientation (NEO). Now, a little over one year later, I seem to be endlessly busy. I am okay with this as it is preferable to the wretchedly boring first two to three months [...]]]></description>
			<content:encoded><![CDATA[<p>It was a dreary February day in 2010 when I started at Microsoft. I sat bored, reading my Kindle in New Employee Orientation (NEO). Now, a little over one year later, I seem to be endlessly busy. I am okay with this as it is preferable to the wretchedly boring first two to three months of work. Those early months largely consisted of reading and pondering, trying to get my footing with the breakneck pace which everyone around me was working. Today, I like to think I hold my own on my team. However, there are a few things I have learned:</p>
<ul>
<li><strong>Questions are free.</strong> Ask lots of them, people will forgive you if they’re dumb. There’s an impossibly large amount of technology floating around Microsoft and no one can be expected to know it all.</li>
<li><strong>Whiteboards are awesome.</strong> Bored? Draw a picture! Stumped? Write it out, draw pictures, diagram! Can’t keep track of what you need to do? Write it down! I was never big on whiteboards until I got here and seeing as it is hard to huddle around a piece of paper, whiteboards solve the problem.</li>
<li><strong>Identify the strongest developers and consult them, always.</strong> I have always considered myself to be a strong developer given my experience. That said, nothing matches people who have worked with software for 20+ years. They may be set in their ways, but often they have vast quantities of knowledge to share. I spend half my time working out problems with the guys that have been around the block for a while.</li>
<li><strong>The best SDETs (Software Development Engineer in Test) are the ones who know when to compromise but also know when to not back down.</strong> As an SDET, you are the last line of defense for ensuring that the product code is of the quality expected to ship. Correctness is vastly important in software engineering, however even if everyone agrees that the correct solution is X, sometimes the timeline dictates you settle for a lesser solution Y which only solves a subset of the issues. Knowing when to compromise and accept that lesser solution is an important skill to develop, otherwise you’ll never be happy and be continually at odds with your Developers and PMs.</li>
<li><strong>Speak your mind.</strong> If you want people to take you seriously, speak your mind. People are smart at Microsoft, but they are not mind readers. Recognition from your peers comes from making compelling arguments for causes you are passionate about. Even if you are wrong, if you make a well reasoned case for your argument people will respect that.</li>
<li><strong>Make mistakes. Lots of them.</strong> <strong>Then learn from them. </strong>You will make mistakes, have no doubt about that. What will set you apart from your peers is how quickly and effectively you learn from them.</li>
<li><strong>Smart objects/pointers are your friends.</strong> I spend about 90% of my time writing C++ code. During the year I have had to develop my C++ skills, the single most important concept I have applied on a daily basis is wrapping <strong>everything</strong> in smart pointers. Most of our debug breaks and nasty bugs come from memory leaks, ref-count errors and unreleased resources (Handles, Critical Sections, etc.). In addition to this, <a href="http://en.wikipedia.org/wiki/RAII" target="_blank">RAII</a> is key when you must allocate and de-allocate resources yourself (e.g. <a href="http://en.wikipedia.org/wiki/Critical_section" target="_blank">Critical Sections</a>).</li>
<li><strong>Recognize solutions, not problems. </strong>Newer hires tend to identify problems and raise them. This is great but it still does not solve the problem. Experienced engineers tend to identify solutions and act on them. Part of the transition from going from a junior engineer to a senior engineer is learning to identify solutions instead of problems.</li>
<li><strong>Work on your “soft” skills. </strong>Your technical skills will not set you apart at Microsoft. There are far too many smart people at Microsoft in order for you to differentiate yourself as some sort of “Rock Star Programming”. What will set you apart and what makes engineers successful at Microsoft are “soft” skills, also known as people skills. You gain seniority by your ability to convince others that you are correct and to rally them behind your cause. There is no doubt that technical skills play a huge role in advancement, but the differentiator will be your soft skills. Between two engineers with similar technical skill levels, the engineer who will be more effective job is the engineer with the strongest soft skills.</li>
</ul>
<p>Overall, this is just the short list of things I have learned. The most important skill I learned was the last point, “soft” skills. I am still not great at dealing with people and that is partly due to being an introvert. My first instinct when dealing with conflict and people is to hide. I prefer to solve technical problems, not people problems so my first tendency is to solve any particular problem by going after the technical points and avoiding the people. The biggest problem with this approach is that I tend to identify ways in which I can push through the solution I desire technically and avoid the people. In other words, I tended toward the “it is better to ask for forgiveness than permission” approach. </p>
<p>In the end, the points I outlined above apply in nearly all settings as an engineer (software or not). These are by no means Microsoft isolated, however every company has its own culture so some of the more social aspects of the points above may need massaging to fit the company you work for. My only other point of reference is my time spent at Google and my impression is that the same principles apply. The technical points though are applicable in all cases and should have no exceptions. </p>
<p>Ultimately I would like to write this sort of post about once a year to contemplate what I need to work on as an engineer as my career progresses with Microsoft. Despite the hemorrhaging of talent from Microsoft to Google to Amazon to Facebook and back, I see myself staying with Microsoft for a while. While Amazon has established itself in the market, I am unconvinced that Google or Facebook will continue to keep their edge. Microsoft has its quirks but I think any successful company does and Microsoft has made some significant changes internally that I feel show a change for the better. </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.zacbrown.org/2011/04/27/microsoft-one-year-on-the-job/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A new start, or something.</title>
		<link>http://blog.zacbrown.org/2011/04/25/a-new-start-or-something/</link>
		<comments>http://blog.zacbrown.org/2011/04/25/a-new-start-or-something/#comments</comments>
		<pubDate>Mon, 25 Apr 2011 19:57:57 +0000</pubDate>
		<dc:creator>zbrown</dc:creator>
				<category><![CDATA[cooking]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://blog.zacbrown.org/?p=7</guid>
		<description><![CDATA[I ultimately got fed up with the old blog. It had cruft contained within as well as having successfully confused SimpleScripts, the shoddily made but useful installation manager I use for WordPress. SimpleScripts had somehow managed to come under the impression that there were in fact two identical WordPress installations in the same location on [...]]]></description>
			<content:encoded><![CDATA[<p>I ultimately got fed up with the old blog. It had cruft contained within as well as having successfully confused SimpleScripts, the shoddily made but useful installation manager I use for WordPress. SimpleScripts had somehow managed to come under the impression that there were in fact two identical WordPress installations in the same location on my server. How this happened, I have no idea, however with much zest-filled clicking and some muttering of profanities that are not polite in company I convinced it to remove the notion of any such installations and started afresh. Let us be honest, my last setup was shite with very little to offer so I am making a concerted effort to write about once a week on this blog.</p>
<p>I have worked long enough now as a professional developer to have developed some insight into the Wild West of an industry I work in. In short that means I have seen a few battles and have some war stories and insight to share now that I did not when I started the old blog. I have also learnt a great deal more about what software development is all about (hint: It has very little to do with technical skill after a certain point). Expect to see some writings on C++, Erlang and perhaps a bit of Ruby as well as general musings regarding my efforts to become a senior software engineer at Microsoft.</p>
<p>In addition to the programming related writings, I will also be renewing my attempts at recording my cooking experiments. I think the first of these will be a short post on the Green Curry with Fish and Sunflower Seed Butter that I made last week. Sounds strange, turned out quite fantastic.</p>
<p>Perhaps after some time I will start sharing the posts with regularity on those absurd &#8220;aggregator&#8221; sites like Reddit and Hacker News. I think I will first stretch out what rusty skills I have as a writer and only spam my Twitter audience.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.zacbrown.org/2011/04/25/a-new-start-or-something/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

