<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>christopher baus.net</title> 
	<link>http://www.baus.net/</link> 
	<description>It's only software</description> 

	<language>en-us</language> 
	<copyright>Copyright 2002-2005 Christopher Baus</copyright> 

	<managingEditor>christopher@baus.net</managingEditor> 

	<webMaster>christopher@baus.net</webMaster> 


<image>
	<title>christopher baus.net</title> 
	<url>http://www.baus.net/images/logo.png</url> 
	<link>http://www.baus.net/</link> 
	<description>It's only software</description> 
</image>
	<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/baus" type="application/rss+xml" /><feedburner:browserFriendly>This is an XML content feed of christopher baus.net. It is intended to be viewed in a newsreader or syndicated to another site.</feedburner:browserFriendly><item>
		<title>Demos are hard</title>
		<description><![CDATA[
<p>
We recently shipped a significant release (way to go guys!) of our application. At the end of
a release cycle I typically demo the app to the other depts to bring everybody up to speed on the new features.
Since this release is chocked full of brilliant new features, not to mention a completely updated UI, I had what I thought was a genius idea:
create a screen capture demo video. 
</p>
<p>
It seemed simple enough: just go through my normal demo, but record it. 
To my surprise, this has turned into a humbling experience. I don't think I've ever overestimated my abilities this much in my life!
Doing voice overs of a screen capture demo is surprisingly hard, and editing your own 
voice: painful. Every stutter, verbal tick (I say 'actually' a lot), and oddly timed
pause has me second guessing my fundamental ability to communicate.
</p>
<p>

<img src="http://lobo.ruivo.org/~landgraf/pics/Microsoft_LifeChat_LX3000/MS_LX-3000.jpg" style="float:left; padding:10px 10px 10px 10px" width="300">

I'm using a 
<a href="http://www.microsoft.com/hardware/digitalcommunication/productdetails.aspx?pid=006">
lo-fi
headphone/microphone combination</a> 
from Microsoft, which isn't improving the situation. Listening to your 
digitized voice over and over is damaging to the psyche. It is schizophrenic, and by the end of
a long editing session in the cheap headphones I thought I was going to lose it. But I'm making
progress. My annunciation is improving, and I'm using a strategy to produce the demo in shorter segments.
This makes editing in <a href="http://www.techsmith.com/camtasia.asp">Camtasia</a> much easier, and I think it is 
better to separate long presentations into shorter videos to make it easier to index.
</p>
<p>
<img src="http://upload.wikimedia.org/wikipedia/en/thumb/2/2a/Camtasia_6_logos.png/64px-Camtasia_6_logos.png" style="float:right; padding:10px 10px 10px 10px">
I strongly believe there is value for developers and technical managers in honing presentation skills (and I am surprised by my lack of productivity in this area), so I will stick to it, but I find myself wanting to retreat to
the warm confines of editing code in emacs. 
</p>

]]>
                </description>

		<guid isPermaLink="true">http://www.baus.net/demos-are-hard</guid>
		<link>http://www.baus.net/demos-are-hard</link>
                <comments>
                http://www.baus.net/demos-are-hard#comments
                </comments>
		<pubDate>Fri, 19 Jun 2009 01:34 -0700</pubDate>
                <category>Kitchen Sink</category>
	</item>
	<item>
		<title>Windows 7 and the netbook</title>
		<description><![CDATA[
<p>
<img src="http://farm3.static.flickr.com/2465/3579185959_16d2a2a66a.jpg?v=0">
The netbook represents a serious threat to Microsoft's core OS business.
<a href="http://www.baus.net/microsofttrouble">For years</a>, I've believed 
Microsoft was in a precarious position in the market because the cost of software
had become a larger precentage of the cost of a new PC. 
</p>
<p>
In 2004 I said:
</p>
<blockquote>
<p>
When PCs cost $3000+, DOS and Windows ran about $100 for OEMs. That amounts to about 3% of the retail cost. Fast forward 10 years. A PC can be had for less than $500. If Windows cost even $50 (which is low), that is 10% of the total cost...
</p>
<p>
As hardware costs continue to fall, the software costs will become a greater percentage of the total cost of a PC. Eventually something is going to give. Either Microsoft will have to lower their prices or the manufactures will start looking for alternatives. Neither is good for Microsoft's profit margins.
</p>
</blockquote>
<p>
These days a netbook can be had for less than $300.
The netbook represents an extreme in low cost computing, which according to 
<a href="http://www.osnews.com/story/20753/Ballmer_Vista_Does_Not_Fit_on_Netbooks/">Steve Ballmer</a>,
means, "a little less revenue per unit to Microsoft." At the same time Microsoft is positioning themselves
as the 
<a href="http://news.cnet.com/8301-13505_3-10201859-16.html">premium product</a> for business computing over Linux.
This opens a significant foothold for Linux in the low end of the market, and the day that Linux finally starts to topple
Microsoft on the desktop is here. Windows 7 will run on the netbook, but it will not create the monopoly margins of
Microsoft's past.
</p>
<p>
What I've been expecting since the 90s is becoming a reality. The desktop OS and software are becoming a commodities.
The PC is just a conduit to access the far more vast resources of the net. In the words of the great 
<a href="http://www.jwz.org/doc/linux.html">JWZ</a>, "It's all about the network." 
</p>
]]>
                </description>

		<guid isPermaLink="true">http://www.baus.net/microsoft-netbook</guid>
		<link>http://www.baus.net/microsoft-netbook</link>
                <comments>
                http://www.baus.net/microsoft-netbook#comments
                </comments>
		<pubDate>Sat, 30 May 2009 15:43 -0700</pubDate>
                <category>Kitchen Sink</category>
	</item>
	<item>
		<title>Stack Overflow: software should be fun</title>
		<description><![CDATA[
<p>
<img src="http://i.stackoverflow.com/Content/Img/stackoverflow-logo-250.png" style="float:left; padding:10px 10px 10px 10px">
Outside a few choice 
<a href="http://www.gtr-game.com/">racing sims</a>,
I've never really gotten into gaming. I've always found coding itself to be enough of a game to keep entertained at the keyboard. 
But <a href="http://www.codinghorror.com/">Jeff Atwood</a>, <a href="http://www.codinghorror.com/blog/archives/000437.html">he's</a> <a href="http://www.codinghorror.com/blog/archives/001030.html">a</a> 
<a href="http://www.codinghorror.com/blog/archives/001201.html">gamer</a>, and it makes him a better developer.
</p>
<p>
Until recently I didn't think that gaming could improve my understanding of general application design, but it is becoming clear that 
<a href="http://www.codinghorror.com/blog/archives/001219.html">Jeff's</a> appreciation for the 
<a href="http://www.codinghorror.com/blog/archives/001219.html">psychology of gaming</a> (aka fun computing) is helping to make Stack Overflow a success. 
</p>
<p>
Consider the following from the 
<a href="http://blog.stackoverflow.com/2008/07/podcast-13/">13th episode</a> of the StackOverflow Podcast <a href="https://stackoverflow.fogbugz.com/default.asp?W13020">[transcript]</a>.
</p>
<blockquote>
[Listener question] Isaac Moses: How do you plan to get people who know stuff to keep coming back to your site, and find questions that they know the answers to?  Thanks, 'bye.
</blockquote>
<blockquote>
Atwood: Ah!  This is... this is a feature that's near and dear to my heart.  'Cause I just implemented, uh, what will be called badges, so...  I am also a big fan of the Xbox 360, I believe it is one of the best products Microsoft has released in a long time...
</blockquote>
<blockquote>
Spolsky: Do they call them "badges"?
</blockquote>
<blockquote>
Atwood: ...much better...Ah, they're called "achievements" in the Xbox 360 system, and it's amazing how seductive these things are...
</blockquote>
<p>

As business application developers, we often focus on the nebulous concept of 'user requirements,' and fail to ask why would a user WANT to use the application.
The most successful business application I've worked on gained a bit of a cult following in its niche and garnered a lot praise, but one user's comment stands out in my mind. 
"I love the application. It's like a video game." 
</p>
<p>
While I processed the comment at the time, it didn't really sink in until recently. The
application, for its class, provided a high level interactivity. It also gives the impression that a better solution to the user's problem might be
unearthed by spending just a little more time with the application. 
</p>
<p>
<img src="http://upload.wikimedia.org/wikipedia/commons/thumb/7/7a/Visicalc.png/280px-Visicalc.png" style="float:right; padding:10px 10px 10px 10px">
The ability to define and manipulate "whatif" scenarios, has helped make the spreadsheet metaphor an enduring success 
since the early days of <a href="http://en.wikipedia.org/wiki/VisiCalc">VisiCalc</a>. When using a spreadsheet, not only do
users get to define the rules of the game, they get to play the game over and over.
</p>
<p>
What if we lowered our unit prices and raised our service fees?
</p>
<p>
What if the cost of electricity was 10% higher?
</p>
<p>
What if gravity was 10.4 m/s/s?
</p>
<p>
And so on...
</p>
<p>
I'm becoming convinced that as developers fight for attention among an ever increasing number of options, those who succeed will be those who can answer: "What makes this application fun?"
</p>


]]>
                </description>

		<guid isPermaLink="true">http://www.baus.net/the-genius-of-stackoverflow</guid>
		<link>http://www.baus.net/the-genius-of-stackoverflow</link>
                <comments>
                http://www.baus.net/the-genius-of-stackoverflow#comments
                </comments>
		<pubDate>Mon, 23 Mar 2009 17:03 -0700</pubDate>
                <category>Kitchen Sink</category>
	</item>
	<item>
		<title>When to use threads</title>
		<description><![CDATA[
<p>
<i>Note: This is a work in progress, and I'm interested in soliciting feedback. These are the guidelines I use with my own team, but
this is my first attempt at formalizing them.
</i>
<p>
Often when there is a recommendation to omit goto from a language developers
 pointing out the edge cases where goto can make sense will argue for the inclusion of the construct, and surprisingly even 
<a href="http://msdn.microsoft.com/en-us/library/13940fs2(VS.71).aspx">relatively new languages often contain a goto</a> 
statement. 
</p>
<p>
There are extremely few cases where a goto is optimal, so developers should take a significant pause and
be prepared to justify their decision in a code review, before using goto in production code. I believe the same
can be said about other programming constructs: macros in C, template meta-programming in C++, or the use of threads.  
</p>
<p>
I've spent enough time debugging or trying to mentally 'prove' the correctness of threaded code, that when I read threaded
code my palms get sweaty and I start having flash backs of dark, lonely, nights working by the warm glow
of the debugger. Threads are powerful, but threads are also extremely difficult to prove correct, debug, and often result
in numerous 
Also I believe most developers intuition that doing multiple tasks simultaneously or creating multiple threads will increase performance.
Because of this I developed some guidelines about when it is appropriate to use threads.
</p>

<p>
<ul>
<li>Utilization of Multiple Core/Processors</li>
<li>UI Responsiveness</li>
<li>Concurrent Blocking I/O</li>
</ul>
</p>
<h2>Ultilization of Multiple Cores/Processors</h2>
If a developer wants to scale a CPU bound application across multiple
processors or cores, there is no alternative to threads. It is not common for the OS to provide the programmer
the ability to specify which CPUs that their tasks will be scheduled on, and the CPUs will be shared with OS threads and other processors. With that said, if your application is 
CPU bound and parallizable, it might be appropriate to construct a system which starts as many
worker threads as there are CPUs, although it has been my experience that contention either from heap, OS, or
hardware will still make it unlikely that adding a second CPU will double the performance of an application.

<h2>UI Responsiveness</h2>
<p>
I got my start in the dark ages of programming under Windows 3.1. For developers who have
spent their careers working in modern multitasking environments, it maybe hard to fathom 
that early versions of Windows and MacOS had no concept of threads or <a href="http://en.wikipedia.org/wiki/Preemptive_multitasking">pre-emptive multitasking</a>. Not only 
did applications run in a single execution context, the entire operating system did.  
</p>
<p>
To give the impression of concurrency, the OS had a main message loop which would pass control to applications by sending them messages. While
the application handled the message it had exclusive control of the system, but to keep the system responsive, well behaved applications would have
to quickly handle the message (for instance a request to redraw part of a window) and relinquish control back to the OS. I learned the implications of cooperative multitasking when developing 
a serial I/O library to communicate with a hand held device. While the library used perfectly structured code, or so I thought, with new fangled OO techniques in C++,
when the update operation ran, not only did the application become unresponsive, the entire OS came to a halt.
</p>
<p>
The solution to this problem was to break a long running task up into a series of small tasks that the OS could schedule over multiple events.
To do so the application developer needed to create a state machine to model the current step of the long running task. Before the application
relinquished control back to the system, the application state would be updated so when the next event occured the application could pick up where
it left off. If the application wanted to do something like update a progress bar, when handling a message to draw the status bar, the application
would reference the state machine to determine the progress of the long running task.
</p>
<p>
For many smaller programs this technique works reasonably well, and even in modern threaded OS it is still used. The difference on a modern 
OS is that if a application spends a long time handling an event, the rest of the OS can continue to operate even if the application appears
unresponsive. Most modern applications now create separate threads to handle long running tasks while the processing of UI events is
handled by the main application thread. The reason is that is trying to break large tasks up into state machines can become untenable and most
developers tend to think of algorithms sequentially rather than as series of state transitions. 
</p>
<p>
Unfortunately using multiple threads to update an applications UI and to execute long running tasks has the drawback that of requiring synchronization of
the application threads, and while I believe UI responsiveness is a valid justification of using threads, it also extremely difficult to get
right. On the Windows OS it often means sending messages to synchronize the threads through the application's message loop.
</p>
<p>
It is worth pointing out that the structure of a thread mimics the state machine by implicitly maintaining state in the thread's call stack and
instruction pointer. Also instead of allowing the application to control task scheduling by the length of time to handle one event, the OS
handles task scheduling by implicitly switching control to another thread or task based on a clock interval.
</p> 

<h2>Concurrent Blocking I/O</h2>
<p>
In modern networked environments, implementing concurrent blocking I/O this is most the common use of threads and typical in network servers,
or clients which must maintain multiple server server connections such as a load test application. 
Internet facing servers must handle requests concurrently from multiple 
clients at unknown data rates. Excluding asynchronous or non-blocking
I/O, when the server attempts to read or write data from the client, the operating system will automatically switch
the context to another thread until the I/O has completed. If the server is handling connections from
many clients in a thread per client or connection scenario, many of the threads will be in a wait
state consuming few resources. When read or write operation is complete the thread will be activated to continue
processing.
</p>
<p>
It is interesting to note that the <a href="http://www.gnu.org/software/pth/">GNU pth</a> library is a user mode co-operative
threading library which take advantage of the fact that many applications use threads to implement concurrent blocking I/O and
hence when the read and write functions are called the library takes the opportunity to switch the context to the next running thread.
</p>
<p>
Disk I/O is also a common source blocking I/O, since disk access is a local resource
it has significantly different properties than handling slow network clients. Starting a large number of threads to concurrently access
the disk almost certainly will result in degraded performance as the throughput of the disk system is reached and 
<a href="http://en.wikipedia.org/wiki/Thrash_(computer_science)">thrashing</a> increases. 
</p>
<p>
While it is beyond the scope of this discussion, most high performance servers no longer 
use a thread per connection architecture. Dan Kegel laid the ground work for modern *nix server design with his outline
of the <a href="http://www.kegel.com/c10k.html">C10k</a> problem. Many modern servers including <a href="http://httpd.apache.org/docs/2.0/mod/worker.html">Apache</a>
use a hybrid event driven/threaded architecture.
<p>

]]>
                </description>

		<guid isPermaLink="true">http://www.baus.net/when-to-use-threads</guid>
		<link>http://www.baus.net/when-to-use-threads</link>
                <comments>
                http://www.baus.net/when-to-use-threads#comments
                </comments>
		<pubDate>Thu, 15 Jan 2009 11:42 -0700</pubDate>
                <category>Kitchen Sink</category>
	</item>
	<item>
		<title>Boost ASIO review: for the record</title>
		<description><![CDATA[
<p>
I happened to be looking through some old emails, and I found my review of ASIO.
</p>
<blockquote>
<p>
In my opinion the library should be accepted.  This is the best example of
an asynchronous library available in either C or C++.  All other major
program platforms Java (NIO), .NET, Python (twisted) have well accepted
asynchronous networking support, and I think this is important for C++ as
a high performance networking platform going forward.
</p>
<p>
I do have one concern, but the over all design of the library
is sound.
</p>
<p>
A memory allocation / deallocation is required PER REQUEST.  I could live with
this if it was an inherent problem with the asynchronous design pattern,
but I have convinced myself that it is an artifact of the boost::bind
interface combined with deferred execution.  Because the size of the
functor is unknown by the library it must be allocated dynamically. It is
my feeling that the allocation could hurt adoption in certain markets.
</p>
<p>
Library users should be provided with the option of providing static
function pointers which take an untyped parameter such as void* or
boost::any as callback targets.  This is how nearly all deferred
allocation mechanisms currently work, and it would eliminate the
allocation of the functor.  Plus more complex interfaces, such as the
current bind interface, could be layered on top of this architecture.
</p>
</blockquote>
]]>
                </description>

		<guid isPermaLink="true">http://www.baus.net/asio-review</guid>
		<link>http://www.baus.net/asio-review</link>
                <comments>
                http://www.baus.net/asio-review#comments
                </comments>
		<pubDate>Tue, 13 Jan 2009 10:00 -0700</pubDate>
                <category>Kitchen Sink</category>
	</item>
	<item>
		<title>Put it in writing</title>
		<description><![CDATA[
<p>
In the last year I transitioned from lone cowboy developer to project manager. In this roll I find that 
I am called upon to make quite a few judgment calls both on the behavior and the architecture of the application.
</p>
<p>
I am really fortunate to work with a great team who I respect and are far better developers than me, so generally this goes pretty smoothly. But 
occasionally, either due to my own biases or experience, I find myself in disagreement with a recommendation of one of the team members.
</p>
<p>
I have a simple solution to this problem. I request that the developer put the recommendation in writing. I do this for the following reasons:
</p>
<ul>
<li>If the developer doesn't have the energy to codify his or her argument in writing, then it probably isn't that important of a 
decision and we can move onto the next problem. There are always more problems to solve.</li>
<li>Putting the request into words forces the developer to think through what is being proposed.</li>
<li>It is far more likely that a well written argument will sway me than a half thought out verbal discussion.</li>
</ul>
<p>
We use an iterative methodology and don't specify every program element. While I am afraid being a 
<a href="http://www.rallydev.com/csm_registration.jsp">Certified ScrumMaster</a> might still be illegal in some 
Southern States, 
I am fan of iterative development. But there are cases where there is value in working out a 
problem in writing. It forces you to consider possibilities that a purely mental model might omit. If 
there is enough contention in a decision to actually cause a disagreement, it is a strong indication that 
the time spent working out the issue in writing will be a good investment. I also believe that being 
able to defend a recommendation or decision is a fundamental sign of maturity in a developer.
</p>
<p>
I try to hold myself to same standard. I recently caught myself in a discussion where I was arguing a point verbally in a way that was not fully formed. 
This left me feeling uncomfortable, and I forced myself to research the problem and present my option in a more educated way. Ultimately this puts the onus on the other 
party to define their position as well, and the end result is a more thoroughly considered solution.
</p>
<p>
Developers reading this may ask themselves, "Why do you insist that team members defend their positions rather than just trusting them? Don't you trust your own developers?" 
I do trust them, but in the past
I've worked on projects with multiple smart developers, of one I consider myself, who all had their own ideas about the "right" way to do things. Chaos resulted. 
It wasn't that any one developer made a wrong decision, 
but we all made different decisions, and in a large scale software project this is a recipe for disaster (I'd also argue that this is why
the philosophy of TIMTOWDI is seriously flawed, but I'll leave that discussion for another day). 
</p>
<p>
I consider one of my rolls to be the arbitrator of chaos, which ultimately means that every developer is not going to get to do things the way they want. This 
is a professional software development environment, and unfortunately it requires that developers perform their tasks in a manner that is in agreement with 
the ground rules of the project. That is why I highly recommend that developers unleash their experimental desires in a side project, and I'm even 
willing to turn a blind eye if they spend a few hours in the office working on it. I can fairly say that my side projects made me A LOT better developer.
</p>
<p>
But (there is always a but) there is also something to be said about allowing developers have it their way. Yes I still believe we could have gotten
away with one less abstraction layer in app, but at the outset it wasn't worth making the developers miserable to enforce an architecture on them that
they disagreed with. Happy developers are productive developers, and we had a lot of code to write.
</p>

]]>
                </description>

		<guid isPermaLink="true">http://www.baus.net/put-it-in-writing</guid>
		<link>http://www.baus.net/put-it-in-writing</link>
                <comments>
                http://www.baus.net/put-it-in-writing#comments
                </comments>
		<pubDate>Fri, 09 Jan 2009 00:40 -0700</pubDate>
                <category>Kitchen Sink</category>
	</item>
	<item><title>Links for 2008-12-29 [del.icio.us]</title><link>http://del.icio.us/baus#2008-12-29</link><pubDate>Tue, 30 Dec 2008 00:00:00 PST</pubDate><guid isPermaLink="true">http://del.icio.us/baus#2008-12-29</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://carpeitem.blogspot.com/2008_01_01_archive.html"&gt;CARPE+ITEM: januar 2008&lt;/a&gt;&lt;br/&gt;
Really big task lights&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Links for 2008-12-27 [del.icio.us]</title><link>http://del.icio.us/baus#2008-12-27</link><pubDate>Sun, 28 Dec 2008 00:00:00 PST</pubDate><guid isPermaLink="true">http://del.icio.us/baus#2008-12-27</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.stefandidak.com/office/index.php"&gt;Stefan Didak's Home Office&lt;/a&gt;&lt;br/&gt;
Using this as the gold standard for the ultimate geek home office.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.newegg.com/Product/Product.aspx?Item=N82E16824005113"&gt;Newegg.com - LG W2452T-TF Black 24&amp;quot; 2ms(GTG) Widescreen LCD Monitor 400 cd/m2 10000:1 DCR with HDCP support - LCD Monitors&lt;/a&gt;&lt;br/&gt;
Looking at this monitor for a inexpensive 24&amp;quot;. Realized it won&amp;#039;t work with ergotron monitor arms, so it is out. Blah.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.hometheaterhifi.com/volume_14_3/anthro-cart-7-2007.html"&gt;Product Review&lt;/a&gt;&lt;br/&gt;
Here are some examples of using anthro carts as hi-fi racks&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Links for 2008-12-21 [del.icio.us]</title><link>http://del.icio.us/baus#2008-12-21</link><pubDate>Mon, 22 Dec 2008 00:00:00 PST</pubDate><guid isPermaLink="true">http://del.icio.us/baus#2008-12-21</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.anthro.com/ppage.aspx?pmid=17"&gt;Fit Adjusta: Adjustable Ergonomic Computer Workstation&lt;/a&gt;&lt;br/&gt;
Just ordered this desk.&lt;/li&gt;
&lt;/ul&gt;</description></item><item>
		<title>Financial Crisis</title>
		<description><![CDATA[
<p>
I'm upset by the turn of events in our financial systems this
week. It is my feeling that nationalization of a large amount of our financial system
will change the face of business for years to come. We are moving to an unprecedented
level of socialism in this country, where it will be much more difficult to find credit
needed fund new ventures and purchases. Putting the lending system into the hands
of the government will result in politicizing our entire economic system. This is
not something I am looking forward to.
</p>
<p>
It is also unfortunate that citizens that have worked hard and acted prudently
will now be forced to pay off the debts of those who acted frivolously. This country
has lost the sense of self reliance and responsibility that made us great to begin with.
I am saddened to watch the greatest free market system in the world be brought to an end in the
span of a couple weeks.  
</p>
<p>
With that said, damn did you see that market rally today :)
</p>
]]>
                </description>

		<guid isPermaLink="true">http://www.baus.net/financial-crisis</guid>
		<link>http://www.baus.net/financial-crisis</link>
                <comments>
                http://www.baus.net/financial-crisis#comments
                </comments>
		<pubDate>Fri, 19 Sep 2008 10:01 -0700</pubDate>
                <category>Kitchen Sink</category>
	</item>
	<item>
		<title>Tom Bihn bags</title>
		<description><![CDATA[
<p>
Kathryn and I spent some of our time off, day hiking on the 
<a href="http://www.tahoerimtrail.org/">Tahoe Rim Trail</a>.  
Sometimes I forget what an great backyard Tahoe provides.  I love the smell
of tobacco brush and sage late in the summer.
</p>
<p>
Before we left, I grabbed my 
<a href="http://www.tombihn.com/">Tom Bihn</a> day pack, filled two
Nalgene bottles, and then off to the trail head. 
When I was looking down on the lake, my mind started
to wander and I realized the pack exactly the type of product
I wanted to discuss here.    
</p>
<img src="http://farm4.static.flickr.com/3131/2816197288_12ce8c49b8.jpg" align="right" />
<p>
I've owned this pack for 12 years, and it has been more places with me
than I care even remember, 
and it still looks and functions like new.  Years ago, when I was interning in San Jose, my Jan Sport pack fell to pieces
and I wanted a replacement that would out last it, and the mainstream packs didn't instill confidence.
I happened into Tom Bihn's small shop in Santa Cruz, and met the designer himself.  I knew I wanted one of his packs.
</p>
<p>
At the time, Tom's packs and bags were made in California from heavy nylon with extra large zippers, a padded back, and
held together with perfectly stitched seams. Tom himself seemed to care about the product he was creating.  While 
some mainstream designers have taken to the same over sized design esthetics, I can't 
imagine any would ultimately be as bomb proof or as well made as this pack.  
</p>
<p>
I pondered the decision, as the pack was about $100, about twice most mainstream day packs of the time, and for a student it
was good money.  I now expect the pack to last at least another 8 years which would it put its useful life span at 20 years.
I think it was money well spent.
</p>
<p>
A couple years ago when I was looking for a messenger bag, I was happy to find that not only was Tom Bihn still
in business, but they had grown considerably.  I was even more pleased to find that although the company had moved to Washington State, 
it had stuck to its original values and still made high quality bags in the U.S.  My "new" messenger bag gets daily hard use and it too 
has been flawless.
</p>
<p>
The formula:
<ul>
<li>High Quality Materials</li>
<li>Hand production</li>
<li>Attention to detail</li>
<li>Experience</li>
</ul>
</p>
<p>
The result: I whole heartedly recommend the company to anybody who asks about my bag, and they have kept me as a customer. I am now
considering a small messenger bag, and their site is first place I will look.
</p>


]]>
                </description>

		<guid isPermaLink="true">http://www.baus.net/tom-bihn</guid>
		<link>http://www.baus.net/tom-bihn</link>
                <comments>
                http://www.baus.net/tom-bihn#comments
                </comments>
		<pubDate>Sun, 31 Aug 2008 18:14 -0700</pubDate>
                <category>Kitchen Sink</category>
	</item>
	<item>
		<title>Materialistic Margaritas</title>
		<description><![CDATA[
<p>
Growing up in rural Upstate New York, the margaritas I knew were a concoction served from rotating machines, resembling a white 7-11 slurpy mixed with cheap booze.  They were something
you drank if for some unexplained reason you didn't like the taste of Genny Light. I didn't drink margaritas. I drank Genny Light and jug wine. 
</p>
<img src="http://www.kitchensisters.org/hidden_kitchens/hktexas/KUT_library/Frozen%20Margarita-Mariano%20%20Bandido%20Outfit.jpg"/>
<p>
In California I ordered Margaritas on the rocks with salt and they became an acceptable alternative to beer after a bike ride on a hot day.  When I first made margaritas myself
I used a florescent green mixer I bought at Safeway and Cuervo Gold.  The result wasn't very good, and these bottles have been sitting on my liquor shelf for 4 years now:
</p>
<img src="http://farm4.static.flickr.com/3278/2814933458_9a3b6d0192.jpg?v=0" />
<p>
I never truly understood Margaritas until Kathryn and I found 
<a href="http://www.tommystequila.com/">Tommy's</a> in an unlikely location in one of the foggiest districts of San Francisco. While the bar and restaurant is 
probably home to more roaches than we'd like to admit, they have by far the best (and most intoxicating) Margaritas I've ever had.   
<p>
Their recipe is simple:
</p>
<ul>
<li>100% agave tequila</li>
<li>Fresh lime juice</li>
<li>Simple syrup</li>
<li>Ice</li>
<li>Salt</li>
</ul>
<p>
To the left of the door at Tommy's there is a huge pile of limes, and that's the key.  No mixes.  Only fresh, hand made cocktails.  High quality materials, hand production,
attention to detail, and experience.  This is a recipe for a quality product.
</p>
<img src="http://farm4.static.flickr.com/3014/2814078019_df274c5f55.jpg?v=0"/>
<p>
The overall cost of option 1 (florecent mixer and Cuervo) and option 2 (fresh limes and agave tequilla) isn't much different.
Agave tequila is now plentiful at most liquor stores, and I bought one that was on sale.  14 limes, enough for ~7 margaritas, cost $2 at the local produce market.
</p>
]]>
                </description>

		<guid isPermaLink="true">http://www.baus.net/margaritas</guid>
		<link>http://www.baus.net/margaritas</link>
                <comments>
                http://www.baus.net/margaritas#comments
                </comments>
		<pubDate>Sun, 31 Aug 2008 12:39 -0700</pubDate>
                <category>Kitchen Sink</category>
	</item>
	<item>
		<title>The Materialist</title>
		<description><![CDATA[
<p>
I'm materialistic.  I like things and the design and process of making them, and I don't apologize for this affinity. While materialism received a 
decidedly <a href="http://www.youtube.com/watch?v=3tYLo9FkqNc">negative connotation</a> during the post-industrial boom of the 80s, ultimately a 
functioning economy and society is materialistic. Succeeding in modern creative industries, including software development, 
requires a critical eye toward objects and our interactions with them.  
</p>
<p>
Unfortunately, I believe the lack of emphasis on skilled trades and manufacturing in the U.S. has decreased our ability to value goods. Modern 
consumers rely on branding and advertising to shape perception and purchasing decisions.  As a result we have become poor judges of quality and often we
receive poor value for our dollar.  
</p>
<p>
As a consumer, I have obsessively sought out U.S. made goods. I'm not a card carrying union member or 
flag waving patriot, but I believe many leading U.S. companies lost much of what made them great when they abandoned their U.S. 
manufacturing base for lower cost operations. Some of them lost my business as the choice to move manufacturing offshore wasn't driven by the desire
to increase quality, but to decrease costs.  
<p>
We are now inundated by parades of container ships, but it is increasingly difficult to find goods 
that offer both quality and value.  I find it almost impossible to 
discriminate between goods sold at Wal-mart from those available from what were formally well regarded department stores.
</p>
<p>
But I believe attitudes are changing.  We are more informed consumers, and as a result of increased commodity prices and a decrease
in the value of the U.S. dollar, I believe there will be a shift from the multitudes of low quality goods, to fewer, classic, durable 
goods of high quality.
So after a hiatus from blogging, I'm starting anew with a focus on the things I love (or hate) and our 
interaction with them. 
</p>

]]>
                </description>

		<guid isPermaLink="true">http://www.baus.net/materialist</guid>
		<link>http://www.baus.net/materialist</link>
                <comments>
                http://www.baus.net/materialist#comments
                </comments>
		<pubDate>Sat, 30 Aug 2008 00:58 -0700</pubDate>
                <category>Kitchen Sink</category>
	</item>
<item><title>Links for 2007-08-19 [del.icio.us]</title><link>http://del.icio.us/baus#2007-08-19</link><pubDate>Mon, 20 Aug 2007 00:00:00 PDT</pubDate><guid isPermaLink="true">http://del.icio.us/baus#2007-08-19</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.baypiggies.net/"&gt;Welcome to the Bay Area Python Interest Group&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://sfbeta.com/"&gt;SF Beta&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Links for 2007-08-10 [del.icio.us]</title><link>http://del.icio.us/baus#2007-08-10</link><pubDate>Sat, 11 Aug 2007 00:00:00 PDT</pubDate><guid isPermaLink="true">http://del.icio.us/baus#2007-08-10</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://snarfed.org/space/facebook%20data%20store%20api%20thoughts#comment-anchor"&gt;facebook data store api thoughts - snarfed.org&lt;/a&gt;&lt;br/&gt;
This looks interesting.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Links for 2007-08-09 [del.icio.us]</title><link>http://del.icio.us/baus#2007-08-09</link><pubDate>Fri, 10 Aug 2007 00:00:00 PDT</pubDate><guid isPermaLink="true">http://del.icio.us/baus#2007-08-09</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://sfbay.craigslist.org/eby/bik/391497645.html"&gt;MOOTS YBB SUPERLIGHT TITANIUM MOUNTAIN BIKE SIZE 17&lt;/a&gt;&lt;br/&gt;
dream bike&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.thebestpageintheuniverse.net/c.cgi?u=macs_cant"&gt;One thing PC users can do that Mac users can't...&lt;/a&gt;&lt;br/&gt;
&amp;quot;&amp;quot;If I want to manufacture biological weapons with my copy of iTunes, I will, fascists. &amp;quot;&amp;quot;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.engadget.com/2007/02/10/mega-hands-on-virgin-americas-airbus-a320-with-red-in-flight-e/"&gt;Mega hands-on: Virgin America's Airbus A320 with Red in-flight entertainment - Engadget&lt;/a&gt;&lt;br/&gt;
SOunds like Virgin is going to put a whopping to everyone.&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Links for 2007-08-08 [del.icio.us]</title><link>http://del.icio.us/baus#2007-08-08</link><pubDate>Thu, 09 Aug 2007 00:00:00 PDT</pubDate><guid isPermaLink="true">http://del.icio.us/baus#2007-08-08</guid><description>&lt;ul&gt;
&lt;li&gt;&lt;a href="http://sfbay.craigslist.org/sfc/fur/389620474.html"&gt;Funky, Cool, Retro Hairdryer Lamp&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://sfbay.craigslist.org/sfc/fur/386992083.html"&gt;mohair wool beige sofa&lt;/a&gt;&lt;br/&gt;
mohair wool for $375?&lt;/li&gt;
&lt;li&gt;&lt;a href="http://sfbay.craigslist.org/sfc/fur/392719911.html"&gt;vintage Knoll side table / coffee table chrome &amp;amp; walnut (?)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item></channel>
</rss>
