<?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"?><!-- generator="wordpress/2.0" --><rss 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:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>a hunk, a hunk of birnam love</title>
	<link>http://blog.birnamdesigns.com</link>
	<description>Birnam Designs Blog (BDB) :: sharing tips, resources, ideas, and more, on web development and design</description>
	<pubDate>Mon, 15 Nov 2010 03:46:10 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.0</generator>
	<language>en</language>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/bdb" /><feedburner:info uri="bdb" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:browserFriendly>This is an XML content feed. It is intended to be viewed in a newsreader or syndicated to another site, subject to copyright and fair use.</feedburner:browserFriendly><item>
		<title>Leaving freelance</title>
		<link>http://feedproxy.google.com/~r/bdb/~3/63dkTIEU_Ww/</link>
		<comments>http://blog.birnamdesigns.com/2010/11/14/leaving-freelance/#comments</comments>
		<pubDate>Mon, 15 Nov 2010 03:46:10 +0000</pubDate>
		<dc:creator>david</dc:creator>
		
	<category>Uncategorized</category>
		<guid isPermaLink="false">http://blog.birnamdesigns.com/2010/11/14/leaving-freelance/</guid>
		<description><![CDATA[Two years ago, I would have told you it was impossible. One year ago, I would have scoffed.
After freelancing for twelve years (minus a few months here and there in the very early 2000s), I will soon be a fully employed Senior Creative Developer. Beginning tomorrow morning, Nov. 15 of 2010, my new home-away-from-home will [...]]]></description>
			<content:encoded><![CDATA[<p>Two years ago, I would have told you it was impossible. One year ago, I would have scoffed.</p>
<p>After freelancing for twelve years (minus a few months here and there in the very early 2000s), I will soon be a fully employed Senior Creative Developer. Beginning tomorrow morning, Nov. 15 of 2010, my new home-away-from-home will be with the wonderful folks at <a href="http://www.modea.com" target="_blank">Modea</a>. I&#8217;m absolutely thrilled about my new position, but that doesn&#8217;t mean it was an easy choice.</p>
<p>I&#8217;ve really enjoyed being a freelancer. Being in the freelance community. Feeling like I am apart from the system. Working to build my own name. And most importantly, working directly with a ton of really awesome people. It&#8217;s that last bit that made the decision so hard. I don&#8217;t like goodbyes.</p>
<p>I&#8217;ve been very privileged to enjoy a large number of repeat clients. A huge number of my projects are with clients I&#8217;ve grown with over the last decade. These people aren&#8217;t just clients. And they&#8217;re not just friends. They&#8217;re partners. And they will be missed. If the reader happens to be one of my clients &#8212; thank you, from the bottom of my heart.</p>
<p>I am extremely happy about the new future I have in store. As I mentioned, I will be acting as Senior Creative Developer. Modea is a rapidly growing company, with a lot of great people, and a lot of interesting projects. I&#8217;ve been contracting there for the last six weeks, and it&#8217;s been a joy. Thank you, Modea, for honoring me with a job offer.</p>
<p>And so it begins, a new chapter of my professional life, in about - oh - eight hours. Bring it.</p>
<p>p.s. A note to my clients: my contact information hasn&#8217;t changed. Please get in touch if you need files or resources from our past projects. And please, continue to view me as a resource for advice and answers.
</p>
]]></content:encoded>
			<wfw:commentRSS>http://blog.birnamdesigns.com/2010/11/14/leaving-freelance/feed/</wfw:commentRSS>
		<feedburner:origLink>http://blog.birnamdesigns.com/2010/11/14/leaving-freelance/</feedburner:origLink></item>
		<item>
		<title>The Benefits of Working from Home</title>
		<link>http://feedproxy.google.com/~r/bdb/~3/xmYeL31eYdA/</link>
		<comments>http://blog.birnamdesigns.com/2010/04/11/the-benefits-of-working-from-home/#comments</comments>
		<pubDate>Sun, 11 Apr 2010 19:49:55 +0000</pubDate>
		<dc:creator>david</dc:creator>
		
	<category>general information</category>
	<category>business</category>
	<category>productivity</category>
		<guid isPermaLink="false">http://blog.birnamdesigns.com/2010/04/11/the-benefits-of-working-from-home/</guid>
		<description><![CDATA[I&#8217;ve been thinking a lot lately about exactly why working from home is so important to me, and the benefits to myself and to my clients. The reasons I do it, and my own benefits, may not be the same as someone else&#8217;s. But I think these are general enough to reflect a majority of [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been thinking a lot lately about exactly why working from home is so important to me, and the benefits to myself and to my clients. The reasons I do it, and my own benefits, may not be the same as someone else&#8217;s. But I think these are general enough to reflect a majority of situations, not just for those in freelance or contract positions, but also for those telecommuting on a salaried position. </p>
<p>I believe that nearly all benefits are mutual to both sides, at least indirectly. An employer may not care one way or another if, for instance, having a private bathroom is important to me. But if it makes me more comfortable, then it makes me a better and more productive worker, and that is a measurable benefit for the employer.</p>
<p>I do want to point out that I don&#8217;t have a complete perspective on this - for instance, I&#8217;ve never been in the employer role in a telecommute arrangement. But I do speak from experience; I have been freelancing since 1998. But I should also point out that I&#8217;m an introvert and this is written from my perspective; many of these benefits might be outweighed by the sheer energy that extroverts enjoy when in the company of others.</p>
<p><a id="more-83"></a><br />
<h2>Comfort</h2>
<p>This is a pretty general concept, so I wanted to mention it first. A lot of the benefits you&#8217;ve already heard about can be lumped in here. There might not be a lot of telecommuters out there that literally work in their pajamas, but if you&#8217;re most comfortable in your pajamas then it&#8217;s a benefit. I firmly believe that the more comfortable you are, the less distractions you face and the better your concentration. If your mind wonders to &quot;these heels are so uncomfortable&quot; or &quot;I wish I could lose the tie&quot; every five or ten minutes, that&#8217;s a disruption. Comfort leads to efficiency.</p>
<p>I couldn&#8217;t list all of the benefits that falls under Worker Comfort if I tried, because it&#8217;s based on very personal preferences. Which is why telecommuter comfort should be considered a pretty big benefit for the employer. A good employer wants their office to be the perfect workplace for maximum efficiency. But perfection is subjective, and unless an employer is bleeding cash and floorspace out their ears they&#8217;re almost certainly not going to be able to provide the perfect workplace for every one of their employees. So - let them work from home, where they are each in full control of the workplace! </p>
<p>This also means that co-workers&#8217; preferences don&#8217;t detract from anyone else. If your perfect workplace involves loud techno music and complete darkness, then I hope your co-worker the next cube over doesn&#8217;t need perfect quite and lots of sunlight. But if you are both telecommuting, you can both work in the best environment for you.</p>
<p>Comfort hot topics:</p>
<ul>
<li>clothing</li>
<li>food and drinks</li>
<li>intentional noise levels (e.g. music)</li>
<li>ambient noise levels (e.g. traffic)</li>
<li>light levels</li>
<li>space</li>
<li>thermostat controls</li>
<li>air quality / allergen control</li>
<li>furniture</li>
<li>environment / location (e.g. living in the country vs. working downtown)</li>
</ul>
<h2>Isolation</h2>
<p>Tangential to Worker Comfort is Worker Isolation. They are both important to removing distractions.</p>
<p>Face it, whether or not an office actually has a water cooler, there&#8217;s still going to be a lot of water cooler talk going on. When you lump people together, they tend to chat, and obviously not always on topic. While it&#8217;s true that some discussions, e.g. meetings, are beneficial, others are just chatter. It&#8217;s important for even telecommuters to be connected to their coworkers, with email, IM, Skype, etc., and even plain chatter is an important way for team members to get closer. </p>
<p>But if you&#8217;re in the heat of the moment, most of these services allow you to tag your status as &quot;busy&quot; or &quot;do not disturb.&quot; It&#8217;s a great way to let people know that it just might not be the right time to discuss the big reveal in last night&#8217;s episode of Lost. With developers in particular, studies have shown that even tiny distractions can mean 10-15 of lost productivity. I refer to this as &quot;momentum working&quot; and if you get derailed it can be a while before you&#8217;re back up to speed. Avoiding tiny intrusions into your concentration can save a project hours of time.</p>
<h2>Schedule</h2>
<p>Not everyone is at their most productive from 9-5. If you&#8217;re a night owl, then your before-noon productivity might even be devastatingly low. Working out of a home office means you have greater control over when you work. If your peak productivity happens to be between 11pm and 3am, then go for it.</p>
<p>You can&#8217;t avoid all 9-5 interaction, of course. You will still need to participate in conference calls, status chats, etc. But in my experience, at least, while they <em>are</em> important events, they have little to do with productivity. At least in terms of your concentration on problem solving or focus on creativity is concerned these are interruptions. So, why not schedule the planned interruptions for your less-productive times, and work on your tasks later, when your productivity is more optimal anyway?</p>
<h2>The Commute</h2>
<p>Early in my freelancing life, some of my work was done on-site, including clocking in and out from 9-5. I was living in Chicago at the time, and the commute was 75 minutes each way <em>if I was lucky</em>. It approached two hours on heavy traffic days, and during bad weather was once 2.5 hours to get home.</p>
<p>Commuting is a tragic waste of human life.</p>
<p>Look at my example, 2.5 hours a day at best for my commute means that more than 10% of my entire day is completely wasted. If only I could have slept in that extra hour or more in the morning, I could have been more productive while I was at work! And I would have <em>much</em> rather stayed at work for the extra hour or more at the end of the day, and at least be productive and possibly getting a crucial extra bit of time to finish a deadline on time.</p>
<p>Working from home means no commute. How you spend this time is up to you, but you can make it count. You could get some extra work done. You could get some extra sleep. You could even sit around and play video games, and if it reduces your overall stress level than it can improve your productivity while you are working.</p>
</p>
<h2>Health</h2>
<p>Having paid sick time is nice, but it&#8217;s not always (if ever) convenient. Sick time isn&#8217;t just about giving you the chance to lie down for a day and rest, it&#8217;s also about giving your coworkers a break from the onslaught of germs coming from your cubicle. But a deadline is a deadline, right? Sometimes the decision to take a sick day is made with heavier consideration towards your project&#8217;s timeline than for your health, and the health of your coworkers. If you do have that extra-critical deadline and get sick, working from home lets you meet the best of both options. Work a bit, rest a bit, work a bit, rest a bit. You can still lay down for much of the day and not have to leave the house, while also getting some work done. When you&#8217;re working from home, there&#8217;s a different measurement of being too sick to work.</p>
</p>
<h2>Equipment</h2>
<p>The last benefit I&#8217;ll mention doesn&#8217;t come up as often as the rest, but it can make a difference. I am a real Power User when it comes to computers. My computer is a <em>heavily</em> customized tool. As a Linux user, I even tweak some of the applications I use at a source level, and recompile them for my own particular computer. I write a lot of my own scripts and tools. I&#8217;ve built up a pretty good script library and have a lot of third part scripts on hand for immediate use. My most used programs and bookmarks are right where I need them. I can get to anything I want with a few clicks, and my computer allows 100% productivity at all times.</p>
<p>I&#8217;ve seen a lot of job/contract listings for on-site positions that ask the applicant to be ready to hop right into an ongoing project immediately. I don&#8217;t know who they think can do that, but I like to think that I&#8217;m a more advanced developer than someone who can just sit down at a strange computer and be as productive as they would be on their own computer. Able to work? Yes. Be productive? No, and that&#8217;s the key. I would feel utterly crippled without my computer, like a master carpenter would feel when told that all they have to work on is a $150 Lowes table saw.</p>
<p>There are a few other equipment benefits of course. Having nicer speakers if you&#8217;re an I-need-music-all-day worker, or having a dual monitor setup. Or even the choice of OS. Most offices require employees to use the same OS so their IT department doesn&#8217;t need to worry about different systems. When working remotely, you have the choice.</p>
</p>
<h2>Summary</h2>
<p>In short, working from home can range from being a nice perk to being essential to your productivity. Ultimately it depends on who you are and what you do. I consider myself lucky to be in a field where working from home makes so much sense. If you&#8217;re not already working remotely, think about the benefits. If you talk it over with your employer, make it clear that these benefits will make you a better worker and will therefore be a benefit to both sides. Give it a try.</p>
]]></content:encoded>
			<wfw:commentRSS>http://blog.birnamdesigns.com/2010/04/11/the-benefits-of-working-from-home/feed/</wfw:commentRSS>
		<feedburner:origLink>http://blog.birnamdesigns.com/2010/04/11/the-benefits-of-working-from-home/</feedburner:origLink></item>
		<item>
		<title>Dreamweaver 8.0.2 update in Vista 64bit</title>
		<link>http://feedproxy.google.com/~r/bdb/~3/IFBuK9u87_g/</link>
		<comments>http://blog.birnamdesigns.com/2007/04/02/dreamweaver-802-update-in-vista-64bit/#comments</comments>
		<pubDate>Mon, 02 Apr 2007 16:29:37 +0000</pubDate>
		<dc:creator>david</dc:creator>
		
	<category>Uncategorized</category>
	<category>software</category>
	<category>quick tips</category>
	<category>development</category>
		<guid isPermaLink="false">http://blog.birnamdesigns.com/2007/04/02/dreamweaver-802-update-in-vista-64bit/</guid>
		<description><![CDATA[I don&#8217;t have a Vista horror story, everything has worked remarkably smoothly. That&#8217;s not to say there haven&#8217;t been any glitches, just that my overall experience has been very positive.
One minor problem that I&#8217;ve had is with Dreamweaver &#8212; the 8.0.2 update didn&#8217;t install. It turns out this problem is only with 64bit version of [...]]]></description>
			<content:encoded><![CDATA[<p>I don&#8217;t have a Vista horror story, everything has worked remarkably smoothly. That&#8217;s not to say there haven&#8217;t been any glitches, just that my overall experience has been very positive.</p>
<p>One minor problem that I&#8217;ve had is with Dreamweaver &#8212; the 8.0.2 update didn&#8217;t install. It turns out this problem is only with 64bit version of Vista, and is actually a problem with the InstallShield wrapper around the update file. Fortunately the fix is simple enough &#8212; even though it is fairly difficult to locate!</p>
<p>Adobe outlines the problem <a href="http://www.adobe.com/cfusion/knowledgebase/index.cfm?id=kb400150">here</a>, and provides the update file without the wrapper.</p>
<p>That&#8217;s not the end of the story, though. Unless you run the file with administrator privilege, you will get an error as soon as you run it. It&#8217;s a little difficult to run it with administrator privileges, though, because it&#8217;s an .msp file and &#8220;Run as Administrator&#8221; doesn&#8217;t appear in its right-click menu or properties dialog. To get around this, you need to open a PowerShell or command shell with administrator privileges, and then run the file from there.
</p>
<div class="techtags">Tags: <a href="http://technorati.com/tag/Vista" rel="tag">Vista</a>, <a href="http://technorati.com/tag/Dreamweaver" rel="tag">Dreamweaver</a>, <a href="http://technorati.com/tag/update" rel="tag">update</a></div>]]></content:encoded>
			<wfw:commentRSS>http://blog.birnamdesigns.com/2007/04/02/dreamweaver-802-update-in-vista-64bit/feed/</wfw:commentRSS>
		<feedburner:origLink>http://blog.birnamdesigns.com/2007/04/02/dreamweaver-802-update-in-vista-64bit/</feedburner:origLink></item>
		<item>
		<title>Testing Dreamweaver templates</title>
		<link>http://feedproxy.google.com/~r/bdb/~3/NE-6Mb5nc-Q/</link>
		<comments>http://blog.birnamdesigns.com/2007/02/25/testing-dreamweaver-templates/#comments</comments>
		<pubDate>Sun, 25 Feb 2007 06:03:43 +0000</pubDate>
		<dc:creator>david</dc:creator>
		
	<category>general information</category>
	<category>htaccess / mod_rewrite</category>
	<category>quick tips</category>
	<category>development</category>
		<guid isPermaLink="false">http://blog.birnamdesigns.com/2007/02/25/testing-dreamweaver-templates/</guid>
		<description><![CDATA[I don&#8217;t know why I didn&#8217;t think of this before.
Dreamweaver templates use the .dwt extension, which means that if you try viewing them through a browser you just see it as text, or it will try to download the file. This means that developing Dreamweaver projects means either creating the original file as a .html [...]]]></description>
			<content:encoded><![CDATA[<p>I don&#8217;t know why I didn&#8217;t think of this before.</p>
<p>Dreamweaver templates use the .dwt extension, which means that if you try viewing them through a browser you just see it as text, or it will try to download the file. This means that developing Dreamweaver projects means either creating the original file as a .html file and converting that to a dwt down the road, or creating an .html file that uses the template, and keep updating it. Both options are just a little more work than I think should be required.</p>
<p>I&#8217;m running apache, but the principle is the same (albeit slightly different steps) in IIS. I&#8217;m also running this on my local computer so I have quick access to httpd.conf, which is apache&#8217;s configuration file. On a shared server, I believe this would also work by adding it to a .htaccess file.</p>
<p>It&#8217;s easy, just add this line to your apache config file &#8212; httpd.conf</p>
<p><code>AddType text/html .dwt</code></p>
<p>And that&#8217;s it! Restart apache and reload the page. Apache will now describe the file as a text/html file in the header, and your browser will render it as such.
</p>
<div class="techtags">Tags: <a href="http://technorati.com/tag/Dreamweaver" rel="tag">Dreamweaver</a>, <a href="http://technorati.com/tag/template" rel="tag">template</a>, <a href="http://technorati.com/tag/apache" rel="tag">apache</a>, <a href="http://technorati.com/tag/httpd.conf" rel="tag">httpd.conf</a></div>]]></content:encoded>
			<wfw:commentRSS>http://blog.birnamdesigns.com/2007/02/25/testing-dreamweaver-templates/feed/</wfw:commentRSS>
		<feedburner:origLink>http://blog.birnamdesigns.com/2007/02/25/testing-dreamweaver-templates/</feedburner:origLink></item>
		<item>
		<title>find out what version of SQL Server you (or your host) is running</title>
		<link>http://feedproxy.google.com/~r/bdb/~3/p5foZyyd1ys/</link>
		<comments>http://blog.birnamdesigns.com/2007/01/23/find-out-what-version-of-sql-server-you-or-your-host-is-running/#comments</comments>
		<pubDate>Tue, 23 Jan 2007 19:04:34 +0000</pubDate>
		<dc:creator>david</dc:creator>
		
	<category>general information</category>
	<category>useful links</category>
	<category>quick tips</category>
	<category>database</category>
		<guid isPermaLink="false">http://blog.birnamdesigns.com/2007/01/23/find-out-what-version-of-sql-server-you-or-your-host-is-running/</guid>
		<description><![CDATA[Have you ever wondered if the SQL Server 2005 database your host is providing might actually be an Express installation? Or maybe you&#8217;re curious if they&#8217;re running the most recent service pack?
I&#8217;ve run into several methods of finding out the version information. The easiest, and my preferred method, is using sseutil &#8212; my command-line sql [...]]]></description>
			<content:encoded><![CDATA[<p>Have you ever wondered if the SQL Server 2005 database your host is providing might actually be an Express installation? Or maybe you&#8217;re curious if they&#8217;re running the most recent service pack?</p>
<p>I&#8217;ve run into several methods of finding out the version information. The easiest, and my preferred method, is using <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=fa87e828-173f-472e-a85c-27ed01cf6b02&#038;DisplayLang=en" target="_blank">sseutil</a> &#8212; my command-line sql utility of choice. All you have to do is use the -version argument! For instance:</p>
<p><textarea name="code" class="sql:nocontrols:nogutter">sseutil -m -version -s .\SQLEXPRESS</textarea></p>
<p>If you&#8217;re interested in the version number, that&#8217;s on the first line. This lets you see if the server is up to date. Here is a <a href="http://sqlblog.com/blogs/aaron_bertrand/archive/2006/12/12/419.aspx" target="_blank">full list of SQL Server 2005 version numbers</a>, up to the December CTP of Service Pack 2. (If you need the same info on an older server, ASPFAQ has is an extensive <a href="http://sqlserver2000.databases.aspfaq.com/how-do-i-know-which-version-of-sql-server-i-m-running.html" target="_blank">list of SQL Server 7 and SQL Server 2000 versions</a>)</p>
<p>If you&#8217;re more interested in which edition you&#8217;re running, that&#8217;s on the last line. It might read &#8220;Express Edition&#8221; or &#8220;Express Edition with Advanced Services&#8221; for the free Express edition, or &#8220;Standard Edition,&#8221; &#8220;Workgroup Edition,&#8221; or &#8220;Enterprise Edition&#8221; for the $$$ editions.</p>
<p>But this is only one method! What if you don&#8217;t have sseutil? You can always run this sql command:</p>
<p><textarea name="code" class="sql:nocontrols:nogutter">SELECT @@VERSION</textarea></p>
<p>And finally, I found an alternate method on <a href="http://support.microsoft.com/kb/321185" target="_blank">Microsoft&#8217;s KnowledgeBase</a>, it goes like this:</p>
<p><textarea name="code" class="sql:nocontrols:nogutter">SELECT  SERVERPROPERTY('productversion'), 
SERVERPROPERTY ('productlevel'), 
SERVERPROPERTY ('edition')</textarea>
</p>
<div class="techtags">Tags: <a href="http://technorati.com/tag/SQL+Server" rel="tag">SQL Server</a>, <a href="http://technorati.com/tag/Express" rel="tag">Express</a>, <a href="http://technorati.com/tag/version" rel="tag">version</a>, <a href="http://technorati.com/tag/edition" rel="tag">edition</a>, <a href="http://technorati.com/tag/sseutil" rel="tag">sseutil</a></div>]]></content:encoded>
			<wfw:commentRSS>http://blog.birnamdesigns.com/2007/01/23/find-out-what-version-of-sql-server-you-or-your-host-is-running/feed/</wfw:commentRSS>
		<feedburner:origLink>http://blog.birnamdesigns.com/2007/01/23/find-out-what-version-of-sql-server-you-or-your-host-is-running/</feedburner:origLink></item>
		<item>
		<title>working across multiple computers</title>
		<link>http://feedproxy.google.com/~r/bdb/~3/LIGR7ulzLRI/</link>
		<comments>http://blog.birnamdesigns.com/2007/01/17/working-across-multiple-computers/#comments</comments>
		<pubDate>Wed, 17 Jan 2007 15:58:14 +0000</pubDate>
		<dc:creator>david</dc:creator>
		
	<category>software</category>
	<category>quick tips</category>
		<guid isPermaLink="false">http://blog.birnamdesigns.com/2007/01/17/working-across-multiple-computers/</guid>
		<description><![CDATA[One of the most brilliant applications I&#8217;ve used recently is called Synergy. Are you familiar with VNC, PC Anywhere, or Windows/Apple Remote Desktop? Synergy is basically a smart, scaled down version of these programs, and is meant for situations when you have the actual, physical computers right there on your desk.
Unlike VNC, etc., Synergy does [...]]]></description>
			<content:encoded><![CDATA[<p>One of the most brilliant applications I&#8217;ve used recently is called <a href="http://synergy2.sourceforge.net/" target="_blank">Synergy</a>. Are you familiar with <a href="http://www.realvnc.com/" target="_blank">VNC</a>, <a href="http://www.pcanywhere.com/" target="_blank">PC Anywhere</a>, or <a href="http://www.microsoft.com/windowsxp/downloads/tools/rdclientdl.mspx" target="_blank">Windows</a>/<a href="http://www.apple.com/remotedesktop/" target="_blank">Apple</a> Remote Desktop? Synergy is basically a smart, scaled down version of these programs, and is meant for situations when you have the actual, physical computers right there on your desk.</p>
<p>Unlike VNC, etc., Synergy does not transfer any of the graphics between systems, only the mouse, keyboard, and clipboard. In this sense, it&#8217;s also like using a KVM switch to allow control of multiple computers from the same keyboard/mouse. But instead of buying an expensive switch (I couldn&#8217;t find any suitable for my needs under $75), all you do is drag the mouse off of one of the edges of your primary computer, and it pops up on another one, complete with keyboard control! So if you have a mac screen to the left of your PC screen, you can set up the left edge of the PC/right edge of the mac is the hot edge. Then you can drag the mouse between screens, just like it was one big desktop. Amazing.</p>
<p>Since we just added a new mac to our computer setup as a browser testbed, this has been an enormous benefit. No juggling multiple keyboards and mice!</p>
<p>Oh, and it&#8217;s 100% free. Incredible!
</p>
<div class="techtags">Tags: <a href="http://technorati.com/tag/applications" rel="tag">applications</a>, <a href="http://technorati.com/tag/Synergy" rel="tag">Synergy</a></div>]]></content:encoded>
			<wfw:commentRSS>http://blog.birnamdesigns.com/2007/01/17/working-across-multiple-computers/feed/</wfw:commentRSS>
		<feedburner:origLink>http://blog.birnamdesigns.com/2007/01/17/working-across-multiple-computers/</feedburner:origLink></item>
		<item>
		<title>Setting up Full Text Search with SQL Express 2005 and Management Studio Express</title>
		<link>http://feedproxy.google.com/~r/bdb/~3/Jpj-qnTQjyE/</link>
		<comments>http://blog.birnamdesigns.com/2006/12/15/setting-up-full-text-search-with-sql-express-2005-and-management-studio-express/#comments</comments>
		<pubDate>Fri, 15 Dec 2006 19:57:02 +0000</pubDate>
		<dc:creator>david</dc:creator>
		
	<category>software</category>
	<category>database</category>
	<category>development</category>
		<guid isPermaLink="false">http://blog.birnamdesigns.com/2006/12/15/setting-up-full-text-search-with-sql-express-2005-and-management-studio-express/</guid>
		<description><![CDATA[Here&#8217;s one for the .NET/MSSQL/SQL Express crowd.
Management Studio Express is a nice interface for managing SQL Express databases. While I prefer Visual Studio for working with the data and stored procedures, MSE is essential for the more high level maintenance like database creation and attaching, managing users, and setting up Full Text Search indexes.
First, a [...]]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s one for the .NET/MSSQL/SQL Express crowd.</p>
<p>Management Studio Express is a nice interface for managing SQL Express databases. While I prefer Visual Studio for working with the data and stored procedures, MSE is essential for the more high level maintenance like database creation and attaching, managing users, and setting up Full Text Search indexes.</p>
<p>First, a brief primer on FTS. It&#8217;s a brilliant tool that will take a lot of the effort out of writing search queries. It allows for much more than just boolean searches. It can also search for inflectional variations. For instance, if you searched for &#8220;apply&#8221; it will also return results for &#8220;applying,&#8221; &#8220;applies,&#8221; and &#8220;applied.&#8221; It can also return search score information to help you rank results &#8212; to which you can also apply custom weighting. The first thing to know, though, is that <strong>it doesn&#8217;t come with the default SQL Express 2005 installation!</strong> You need to install <a href="http://msdn.microsoft.com/vstudio/express/sql/download/">SQL Express 2005 with Advanced Services</a> in order to have access to FTS at all. </p>
<p>Once you&#8217;ve got it installed in order to get it working you need to:</p>
<ol type="1">
<li>enable FTS on the database you want to use</li>
<li>create a folder to store the FTS index (optional: it will use the default folder if you don&#8217;t specify a location, but if you do specify a location the folder has to already exist)</li>
<li>create a fulltext catalog with a unique ID, optionally set to the path created in the previous step</li>
<li>add the catalog to each table in the database that will utilize it</li>
<li>specify the columns in the tables that will use the FTS data</li>
<li>specify the language of each column (optional, but if you don&#8217;t set this inflectional won&#8217;t work)</li>
</ol>
<p>The first two steps are easy. In MSE, just right click on the database you want to add FTS to and open the Properties dialog. Open the Files page, and check the box next to &#8220;Use full-text indexing.&#8221; Save that and you&#8217;re ready to go. If you&#8217;re going to specify the location for the index, create the folder using whatever tool you fancy.</p>
<p>The first problem you&#8217;re going to run into, though is actually creating the FTS catalog in the first place. This is something that you <em>can&#8217;t</em> do in MSE. At least, I&#8217;ve never been able to find out how! Fortunately there&#8217;s a handy command line tool called <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=fa87e828-173f-472e-a85c-27ed01cf6b02&#038;DisplayLang=en">SSEUtil</a> (from Microsoft). It&#8217;s a bit more user friendly than the standard <a href="http://msdn2.microsoft.com/en-us/library/ms170207.aspx">sqlcmd</a> utility, which you could also use.</p>
<p>When starting sseutil from the command line, give it the &#8220;-c&#8221; (console) and &#8220;-m&#8221; (main) arguments. That gives you a command line into the same databases you see listed in MSE. Don&#8217;t omit the &#8220;-m&#8221; or you are actually starting sseutil as a secondary process and you will probably not have access the database you&#8217;re trying to edit. Don&#8217;t ask me why, I have no idea what the mechanics are here. All I know is that it usually takes me four hours of banging my head on the desk before I remember that little &#8220;-m&#8221; and then suddenly everything works. If you can access your database with Windows Security, that&#8217;s all you need.</p>
<p><code>sseutil -c -m</code></p>
<p>Once in sseutil, you just run two very simple commands. Don&#8217;t forget you have to say &#8220;go&#8221; to commit each command before processing. (I&#8217;m sure you could run them both and say &#8220;go&#8221; once, but it&#8217;s nice to get confirmation at each point.)</p>
<p><textarea name="code" class="sql:nocontrols:nogutter">
use db_name
go
</textarea><br />
This selects the database you are managing, so replace &#8220;db_name&#8221; with the right name. To list the databases available use the <code>sp_databases</code> command. (Don&#8217;t forget the &#8220;go.&#8221;) Once you have confirmation &#8220;Command completed successfully&#8221; you just need to run the sp_fulltext_catalog stored procedure. This is where you give the catalog a unique ID and the optional path. You also need to tell it that you&#8217;re wanting to create a catalog (the same sp is used for deleting or re-indexing a catalog).</p>
<p><textarea name="code" class="sql:nocontrols:nogutter">
sp_fulltext_catalog 'dbname_fulltext', 'create', 'c:\fts\dbname'
go
</textarea><br />
Again this is using sample names so replace &#8220;dbname_fulltext&#8221; and &#8220;c:\fts\dbname&#8221; with whatever works for you.</p>
<p>After you get confirmation on this, you&#8217;re finished with the command line. Close sseutil and get back to MSE. Open the drop down list for the database you&#8217;re managing, and open Tables. Find the table you want to add FTS to, right click and select Modify. This will open the column editing page.</p>
<p>In order for FTS to work, the table <strong>has</strong> to have a unique primary key. If the table doesn&#8217;t have one yet, create one. Now right click on the key icon in the margin next to the primary key, and select &#8220;Full-text Index&#8221;. The first step is to add this table to the FTS catalog you just created. This is as easy as clicking on the &#8220;Add&#8221; button (which isn&#8217;t available if you haven&#8217;t successfully created a catalog on this database!), which will add the table using the default name of <code>FullText_for_tablename</code>.</p>
<p>Now you will see the properties box on the right fill up. The only properties that you need to worry about right now is the very top one, under <strong>General</strong>. Click on that, and you&#8217;ll notice an [&#8230;] button appear on the far right of that field. Click this button to add the columns of the table to the index.</p>
<p>This interface is very easy, just select from the available columns in the dropdown box on the first cell. The datatype will automatically be added. The &#8220;Typed by Column&#8221; box can be ignored, but I recommend selecting the language from the Language cell. This will allow you to do inflectional searches &#8212; without knowing the language SQL can&#8217;t apply the inflectional variations.</p>
<p>And that&#8217;s it! Add each column that you want, and do this for every table that you want. The index itself will be created and updated automatically.</p>
<p>For further reference, here is Microsoft&#8217;s page detailing <a href="http://msdn2.microsoft.com/en-us/library/ms142547.aspx">Full-Text Search concepts</a>. I recommend starting with <a href="http://msdn2.microsoft.com/en-us/library/ms142538.aspx">Simple Term searches</a>, and then looking into the <a href="http://msdn2.microsoft.com/en-us/library/ms142566.aspx">inflectional searches</a>. The primary SQL commands (technically, two &#8216;predicates&#8217; and two &#8216;functions&#8217;) that are used in FTS queries are <code>CONTAINS</code>, <code>FREETEXT</code>, <code>CONTAINSTABLE</code>, and <code>FREETEXTTABLE</code>. Good luck!
</p>
<div class="techtags">Tags: <a href="http://technorati.com/tag/.NET" rel="tag">.NET</a>, <a href="http://technorati.com/tag/Management+Studio+Express" rel="tag">Management Studio Express</a>, <a href="http://technorati.com/tag/SQL+Express" rel="tag">SQL Express</a>, <a href="http://technorati.com/tag/database" rel="tag">database</a>, <a href="http://technorati.com/tag/Full+Text+Search" rel="tag">Full Text Search</a>, <a href="http://technorati.com/tag/search" rel="tag">search</a>, <a href="http://technorati.com/tag/sqlcmd" rel="tag">sqlcmd</a>, <a href="http://technorati.com/tag/sseutil" rel="tag">sseutil</a></div>]]></content:encoded>
			<wfw:commentRSS>http://blog.birnamdesigns.com/2006/12/15/setting-up-full-text-search-with-sql-express-2005-and-management-studio-express/feed/</wfw:commentRSS>
		<feedburner:origLink>http://blog.birnamdesigns.com/2006/12/15/setting-up-full-text-search-with-sql-express-2005-and-management-studio-express/</feedburner:origLink></item>
		<item>
		<title>Update: new version of DebugBar</title>
		<link>http://feedproxy.google.com/~r/bdb/~3/GHVOWbmjqZM/</link>
		<comments>http://blog.birnamdesigns.com/2006/11/17/update-new-version-of-debugbar/#comments</comments>
		<pubDate>Fri, 17 Nov 2006 22:26:05 +0000</pubDate>
		<dc:creator>david</dc:creator>
		
	<category>useful links</category>
	<category>software</category>
	<category>plugins</category>
	<category>development</category>
		<guid isPermaLink="false">http://blog.birnamdesigns.com/2006/11/17/update-new-version-of-debugbar/</guid>
		<description><![CDATA[A few weeks ago I wrote about an exciting AddOn for Internet Explorer that gave IE a lot of the developer tools we have become used to in Firefox. It&#8217;s called DebugBar, and is published by Core Services. At the time, I was able to test it out with a Virtual PC using IE6 but [...]]]></description>
			<content:encoded><![CDATA[<p>A few weeks ago I wrote about <a href="http://blog.birnamdesigns.com/2006/10/30/debugbar-for-ie7-ie-grows-more-developer-friendly/">an exciting AddOn for Internet Explorer</a> that gave IE a lot of the developer tools we have become used to in Firefox. It&#8217;s called <a href="http://www.debugbar.com/">DebugBar</a>, and is published by <a href="http://www.core-services.fr/">Core Services</a>. At the time, I was able to test it out with a Virtual PC using IE6 but had stability problems in IE7 on my native Windows XP box.</p>
<p>The problem turned out not to be with use in IE7, but a compatibility issue with the Google Desktop addon I also have installed (it records your browsing history to be searchable with a Google Desktop search). I&#8217;m very happy to report that Core Services was eager to get this fixed, and they have already <a href="http://www.debugbar.com/">released a 4.01 version</a> that solves the issue!</p>
<p>After having worked with the AddOn some more, my opinion has only strengthed, and not just in regards to the new stability. DebugBar has become a very useful addition to my toolbox. It&#8217;s free for personal use, and professionals have a 30-day trial period before having to decide on the  ~$75 pricetag. If you find yourself banging your head over IE development, this could be what you&#8217;re looking for and well worth the cost.</p>
<p><strong>Plus</strong>, if you&#8217;re looking for a good IE tool for working with Javascript, the same developers have also released an early version of <a href="http://www.ieforge.com/CompanionJS/HomePage">Companion.JS</a>, a new tool for debugging Javascript. It might be an early version, but it&#8217;s already looking good.
</p>
<div class="techtags">Tags: <a href="http://technorati.com/tag/Internet+Explorer" rel="tag">Internet Explorer</a>, <a href="http://technorati.com/tag/Core+Services" rel="tag">Core Services</a>, <a href="http://technorati.com/tag/IE7" rel="tag">IE7</a>, <a href="http://technorati.com/tag/Google+Desktop" rel="tag">Google Desktop</a></div>]]></content:encoded>
			<wfw:commentRSS>http://blog.birnamdesigns.com/2006/11/17/update-new-version-of-debugbar/feed/</wfw:commentRSS>
		<feedburner:origLink>http://blog.birnamdesigns.com/2006/11/17/update-new-version-of-debugbar/</feedburner:origLink></item>
		<item>
		<title>Google on the road to web standards?</title>
		<link>http://feedproxy.google.com/~r/bdb/~3/xxAFniQp5AM/</link>
		<comments>http://blog.birnamdesigns.com/2006/11/17/google-on-the-road-to-web-standards/#comments</comments>
		<pubDate>Fri, 17 Nov 2006 18:26:55 +0000</pubDate>
		<dc:creator>david</dc:creator>
		
	<category>general information</category>
	<category>css</category>
		<guid isPermaLink="false">http://blog.birnamdesigns.com/2006/11/17/google-on-the-road-to-web-standards/</guid>
		<description><![CDATA[Yes, their search results still use tables and font tags. BUT I noticed today that Google&#8217;s results have switched from being listed with &#60;p&#62; tags to using &#60;div&#62; tags! It&#8217;s definitely progress.
If you&#8217;re interested, I noticed this when one of my Greasemonkey scripts stopped working. My script will number the Google results, which I use [...]]]></description>
			<content:encoded><![CDATA[<p>Yes, their search results still use tables and font tags. BUT I noticed today that Google&#8217;s results have switched from being listed with <code>&lt;p&gt;</code> tags to using <code>&lt;div&gt;</code> tags! It&#8217;s definitely progress.</p>
<p>If you&#8217;re interested, I noticed this when one of my <a href="http://greasemonkey.mozdev.org/">Greasemonkey</a> scripts stopped working. My script will number the Google results, which I use to test SEO rankings. If you have Greasemonkey, and you&#8217;re interested, you can <a href="http://www.birnamdesigns.com/userscripts/numbergoogleresults.user.js">install Number Google Results here</a>. It&#8217;s already updated to work with Google&#8217;s new format. </p>
<div style="font-size: 9px; color: #666; ">Feel free to use it or customize it, but it comes as-is without any support. If you do customize it, I&#8217;m interested to see what you&#8217;ve done!</div>
<div class="techtags">Tags: <a href="http://technorati.com/tag/Google" rel="tag">Google</a>, <a href="http://technorati.com/tag/SEO" rel="tag">SEO</a>, <a href="http://technorati.com/tag/Greasemonkey" rel="tag">Greasemonkey</a></div>]]></content:encoded>
			<wfw:commentRSS>http://blog.birnamdesigns.com/2006/11/17/google-on-the-road-to-web-standards/feed/</wfw:commentRSS>
		<feedburner:origLink>http://blog.birnamdesigns.com/2006/11/17/google-on-the-road-to-web-standards/</feedburner:origLink></item>
		<item>
		<title>CSS border-collapse applied to inline lists</title>
		<link>http://feedproxy.google.com/~r/bdb/~3/HrI4WRxcMnI/</link>
		<comments>http://blog.birnamdesigns.com/2006/11/16/css-border-collapse-applied-to-inline-lists/#comments</comments>
		<pubDate>Thu, 16 Nov 2006 23:29:55 +0000</pubDate>
		<dc:creator>david</dc:creator>
		
	<category>css</category>
	<category>quick tips</category>
	<category>development</category>
		<guid isPermaLink="false">http://blog.birnamdesigns.com/2006/11/16/css-border-collapse-applied-to-inline-lists/</guid>
		<description><![CDATA[One good trick using CSS is making wrapping blocks of elements. Grouping elements together used to be something developers used table cells for, but when CSS started to be used more regularly, alternate methods were invented. A common use is converting &#60;ul&#62; lists (which are typically vertical structures) into horizontal menus. The really good thing [...]]]></description>
			<content:encoded><![CDATA[<p>One good trick using CSS is making wrapping blocks of elements. Grouping elements together used to be something developers used table cells for, but when CSS started to be used more regularly, alternate methods were invented. A common use is converting &lt;ul&gt; lists (which are typically vertical structures) into horizontal menus. The really good thing about the CSS-based solution is its flexibility when wrapping is involved.</p>
<p>For table-based designs, the number of rows and columns had to be preset. With a CSS-based wrapping solution the size of the container can dictate the wrapping. For instance:</p>
<p><style type="text/css">
ul.wrapping_blocks li {
	list-style: none;
	float: left; padding: 10px; border: solid 1px #aaa;
}
.collapsedborders li {
	margin: 0 -1px -1px 0;
}
ul.wrapping_blocks li .block {
	width: 120px; height: 20px; background-color: #1B2B3A; color: #fff;
}
</style></p>
<ul class="wrapping_blocks">
<li>
<div class="block">block</div>
<div class="caption">caption</div>
</li>
<li>
<div class="block">block</div>
<div class="caption">caption</div>
</li>
<li>
<div class="block">block</div>
<div class="caption">caption</div>
</li>
<li>
<div class="block">block</div>
<div class="caption">caption</div>
</li>
<li>
<div class="block">block</div>
<div class="caption">caption</div>
</li>
</ul>
<div style="clear: both; ">&nbsp;</div>
<p>Can be produced like this:</p>
<p><textarea name="code" class="css:nocontrols"" cols="40" rows="10">
ul.wrapping_blocks li {
	list-style: none;
	float: left; padding: 10px; border: solid 1px #aaa;
}
ul.wrapping_blocks li .block {
	width: 120px; height: 20px; background-color: #1B2B3A; color: #fff;
}
</textarea></p>
<p><textarea name="code" class="html:nocontrols"" cols="40" rows="10">
<ul class="wrapping_blocks">
	<li><div class="block">block</div><div class="caption">caption</div></li>
	<li><div class="block">block</div><div class="caption">caption</div></li>
	<li><div class="block">block</div><div class="caption">caption</div></li>
	<li><div class="block">block</div><div class="caption">caption</div></li>
	<li><div class="block">block</div><div class="caption">caption</div></li>
</ul>
<div style="clear: both; ">&nbsp;</div> <!-- necessary to cancel float ... -->
</textarea></p>
<p>The &#8220;block&#8221; and &#8220;caption&#8221; groups are kept together, and sequentially listed in the HTML. They are all floated, and therefore &#8217;stacked&#8217; horizontally, wrapping at the edge of the container. An arbitrary number of these groups can be placed using the same code, and the wrapping is taken care of by the rendering. Here is the same code with ten blocks:</p>
<ul class="wrapping_blocks">
<li>
<div class="block">block</div>
<div class="caption">caption</div>
</li>
<li>
<div class="block">block</div>
<div class="caption">caption</div>
</li>
<li>
<div class="block">block</div>
<div class="caption">caption</div>
</li>
<li>
<div class="block">block</div>
<div class="caption">caption</div>
</li>
<li>
<div class="block">block</div>
<div class="caption">caption</div>
</li>
<li>
<div class="block">block</div>
<div class="caption">caption</div>
</li>
<li>
<div class="block">block</div>
<div class="caption">caption</div>
</li>
<li>
<div class="block">block</div>
<div class="caption">caption</div>
</li>
<li>
<div class="block">block</div>
<div class="caption">caption</div>
</li>
<li>
<div class="block">block</div>
<div class="caption">caption</div>
</li>
</ul>
<div style="clear: both; ">&nbsp;</div>
<p>To get an even better demonstration, <a href="http://www.birnamdesigns.com/misc/css_block_wrapping.html" target="_blank">this link</a> will open a new window that you can resize and watch how the wrapping takes place.</p>
<p>At first one of the drawbacks of doing this with CSS as opposed to table is the lack of a border-collapse style! As you can see from the examples above, the bordering edges are doubled. Uh-oh! Border-Collapse only applies to tables!</p>
<p>No problem, just reduce the right and bottom margins by -1. If you want thicker borders, just change these margins to the negative border thickness.</p>
<ul class="wrapping_blocks collapsedborders">
<li>
<div class="block">block</div>
<div class="caption">caption</div>
</li>
<li>
<div class="block">block</div>
<div class="caption">caption</div>
</li>
<li>
<div class="block">block</div>
<div class="caption">caption</div>
</li>
<li>
<div class="block">block</div>
<div class="caption">caption</div>
</li>
<li>
<div class="block">block</div>
<div class="caption">caption</div>
</li>
<li>
<div class="block">block</div>
<div class="caption">caption</div>
</li>
<li>
<div class="block">block</div>
<div class="caption">caption</div>
</li>
<li>
<div class="block">block</div>
<div class="caption">caption</div>
</li>
<li>
<div class="block">block</div>
<div class="caption">caption</div>
</li>
<li>
<div class="block">block</div>
<div class="caption">caption</div>
</li>
</ul>
<div style="clear: both; ">&nbsp;</div>
<p><textarea name="code" class="css:nocontrols">
.collapsedborders li {
	margin: 0 -1px -1px 0;
}
</textarea><br />
<textarea name="code" class="html:nocontrols">
<ul class="wrapping_blocks collapsedborders">
	...
</ul>
</textarea>
</p>
<div class="techtags">Tags: <a href="http://technorati.com/tag/CSS" rel="tag">CSS</a>, <a href="http://technorati.com/tag/wrapping" rel="tag">wrapping</a>, <a href="http://technorati.com/tag/border-collapse" rel="tag">border-collapse</a></div>]]></content:encoded>
			<wfw:commentRSS>http://blog.birnamdesigns.com/2006/11/16/css-border-collapse-applied-to-inline-lists/feed/</wfw:commentRSS>
		<feedburner:origLink>http://blog.birnamdesigns.com/2006/11/16/css-border-collapse-applied-to-inline-lists/</feedburner:origLink></item>
	</channel>
</rss>

