<?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: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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>"Hello World" - The SlickEdit Developer Blog</title>
	
	<link>http://blog.slickedit.com</link>
	<description>"Hello World" - The SlickEdit Developer Blog</description>
	<lastBuildDate>Wed, 25 Jan 2012 15:25:19 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/helloWorld-TheSlickeditDeveloperBlog" /><feedburner:info uri="helloworld-theslickeditdeveloperblog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2FhelloWorld-TheSlickeditDeveloperBlog" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FhelloWorld-TheSlickeditDeveloperBlog" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Ffeeds.feedburner.com%2FhelloWorld-TheSlickeditDeveloperBlog" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.feedburner.com/helloWorld-TheSlickeditDeveloperBlog" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2FhelloWorld-TheSlickeditDeveloperBlog" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2FhelloWorld-TheSlickeditDeveloperBlog" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FhelloWorld-TheSlickeditDeveloperBlog" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><item>
		<title>Dr. StrangeUnix Or: How I Learned to Stop Worrying and Love the Mac</title>
		<link>http://feedproxy.google.com/~r/helloWorld-TheSlickeditDeveloperBlog/~3/QufOIKuAUMQ/</link>
		<comments>http://blog.slickedit.com/2012/01/dr-strangeunix-or-how-i-learned-to-stop-worrying-and-love-the-mac/#comments</comments>
		<pubDate>Wed, 25 Jan 2012 15:25:19 +0000</pubDate>
		<dc:creator>Dan H</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[SlickEdit Products]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[slickedit]]></category>

		<guid isPermaLink="false">http://blog.slickedit.com/?p=262</guid>
		<description><![CDATA[Early in the last decade, the number of requests we got for a Mac version started to increase dramatically.  One of our developers at the time was particularly afraid he would be chosen to do this work because he had some Mac experience &#8211; but he really didn&#8217;t want to.  Naturally, he came in one morning [...]]]></description>
			<content:encoded><![CDATA[<p>Early in the last decade, the number of requests we got for a Mac version started to increase dramatically.  One of our developers at the time was particularly afraid he would be chosen to do this work because he had some Mac experience &#8211; but he <em>really</em> didn&#8217;t want to.  Naturally, he came in one morning to discover on his desk an old Mac SE30 that used to be used for something around here (I believe it was used to print out labels for floppy disks) sitting on his desk with a Mac OSX CD hanging out of the floppy disk drive and a note that read &#8220;[Developer name changed to protect their identity] &#8211; see me &#8211; Clark&#8221;.  (Note to our new users: SlickEdit has been around long enough that it used to ship on floppy disks) (Note to users under 30 &#8211; <a href="http://en.wikipedia.org/wiki/Floppy_disk">USB sticks did not always exist</a>).</p>
<p>The prevailing wisdom at the time was that it would be easy for us to do a Mac version, &#8220;because it&#8217;s just UNIX now, and you guys are UNIX already &#8211; it&#8217;ll just be another port&#8221;.  I remember hearing this over and over at trade shows in between requests for Ruby support, and &#8220;Do you guys have any free t-shirts?&#8221; (Right now, there&#8217;s a guy in his basement inventing a new scripting language, convinced his will be the one that will take over the world, obsoleting all other scripting languages.  I really wish somebody would stop him, because it won&#8217;t take over and obsolete all other scripting languages, but it will become just popular enough we will have to support it.  When I say &#8220;stop him&#8221;, I don&#8217;t mean hurt him or anything &#8211; just take him out to dinner or introduce him to a woman).</p>
<p>It turns out the &#8220;It&#8217;s just UNIX now&#8221; logic is a bit, what&#8217;s the word I&#8217;m looking for&#8230;. <strong>wrong</strong>.  There is UNIX under there, and obviously that was a good place to start when they revamped MacOS.  Plus, I can get a console window which was always my complaint about Macs &#8220;back in the day&#8221; (yes, I know you could install something, I maintain it should just be there).  But what the fact that &#8220;It&#8217;s just UNIX now&#8221; got us was the ability to create an X11 application that would run on the Mac.  So we did that &#8211; and customers loved it.  Well, that isn&#8217;t exactly true.  They acted more like we gave them a new BMW but first used it for one of those things you see at the county fair where you pay a dollar and get to hit a car with a sledgehammer (granted they usually do this with demolition derby cars, not new BMWs).  It was SlickEdit &#8211; it worked, but it just didn&#8217;t look or feel like people expected it to. Hardcore SlickEdit fans were happy&#8230; ish.  They were happy to have SlickEdit, but they missed all the Mac-isms, and were a little perturbed by SlickEdit&#8217;s menu being attached right to the top of the application window.</p>
<p>So, starting sometime in 2010 our CTO began the process of exploring how to get us a native version on the Mac &#8211; and the GUI overhaul that ensued stayed largely in his office until sometime this past spring when different team members began to have certain controls assigned to them to port to our new GUI framework (I&#8217;m not going into which one here, the evidence is &#8220;out there&#8221;).  I was able to be part of this process, and it was very interesting work.  It is an exciting time to work here at SlickEdit.</p>
<p>We had a nice long beta test &#8211; a little longer than we planned. I would like to take a moment to say that our beta testers were some of the best we&#8217;ve ever dealt with.  Even when there were problems, the comments almost always went something like &#8220;It crashed, but thanks for doing a native Mac version, great work, looking forward to the next version!&#8221;.  The beta testers this time were aces &#8211; some of them old SlickEdit fans we&#8217;ve known for a while, and I believe we made some new friends too.  Thanks guys.</p>
<p>So, our native Mac version is &#8220;out there&#8221; now.  We hope everybody likes it.  Typically I haven&#8217;t been a big Mac fan, but I&#8217;m learning to appreciate the things that it does well.  I only wish I could get a few people to join me in an Indiana Jones like quest to track down the eleven remaining single button mice on the planet and then Ctrl+Click could work properly.</p>
<p>If you bought any of our X11 versions on the Mac you can get the new version for free. <a href="http://www.slickedit.com/products/slickedit-for-mac">Here&#8217;s the link</a>,or you can give our sales team a call at (919) 473-0070.</p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fblog.slickedit.com%2F2012%2F01%2Fdr-strangeunix-or-how-i-learned-to-stop-worrying-and-love-the-mac%2F';
  addthis_title  = 'Dr.+StrangeUnix+Or%3A+How+I+Learned+to+Stop+Worrying+and+Love+the+Mac';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=QufOIKuAUMQ:8mHy-UX1HVs:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=QufOIKuAUMQ:8mHy-UX1HVs:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=QufOIKuAUMQ:8mHy-UX1HVs:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=QufOIKuAUMQ:8mHy-UX1HVs:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=QufOIKuAUMQ:8mHy-UX1HVs:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=QufOIKuAUMQ:8mHy-UX1HVs:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=QufOIKuAUMQ:8mHy-UX1HVs:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=QufOIKuAUMQ:8mHy-UX1HVs:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/helloWorld-TheSlickeditDeveloperBlog/~4/QufOIKuAUMQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.slickedit.com/2012/01/dr-strangeunix-or-how-i-learned-to-stop-worrying-and-love-the-mac/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.slickedit.com/2012/01/dr-strangeunix-or-how-i-learned-to-stop-worrying-and-love-the-mac/</feedburner:origLink></item>
		<item>
		<title>Last Minute Gift Ideas for the Programmer in your Life</title>
		<link>http://feedproxy.google.com/~r/helloWorld-TheSlickeditDeveloperBlog/~3/vP1UgOZIl9I/</link>
		<comments>http://blog.slickedit.com/2011/12/last-minute-gift-ideas-for-the-programmer-in-your-life/#comments</comments>
		<pubDate>Thu, 22 Dec 2011 17:41:38 +0000</pubDate>
		<dc:creator>Matthew E</dc:creator>
				<category><![CDATA[Other]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://blog.slickedit.com/?p=883</guid>
		<description><![CDATA[If you&#8217;re in need of one last gift for the techie on your holiday shopping list, we suggest the following. Caffeinated Soap No, we&#8217;re not making this up. http://www.thinkgeek.com/interests/giftsunder10/5a65/  Between end-of-year project deadlines, gift shopping, and other holiday preparations, a coder can get really squeezed for time. And you don&#8217;t want to back a programmer [...]]]></description>
			<content:encoded><![CDATA[<p>If you&#8217;re in need of one last gift for the techie on your holiday shopping list, we suggest the following.</p>
<p><strong>Caffeinated Soap</strong><br />
No, we&#8217;re not making this up. <a title="Caffeinate Soap " href="http://www.thinkgeek.com/interests/giftsunder10/5a65/ " target="_blank">http://www.thinkgeek.com/interests/giftsunder10/5a65/ </a><br />
Between end-of-year project deadlines, gift shopping, and other holiday preparations, a coder can get really squeezed for time. And you don&#8217;t want to back a programmer into a corner where they have to choose between sufficient caffeination and personal hygiene. This should avoid any such unpleasantness.</p>
<p><strong>A Blunt Instrument</strong><br />
<a title="http://www.harborfreight.com/4-lb-neon-orange-dead-blow-hammer-41800.html" href="http://www.harborfreight.com/4-lb-neon-orange-dead-blow-hammer-41800.html" target="_blank">http://www.harborfreight.com/4-lb-neon-orange-dead-blow-hammer-41800.html</a><br />
There are situations in which you simply cannot improve upon a large hammer.  This is the reason that the B-52 has had such a long lifespan. This orange beauty will allow your beloved techie to vent frustration upon keyboards, desks, recalcitrant Solaris machines, etc without the risk of forehead or hand injury.</p>
<p><strong>A &#8220;<em>Come home for dinner late</em>&#8221; card</strong><br />
It&#8217;s surprising how many bugs are found just after the &#8220;I&#8217;ll be home by 6:15 for dinner&#8221; phone call. Your programmer is now torn between a promise to loved ones and a dedication to hunting down that crash before calling it a day. Give them a Monopoly-style &#8220;Get out of dinner, free&#8221; card so that at least once this <del datetime="2011-12-22T17:25:43+00:00">year</del> week, they can arrive late without guilt.</p>
<p><strong>A USB-chargeable flashlight</strong><br />
<a title="USB Flashlight" href="http://www.berettausa.com/products/jolt-usb-flash-light-b2c-only-blue/" target="_blank">http://www.berettausa.com/products/jolt-usb-flash-light-b2c-only-blue/</a><br />
A USB flashlight is insidious in its irresistible blend of techie-seducing features. First off, it&#8217;s a USB device. *Anything* USB (and to a lesser extent FireWire) is worthy of investigation. Secondly, it&#8217;s the size and shape of most trade show trinkets, which programmers are wired at birth to hoard. Thirdly, it has a genuinely useful function, which all but ensures your coder will make every effort to rationalize this gadget&#8217;s place in the laptop bag for years to come.</p>
<p><strong>Carpal Tunnel Therapy</strong><br />
<a title="Carpal Tunnel Massager" href="http://www.amazon.com/Roleo-Therapeutic-Carpal-Therapy-Massager/dp/B005CP4GDA/" target="_blank">http://www.amazon.com/Roleo-Therapeutic-Carpal-Therapy-Massager/dp/B005CP4GDA/</a><br />
Because sometimes you gotta play hurt.<br />
(Not yet verified, but I think this thing can also make homemade ravioli&#8230;)</p>
<p><strong>Yoga Gear</strong><br />
<a title="Office Yoga" href="http://www.amazon.com/Office-Yoga-Simple-Stretches-People/dp/0811826856" target="_blank">http://www.amazon.com/Office-Yoga-Simple-Stretches-People/dp/0811826856</a><br />
Not only is this great for relieving the tension of long hours frozen at the keyboard, it appears to also be a <a title="Let me show you my yoga mat" href="http://dealbreaker.com/tag/let-me-show-you-my-yoga-mat-in-the-office/" target="_blank">crafty way of furthering ones career</a>.</p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fblog.slickedit.com%2F2011%2F12%2Flast-minute-gift-ideas-for-the-programmer-in-your-life%2F';
  addthis_title  = 'Last+Minute+Gift+Ideas+for+the+Programmer+in+your+Life';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=vP1UgOZIl9I:8KltjBscTbA:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=vP1UgOZIl9I:8KltjBscTbA:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=vP1UgOZIl9I:8KltjBscTbA:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=vP1UgOZIl9I:8KltjBscTbA:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=vP1UgOZIl9I:8KltjBscTbA:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=vP1UgOZIl9I:8KltjBscTbA:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=vP1UgOZIl9I:8KltjBscTbA:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=vP1UgOZIl9I:8KltjBscTbA:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/helloWorld-TheSlickeditDeveloperBlog/~4/vP1UgOZIl9I" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.slickedit.com/2011/12/last-minute-gift-ideas-for-the-programmer-in-your-life/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.slickedit.com/2011/12/last-minute-gift-ideas-for-the-programmer-in-your-life/</feedburner:origLink></item>
		<item>
		<title>Setting up new file types with the SlickEdit Core plugin</title>
		<link>http://feedproxy.google.com/~r/helloWorld-TheSlickeditDeveloperBlog/~3/1REanEfff08/</link>
		<comments>http://blog.slickedit.com/2011/12/setting-up-new-file-types-with-the-slickedit-core-plugin/#comments</comments>
		<pubDate>Fri, 16 Dec 2011 16:52:32 +0000</pubDate>
		<dc:creator>Ryan</dc:creator>
				<category><![CDATA[Code Editors]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://blog.slickedit.com/?p=856</guid>
		<description><![CDATA[Many developers work with source code which resides in files with &#8220;non-standard&#8221; extensions. By a standard extension, I am referring to something like .cpp or .java. By a non-standard extension, I am talking about .ryan, or .data. I will show you how to quickly and easily set up your SlickEdit Core editor in Eclipse to [...]]]></description>
			<content:encoded><![CDATA[<p>Many developers work with source code which resides in files with &#8220;non-standard&#8221; extensions. By a standard extension, I am referring to something like .cpp or .java. By a non-standard extension, I am talking about .ryan, or .data. I will show you how to quickly and easily set up your SlickEdit Core editor in Eclipse to handle these files the way you want them handled.</p>
<p>Let&#8217;s assume you have some file extension which is not already set up accurately in the default SlickEdit Core configuration. It might be something your company only uses internally. Let&#8217;s use .data for this example.</p>
<p>I have a workspace created which includes some .data files, and what I first see in the Navigator view is this:</p>
<p><a href="http://blog.slickedit.com/wp-content/uploads/2011/12/data_orig.png"><img class="size-full wp-image-860 alignnone" style="margin: 3px;" src="http://blog.slickedit.com/wp-content/uploads/2011/12/data_orig.png" alt="" width="201" height="107" /></a></p>
<p>When I go to open one of these files, Eclipse will use the standard Text Editor because it does not know better:</p>
<p><a href="http://blog.slickedit.com/wp-content/uploads/2011/12/data_open.png"><img class="size-full wp-image-858 alignnone" style="margin: 5px;" src="http://blog.slickedit.com/wp-content/uploads/2011/12/data_open.png" alt="" width="378" height="283" /></a></p>
<p>Not terribly useful&#8230;clearly the SlickEdit editor has not been opened, and we have no language support whatsoever. These appear to be COBOL files&#8230;so we should set up Eclipse to recognize them as such, and also tell SlickEdit that these files should be treated as COBOL code.</p>
<p>The first step is to go to <strong>Window &gt; Preferences &gt; Editors &gt; File Associations</strong> and add <strong>*.data</strong> as a &#8220;New File Type&#8221;. Then select <strong>*.data</strong> in the list and click the <strong>Add</strong> button in the &#8220;Associated Editors&#8221; pane. Now select &#8220;SlickEdit Editor&#8221;. Make sure you mark &#8220;SlickEdit Editor&#8221; as the &#8220;Default&#8221; editor for this file type. Now we have told Eclipse to open all .data files with the SlickEdit Editor.</p>
<p>We are not quite finished yet. Now we need to tell SlickEdit to treat these files as COBOL. So, go to <strong>Window &gt; SlickEdit Preferences &gt; Languages &gt; File Extension Manager</strong> and create a new extension for <strong>data</strong> (just data&#8230;not *.data), and assign the language to be Cobol 85. Click &#8220;OK&#8221;, and then click &#8220;OK&#8221; on the SlickEdit Preferences dialog. Now when you open up one of these .data files, you will see the correct editor opened with the correct language support.</p>
<p><a href="http://blog.slickedit.com/wp-content/uploads/2011/12/data_final.png"><img class="alignleft size-full wp-image-861" src="http://blog.slickedit.com/wp-content/uploads/2011/12/data_final.png" alt="" width="386" height="300" /></a></p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fblog.slickedit.com%2F2011%2F12%2Fsetting-up-new-file-types-with-the-slickedit-core-plugin%2F';
  addthis_title  = 'Setting+up+new+file+types+with+the+SlickEdit+Core+plugin';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=1REanEfff08:qW7pkPTecxA:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=1REanEfff08:qW7pkPTecxA:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=1REanEfff08:qW7pkPTecxA:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=1REanEfff08:qW7pkPTecxA:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=1REanEfff08:qW7pkPTecxA:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=1REanEfff08:qW7pkPTecxA:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=1REanEfff08:qW7pkPTecxA:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=1REanEfff08:qW7pkPTecxA:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/helloWorld-TheSlickeditDeveloperBlog/~4/1REanEfff08" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.slickedit.com/2011/12/setting-up-new-file-types-with-the-slickedit-core-plugin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.slickedit.com/2011/12/setting-up-new-file-types-with-the-slickedit-core-plugin/</feedburner:origLink></item>
		<item>
		<title>SlickEdit Core for Mainframe Developers</title>
		<link>http://feedproxy.google.com/~r/helloWorld-TheSlickeditDeveloperBlog/~3/ktHWhlmEXME/</link>
		<comments>http://blog.slickedit.com/2011/12/slickedit-core-for-mainframe-developers/#comments</comments>
		<pubDate>Tue, 06 Dec 2011 15:07:44 +0000</pubDate>
		<dc:creator>Ryan</dc:creator>
				<category><![CDATA[Code Editors]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://blog.slickedit.com/?p=798</guid>
		<description><![CDATA[The problem of retiring mainframe developers has been well publicized in recent years. Mainframe systems are not going anywhere, and programmers now expect to be working within the comforts of a modern IDE, rather than on a simple terminal. Eclipse-based front ends have become great solutions for this new generation of programmers working on mainframe [...]]]></description>
			<content:encoded><![CDATA[<p>The problem of retiring mainframe developers has been well publicized in recent years. Mainframe systems are not going anywhere, and programmers now expect to be working within the comforts of a modern IDE, rather than on a simple terminal. Eclipse-based front ends have become great solutions for this new generation of programmers working on mainframe systems.</p>
<p>Since the Eclipse IDE has become so popular for mainframe developers, we have been dedicating more and more resources to our mainframe language support. The SlickEdit editor is even now integrated into the <a href="http://www.compuware.com/mainframe-solutions/workbench-mainframe-modernization.html" target="_blank">Compuware Workbench</a>:</p>
<p><em>Supports a vast array of programming languages for source code editing, powered by SlickEdit.</em></p>
<p>PL/I is one of the mainframe languages that got a major support upgrade in the newly released SlickEdit Core v3.7.1. The SlickEdit editor now has full support for parsing structures, includes, and even statement level tagging for PL/I code.</p>
<p><a href="http://blog.slickedit.com/wp-content/uploads/2011/12/factorial-e1323118282861.png"><img class="size-full wp-image-812" src="http://blog.slickedit.com/wp-content/uploads/2011/12/factorial-e1323118282861.png" alt="" width="500" height="331" /></a></p>
<p>SlickEdit Core also has great support for COBOL, JCL, REXX, and other languages. If you are a mainframe developer coding in an Eclipse-based environment, try out the latest version of the SlickEdit Core plugin for <a href="http://www.slickedit.com/trial/slickedit-core" target="_blank">free</a>.</p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fblog.slickedit.com%2F2011%2F12%2Fslickedit-core-for-mainframe-developers%2F';
  addthis_title  = 'SlickEdit+Core+for+Mainframe+Developers';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=ktHWhlmEXME:UE2mJTMK_to:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=ktHWhlmEXME:UE2mJTMK_to:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=ktHWhlmEXME:UE2mJTMK_to:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=ktHWhlmEXME:UE2mJTMK_to:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=ktHWhlmEXME:UE2mJTMK_to:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=ktHWhlmEXME:UE2mJTMK_to:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=ktHWhlmEXME:UE2mJTMK_to:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=ktHWhlmEXME:UE2mJTMK_to:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/helloWorld-TheSlickeditDeveloperBlog/~4/ktHWhlmEXME" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.slickedit.com/2011/12/slickedit-core-for-mainframe-developers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.slickedit.com/2011/12/slickedit-core-for-mainframe-developers/</feedburner:origLink></item>
		<item>
		<title>SlickEdit for Mac doesn’t look like iTunes</title>
		<link>http://feedproxy.google.com/~r/helloWorld-TheSlickeditDeveloperBlog/~3/tucqxHh8tr8/</link>
		<comments>http://blog.slickedit.com/2011/12/slickedit-for-mac-doesnt-look-like-itunes/#comments</comments>
		<pubDate>Mon, 05 Dec 2011 17:15:16 +0000</pubDate>
		<dc:creator>Matthew E</dc:creator>
				<category><![CDATA[Code Editors]]></category>
		<category><![CDATA[SlickEdit Products]]></category>

		<guid isPermaLink="false">http://blog.slickedit.com/?p=786</guid>
		<description><![CDATA[Last week we released our first public beta of SlickEdit v16.1 for Mac. This version replaces our previous iterations that used the X11 windowing system. Although we are using a cross-platform UI library which uses Cocoa for UI, and we&#8217;re writing quite a bit of our own Cocoa code for other Mac features like the [...]]]></description>
			<content:encoded><![CDATA[<p>Last week we released our first public <a title="SlickEdit for Mac Beta" href="http://www.slickedit.com/products/slickedit-for-mac" target="_blank">beta of SlickEdit v16.1 for Mac</a>. This version replaces our previous iterations that used the X11 windowing system. Although we are using a cross-platform UI library which uses Cocoa for UI, and we&#8217;re writing quite a bit of our own Cocoa code for other Mac features like the Services menu, it doesn&#8217;t look like every other Mac application. And there are reasons for that.</p>
<p><strong>SlickEdit is an MDI application</strong><br />
While there are some very well known applications that support a multiple document interface on the Mac, there is no real standard for how they should look and feel. Each application has a slightly different interpretation. As such we have chosen to keep our MDI implementation very close to what we have used in recent versions.</p>
<p><strong>SlickEdit does a lot</strong><br />
This mostly affects how we present our application configuration options. Most Mac applications have a relatively small Preferences pane, perhaps with half a dozen categories, and a half-page screen of options for each category. But SlickEdit has 20+ years worth of features and configuration settings. Developers come to SlickEdit from a wide variety of editing environments, and our users want to be able to mold the application to their tastes.</p>
<p><strong>SlickEdit is not just for the Mac</strong><br />
Like all multi-platform software, we have to make trade-offs between what might look best for a particular operating system, and what makes the most sense for a feature that needs to work on all of the supported platforms. There is also quite a bit of bias toward keeping functionality and appearance consistent with what long-time customers want and expect. SlickEdit has always placed a premium on letting you work with multiple languages on disparate platforms without having to retrain your brain and fingers. When implementing and tweaking features, we are constantly evaluating what a Mac user would expect, and what a SlickEdit user (regardless of platform) would expect.</p>
<p><strong>SlickEdit will continue to evolve</strong><br />
While we do want to keep our product familiar across platforms, we aren&#8217;t going to be sitting stock still. While our immediate focus for the Mac is improvements to Objective-C language support, and better interoperability with Xcode project formats, we are looking forward to changes we can make in the user interface to improve effectiveness and efficiency. Getting this first non-X11 release ready was a big effort. And now that it&#8217;s almost done, we&#8217;re looking forward to making it the best it can be. We&#8217;re excited, and we hope that you will be too.</p>
<p>If you haven&#8217;t yet taken a look at SlickEdit 2011 for Mac, we invite you <a title="SlickEdit for Mac Beta" href="http://www.slickedit.com/products/slickedit-for-mac" target="_blank">download our most recent beta version</a>.</p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fblog.slickedit.com%2F2011%2F12%2Fslickedit-for-mac-doesnt-look-like-itunes%2F';
  addthis_title  = 'SlickEdit+for+Mac+doesn%26%238217%3Bt+look+like+iTunes';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=tucqxHh8tr8:rgMiWKyUz4I:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=tucqxHh8tr8:rgMiWKyUz4I:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=tucqxHh8tr8:rgMiWKyUz4I:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=tucqxHh8tr8:rgMiWKyUz4I:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=tucqxHh8tr8:rgMiWKyUz4I:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=tucqxHh8tr8:rgMiWKyUz4I:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=tucqxHh8tr8:rgMiWKyUz4I:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=tucqxHh8tr8:rgMiWKyUz4I:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/helloWorld-TheSlickeditDeveloperBlog/~4/tucqxHh8tr8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.slickedit.com/2011/12/slickedit-for-mac-doesnt-look-like-itunes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.slickedit.com/2011/12/slickedit-for-mac-doesnt-look-like-itunes/</feedburner:origLink></item>
		<item>
		<title>Macros Challenge Winner Selected!</title>
		<link>http://feedproxy.google.com/~r/helloWorld-TheSlickeditDeveloperBlog/~3/Plj6utv4DMM/</link>
		<comments>http://blog.slickedit.com/2011/11/macros-challenge-winner-selected/#comments</comments>
		<pubDate>Mon, 07 Nov 2011 17:22:19 +0000</pubDate>
		<dc:creator>Lyndsey</dc:creator>
				<category><![CDATA[Macro Programming]]></category>

		<guid isPermaLink="false">http://blog.slickedit.com/?p=781</guid>
		<description><![CDATA[Thank you for all of your entries to our Macros Challenge! We received many excellent submissions and choosing a winner was not an easy task. Our entire development team carefully evaluated each entry for originality, usefulness, engineering difficulty, ease of use, and overall code quality. The macro that did best overall was at5dapa1’s Synchronization between [...]]]></description>
			<content:encoded><![CDATA[<p>Thank you for all of your entries to our Macros Challenge! We received many excellent submissions and choosing a winner was not an easy task. Our entire development team carefully evaluated each entry for originality, usefulness, engineering difficulty, ease of use, and overall code quality. The macro that did best overall was at5dapa1’s Synchronization between Visual Studio 2010 and SlickEdit 2010.</p>
<p>&nbsp;</p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fblog.slickedit.com%2F2011%2F11%2Fmacros-challenge-winner-selected%2F';
  addthis_title  = 'Macros+Challenge+Winner+Selected%21';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=Plj6utv4DMM:LuPkFm2287Q:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=Plj6utv4DMM:LuPkFm2287Q:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=Plj6utv4DMM:LuPkFm2287Q:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=Plj6utv4DMM:LuPkFm2287Q:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=Plj6utv4DMM:LuPkFm2287Q:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=Plj6utv4DMM:LuPkFm2287Q:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=Plj6utv4DMM:LuPkFm2287Q:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=Plj6utv4DMM:LuPkFm2287Q:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/helloWorld-TheSlickeditDeveloperBlog/~4/Plj6utv4DMM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.slickedit.com/2011/11/macros-challenge-winner-selected/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.slickedit.com/2011/11/macros-challenge-winner-selected/</feedburner:origLink></item>
		<item>
		<title>It’s the Last Week of the Macros Challenge!</title>
		<link>http://feedproxy.google.com/~r/helloWorld-TheSlickeditDeveloperBlog/~3/z97Oj5HpgmM/</link>
		<comments>http://blog.slickedit.com/2011/10/its-the-last-week-of-the-macros-challenge/#comments</comments>
		<pubDate>Mon, 24 Oct 2011 14:23:34 +0000</pubDate>
		<dc:creator>Lyndsey</dc:creator>
				<category><![CDATA[Macro Programming]]></category>

		<guid isPermaLink="false">http://blog.slickedit.com/?p=774</guid>
		<description><![CDATA[Don&#8217;t forget to enter your macro to the SlickEdit Macros challenge for your chance to win an iPad 2. You can enter now through October 31, 2011, so there is still time to put your best macro together and submit it for your chance to win! Click here for contest rules and how to enter. [...]]]></description>
			<content:encoded><![CDATA[<p>Don&#8217;t forget to enter your macro to the SlickEdit Macros challenge for your chance to win an iPad 2. <a href="http://blog.slickedit.com/wp-content/uploads/2011/10/Win-an-iPad2-from-SlickEdit.jpg"><img class="aligncenter size-full wp-image-775" title="Win-an-iPad2-from-SlickEdit!" src="http://blog.slickedit.com/wp-content/uploads/2011/10/Win-an-iPad2-from-SlickEdit.jpg" alt="" width="475" height="237" /></a><br />
You can enter now through October 31, 2011, so there is still time to put your best macro together and submit it for your chance to win! <a title="SlickEdit October Macros Challenge Rules &amp; How to Enter" href="http://community.slickedit.com/index.php/topic,7327.0.html">Click here</a> for contest rules and how to enter.</p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fblog.slickedit.com%2F2011%2F10%2Fits-the-last-week-of-the-macros-challenge%2F';
  addthis_title  = 'It%26%238217%3Bs+the+Last+Week+of+the+Macros+Challenge%21';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=z97Oj5HpgmM:2FwgHMaBCWo:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=z97Oj5HpgmM:2FwgHMaBCWo:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=z97Oj5HpgmM:2FwgHMaBCWo:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=z97Oj5HpgmM:2FwgHMaBCWo:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=z97Oj5HpgmM:2FwgHMaBCWo:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=z97Oj5HpgmM:2FwgHMaBCWo:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=z97Oj5HpgmM:2FwgHMaBCWo:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=z97Oj5HpgmM:2FwgHMaBCWo:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/helloWorld-TheSlickeditDeveloperBlog/~4/z97Oj5HpgmM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.slickedit.com/2011/10/its-the-last-week-of-the-macros-challenge/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.slickedit.com/2011/10/its-the-last-week-of-the-macros-challenge/</feedburner:origLink></item>
		<item>
		<title>I Didn’t Buy Your Book</title>
		<link>http://feedproxy.google.com/~r/helloWorld-TheSlickeditDeveloperBlog/~3/iZOHBJr0fK8/</link>
		<comments>http://blog.slickedit.com/2011/10/i-didnt-buy-your-book/#comments</comments>
		<pubDate>Fri, 21 Oct 2011 15:56:42 +0000</pubDate>
		<dc:creator>Matthew E</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[books]]></category>

		<guid isPermaLink="false">http://blog.slickedit.com/?p=766</guid>
		<description><![CDATA[Dear Computer Book Publisher: I didn&#8217;t buy your book. There are several reasons I walked out the door without shelling out for your title. First off, fifty bucks on the sticker price subjects a book to a lot of extra scrutiny. When I think of all I can do with that sum, the bar gets [...]]]></description>
			<content:encoded><![CDATA[<p>Dear Computer Book Publisher:</p>
<p>I didn&#8217;t buy your book. There are several reasons I walked out the door without shelling out for your title.</p>
<p>First off, fifty bucks on the sticker price subjects a book to a lot of extra scrutiny. When I think of all I can do with that sum, the bar gets set pretty high. This used to be somewhat ameliorated when Borders was still a going concern. Their frequent 30% and 40% discount coupons made me a little more cavalier in my purchasing decisions. I am now limited to shopping Barnes and Noble. They have a good selection of titles, but they are a bit more stingy with the coupons, and a 10% discount barely covers our state sales tax. I&#8217;m still willing to part with two Jacksons or more, but you&#8217;ve gotta wow me.</p>
<p>Why does your book have 10 authors, including 9 I&#8217;ve never heard of? Unless I&#8217;m reading a short story anthology, I&#8217;d prefer to see just one or two subject matter experts. I get a little suspicious when the author count goes above 3.</p>
<p>Annotated code samples and snippets are wonderful. And bonus points can be earned for legibility-enhancing color coding. But I really don&#8217;t care to pay for the trees you chopped down to provide over 200 pages of mostly boilerplate code. I work with computers for a living, so I&#8217;m not afraid to download a zip file with source code. Look into it.</p>
<p>Your book won&#8217;t stay open. I know a nice binding, especially a hardback binding is going to cost more. But I don&#8217;t have two sets of arms. Most of the time I&#8217;m reading a computer book while trying to work on the computer. I&#8217;d prefer not to have to pin down a page with empty coffee mugs and my left elbow while trying to type in a code sample.</p>
<p>Your index isn&#8217;t helping me find what I need. If I&#8217;m in the market for a programming title, it&#8217;s often because I am unfamiliar with the language or technology. And since I&#8217;m not plugged into the lingo yet, I need all the help I can get finding the relevant passages. An index that is 90% class and function names does me little good.</p>
<p>Before you decry how internet retailers are pushing down your margins, let me assure you that I still buy most of my software titles in a brick and mortar store. I&#8217;ve been disappointed too many times buying books online, sight unseen. I need to hold a book in my hands and flip few a couple chapters. I&#8217;ll buy that book in the store, but you&#8217;re going to have to work a little harder for my money.</p>
<p>Sincerely,</p>
<p>TechBookShopper</p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fblog.slickedit.com%2F2011%2F10%2Fi-didnt-buy-your-book%2F';
  addthis_title  = 'I+Didn%26%238217%3Bt+Buy+Your+Book';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=iZOHBJr0fK8:A2YJrvVJEts:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=iZOHBJr0fK8:A2YJrvVJEts:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=iZOHBJr0fK8:A2YJrvVJEts:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=iZOHBJr0fK8:A2YJrvVJEts:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=iZOHBJr0fK8:A2YJrvVJEts:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=iZOHBJr0fK8:A2YJrvVJEts:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=iZOHBJr0fK8:A2YJrvVJEts:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=iZOHBJr0fK8:A2YJrvVJEts:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/helloWorld-TheSlickeditDeveloperBlog/~4/iZOHBJr0fK8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.slickedit.com/2011/10/i-didnt-buy-your-book/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		<feedburner:origLink>http://blog.slickedit.com/2011/10/i-didnt-buy-your-book/</feedburner:origLink></item>
		<item>
		<title>Win an iPad 2! – SlickEdit October Macros Challenge</title>
		<link>http://feedproxy.google.com/~r/helloWorld-TheSlickeditDeveloperBlog/~3/BRYqw8lZpkg/</link>
		<comments>http://blog.slickedit.com/2011/10/win-an-ipad-2-slickedit-october-macros-challenge/#comments</comments>
		<pubDate>Mon, 03 Oct 2011 20:14:31 +0000</pubDate>
		<dc:creator>Lyndsey</dc:creator>
				<category><![CDATA[Macro Programming]]></category>

		<guid isPermaLink="false">http://blog.slickedit.com/?p=758</guid>
		<description><![CDATA[Lately we&#8217;ve really taken the time to notice the great macros that our users have posted around the web and we think that a contest is an excellent way to reward your efforts. It also gives us a chance to encourage you to write your best macros and to actively share them with the SlickEdit [...]]]></description>
			<content:encoded><![CDATA[<p>Lately we&#8217;ve really taken the time to notice the great macros that our users have posted around the web and we think that a contest is an excellent way to reward your efforts. It also gives us a chance to encourage you to write your best macros and to actively share them with the SlickEdit community.</p>
<p>The winner will receive an iPad 2 valued at $499 (he/she may opt to receive a visa gift card of equal value instead).</p>
<p>So, what are we looking for? In an attempt to not limit your creativity and critical thinking, we are keeping this as open-ended as possible. The winning submission will stand out from the rest. Maybe it does something really neat and creative, or it solves a widespread problem with just one line of code. Your submission doesn’t have to be long or short, but it has to wow us in order to win the iPad!</p>
<p>You can enter now through October 31, 2011, so there is plenty of time to put your best macro together and submit it for your chance to win! <a href="http://community.slickedit.com/index.php/topic,7327.0.html">Click here</a> for contest rules and how to enter.</p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fblog.slickedit.com%2F2011%2F10%2Fwin-an-ipad-2-slickedit-october-macros-challenge%2F';
  addthis_title  = 'Win+an+iPad+2%21+%26%238211%3B+SlickEdit+October+Macros+Challenge';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=BRYqw8lZpkg:RMDdrSSRqL8:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=BRYqw8lZpkg:RMDdrSSRqL8:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=BRYqw8lZpkg:RMDdrSSRqL8:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=BRYqw8lZpkg:RMDdrSSRqL8:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=BRYqw8lZpkg:RMDdrSSRqL8:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=BRYqw8lZpkg:RMDdrSSRqL8:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=BRYqw8lZpkg:RMDdrSSRqL8:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=BRYqw8lZpkg:RMDdrSSRqL8:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/helloWorld-TheSlickeditDeveloperBlog/~4/BRYqw8lZpkg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.slickedit.com/2011/10/win-an-ipad-2-slickedit-october-macros-challenge/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.slickedit.com/2011/10/win-an-ipad-2-slickedit-october-macros-challenge/</feedburner:origLink></item>
		<item>
		<title>Geek Artifacts</title>
		<link>http://feedproxy.google.com/~r/helloWorld-TheSlickeditDeveloperBlog/~3/uNokyjXvdbE/</link>
		<comments>http://blog.slickedit.com/2011/09/geek-artifacts/#comments</comments>
		<pubDate>Thu, 15 Sep 2011 17:56:38 +0000</pubDate>
		<dc:creator>Matthew E</dc:creator>
				<category><![CDATA[Other]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://blog.slickedit.com/?p=723</guid>
		<description><![CDATA[Look at this. It&#8217;s worthless &#8211; ten dollars from a vendor in the street. But I take it, I bury it in the sand for a thousand years, it becomes priceless. Men will kill for it. Men like you and me. - René Belloq, Raiders of the Lost Ark &#160; Whether it be changing jobs, [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p><em>Look at this. It&#8217;s worthless &#8211; ten dollars from a vendor in the street. But I take it, I bury it in the sand for a thousand years, it becomes priceless. Men will kill for it. Men like you and me.</em><br />
- René Belloq, Raiders of the Lost Ark</p></blockquote>
<p>&nbsp;</p>
<p>Whether it be changing jobs, moving to a new house or office, or simply cleaning out clutter, every so often I find myself sorting through the bits of technology-related junk I&#8217;ve accumulated over the years. There&#8217;s a fair amount of trade show goodies, some of them entirely too cool or valuable to part with. The bulk of it is reluctantly thrown away, including stress-relief squeezy things, can coolers, light up pens that no longer light, and the like. But there are items that always survive the cut, ones that have some sentimentality attached to them.</p>
<h3><strong>Professional Developers Conference 2000 pen</strong></h3>
<p>I cannot believe this thing still writes after 11 years. It has lived in the glove box of the three different cars I&#8217;ve owned since 2000. This was the PDC where Microsoft formally introduced the .NET platform to the masses. I vividly recall the stunned looks on thousands of keynote attendees as they realized all their Win32 mastery was just rendered obsolete. The pen has actually outlasted several .NET technologies introduced at the conference. I&#8217;ve got one from the 2003 PDC ready to go once this one runs out of ink.</p>
<h3><strong>Cyrix x86 processor</strong></h3>
<p>A leftover from my system building days. It was the <a href="http://en.wikipedia.org/wiki/Cyrix" target="_blank">first real ultra-cheap x86 alternative</a>, and prompted Intel to develop the Celeron line. I placed this in a slapped-together spare parts budget computer (running Windows 95) that I assembled for my wife&#8217;s grandparents. Cyrix as a company didn&#8217;t last long, but this chip powered that system for over a decade. Now that the grandparents are gone, I can&#8217;t bear to toss this hunk of silicon junk.</p>
<h3><strong>NeXT Step poster</strong></h3>
<p>I got <a href="http://blog.slickedit.com/wp-content/uploads/2011/09/NextCube-c.jpg" target="_blank">this gem</a> in a trade with my wife&#8217;s uncle, a sysadmin, for a Windows Server 2000 license. It&#8217;s a panorama of the first generation NeXT system, replete with all black computer, keyboard, monitor, and printer. I&#8217;ve been meaning to put it up on my office wall, but I can&#8217;t bring myself to stick pins through it, and I can&#8217;t justify the cash it would take to frame it.</p>
<p>Do you have anything like this that you can&#8217;t seem to part with? Please share by leaving a reply!</p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fblog.slickedit.com%2F2011%2F09%2Fgeek-artifacts%2F';
  addthis_title  = 'Geek+Artifacts';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=uNokyjXvdbE:Vh6Nm5GnbUI:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=uNokyjXvdbE:Vh6Nm5GnbUI:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=uNokyjXvdbE:Vh6Nm5GnbUI:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=uNokyjXvdbE:Vh6Nm5GnbUI:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=uNokyjXvdbE:Vh6Nm5GnbUI:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=uNokyjXvdbE:Vh6Nm5GnbUI:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=uNokyjXvdbE:Vh6Nm5GnbUI:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=uNokyjXvdbE:Vh6Nm5GnbUI:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/helloWorld-TheSlickeditDeveloperBlog/~4/uNokyjXvdbE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.slickedit.com/2011/09/geek-artifacts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.slickedit.com/2011/09/geek-artifacts/</feedburner:origLink></item>
		<item>
		<title>Code on the (Driving) Range</title>
		<link>http://feedproxy.google.com/~r/helloWorld-TheSlickeditDeveloperBlog/~3/-Dc36s9oYRE/</link>
		<comments>http://blog.slickedit.com/2011/08/code-on-the-driving-range/#comments</comments>
		<pubDate>Thu, 18 Aug 2011 19:27:59 +0000</pubDate>
		<dc:creator>Matthew E</dc:creator>
				<category><![CDATA[Code Editors]]></category>
		<category><![CDATA[Productivity]]></category>

		<guid isPermaLink="false">http://blog.slickedit.com/?p=692</guid>
		<description><![CDATA[I recently got serious about golf again, after a near-decade layoff. Although I played on my high school&#8217;s JV golf team (and even managed to win a few matches), I&#8217;d never had any formal instruction. I was only able to muddle by with my substandard gear and hopeless swing because I was playing every day. [...]]]></description>
			<content:encoded><![CDATA[<p>I recently got serious about golf again, after a near-decade layoff. Although I played on my high school&#8217;s JV golf team (and even managed to win a few matches), I&#8217;d never had any formal instruction. I was only able to muddle by with my substandard gear and hopeless swing because I was playing every day. I&#8217;ve played only sporadically since then, maybe one or two rounds a year, so my makeshift ability to get around the course has evaporated with disuse.</p>
<p>In order to become a better golfer I decided to start from scratch, beginning with lessons from a PGA pro and purchasing a set of clubs suited to my &#8216;experienced beginner&#8217; game. And in the process I have found some interesting parallels between learning to golf (again) and learning to use a code editor.<span id="more-692"></span></p>
<p><strong>You need solid fundamentals as your foundation</strong><br />
Having been a badly-self-taught golfer for the majority of my life, I now see them all the time at the driving range. And it always starts with the hands. If you have a lousy grip, you&#8217;re going to have a lousy swing. The corollary in software development in my mind is basic typing and keyboard navigation skills. You can have a talented mind for software development, but if you&#8217;re not touch typing your way through source code, you&#8217;re making it way too hard on yourself.</p>
<p><strong>Know and use the tools available to you</strong><br />
I recall a time when my high school golf coach, in a effort to make a point about club selection (or perhaps just to show off), played a few holes with just a 3 wood, a 7 iron, and a putter. This is eleven clubs fewer than you&#8217;re allowed to carry. We got the point he was trying to make, but you don&#8217;t see good players with fewer than 14 clubs in the bag. And they aren&#8217;t using the cheapest off-the-shelf sticks, either.</p>
<p>I also recall a PDC conference session several years ago where the presenter was banging out ASP.NET examples and frequently used Notepad to tweak some of his prepared code snippets. The audience started tuning out about the 5th time he had to repeat the edit-save-compile cycle on a particularly troublesome sample, when the use of any decent code editor would have shown the syntax error at the top of the file right away.</p>
<p><strong>Master the basics so you can focus on the harder tasks</strong><br />
Once you have a solid, reliably repeatable golf swing, your mind is free to focus on all the other details of the game. A software developer that is in command of his or her IDEs, editors, debuggers, etc is likewise free to focus on the real work of designing and coding.</p>
<p><strong>Everybody&#8217;s &#8220;key move&#8221; is different</strong><br />
One night at the driving range I was having a terrible time making clean contact with the ball, even with the deliberate practice of what my golf coach and I had just gone over in the previous lesson. But somewhere in the recesses of my memory I pulled out a tip I had read in Ben Hogan&#8217;s<em> Five Lessons</em> where he recommends a wrist waggle as part of the pre-shot routine. So I gave it a try. Lo and behold the waggle made it quite evident that my stance was too close to the ball. After making the adjustment, everything else fell into place. Now I don&#8217;t swing a club without this waggle routine.</p>
<p>Most software developers have their favorite features and shortcuts in their editor of choice. These features become an essential part of how they navigate a source base or edit code. My key move in SlickEdit is using the SlickEdit command line. It&#8217;s the first place I go when I want to do a quick search, compare the current file with Subversion, look up a keyboard shortcut, and dozens of other operations. Other folks swear by aliases or custom macros. Some will create custom key bindings for every conceivable editor operation.</p>
<p><strong>Demo clubs are awesome</strong><br />
I tried out half a dozen models of clubs before finding the set that I liked the best and felt right for my work-in-progress swing. If you&#8217;re not yet carrying SlickEdit in your tour bag, we invite you to <a href="http://www.slickedit.com/trial" target="_blank">download a trial</a> and take it out on the range.</p>
<p>&nbsp;</p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fblog.slickedit.com%2F2011%2F08%2Fcode-on-the-driving-range%2F';
  addthis_title  = 'Code+on+the+%28Driving%29+Range';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=-Dc36s9oYRE:3PR824i2f3E:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=-Dc36s9oYRE:3PR824i2f3E:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=-Dc36s9oYRE:3PR824i2f3E:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=-Dc36s9oYRE:3PR824i2f3E:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=-Dc36s9oYRE:3PR824i2f3E:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=-Dc36s9oYRE:3PR824i2f3E:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=-Dc36s9oYRE:3PR824i2f3E:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=-Dc36s9oYRE:3PR824i2f3E:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/helloWorld-TheSlickeditDeveloperBlog/~4/-Dc36s9oYRE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.slickedit.com/2011/08/code-on-the-driving-range/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.slickedit.com/2011/08/code-on-the-driving-range/</feedburner:origLink></item>
		<item>
		<title>The Point Release (or When to Let Go)</title>
		<link>http://feedproxy.google.com/~r/helloWorld-TheSlickeditDeveloperBlog/~3/Ji5jEwgHUtk/</link>
		<comments>http://blog.slickedit.com/2011/07/the-point-release-or-when-to-let-go/#comments</comments>
		<pubDate>Wed, 20 Jul 2011 16:05:07 +0000</pubDate>
		<dc:creator>Matthew E</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[SlickEdit Products]]></category>
		<category><![CDATA[16.0.1]]></category>
		<category><![CDATA[hot fix]]></category>
		<category><![CDATA[point release]]></category>
		<category><![CDATA[slickedit]]></category>

		<guid isPermaLink="false">http://blog.slickedit.com/?p=697</guid>
		<description><![CDATA[We&#8217;ve just released our first major update for SlickEdit 2011. And for some reason, point releases seem to me to be the oddest phase of the software life cycle. It doesn&#8217;t seem like that big a deal on the surface. You fix some bugs, polish a few features, and sneak in some customer requests. You [...]]]></description>
			<content:encoded><![CDATA[<p>We&#8217;ve just released our first major update for SlickEdit 2011. And for some reason, point releases seem to me to be the oddest phase of the software life cycle. It doesn&#8217;t seem like that big a deal on the surface. You fix some bugs, polish a few features, and sneak in some customer requests. You run regression tests and sanity checks, then release it into the wild. But a service pack release is not really all that simple.<span id="more-697"></span></p>
<p>The primary oddity I see is the scheduling of the release. Hot fixes are easy. A problem comes up, you investigate and fix it, then send out the small update. And for us at SlickEdit, major releases are dictated by our annual release cycle. We *will* have a beta in the early spring and we *will* have the major release out late spring/early summer. Lawns go un-mowed, playoff hockey goes unwatched, and &#8220;I&#8217;ll be home for dinner&#8221; promises are broken in order to meet the schedule. For hot fixes and major releases all of the time pressure is one-way: the sooner the better.</p>
<p>A point release is just harder to time as there are forces pulling at both ends of the schedule. An earlier release means customers don&#8217;t have to wait as long for the features we had to let slip initially. There is a shorter wait for resolutions to the small bugs that didn&#8217;t warrant a hot fix. An earlier release means that the quality of the trial version is better sooner. And the quicker it goes out the door, the sooner we can focus all attention on feature development for the next major release.</p>
<p>But there are also forces that want to delay the service pack. More time means more polish, fewer bugs, and more special requests that can be accommodated.</p>
<p>This release is a little more poignant for me personally. I primarily work on the Mac version of SlickEdit. And we are committed to providing a native version for 2012, meaning that we&#8217;re finally getting rid of our X11-based UI. It&#8217;s a welcome (admittedly overdue) change, and I&#8217;m enjoying the early progress we&#8217;re making. But this release of 16.0.1 represents the last chance we have to make the X11 version work as well as it can.</p>
<p>But now the release notes have been finalized, customers have received the update e-mails, and it&#8217;s time to call 16.0.1 done.</p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fblog.slickedit.com%2F2011%2F07%2Fthe-point-release-or-when-to-let-go%2F';
  addthis_title  = 'The+Point+Release+%28or+When+to+Let+Go%29';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=Ji5jEwgHUtk:0mI0I4OeMK0:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=Ji5jEwgHUtk:0mI0I4OeMK0:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=Ji5jEwgHUtk:0mI0I4OeMK0:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=Ji5jEwgHUtk:0mI0I4OeMK0:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=Ji5jEwgHUtk:0mI0I4OeMK0:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=Ji5jEwgHUtk:0mI0I4OeMK0:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=Ji5jEwgHUtk:0mI0I4OeMK0:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=Ji5jEwgHUtk:0mI0I4OeMK0:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/helloWorld-TheSlickeditDeveloperBlog/~4/Ji5jEwgHUtk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.slickedit.com/2011/07/the-point-release-or-when-to-let-go/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://blog.slickedit.com/2011/07/the-point-release-or-when-to-let-go/</feedburner:origLink></item>
		<item>
		<title>Stone Cold Killers</title>
		<link>http://feedproxy.google.com/~r/helloWorld-TheSlickeditDeveloperBlog/~3/KrCi-eQV6dw/</link>
		<comments>http://blog.slickedit.com/2011/07/stone-cold-killers-2/#comments</comments>
		<pubDate>Tue, 12 Jul 2011 15:52:50 +0000</pubDate>
		<dc:creator>Matthew E</dc:creator>
				<category><![CDATA[Other]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Facebook]]></category>
		<category><![CDATA[Google+]]></category>
		<category><![CDATA[hardware]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[Windows Vista]]></category>

		<guid isPermaLink="false">http://blog.slickedit.com/?p=690</guid>
		<description><![CDATA[A quick scan of technology headlines might lead one to believe all competing software and hardware companies are locked in a never-ending death-match. Hardly a week goes by where the latest incarnation of the tablet computing platform is held up for evaluation as the next “iPad killer”. Remember how each new first generation Android phone [...]]]></description>
			<content:encoded><![CDATA[<p>A quick scan of technology headlines might lead one to believe all competing software and hardware companies are locked in a never-ending death-match. Hardly a week goes by where the latest incarnation of the tablet computing platform is held up for evaluation as the next “iPad killer”. Remember how each new first generation Android phone was seen as the iPhone’s most lethal threat. And most recently Google+ has been trumpeted as the current aspirant to the “Facebook killer” crown. Why the need for such violence?</p>
<p>I think most technology companies understand there are only two real dangers to a market-leading product’s lifespan: self-inflicted wounds or a failure to evolve. The introduction of a new competitor does not foretell an impending winner-take-all contest.</p>
<p>While Apple has been churning out hit after hit for the past five years, Final Cut Pro is in danger of dealing itself a knockout combination of radical UI redesign and reduced functionality. Facebook may indeed need to be wary of Google+ as the most recent barbarian at the gate, but they also need to make sure they don’t turn themselves into MySpace.</p>
<p>The public perception nightmare of Windows Vista did more damage to the Windows brand than any Linux distro could ever hope to inflict. Personally I found Vista to be a fine upgrade from XP, and never understood the reason for such vitriol pointed its way. But nevertheless the criticism was loud and frequent.</p>
<p>Quick! What killed the Palm Pilot? Was it some hot new portable? Plenty of Windows Mobile touchscreen devices certainly wanted to take a swing at the champ. (Like my Viewsonic V35, which I finally got around to recycling last year). But no single device spelled the demise of the Pilot. Rather the entire PDA segment was washed away in a tide of irrelevance and redundancy as cell phones acquired this functionality. At least the 3-pack of replacement styli I bought for the V35 comes in handy when my son misplaces his Nintendo DS stylus.</p>
<p>So while the bloodthirsty tech media may attempt to paint the competitive landscape as a gladiatorial arena, I believe most tech products leave the battle under their own declining power, and not in a body bag.</p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fblog.slickedit.com%2F2011%2F07%2Fstone-cold-killers-2%2F';
  addthis_title  = 'Stone+Cold+Killers';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=KrCi-eQV6dw:qusCrbLkYOQ:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=KrCi-eQV6dw:qusCrbLkYOQ:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=KrCi-eQV6dw:qusCrbLkYOQ:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=KrCi-eQV6dw:qusCrbLkYOQ:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=KrCi-eQV6dw:qusCrbLkYOQ:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=KrCi-eQV6dw:qusCrbLkYOQ:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=KrCi-eQV6dw:qusCrbLkYOQ:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=KrCi-eQV6dw:qusCrbLkYOQ:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/helloWorld-TheSlickeditDeveloperBlog/~4/KrCi-eQV6dw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.slickedit.com/2011/07/stone-cold-killers-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.slickedit.com/2011/07/stone-cold-killers-2/</feedburner:origLink></item>
		<item>
		<title>How to Make a License Manager Sound Sexy</title>
		<link>http://feedproxy.google.com/~r/helloWorld-TheSlickeditDeveloperBlog/~3/iJDJmCnJBW4/</link>
		<comments>http://blog.slickedit.com/2011/06/how-to-make-a-license-manager-sound-sexy/#comments</comments>
		<pubDate>Tue, 07 Jun 2011 15:52:21 +0000</pubDate>
		<dc:creator>Scott Westfall</dc:creator>
				<category><![CDATA[SlickEdit Products]]></category>

		<guid isPermaLink="false">http://blog.slickedit.com/?p=676</guid>
		<description><![CDATA[Licensing: there’s just nothing sexy about it. It is a reality in the software business, like deadlines and defects. After years of using a third-party license manager, we decided to write our own License Manager. The old one worked reasonably well, but the company tried to gouge us when we wanted to add two new [...]]]></description>
			<content:encoded><![CDATA[<p>Licensing: there’s just nothing sexy about it. It is a reality in the software business, like deadlines and defects. </p>
<p>After years of using a third-party license manager, we decided to write our own License Manager. The old one worked reasonably well, but the company tried to gouge us when we wanted to add two new platforms: 64-bit Windows and 64-bit Linux. </p>
<p>As a product company, it’s never an easy decision to have someone work on something like licensing. It’s not the kind of feature that motivates people to buy your product.  But there was just no arguing with the economics of the situation.</p>
<p>As part of finalizing the release, I write up the list of new features. Usually, this is pretty straightforward. This year, it was a little tougher. We had fewer new features due to the amount of time spent updating existing capabilities. And one of my few new features is the License Manager. How do I make that look really interesting on the list?</p>
<p>Maybe if I gave it a clever name like, “License Manager: License to Code”. </p>
<p>Hmm, Roman numerals make things look cool, “License Manager XVI”. </p>
<p>Maybe if I shortened the name it would sound more high tech, “LicMan”. No, not that! </p>
<p>Perhaps, the language of business obfuscation could be used, “Product Enablement System”. That doesn’t work either. </p>
<p>I know! How about an acronym that spells out something awesome, like “SlickEdit License Instance Capture Knowledgebase for Efficient Distribution, Inventory, and Tracking (SLICKEDIT)”. No, that just makes the name of this thing the same as the product.</p>
<p>In the end, there’s just nothing I could do to make this sound like more than it is. It’s a License Manager. We did everything we could to make it fast and convenient. In the end, it’s like getting blood drawn: the best you can hope for is that it is over quickly and you can get on with things.</p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fblog.slickedit.com%2F2011%2F06%2Fhow-to-make-a-license-manager-sound-sexy%2F';
  addthis_title  = 'How+to+Make+a+License+Manager+Sound+Sexy';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=iJDJmCnJBW4:H70dlISfpHs:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=iJDJmCnJBW4:H70dlISfpHs:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=iJDJmCnJBW4:H70dlISfpHs:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=iJDJmCnJBW4:H70dlISfpHs:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=iJDJmCnJBW4:H70dlISfpHs:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=iJDJmCnJBW4:H70dlISfpHs:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=iJDJmCnJBW4:H70dlISfpHs:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=iJDJmCnJBW4:H70dlISfpHs:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/helloWorld-TheSlickeditDeveloperBlog/~4/iJDJmCnJBW4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.slickedit.com/2011/06/how-to-make-a-license-manager-sound-sexy/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://blog.slickedit.com/2011/06/how-to-make-a-license-manager-sound-sexy/</feedburner:origLink></item>
		<item>
		<title>Threads and a Bicycle-built-for-two</title>
		<link>http://feedproxy.google.com/~r/helloWorld-TheSlickeditDeveloperBlog/~3/DrRicUvKuiU/</link>
		<comments>http://blog.slickedit.com/2011/05/threads-and-a-bicycle-built-for-two/#comments</comments>
		<pubDate>Tue, 24 May 2011 14:09:10 +0000</pubDate>
		<dc:creator>Dennis B</dc:creator>
				<category><![CDATA[Code Editors]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://blog.slickedit.com/?p=660</guid>
		<description><![CDATA[Building a bicycle-built-for-two isn&#8217;t a great metaphor for designing multi-threaded software, but I needed catchy title, so there you have it. Few companies and few developers like to talk about the warts in their software, but let&#8217;s face it &#8212; for decades, SlickEdit has been a single threaded application, nothing but a bicycle-built-for-one. That single [...]]]></description>
			<content:encoded><![CDATA[<p>Building a bicycle-built-for-two isn&#8217;t a great metaphor for designing multi-threaded software, but I needed catchy title, so there you have it.</p>
<p>Few companies and few developers like to talk about the warts in their software, but let&#8217;s face it &#8212; for decades, SlickEdit has been a single threaded application, nothing but a bicycle-built-for-one.  That single thread rode high and strong and did what it wanted, with all the powers and dangers of the world granted to it to do as it pleased.  Let&#8217;s call this thread George, King George, as it was.</p>
<p>Then we decided to let another thread into our world.  Well, needless to say, King George did not like this newcomer in his kingdom.  Suddenly, he had to synchronize his peddling and braking and balancing with another thread, and let me tell you, he was not used to doing so much paperwork.  Sorry, George, you have to acquire a Mutex before you can use the memory allocator.  Sorry, George, you have to release the Mutex when you are done.  George was angry, frustrated, and not accustomed to waiting in line behind these mere peasants.  They were supposed to make his life easier.  Instead, they pervasively filled his kingdom with landmines.  George had to step carefully from now on.  His smallest comfort was that those little threads also had to step carefully, very carefully.  The King was also comforted to know that there still were places that only he could step.</p>
<p>Converting a single-threaded piece of software into multi-threaded software is a task that requires vision.  It also requires strictness and thorough investigation of what-calls-what and what-uses-what.  The vision comes from finding ways to utilize asynchronous processing and deciding what parts of the application to make thread safe first.  The vision also comes from learning new ways to design less stateful APIs and data structures so that you can minimize access to shared data, or at least make the access thread-safe.</p>
<p>It can&#8217;t be done all at once.</p>
<p>The techniques for writing thread-safe software and multi-threaded software in general are well documented.  It is certainly not a new science, but each thing you convert poses new challenges.</p>
<p>My challenge in SlickEdit 2010 and SlickEdit 2011 was to make it possible for a thread to parse code and insert indexing information into a tag database.  Well, that certainly can&#8217;t be real hard.  That is, until you meet King George.</p>
<p><strong>Step 1:  A thread that parses code</strong></p>
<p>SlickEdit has great parsers for many, many languages; the problem was, none of them were written in a thread-safe manner.  The lexical analyzer framework was completely stateful and also lacking in flexibility and power.  Every parser would need a new lexer, and it had to perform well.  The invocation mechanism depended on the Slick-C interpreter, which is still far away from being a thread-safe component.  The parsers used global data when they wanted to and communicated directly with the database.  To make a long story short, a lot of code had to change.</p>
<p><strong>Step 2: A tagging job queuing framework</strong></p>
<p>Once we could parse code, we couldn&#8217;t just start creating threads all willy-nilly.  We needed a block of threads to do the work and pass the results forward to the editor.  We needed to define what a tagging job was and how the indexing information was collected.  We needed to reconsider every place where the editor would launch tagging jobs and see if those jobs could be done on a thread.  As it turned out, the answer was &#8220;nearly everywhere&#8221;.  Oh, by the way, King George liked that.</p>
<p><strong>Step 3:  A thread-safe tag database</strong></p>
<p>This is one of the big steps forward in SlickEdit 2011.  A thread can write to the tag database, making it possible to do everything required to build or update a tag database completely in the background.  This was no easy task, because the tag database is a sophisticated component that was built specifically for King George.  We had to rethink how we traversed through items in the database.  We had to get rid of shared global variables.  We had to refine the database block cache so it could be shared by threads.</p>
<p><strong>Step 4: Getting a list of files to tag on a thread</strong></p>
<p>The final step was to scale the threading up from allowing the main thread to schedule jobs one at a time to having a thread schedule a a list of files to be tagged.  We needed this thread to find all the files in your workspace, check dates, figure out what language the files were, and finally schedule anything that was new or out-of-date to be tagged.  This meant rewriting a lot of single-threaded Slick-C code as thread-safe C++.  The speed gains from this change were significant.</p>
<p><strong>The final result</strong></p>
<p>SlickEdit 2011 is a huge improvement over SlickEdit 2010 with respect to its handling of background tagging.  King George is beginning to appreciate what these little threads are doing for him and how they are making his job easier now.</p>
<p><strong>The worst problem:  Mutex acquisition order</strong></p>
<p>This is what I regard as the worst thread-safe code synchronization problem.  Now, if you are fortunate enough to be writing thread-safe code from scratch, where you have an existing, clearly modularized code whose critical sections are small, short-lived, and well encapsulated, it is not a problem likely to hurt you unless you do something silly.  But, when you have a large base of single-threaded code with large amounts of shared data that you have to try to make access to thread safe, things get ugly really fast.  Here is the classic deadlock condition.</p>
<pre>   VSMUTEX mutex1;
   VSMUTEX mutex2;</pre>
<p>In the main thread, King George does this.</p>
<pre>    mutex1.lock();
    ...                        // I own mutex1 and rule supremely
    ...                        // except that I don't own mutex2 yet
    mutex2.lock();</pre>
<p>In another thread, some peasant does this.</p>
<pre>   mutex2.lock();
   ...                          // I own mutex2, nobody else can have it,
   ...                          // not even my reverent King
   mutex1.lock();</pre>
<p>When King George has mutex2 and is trying to get mutex1, and simultaneously, another thread has mutex1 and is trying to get mutex2, they will deadlock forever.  There are a few ways around this, but the best way is the classic solution of <em>don&#8217;t do that</em>.  The problem is that it is hard to see how pervasive this problem can be when some special case, such as error handing, causes everything you think you know about what order you acquire Mutex&#8217;s in to be reversed.  This is a problem that can only be solved with thorough analysis and testing and fundamentally sound designs.  But, given the circumstances surrounding migrating older single-threaded code to support threading, such designs are harder to come by than one would hope.</p>
<p><strong>Summary</strong></p>
<p>If you read this whole thing looking for deep insight on how to write solid thread-safe code, well, you probably finished sadly disappointed.  If you are planning on renting a bicycle built-for-two with your spouse and were looking for riding tips, then you really, really read the wrong article.  If you came here because you always thought SlickEdit should do tagging in the background and wondered why it took us so long to implement it that way, then maybe now you understand the obstacles and hurdles a little better.  We are still iteratively improving the system and working to improve the tagging throughput.  You can look forward to seeing even more performance gains and scaling in the first update (16.0.1).</p>
<p>SlickEdit is moving forward, and finally, George isn&#8217;t the only one peddling the bike.</p>
<p><a style="display: none;" rel="tag" href="http://www.codeproject.com/script/Articles/BlogFeedList.aspx?amid=&lt;7950660&gt;">CodeProject</a></p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fblog.slickedit.com%2F2011%2F05%2Fthreads-and-a-bicycle-built-for-two%2F';
  addthis_title  = 'Threads+and+a+Bicycle-built-for-two';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=DrRicUvKuiU:cbTmuTwmQCc:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=DrRicUvKuiU:cbTmuTwmQCc:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=DrRicUvKuiU:cbTmuTwmQCc:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=DrRicUvKuiU:cbTmuTwmQCc:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=DrRicUvKuiU:cbTmuTwmQCc:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=DrRicUvKuiU:cbTmuTwmQCc:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=DrRicUvKuiU:cbTmuTwmQCc:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=DrRicUvKuiU:cbTmuTwmQCc:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/helloWorld-TheSlickeditDeveloperBlog/~4/DrRicUvKuiU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.slickedit.com/2011/05/threads-and-a-bicycle-built-for-two/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://blog.slickedit.com/2011/05/threads-and-a-bicycle-built-for-two/</feedburner:origLink></item>
		<item>
		<title>Things I Learned During the 64-bit Port – Volume 1</title>
		<link>http://feedproxy.google.com/~r/helloWorld-TheSlickeditDeveloperBlog/~3/X0Gt8oPTjBA/</link>
		<comments>http://blog.slickedit.com/2011/05/things-i-learned-during-the-64-bit-port/#comments</comments>
		<pubDate>Wed, 18 May 2011 14:32:55 +0000</pubDate>
		<dc:creator>Dan H</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[SlickEdit Products]]></category>
		<category><![CDATA[64-bit]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[SlickEdit 2011]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://blog.slickedit.com/?p=648</guid>
		<description><![CDATA[I haven&#8217;t written a ton of posts for the SlickEdit blog.  I tend to save it for instances where I find something humorous that I can cross-reference.  I actually do not have a lot of humor to offer this time, but having worked through our 64-bit port in the last few months I do have [...]]]></description>
			<content:encoded><![CDATA[<p>I haven&#8217;t written a ton of posts for the SlickEdit blog.  I tend to save it for instances where I find something humorous that I can cross-reference.  I actually do not have a lot of humor to offer this time, but having worked through our 64-bit port in the last few months I do have a few interesting observations that are worth sharing.  Also, my manager asked if I would write something, and assured me that something noteworthy must have occurred during the 64-bit port.  He also mentioned that it should not involve any of the colorful string of adjectives that came out of of my cubical during that period of time.  It occurs to me as I write this that he might ask this again, so I&#8217;ve gone with the &#8220;Volume 1&#8243; naming scheme&#8230; of course if I never write about this topic again it wouldn&#8217;t be the first time that something named &#8220;Volume 1&#8243; is never followed up with a &#8220;Volume 2&#8243;.</p>
<p>As we began the 64-bit port we faced the same challenges as any company dealing with a large established code base.  A lot of typing issues.  In the 64-bit world, <strong>long</strong> means different things on different platforms.  In some cases it doesn&#8217;t make any difference, in others it does.  These cases have to be carefully examined.  In some cases the solution was not to use <strong>long</strong> at all.  There were cases where we had used <strong>long</strong> because it seemed like the right thing to do, but on careful examination, <strong>int</strong> is completely sufficient.</p>
<p>However, the most interesting case we came up against was a call to the X-Windows library.  The specific call had looked like this for years:</p>
<div>
<pre>   XtVaSetValues(xftXtTopLevelShell,
               XtNx, -1000,
               XtNy, -1000,
               XtNwidth, 100,
               XtNheight, 100,
               XtNmappedWhenManaged, False,
               0);</pre>
</div>
<p>And it was fine in our initial builds and testing.  But as we approached our first beta and started to compile our release configuration, the editor would crash on this line.  I spent an evening trying different compiler options, and different versions of the compiler, because I simply did not see a problem with this line.  But there is one.</p>
<p>The functions that start with XtVa take a variable number of arguments.  In this case, that last argument &#8211; the &#8217;0&#8242; &#8211; is a pointer.  On a 32-bit system, a pointer is 32-bits wide, and an <strong>int</strong> is 32-bits wide.  So passing 0 works just fine.  On a 64-bit system, pointers are 64-bits wide, and NULL is a 64-bit unsigned number. 0, however, is a 32-bit signed number.  Which actually works fine&#8230; until you turn on compiler optimizations.</p>
<p>&nbsp;</p>
<p>Here is the corrected code:</p>
<pre>   XtVaSetValues(xftXtTopLevelShell,
               XtNx, -1000,
               XtNy, -1000,
               XtNwidth, 100,
               XtNheight, 100,
               XtNmappedWhenManaged, False,
               NULL);</pre>
<p>This wasn&#8217;t the most confusing problem I encountered, in fact I&#8217;m sure to a seasoned 64-bit Linux guru it should not have a been a problem at all.  But it was one of the things I felt was interesting enough to share here.</p>
<p>Anybody have a good 64-bit porting horror story?  Let&#8217;s hear them.</p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fblog.slickedit.com%2F2011%2F05%2Fthings-i-learned-during-the-64-bit-port%2F';
  addthis_title  = 'Things+I+Learned+During+the+64-bit+Port+%26%238211%3B+Volume+1';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=X0Gt8oPTjBA:QH5UJL3Ppv8:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=X0Gt8oPTjBA:QH5UJL3Ppv8:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=X0Gt8oPTjBA:QH5UJL3Ppv8:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=X0Gt8oPTjBA:QH5UJL3Ppv8:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=X0Gt8oPTjBA:QH5UJL3Ppv8:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=X0Gt8oPTjBA:QH5UJL3Ppv8:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=X0Gt8oPTjBA:QH5UJL3Ppv8:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=X0Gt8oPTjBA:QH5UJL3Ppv8:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/helloWorld-TheSlickeditDeveloperBlog/~4/X0Gt8oPTjBA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.slickedit.com/2011/05/things-i-learned-during-the-64-bit-port/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://blog.slickedit.com/2011/05/things-i-learned-during-the-64-bit-port/</feedburner:origLink></item>
		<item>
		<title>Hey! Where are all the features?</title>
		<link>http://feedproxy.google.com/~r/helloWorld-TheSlickeditDeveloperBlog/~3/ihvcBDxhBgY/</link>
		<comments>http://blog.slickedit.com/2011/05/hey-where-are-all-the-features/#comments</comments>
		<pubDate>Wed, 11 May 2011 15:57:33 +0000</pubDate>
		<dc:creator>Scott Westfall</dc:creator>
				<category><![CDATA[Code Editors]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[SlickEdit Products]]></category>

		<guid isPermaLink="false">http://blog.slickedit.com/?p=635</guid>
		<description><![CDATA[SlickEdit 2011 is an unusual release. Typically, a release contains a good number of new features that enhance your ability to edit source code. This year, the words “updated” and “enhancements” play more prominently in the list: 64-bit Versions for Linux and Windows Multithreading the Context Tagging Engine and Auto-Reload Support for Ruby Debugging Support [...]]]></description>
			<content:encoded><![CDATA[<p>SlickEdit 2011 is an unusual release. Typically, a release contains a good number of new features that enhance your ability to edit source code. This year, the words “updated” and “enhancements” play more prominently in the list:</p>
<ul>
<li>64-bit Versions for Linux and Windows</li>
<li>Multithreading the Context Tagging Engine and Auto-Reload</li>
<li>Support for Ruby Debugging</li>
<li>Support for Git Version Control</li>
<li>Dynamic Debugger Enhancements</li>
<li>Updated Microsoft Visual Studio 2010 Support</li>
<li>Updated JUnit Support</li>
<li>SlickEdit License Manager</li>
</ul>
<p>So what happened? Choosing what goes into a release is the toughest job for a product manager; there is never enough time to develop everything we’d like to get done in a given year. So we have to make hard choices.</p>
<p>We look at our customer base as a set of constituencies, each with different needs and change requests. Each language we support represents a different constituency with different needs, likewise for each platform. Fixing a tagging problem in C++ does little to help a Python programmer and vice versa. Some features, like Backup History, introduced in SlickEdit v9.0, are useful no matter what language or platform you are using.</p>
<p>Another way to divide constituents is into existing customers and new customers. Generally speaking, new features are considered more helpful in going after new customers, while bug fixes are aimed at existing customers. One consistent piece of feedback from existing customers is that they don’t really want new features; they just want the existing features to work better. In each release, we try to strike a balance between features to lure new customers and bug fixes for existing customers.</p>
<p>When we made the feature plan for this year, it became clear that there were parts of SlickEdit that really needed updating. As a product with a very long history—the first version of SlickEdit was released 23 years ago—we have seen some dramatic changes in the platforms we run on and the expectations of our customers.</p>
<p>In the early versions, resources were scarce so you needed to be as lean as possible, use as little memory and CPU as you can. This also makes your program very fast, which is one of our top goals. Now, a typical development machine has 4 cores and 4GB of memory or more. In this environment it’s frustrating to wait for an answer while the program is only using 25% of your available resources. That’s why the multithreading work was so important.</p>
<p>Don’t get me wrong. We’re not out to become a resource hog. We do believe that, for programmers, coding is the most important thing they are doing and that sufficient resources should be brought to bear.</p>
<p>As code bases grow, it’s even more important to have an editor, like SlickEdit, that knows the location and type of your symbols. Being able to generate that information efficiently and access it quickly is always our top priority. SlickEdit 2011 is a big step in giving you the fastest possible code navigation.</p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fblog.slickedit.com%2F2011%2F05%2Fhey-where-are-all-the-features%2F';
  addthis_title  = 'Hey%21+Where+are+all+the+features%3F';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=ihvcBDxhBgY:5IB4Q03hsPE:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=ihvcBDxhBgY:5IB4Q03hsPE:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=ihvcBDxhBgY:5IB4Q03hsPE:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=ihvcBDxhBgY:5IB4Q03hsPE:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=ihvcBDxhBgY:5IB4Q03hsPE:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=ihvcBDxhBgY:5IB4Q03hsPE:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=ihvcBDxhBgY:5IB4Q03hsPE:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=ihvcBDxhBgY:5IB4Q03hsPE:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/helloWorld-TheSlickeditDeveloperBlog/~4/ihvcBDxhBgY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.slickedit.com/2011/05/hey-where-are-all-the-features/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://blog.slickedit.com/2011/05/hey-where-are-all-the-features/</feedburner:origLink></item>
		<item>
		<title>Homemade SlickEdit Box</title>
		<link>http://feedproxy.google.com/~r/helloWorld-TheSlickeditDeveloperBlog/~3/9RjKYrVp5nE/</link>
		<comments>http://blog.slickedit.com/2011/04/homemade-slickedit-box-3/#comments</comments>
		<pubDate>Thu, 21 Apr 2011 19:32:20 +0000</pubDate>
		<dc:creator>Lyndsey</dc:creator>
				<category><![CDATA[Code Editors]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[SlickEdit Products]]></category>
		<category><![CDATA[SlickEdit DVD Box]]></category>

		<guid isPermaLink="false">http://blog.slickedit.com/?p=626</guid>
		<description><![CDATA[A SlickEdit user thought it would be nice to have SlickEdit displayed on his bookshelf, so we sent him an image and he created his own homemade SlickEdit box. It looks great! addthis_url = 'http%3A%2F%2Fblog.slickedit.com%2F2011%2F04%2Fhomemade-slickedit-box-3%2F'; addthis_title = 'Homemade+SlickEdit+Box'; addthis_pub = '';]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.slickedit.com/wp-content/uploads/2011/04/Homemade-SlickEdit-DVD-Cover1.jpg"><img class="aligncenter size-full wp-image-627" title="Homemade SlickEdit DVD Cover" src="http://blog.slickedit.com/wp-content/uploads/2011/04/Homemade-SlickEdit-DVD-Cover1.jpg" alt="" width="587" height="440" /></a></p>
<p>A SlickEdit user thought it would be nice to have SlickEdit displayed on his bookshelf, so we sent him an image and he created his own homemade SlickEdit box. It looks great!</p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fblog.slickedit.com%2F2011%2F04%2Fhomemade-slickedit-box-3%2F';
  addthis_title  = 'Homemade+SlickEdit+Box';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=9RjKYrVp5nE:2zzhaxaKtM8:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=9RjKYrVp5nE:2zzhaxaKtM8:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=9RjKYrVp5nE:2zzhaxaKtM8:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=9RjKYrVp5nE:2zzhaxaKtM8:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=9RjKYrVp5nE:2zzhaxaKtM8:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=9RjKYrVp5nE:2zzhaxaKtM8:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=9RjKYrVp5nE:2zzhaxaKtM8:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=9RjKYrVp5nE:2zzhaxaKtM8:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/helloWorld-TheSlickeditDeveloperBlog/~4/9RjKYrVp5nE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.slickedit.com/2011/04/homemade-slickedit-box-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.slickedit.com/2011/04/homemade-slickedit-box-3/</feedburner:origLink></item>
		<item>
		<title>Attending GDC 2011? Come Visit Us!</title>
		<link>http://feedproxy.google.com/~r/helloWorld-TheSlickeditDeveloperBlog/~3/8DVYs2asRro/</link>
		<comments>http://blog.slickedit.com/2011/03/attending-gdc-2011-come-visit-us/#comments</comments>
		<pubDate>Tue, 01 Mar 2011 14:30:24 +0000</pubDate>
		<dc:creator>Jeffrey</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.slickedit.com/?p=613</guid>
		<description><![CDATA[We’re exhibiting at the Game Developers Conference this week! GDC is the world’s largest professionals-only game industry event. We’ll be there with hands-on demos of easy project set up, detailed back up history, context tagging and other productivity enhancing features. Visit us at booth 2120, learn what&#8217;s new and checkout our cool giveaways! addthis_url = [...]]]></description>
			<content:encoded><![CDATA[<p>We’re exhibiting at the Game Developers Conference this week!</p>
<p>GDC is the world’s largest professionals-only game industry event. We’ll be there with hands-on demos of easy project set up, detailed back up history, context tagging and other productivity enhancing features.</p>
<p>Visit us at booth 2120, learn what&#8217;s new and checkout our cool giveaways!</p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fblog.slickedit.com%2F2011%2F03%2Fattending-gdc-2011-come-visit-us%2F';
  addthis_title  = 'Attending+GDC+2011%3F+Come+Visit+Us%21';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=8DVYs2asRro:-LVZJ6dla2k:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=8DVYs2asRro:-LVZJ6dla2k:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=8DVYs2asRro:-LVZJ6dla2k:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=8DVYs2asRro:-LVZJ6dla2k:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=8DVYs2asRro:-LVZJ6dla2k:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=8DVYs2asRro:-LVZJ6dla2k:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=8DVYs2asRro:-LVZJ6dla2k:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=8DVYs2asRro:-LVZJ6dla2k:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/helloWorld-TheSlickeditDeveloperBlog/~4/8DVYs2asRro" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.slickedit.com/2011/03/attending-gdc-2011-come-visit-us/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.slickedit.com/2011/03/attending-gdc-2011-come-visit-us/</feedburner:origLink></item>
		<item>
		<title>Enhancing Eclipse with SlickEdit Core: Split Editor Windows</title>
		<link>http://feedproxy.google.com/~r/helloWorld-TheSlickeditDeveloperBlog/~3/DuoSNzeqcZY/</link>
		<comments>http://blog.slickedit.com/2010/12/enhancing-eclipse-with-slickedit-core-split-editor-windows/#comments</comments>
		<pubDate>Fri, 10 Dec 2010 15:25:52 +0000</pubDate>
		<dc:creator>Ryan</dc:creator>
				<category><![CDATA[Code Editors]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[SlickEdit Products]]></category>

		<guid isPermaLink="false">http://blog.slickedit.com/?p=545</guid>
		<description><![CDATA[Most software developers love to use split editor windows within their IDE of choice. Opening the same file or buffer in different windows allows you to easily view different parts of the code at the same time, without moving your current editing location. While possible, working in this manner in Eclipse is not very convenient. [...]]]></description>
			<content:encoded><![CDATA[<p>Most software developers love to use split editor windows within their IDE of choice. Opening the same file or buffer in different windows allows you to easily view different parts of the code at the same time, without moving your current editing location. While possible, working in this manner in Eclipse is not very convenient.</p>
<p>Say you are using Eclipse as shown here (Eclipse 3.6.1), and you want to open another view of the same file.</p>
<p><a href="http://blog.slickedit.com/wp-content/uploads/2010/12/gnudemo_eclipse1.png"><img class="aligncenter size-full wp-image-554" src="http://blog.slickedit.com/wp-content/uploads/2010/12/gnudemo_eclipse1.png" alt="" width="721" height="360" /></a></p>
<p>You can do this easily within Eclipse by using the &#8220;New Editor&#8221; command. Right-click on the buffer tab of the file and select &#8220;New Editor&#8221;. For faster access, you should bind this command to a key, or use the mnemonic <em>Alt + W, E</em> for the <strong>Window</strong> menu. This allows you to create a new editor window without ever having to reach for the mouse. Good so far&#8230;but what did we get?</p>
<p><a href="http://blog.slickedit.com/wp-content/uploads/2010/12/gnudemo_eclipse2.png"><img class="aligncenter size-full wp-image-556" src="http://blog.slickedit.com/wp-content/uploads/2010/12/gnudemo_eclipse2.png" alt="" width="725" height="364" /></a></p>
<p>Not really what we wanted, because this is pretty useless. We want to be able to see a side-by-side view of these windows. How can I accomplish this in Eclipse? Well, unfortunately, you have to reach for the mouse. You have to click and drag the buffer tab for one of these windows over to where you want it to be. Then you get what you really want.</p>
<p><a href="http://blog.slickedit.com/wp-content/uploads/2010/12/gnudemo_eclipse3.png"><img class="alignleft size-full wp-image-558" src="http://blog.slickedit.com/wp-content/uploads/2010/12/gnudemo_eclipse3.png" alt="" width="724" height="363" /></a></p>
<p>With SlickEdit Core for Eclipse (v3.6.1), you can accomplish the same thing very quickly, without ever reaching for the mouse. This might seem like a very small detail, and maybe it is to some folks, but if you try to limit (or eliminate <img src='http://blog.slickedit.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> ) your mouse usage, you will find that you are a much more comfortable and productive programmer.</p>
<p>If I have the same file open in Eclipse 3.6.1, but this time using the SlickEdit Core 3.6.1 plugin, I can run the command <strong>vsplit-window</strong> from the SlickEdit command line, and a new editor window is opened to the right of the current editor window. No intermediate step involving the mouse. Of course, you should bind <strong>vsplit-window</strong> to a key to be more efficient.</p>
<p><a href="http://blog.slickedit.com/wp-content/uploads/2010/12/gnudemo_core.wmv">vsplit-window demo</a></p>
<p>SlickEdit Core also has a command for <strong>hsplit-window</strong> (<em>Ctrl + H</em> by default) for splitting an editor window horizontally, and you can use <strong>next-window</strong> (<em>Ctrl + Tab</em> or <em>Ctrl + F6</em> by default) to rapidly switch between all open editor windows.</p>
<p>There are other plugins available which provide similar functionality. I believe there is an Emacs plugin out there which supports the Emacs-style <em>Ctrl X, 3</em> window splitting, which also does not require the mouse. But no plugin also provides the level of language support of SlickEdit Core. And SlickEdit Core does have a fully functional Emacs emulation, for any Emacs users out there who want to be able to <em>Ctrl + X, 3</em> within the Eclipse environment.</p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fblog.slickedit.com%2F2010%2F12%2Fenhancing-eclipse-with-slickedit-core-split-editor-windows%2F';
  addthis_title  = 'Enhancing+Eclipse+with+SlickEdit+Core%3A+Split+Editor+Windows';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=DuoSNzeqcZY:jdzVuRxlHTs:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=DuoSNzeqcZY:jdzVuRxlHTs:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=DuoSNzeqcZY:jdzVuRxlHTs:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=DuoSNzeqcZY:jdzVuRxlHTs:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=DuoSNzeqcZY:jdzVuRxlHTs:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=DuoSNzeqcZY:jdzVuRxlHTs:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=DuoSNzeqcZY:jdzVuRxlHTs:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=DuoSNzeqcZY:jdzVuRxlHTs:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/helloWorld-TheSlickeditDeveloperBlog/~4/DuoSNzeqcZY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.slickedit.com/2010/12/enhancing-eclipse-with-slickedit-core-split-editor-windows/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
<enclosure url="http://blog.slickedit.com/wp-content/uploads/2010/12/gnudemo_core.wmv" length="227943" type="video/asf" />
		<feedburner:origLink>http://blog.slickedit.com/2010/12/enhancing-eclipse-with-slickedit-core-split-editor-windows/</feedburner:origLink></item>
		<item>
		<title>Key Binding, Command, Menu: The Golden Triangle</title>
		<link>http://feedproxy.google.com/~r/helloWorld-TheSlickeditDeveloperBlog/~3/UVOj2as2yHY/</link>
		<comments>http://blog.slickedit.com/2010/05/key-binding-command-menu-the-golden-triangle/#comments</comments>
		<pubDate>Wed, 19 May 2010 19:45:43 +0000</pubDate>
		<dc:creator>Scott Westfall</dc:creator>
				<category><![CDATA[Code Editors]]></category>
		<category><![CDATA[Productivity]]></category>

		<guid isPermaLink="false">http://blog.slickedit.com/?p=529</guid>
		<description><![CDATA[To borrow a phrase from Mr. Jinks[i], “I hate meeses to pieces”. Before you call the SPCA, let me be clear that I’m talking about computer mice and not Mus musculus, the common household mouse. Further, I should narrow my context to that of programming because in many other areas of computing the mouse is [...]]]></description>
			<content:encoded><![CDATA[<p>To borrow a phrase from Mr. Jinks[i], “I hate meeses to pieces”. Before you call the SPCA, let me be clear that I’m talking about computer mice and not <em>Mus musculus</em>, the common household mouse. Further, I should narrow my context to that of programming because in many other areas of computing the mouse is indispensable.</p>
<p>In programming, however, the mouse can be one of the greatest productivity sinkholes. Time is wasted each time you lift your hand from the keyboard to grab the mouse, and more time is wasted when you move your hand back to home row in preparation for more typing.</p>
<p>So what’s the solution? Keep your hands on the keyboard! To do this use the SlickEdit<sup>®</sup> command line and bind commonly used commands to keys.</p>
<p><strong></p>
<p>Launching Operations<br />
</strong>SlickEdit provides three ways to launch operations: key bindings, commands, and menus. OK, there are actually four, if you include icons. Since the focus of this article is how to keep your hands on the keyboard, I was going to skip that one. </p>
<p><strong></p>
<p>Key Bindings<br />
</strong>Key bindings are the fastest way to launch an operation. They can be pressed at any time while editing. A key binding associates a key sequence with a command. A key sequence is a series of key strokes. Anything you do frequently should be bound to an easily remembered key sequence.</p>
<p>For example the key sequence Ctrl+A means hold down the Control key, typically labeled “Ctrl” on most keyboards, and press the A key. The letter A is represented as an uppercase letter, but this does not mean that you are to press the Shift key. If you are supposed to press the Shift key, the sequence will be written as Ctrl+Shift+A.  We use the uppercase A to match the letter on the keyboard.</p>
<p><strong></p>
<p>Commands<br />
</strong>Commands are useful for less frequently used operations or operations that take arguments. They are executed from the SlickEdit command line and are nearly as fast as key bindings. Press the Escape key (in most emulations) to activate the command line, which is displayed at the bottom of the SlickEdit application window.  </p>
<p style="text-align: center">
<p align="center"><a rel="lightbox[pics8]" href="http://blog.slickedit.com/wp-content/uploads/2007/04/image001.jpg" title="image001.jpg"><img width="96" src="http://blog.slickedit.com/wp-content/uploads/2007/04/image001.thumbnail.jpg" alt="image001.jpg" height="73" class="imageframe imgalignleft" /></a> </p>
<p align="center">  <em>Figure 1, SlickEdit with Command Line</em></p>
<p>It offers a full command history and completions for command names and arguments. Use the arrow keys or the mouse to scroll through previous commands. As you type, a list of possible completions is displayed. Use the arrow keys or mouse to select a completion. SlickEdit stores recorded macros as commands. You can also use Slick-C to write new commands. Use the <strong>_command</strong> keyword to identify a macro as a command. Any command can be bound to a key sequence for faster launching. </p>
<p><strong></p>
<p>Menus<br />
</strong>Menus are accessed via the mouse or a keyboard shortcut. Menus are great for infrequently used items that may not be worth a key binding. They are also helpful to learn about new capabilities. But if you use an operation frequently, you will be more productive by binding it to a key sequence or launching it from the command line. Many menus list a keyboard shortcut to launch the operation. This is just the key binding for the associated command. So when you use a keyboard shortcut, you are really just using a key binding. </p>
<p>You can also operate the main menu through hotkeys. Enable the use of hotkeys by selecting <strong>Tools &gt; Options &gt; General</strong>, selecting the General tab, and putting a check in “Alt menu hotkeys”. This will be selected by default in many emulations. Once enabled, pressing the Alt key will display an underscore beneath each menu option, indicating the letter to press to activate that option. This is not as fast as key bindings, but it does keep your hands on the keyboard and is much faster than using the mouse. In some cases the menu hot key sequence is a good mnemonic for the command. For example, Alt+P, E (to bring up <strong><u>P</u>roject &gt; Prop<u>e</u>rties</strong>) may be easier to remember and type than binding project-edit to Ctrl plus some function key. </p>
<p><strong></p>
<p>Icons<br />
</strong>SlickEdit presents icons in a series of toolbars related to different tasks. Toolbars can be customized with an extensive set of additional icons. Icons are useful for die-hard mouse users or for setting up infrequently used operations for which you have a hard time remembering the associated command or key binding. </p>
<p><strong></p>
<p>The Golden Triangle<br />
</strong>The three methods (excluding icons) to launch an operation are related, forming the Golden Triangle of operation launching. If you know how to execute an operation with one of these, you can easily configure SlickEdit to launch the operation using the other two methods. Commands form the base for the other two…which is why it is shown as the apex of the triangle (Damn it, Jim, I’m an engineer, not an artist!). Maybe I should have used a Golden U or something. <br />
 </p>
<p style="text-align: center">
<p align="center"><a rel="lightbox[pics8]" href="http://blog.slickedit.com/wp-content/uploads/2007/04/image003.jpg" title="image003.jpg"><img width="128" src="http://blog.slickedit.com/wp-content/uploads/2007/04/image003.thumbnail.jpg" alt="image003.jpg" height="91" class="imageframe imgalignleft" /></a></p>
<p align="center"><em>Figure 2 the Golden Triangle; behold its majesty!</em></p>
<p align="center">
<p align="center">
<p><strong>From Key Binding to Command<br />
</strong>Sometimes you may want to change the key sequence to which an operation is bound. You first need to find the command associated with that key sequence. Use the <strong>what-is</strong> command from the SlickEdit command line or select <strong>Help &gt; What Is Key</strong> from the main menu. The command line will be replaced with the prompt, “What is key:” Enter the key sequence in question, like Ctrl+A (hold down the Control key and press A), and SlickEdit displays the associated command. In CUA emulation, SlickEdit will output, “Ctrl+A runs the command select-all”. You can use the same approach to determine the commands associated with mouse events. After you run what-is, click any mouse button and you will be prompted with a list of mouse events. Select one from the list and SlickEdit displays the associated command. For example, if you select mbutton-down in CUA emulation, SlickEdit will output, “MButtonDn runs the command mou-paste”. </p>
<p><strong></p>
<p>From Command to Key Binding<br />
</strong>To find the key binding for a command, use the where-is command or select Tools &gt; Options &gt; Key Bindings from the main menu. The where-is command works just like what-is, except you type in the command name and it outputs the key sequence. The Key Bindings dialog displays a list of the commands. You can scroll through the list or search for a command by typing the command in the text box at the top. The key binding for the selected command is displayed in the dialog.   </p>
<p style="text-align: center"><a rel="lightbox[pics8]" href="http://blog.slickedit.com/wp-content/uploads/2007/04/image003.jpg" title="image003.jpg"></a><a rel="lightbox[pics8]" href="http://blog.slickedit.com/wp-content/uploads/2007/04/image005.png" title="image005.png"><img width="128" src="http://blog.slickedit.com/wp-content/uploads/2007/04/image005.thumbnail.png" alt="image005.png" height="89" class="imageframe imgalignleft" /></a></p>
<p align="center"><em>Figure 3, Key Bindings Dialog    </em></p>
<p align="center">
<p><strong>Modifying Key Bindings<br />
</strong>The Key Bindings dialog can also be used to set a key binding. Type the command in the Command field, or select one from the list. Then click the “Add Key or Mouse Click” button. Now type the key sequence you want to use. For example, to bind a command to Ctrl+A, hold down the Control key and press A. To bind a command to a mouse event, click any mouse button and then select the appropriate event from the list. When you are finished, click the <strong>Bind</strong> button. To exit the dialog, click <strong>Done</strong>.</p>
<p><strong></p>
<p>From Menu to Command<br />
</strong>If the menu entry displays a keyboard shortcut, you can quickly find the associated command using what-is and entering the key sequence. If the menu entry does not display a shortcut, then finding the command for an entry involves a little more work. </p>
<p>SlickEdit provides a convenient UI under <strong>Macro &gt; Menus</strong> that allows you to view and modify menus in SlickEdit. To find commands for the items on the main menu, select “_mdi_menu” from the list and then click the <strong>Open</strong> button. You are presented with a menu hierarchy that you can expand to find the menu entry in question. Once selected, information about the entry is displayed including the command executed. You can use this menu to add or change the shortcut for a menu item. Doing so has the same effect as using the Key Bindings dialog to bind the menu entry’s command to a key sequence.   </p>
<p style="text-align: center"><a rel="lightbox[pics8]" href="http://blog.slickedit.com/wp-content/uploads/2007/04/image003.jpg" title="image003.jpg"></a><a rel="lightbox[pics8]" href="http://blog.slickedit.com/wp-content/uploads/2007/04/image005.png" title="image005.png"></a><a rel="lightbox[pics8]" href="http://blog.slickedit.com/wp-content/uploads/2007/04/image007.jpg" title="image007.jpg"><img width="96" src="http://blog.slickedit.com/wp-content/uploads/2007/04/image007.thumbnail.jpg" alt="image007.jpg" height="73" class="imageframe imgalignleft" /></a></p>
<p align="center"><em>Figure 4, Menu Editor</em></p>
<p>Some menu entries are added dynamically by SlickEdit, so you may have to search the code to find the associated command. One example of this is <strong>Build &gt; Java Options</strong>, which is only present when a Java project is active. Unfortunately, finding the associated commands for these entries can be very difficult and not easily covered in an article like this.</p>
<p><strong></p>
<p>Context Menus<br />
</strong>It is also easy to find the commands in the context menu for the editor window. The context menu, itself, contains an entry to “Edit This Menu”. Selecting this option brings up a dialog that lists the menu entries and associated information, including the command. Use this dialog to modify the context menus. Note that there are two context menus for the editor window: one when a selection is made and one when no selection is made. You can view or change the function that is used for these menus by selecting <strong>Tools &gt; Options &gt; File Extension Setup</strong> and selecting the Advanced tab.<br />
<strong></p>
<p>From Key Binding to Menu and Back<br />
</strong>Menu entries map to key bindings through commands, so key bindings are not directly associated with menu entries. To map from a key binding to a menu or vice versa, you need to look up the associated command. That Golden U is looking better all the time!</p>
<p><strong></p>
<p>Customizing Toolbar Icons<br />
</strong>The focus of this article has been to help you keep your hands on the keyboard, so icons weren’t included in the Golden Triangle. Besides, then I would have needed a Golden Square or some other form of rhombus, and that just doesn’t sound cool. You may find it helpful to change the set of displayed toolbars, add or remove icons, or change the behavior for an icon. SlickEdit uses the term “toolbar” to refer to both icon bars and tool windows. To change the set of displayed toolbars, select <strong>View &gt; Toolbars</strong> and check/uncheck one of the listed toolbars. </p>
<p>The list is divided into two groups. The top group is comprised of tool windows, like the Symbol view and the Projects view. The bottom group is made up of icon bars. </p>
<p>Additional options are available on the Toolbar Customization dialog by selecting <strong>View &gt; Toolbars &gt; Customize</strong>. The Toolbars tab provides a way to control the visibility of the toolbars. The Toolbars tab allows you to set options for which toolbars are visible, whether they are dockable, etc. </p>
<p>The Categories tab displays the complete set of available icons. These can be added to any icon toolbar by dragging them to the desired location. All of the icons have pre-defined behaviors, except the set in the “User Definable Tools” category. Use these to add your own functionality. </p>
<p>Each icon has an associated command that defines what happens when it is clicked. To view or change that command, right-click on the icon and select Properties. The icon needs to be located in a toolbar to do this. You cannot access the properties for an icon in the Toolbar Customizations dialog.  </p>
<p><strong></p>
<p>“Exit, Stage Left”<br />
</strong>OK, that one is a Snagglepuss reference<a name="_ednref2" title="_ednref2"></a>[ii]. Whatever angst I previously expressed for mice has now been transferred to the Golden Polygon of Unspecified Dimensions. Regardless of the shape, you now have the tools you need to configure SlickEdit to work the way YOU think it should, using the key bindings you find natural. This is one of the essential steps in being a true power programmer.<br />
 </p>
<hr />    </p>
<p class="MsoEndnoteText"><a name="_edn1" title="_edn1"></a>[i] Mr. Jinks, sometimes called “Jinks the cat”, appeared in the “Pixie and Dixie” cartoons as part of “The Huckleberry Hound Show”, by Hanna and Barbera.</p>
<p class="MsoEndnoteText"><a name="_edn2" title="_edn2"></a>[ii] Snagglepus is another of Hanna-Barbera’s cartoon characters.</p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fblog.slickedit.com%2F2010%2F05%2Fkey-binding-command-menu-the-golden-triangle%2F';
  addthis_title  = 'Key+Binding%2C+Command%2C+Menu%3A+The+Golden+Triangle';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=UVOj2as2yHY:AA3nf3p4860:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=UVOj2as2yHY:AA3nf3p4860:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=UVOj2as2yHY:AA3nf3p4860:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=UVOj2as2yHY:AA3nf3p4860:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=UVOj2as2yHY:AA3nf3p4860:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=UVOj2as2yHY:AA3nf3p4860:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=UVOj2as2yHY:AA3nf3p4860:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=UVOj2as2yHY:AA3nf3p4860:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/helloWorld-TheSlickeditDeveloperBlog/~4/UVOj2as2yHY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.slickedit.com/2010/05/key-binding-command-menu-the-golden-triangle/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.slickedit.com/2010/05/key-binding-command-menu-the-golden-triangle/</feedburner:origLink></item>
		<item>
		<title>Let’s Make a Macro Part 2: Adding Debug Timing</title>
		<link>http://feedproxy.google.com/~r/helloWorld-TheSlickeditDeveloperBlog/~3/ZvG5JS1YBGc/</link>
		<comments>http://blog.slickedit.com/2010/05/let%e2%80%99s-make-a-macro-part-2-adding-debug-timing/#comments</comments>
		<pubDate>Thu, 06 May 2010 13:41:53 +0000</pubDate>
		<dc:creator>Scott Hackett</dc:creator>
				<category><![CDATA[Macro Programming]]></category>
		<category><![CDATA[SlickEdit Products]]></category>

		<guid isPermaLink="false">http://blog.slickedit.com/?p=486</guid>
		<description><![CDATA[In Part 1, we went over how to create a macro from scratch, load it and bind it to a key.  We also went over some basic macro functionality like inserting a new line of text and determining which language we are working in.  I thought it would be useful to stick with the theme [...]]]></description>
			<content:encoded><![CDATA[<p>In <a href="http://blog.slickedit.com/2010/04/lets-make-a-macro-part-1-outputting-debug-values/" target="_blank">Part 1</a>, we went over how to create a macro from scratch, load it and bind it to a key.  We also went over some basic macro functionality like inserting a new line of text and determining which language we are working in.  I thought it would be useful to stick with the theme of writing a macro that could insert some useful code.  In this blog, we&#8217;ll write a macro that surrounds the currently selected block of code with some simple code that reports how long the block takes to execute.  It&#8217;s sort of a poor-man&#8217;s performance tuning, and everyone needs to do it from time to time when they need to determine how long various sections of code take to execute, but don&#8217;t want to instrument the whole code base.</p>
<h3>Working with selections</h3>
<p>The very first thing I realized when I sat down to do this was that I&#8217;d need to get the bounds of the current selection, and I&#8217;d never worked with selections before.  Whenever I hit an area that I&#8217;m unfamiliar with, the first place I go is the <strong>API documentation</strong>.  To get there, you can click Help &gt; Contents, and then click <em>API Documentation</em> at the bottom of the contents list.  Next, select <em>Macro  Functions By Category</em> and you will be taken to a categorized list of the documented Slick-C functions.  I scrolled down and found the <em>Selection Functions</em> category in the list, clicked it, and started looking through that list for potentially useful ways to get the bounds of the current selection.</p>
<p>Right away, I noticed _get_selinfo() and it looked like a perfect fit.  The problem that I discovered though, is that _get_selinfo() doesn&#8217;t provide line numbers for the current selection, only column numbers, which made it useless for the information I needed.  I then decided to look at how other macro functions were using _get_selinfo(), so I right clicked it and selected <strong>&#8220;Goto reference to _get_selinfo&#8221;</strong> which lists all of the places in the macro code where it&#8217;s called.  You can also use the <strong>find-refs</strong> command for this.  This led me to other code that used _begin_select() and _end_select(), which I had passed over in the help originally because they sounded more like actions than a way of getting selection information.  My strategy for getting the line range was to call _begin_select(), which places the cursor on the first line of the selection, and insert a line of code to get a timestamp.  I would then do the same thing with _end_select() and insert the code to get a second timestamp and report the difference.</p>
<h3>Writing the macro</h3>
<p>We&#8217;ll start by beginning a new macro file the same way we did in <a href="http://blog.slickedit.com/2010/04/lets-make-a-macro-part-1-outputting-debug-values/">Part 1</a>, and we&#8217;ll call it &#8220;insert_debug_timer.e&#8221;.  Using our selection strategy, we can write the following macro code:</p>
<p><a href="http://blog.slickedit.com/wp-content/uploads/2010/04/codesnippet12.png"><img class="alignnone size-full wp-image-490" title="codesnippet1" src="http://blog.slickedit.com/wp-content/uploads/2010/04/codesnippet12.png" alt="" width="674" height="386" /></a></p>
<p>After loading this, you can select some text in your editor, run <em>insert-debug-timer()</em> and your selection will be surrounded by the text &#8220;This is the beginning&#8221; and &#8220;This is the end&#8221;.  Success!  Now we can move on to inserting the actual code that will do the timing.  There will be two parts to this, the code that gets inserted before the selection, and the code that gets inserted after the selection.  I first made a throw-away command to test what the code might look like (in Slick-C):</p>
<p><a href="http://blog.slickedit.com/wp-content/uploads/2010/04/codesnippet22.png"><img class="alignnone size-full wp-image-494" title="codesnippet2" src="http://blog.slickedit.com/wp-content/uploads/2010/04/codesnippet22.png" alt="" width="432" height="178" /></a></p>
<p>Let&#8217;s start with the code that gets inserted before the selection.  We know that we&#8217;re going to have to detect which language we&#8217;re in and insert something different based on that, just like we did in Part 1.  I didn&#8217;t want to pollute the code in the <em>insert_debug_timing()</em> command, so I decided that I&#8217;d make a separate function to insert the &#8220;before&#8221; code.  This function will take the indentation text as a parameter and directly insert the text at the current line.</p>
<p><a href="http://blog.slickedit.com/wp-content/uploads/2010/04/codesnippet31.png"><img class="alignnone size-full wp-image-496" title="codesnippet3" src="http://blog.slickedit.com/wp-content/uploads/2010/04/codesnippet31.png" alt="" width="624" height="329" /></a></p>
<p>Next we can write the second function, which is basically the same as this one, except that it inserts the code to take a second timestamp, diff the two timestamps and report the time difference.  We now replace the lines in <em>insert_debug_timer()</em> with calls to these two functions.  We now have a command that takes the current selection (or the current line if there&#8217;s no selection) and wraps it with timing code.</p>
<h3>A final improvement</h3>
<p>This is a good start, but there are a small improvements I had to include.  The problem I ran into after about 10 seconds of using the macro is that if you have more than one section you want to time, you get a variable name collision.  Since these debug timing code inserts are really just temporary, we can name the variables anything we want.  I decided to make a global int variable called g_debugVarCounter that we could append to the variable names every time the <em>insert_debug_timer()</em> command is called, and then increment that value at the end of the command.  Here is the declaration of the global counter:</p>
<p><a href="http://blog.slickedit.com/wp-content/uploads/2010/05/codesnippet4.png"><img class="alignnone size-full wp-image-499" title="codesnippet4" src="http://blog.slickedit.com/wp-content/uploads/2010/05/codesnippet4.png" alt="" width="537" height="38" /></a></p>
<p>and here&#8217;s how we can use it to make the variable names:</p>
<p><a href="http://blog.slickedit.com/wp-content/uploads/2010/05/codesnippet5.png"><img class="alignnone size-full wp-image-500" title="codesnippet5" src="http://blog.slickedit.com/wp-content/uploads/2010/05/codesnippet5.png" alt="" width="396" height="90" /></a></p>
<p>Now we can insert debug timing commands wherever we want and there are no variable name collisions.  The <em>insert-debug-timer()</em> macro is ready to be bound to a key combination by clicking Tools &gt; Options, then go to Keyboard and Mouse &gt; Key Bindings in the options tree, just like we did in part 1.</p>
<p>The macro file can be downloaded by <a href="http://www.slickedit.com/images/stories/macros/blog/insert_debug_timer.e" target="_blank">clicking the this link</a>.</p>
<h3>Removing debug timing sections</h3>
<p>Another important improvement would be a way to remove any of the code we&#8217;ve inserted by running this command.  We&#8217;ll cover how to do that in the next blog post&#8230; check back soon!</p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fblog.slickedit.com%2F2010%2F05%2Flet%25e2%2580%2599s-make-a-macro-part-2-adding-debug-timing%2F';
  addthis_title  = 'Let%E2%80%99s+Make+a+Macro+Part+2%3A+Adding+Debug+Timing';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=ZvG5JS1YBGc:MnnT3vE_oLQ:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=ZvG5JS1YBGc:MnnT3vE_oLQ:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=ZvG5JS1YBGc:MnnT3vE_oLQ:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=ZvG5JS1YBGc:MnnT3vE_oLQ:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=ZvG5JS1YBGc:MnnT3vE_oLQ:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=ZvG5JS1YBGc:MnnT3vE_oLQ:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=ZvG5JS1YBGc:MnnT3vE_oLQ:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=ZvG5JS1YBGc:MnnT3vE_oLQ:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/helloWorld-TheSlickeditDeveloperBlog/~4/ZvG5JS1YBGc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.slickedit.com/2010/05/let%e2%80%99s-make-a-macro-part-2-adding-debug-timing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.slickedit.com/2010/05/let%e2%80%99s-make-a-macro-part-2-adding-debug-timing/</feedburner:origLink></item>
		<item>
		<title>Let’s Make a Macro Part 1: Outputting debug values</title>
		<link>http://feedproxy.google.com/~r/helloWorld-TheSlickeditDeveloperBlog/~3/o7MqgV-VDX0/</link>
		<comments>http://blog.slickedit.com/2010/04/lets-make-a-macro-part-1-outputting-debug-values/#comments</comments>
		<pubDate>Fri, 23 Apr 2010 14:13:08 +0000</pubDate>
		<dc:creator>Scott Hackett</dc:creator>
				<category><![CDATA[Macro Programming]]></category>
		<category><![CDATA[SlickEdit Products]]></category>

		<guid isPermaLink="false">http://blog.slickedit.com/?p=435</guid>
		<description><![CDATA[One of the things that we think sets SlickEdit apart from other editors is the amount of customization you can do to it.  If you aren&#8217;t happy with the way something behaves, chances are there&#8217;s an option to change it. In addition to the standard settings available in the Options dialog, there&#8217;s the fact that [...]]]></description>
			<content:encoded><![CDATA[<p>One of the things that we think sets SlickEdit apart from other editors is the amount of customization you can do to it.  If you aren&#8217;t happy with the way something behaves, chances are there&#8217;s an option to change it. In addition to the standard settings available in the Options dialog, there&#8217;s the fact that much of SlickEdit is written in macro code.  This allows for an entirely new level of customization and functionality tailored to the way you work.</p>
<p>Unfortunately, only the most advanced of the advanced users ever consider getting so deep into an application that they learn to write their own macros for it.  There&#8217;s a few reasons for this.  Many people don&#8217;t even know that so much functionality is available in macro form.  Even if a user did look into making their own macros, finding out what functionality is available in macro code is an enormous challenge.  We all have deadlines and important things to do, and learning a new code base like the Slick-C macro language just doesn&#8217;t realistically fit into most people&#8217;s 24 hour day.</p>
<p>I personally love making little knock-off gizmo utilities for things that fit my workflow.  One of the things that I do often is putting debug statements at various points in my code to report the value of some variable.  This is very helpful when you want a history of values, not just a one stop breakpoint in the debugger.  I decided to make a macro that adds these statements automatically given the word under my cursor (assuming it&#8217;s a variable).  It&#8217;s a simple, first-step macro, and instead of just posting the code, I&#8217;m going to walk through the steps to make it.</p>
<h2>Starting a macro from scratch</h2>
<p>To start, click <strong>File &gt; New Item From Template</strong>.  This will bring up the &#8220;Add New Item&#8221; dialog.  Select Slick-C in the &#8220;Categories&#8221; tree, select a location where you&#8217;d like this file (a scratch development folder is best), and enter <em>insert_debug_value</em> as the name.</p>
<p><a href="http://blog.slickedit.com/wp-content/uploads/2010/03/addnewslickcitem.png"><img class="aligncenter size-full wp-image-443" src="http://blog.slickedit.com/wp-content/uploads/2010/03/addnewslickcitem.png" alt="" width="459" height="399" /></a></p>
<p>Click the Add button.  This creates a new file called <em>insert_debug_value.e</em> in the specified directory.  This file will be opened in a new buffer with the following code included:</p>
<p><a href="http://blog.slickedit.com/wp-content/uploads/2010/03/initialcode.png"><img class="aligncenter size-full wp-image-444" src="http://blog.slickedit.com/wp-content/uploads/2010/03/initialcode.png" alt="" width="333" height="133" /></a></p>
<p>This is the basis for all macros started from scratch.  You can load it hitting the escape button to go to the command line, then type &#8220;load&#8221; and hit enter.</p>
<p><a href="http://blog.slickedit.com/wp-content/uploads/2010/03/commandbar.png"><img class="aligncenter size-full wp-image-449" src="http://blog.slickedit.com/wp-content/uploads/2010/03/commandbar.png" alt="" width="221" height="111" /></a></p>
<p>SlickEdit will respond by reporting &#8220;Module(s) loaded&#8221; in the status area at the bottom of the application.  You can now type &#8220;insert-debug-value&#8221; on the command line and your new command will execute.  Of course, it doesn&#8217;t do anything yet&#8230;</p>
<h2>Implementing the macro</h2>
<p>A general strategy for this function will be the following:</p>
<ol>
<li>Get the current word that the cursor is in.</li>
<li>Determine which language is being edited.</li>
<li>Insert a new line beneath that to output it&#8217;s value.</li>
</ol>
<p>That seems simple enough.  To start, we&#8217;ll use the <strong>cur_word()</strong> function to determine the full word beneath the cursor.  This function has a byref parameter, which returns the beginning column of the current word, so we have to pass a temp variable for that.  We can also use the <strong>say()</strong> function to report the value of curWord to the stdout window.  The code currently looks like this:</p>
<p><a href="http://blog.slickedit.com/wp-content/uploads/2010/03/codesnippet11.png"><img class="aligncenter size-full wp-image-448" src="http://blog.slickedit.com/wp-content/uploads/2010/03/codesnippet11.png" alt="" width="377" height="175" /></a></p>
<p>Again, you can reload this by hitting the escape button to go to the command line, then type &#8220;load&#8221; and hit enter.  If you run it from the command line, it will show the stdout window titled <strong>vsapi.dll</strong>, and the value of curWord will be shown.</p>
<p><a href="http://blog.slickedit.com/wp-content/uploads/2010/03/vsapioutput.png"><img class="aligncenter size-full wp-image-450" src="http://blog.slickedit.com/wp-content/uploads/2010/03/vsapioutput.png" alt="" width="700" height="182" /></a></p>
<p>Now we can start to build the text that we&#8217;ll insert.  Since we want this inserted line to be indented to match the current line, we&#8217;ll get the current indentation using the <strong>first_non_blank()</strong> function.  This puts the cursor on the first non-blank column on the line.  Next, we&#8217;ll get the column number using the <strong>p_col</strong> property.  We can build an indentation string using the <strong>indent_string()</strong> function, passing the starting column value.  The code now looks like this:</p>
<p><a href="http://blog.slickedit.com/wp-content/uploads/2010/03/codesnippet2.png"><img class="aligncenter size-full wp-image-453" src="http://blog.slickedit.com/wp-content/uploads/2010/03/codesnippet2.png" alt="" width="400" height="238" /></a></p>
<p>For this example, we&#8217;ll support three languages; Slick-C, C/C++ and Java.  To tell which language we&#8217;re in, we can use the <strong>p_LangId</strong> property, which returns the language ID of the current editor.  We can switch on that value and append the code to the variable containing the text to insert.  Finally we can call <strong>insert_line()</strong> to insert the text we&#8217;ve built.</p>
<p><a href="http://blog.slickedit.com/wp-content/uploads/2010/04/codesnippet3.png"><img class="aligncenter size-full wp-image-476" title="codesnippet3" src="http://blog.slickedit.com/wp-content/uploads/2010/04/codesnippet3.png" alt="" width="697" height="294" /></a></p>
<p>Go to the command line and reload the file by typing &#8220;load&#8221; and hitting enter.  Now put the cursor on a variable in the editor, go back to the command line and type &#8220;insert-debug-value&#8221; and hit enter.  A <strong>say()</strong> statement will be inserted into the file on the line after the cursor that reports the value of the variable your cursor was on.  Now you have a way to quickly add a debug statement to your code to report the value of the variable without having to write anything.  A final improvement is to store the original line number and column so they can be restored after the new line is inserted.</p>
<p>The macro file can be downloaded by <a href="http://www.slickedit.com/images/stories/macros/blog/insert_debug_value.e" target="_blank">clicking the this link</a>.</p>
<h2>Binding a key combination to your macro</h2>
<p>A macro like the one we just made works best when bound to a key, since we don&#8217;t want to have to go to the command line every time we want to invoke it.  To bind a key combination to this macro, bring up the options by clicking <strong>Tools &gt; Options</strong>, then go to <strong>Keyboard and Mouse &gt; Key Bindings</strong> in the options tree.  Type the name of the macro in the &#8220;Search by command:&#8221; text box to find it.  Double click its entry to bring up the &#8220;Bind Key&#8221; dialog.  We&#8217;ll bind it to &#8220;Ctrl+Shift+/&#8221;.  Press that key combination and it will appear in the &#8220;Key Sequence:&#8221; dialog.  Click the &#8220;Bind&#8221; button to bind it.  The key bindings entry should look like this:</p>
<p><a href="http://blog.slickedit.com/wp-content/uploads/2010/03/keybinding.png"><img class="aligncenter size-full wp-image-447" src="http://blog.slickedit.com/wp-content/uploads/2010/03/keybinding.png" alt="" width="591" height="123" /></a></p>
<p>Click OK on the options dialog.  Now, whenever you press &#8220;Ctrl+Shift+/&#8221; your macro will execute.</p>
<h2>Is it perfect?</h2>
<p>Absolutely not!  There are many potential problems here.  The cursor may not be on a variable.  The buffer may be read only.  There are also many other languages that this macro could support.  The list is potentially huge.  However, this macro is a starting point from which you can start to tinker around with writing your own macros.  Soon, you&#8217;ll be amazed at how much can be done with Slick-C that you&#8217;ll start writing lots of little tools and utilities that fit your own unique workflow.  Check back for more blog posts in this series, which will build on what we&#8217;ve started here.</p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fblog.slickedit.com%2F2010%2F04%2Flets-make-a-macro-part-1-outputting-debug-values%2F';
  addthis_title  = 'Let%26%238217%3Bs+Make+a+Macro+Part+1%3A+Outputting+debug+values';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=o7MqgV-VDX0:qUQHb0tk9_k:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=o7MqgV-VDX0:qUQHb0tk9_k:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=o7MqgV-VDX0:qUQHb0tk9_k:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=o7MqgV-VDX0:qUQHb0tk9_k:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=o7MqgV-VDX0:qUQHb0tk9_k:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=o7MqgV-VDX0:qUQHb0tk9_k:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=o7MqgV-VDX0:qUQHb0tk9_k:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=o7MqgV-VDX0:qUQHb0tk9_k:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/helloWorld-TheSlickeditDeveloperBlog/~4/o7MqgV-VDX0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.slickedit.com/2010/04/lets-make-a-macro-part-1-outputting-debug-values/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://blog.slickedit.com/2010/04/lets-make-a-macro-part-1-outputting-debug-values/</feedburner:origLink></item>
		<item>
		<title>Improve Slow Menu Response</title>
		<link>http://feedproxy.google.com/~r/helloWorld-TheSlickeditDeveloperBlog/~3/PUUvLocE9cA/</link>
		<comments>http://blog.slickedit.com/2010/01/improve-slow-menu-response/#comments</comments>
		<pubDate>Fri, 22 Jan 2010 20:25:10 +0000</pubDate>
		<dc:creator>Jeffrey</dc:creator>
				<category><![CDATA[Productivity]]></category>

		<guid isPermaLink="false">http://blog.slickedit.com/?p=415</guid>
		<description><![CDATA[Sometimes when you have a project with a large number of makefiles, you may notice that menus are slow to respond. This happens because SlickEdit collects the names of all the targets in each makefile and adds them to menus for build purposes (whether or not you are using SlickEdit to build). To resolve this [...]]]></description>
			<content:encoded><![CDATA[<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Sometimes when you have a project with a large number of makefiles, you may notice that menus are slow to respond. This happens because SlickEdit collects the names of all the targets in each makefile and adds them to menus for build purposes (whether or not you are using SlickEdit to build). To resolve this issue, change the def_show_makefile_target_menu configuration variable to either 0 or 2. The default value, 1, specifies that all makefile submenus are enabled. A value of 0 disables all makefile submenus (Build menu and Project tool window), and a value of 2 enables makefile submenus only in the Project tool window (Build menu makefile targets are disabled).</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">To change the value of a configuration variable, from the main menu, click Macro &gt; Set Macro Variable. Select the variable to change from the drop-down list, enter the value in the Value field, then click OK.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">NOTE This behavior will be changed in the next release so that despite the number of makefiles in your project, there will not be a slow-down in menu response times.</div>
<p>Sometimes when you have a project with a large number of makefiles, you may notice that menus are slow to respond. This happens because SlickEdit collects the names of all the targets in each makefile and adds them to menus for build purposes (whether or not you are using SlickEdit to build). To resolve this issue, change the def_show_makefile_target_menu configuration variable to either 0 or 2. The default value, 1, specifies that all makefile submenus are enabled. A value of 0 disables all makefile submenus (Build menu and Project tool window), and a value of 2 enables makefile submenus only in the Project tool window (Build menu makefile targets are disabled).</p>
<p>To change the value of a configuration variable, from the main menu, click Macro &gt; Set Macro Variable. Select the variable to change from the drop-down list, enter the value in the Value field, then click OK.</p>
<p>NOTE This behavior will be changed in the next release so that despite the number of makefiles in your project, there will not be a slow-down in menu response times.</p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fblog.slickedit.com%2F2010%2F01%2Fimprove-slow-menu-response%2F';
  addthis_title  = 'Improve+Slow+Menu+Response';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=PUUvLocE9cA:RwO9VLQympQ:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=PUUvLocE9cA:RwO9VLQympQ:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=PUUvLocE9cA:RwO9VLQympQ:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=PUUvLocE9cA:RwO9VLQympQ:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=PUUvLocE9cA:RwO9VLQympQ:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=PUUvLocE9cA:RwO9VLQympQ:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=PUUvLocE9cA:RwO9VLQympQ:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=PUUvLocE9cA:RwO9VLQympQ:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/helloWorld-TheSlickeditDeveloperBlog/~4/PUUvLocE9cA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.slickedit.com/2010/01/improve-slow-menu-response/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.slickedit.com/2010/01/improve-slow-menu-response/</feedburner:origLink></item>
		<item>
		<title>Of Starships, Super-science, and SlickEdit</title>
		<link>http://feedproxy.google.com/~r/helloWorld-TheSlickeditDeveloperBlog/~3/-Id3jHjloi4/</link>
		<comments>http://blog.slickedit.com/2009/12/of-starships-super-science-and-slickedit/#comments</comments>
		<pubDate>Tue, 15 Dec 2009 17:07:42 +0000</pubDate>
		<dc:creator>Scott Westfall</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.slickedit.com/?p=417</guid>
		<description><![CDATA[Not once in my childhood did I dream about growing up to be a software development manager. No, I dreamt of being a starship captain or maybe a super-scientist, like Dr. Benton Quest (Johnny Quest’s father). Unfortunately, there are no starships to captain and the super-science field requires more capital than I can scrape together. [...]]]></description>
			<content:encoded><![CDATA[<p>Not once in my childhood did I dream about growing up to be a software development manager. No, I dreamt of being a starship captain or maybe a super-scientist, like Dr. Benton Quest (<a href="http://en.wikipedia.org/wiki/Jonny_Quest">Johnny Quest’s</a> father). Unfortunately, there are no starships to captain and the super-science field requires more capital than I can scrape together.</p>
<p>Like most people, I had to set my sights on more attainable goals. So, I chose the field of software development. For someone going to college in the 1980’s, software development was the most futuristic and high-tech thing available. In grad school, I chose to specialize in Artificial Intelligence, the wave of the future (can you hear the biting irony in that, <em>&#8220;the wave of the future</em>&#8220;? No, it never came to pass).  Unfortunately, the number of job openings in AI are right up there with those designing giant fighting robots and captaining starships.</p>
<p>Most of my career has been spent on developing more mundane things, like medical billing applications, credit checkers, mortgage analyzers, etc.  There have been a couple bright spots, though. I did get to work for Harris Space Systems developing a new launch system for NASA. And my current job at SlickEdit is still my favorite.</p>
<p>Developing a programming editor may seem pretty mundane compared to my lofty dreams of AI and super-science, but I truly love working on something that I can use. Throughout most of my career, I developed software for use by other people. Now, I’m developing software for the things <strong>I</strong> do. For everything else I developed, I had to elicit requirements from subject matter experts. At SlickEdit, the developers are the subject matter experts!</p>
<p>It’s also great when I talk to other programmers about what I do. No matter how animated you get while describing the uber-cool design of your credit checker, people’s eyes glaze over.</p>
<p>&#8220;No, seriously, did I tell you it uses a priority queue with full transactional semantics?&#8221;</p>
<p>See what I mean? When I talk about developing a programming editor you can actually see a degree of interest in their eyes—usually followed by a forlorn look when they realize how boring their work on a credit checker is by comparison.</p>
<p>Finally, the coolest thing about working at SlickEdit is knowing that thousands of programmers, in all fields of development are using our product to write better software. Like most developers, I had dreams of one day working in game development—once I knew that the super-science, starship captaining, and AI weren’t going to pan out. Though that never happened, I feel that I am still making a contribution.</p>
<p>SlickEdit was recently nominated for the <a href="http://www.gdmag.com/frontlineawards/homepage.htm">2009 Front Line Awards</a> by Game Developer magazine, in the category of Programming/Production Tools. This kind of recognition is so rewarding! Not only are other people using us to write games, but they like SlickEdit enough to nominate us for an award.</p>
<p>OK, so maybe I didn’t write a cool blood-splatter effect for when you take that perfect head shot, and maybe I didn’t write the code that makes zombies shuffle around more realistically. But it’s fun to think that someone who did write that might have used SlickEdit and that maybe my work and ideas made their job just that much better.</p>
<p>The warm feeling I get from this can carry me through many tough days. Yes, I have some tough days at SlickEdit. When I’m pitching a new feature and I see the other developers’ eyes glaze over—&#8221;did I mention that this feature uses a priority queue and full transactional semantics&#8221;—I can focus on all the ways SlickEdit is being used to write better software.</p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fblog.slickedit.com%2F2009%2F12%2Fof-starships-super-science-and-slickedit%2F';
  addthis_title  = 'Of+Starships%2C+Super-science%2C+and+SlickEdit';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=-Id3jHjloi4:6yTN72yyOHw:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=-Id3jHjloi4:6yTN72yyOHw:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=-Id3jHjloi4:6yTN72yyOHw:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=-Id3jHjloi4:6yTN72yyOHw:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=-Id3jHjloi4:6yTN72yyOHw:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=-Id3jHjloi4:6yTN72yyOHw:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=-Id3jHjloi4:6yTN72yyOHw:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=-Id3jHjloi4:6yTN72yyOHw:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/helloWorld-TheSlickeditDeveloperBlog/~4/-Id3jHjloi4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.slickedit.com/2009/12/of-starships-super-science-and-slickedit/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://blog.slickedit.com/2009/12/of-starships-super-science-and-slickedit/</feedburner:origLink></item>
		<item>
		<title>Aliases</title>
		<link>http://feedproxy.google.com/~r/helloWorld-TheSlickeditDeveloperBlog/~3/3cy5A7phXO8/</link>
		<comments>http://blog.slickedit.com/2009/11/aliases/#comments</comments>
		<pubDate>Fri, 20 Nov 2009 15:10:22 +0000</pubDate>
		<dc:creator>Jeffrey</dc:creator>
				<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Aliases]]></category>

		<guid isPermaLink="false">http://blog.slickedit.com/?p=409</guid>
		<description><![CDATA[Directory Aliases If you&#8217;re constantly opening files from certain directories, create aliases for those directories to save time. To create a directory alias, from the main menu, click Tools &#62; Options, expand Editing and select Global Aliases. Click New, enter a short text snippet that you can easily remember for the Alias Name, then click [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Directory Aliases</strong></p>
<p>If you&#8217;re constantly opening files from certain directories, create aliases for those directories to save time. To create a directory alias, from the main menu, click <strong>Tools &gt; Option</strong>s, expand Editing and select Global Aliases. Click New, enter a short text snippet that you can easily remember for the Alias Name, then click OK. Back on the Options dialog, select the new alias, then enter the complete directory path for the alias in the text box on the right.  Click OK on the Options dialog. Now you can use the alias in directory fields on various dialogs in SlickEdit (like File &gt; Open): simply type the Alias Name and press Ctrl+Space to expand it.</p>
<p><strong>Language-Specific Aliases</strong></p>
<p>Language-specific aliases are similar to directory aliases except they can be used in edit windows for any frequently used text, like comment headers and language structures.</p>
<p><strong> </strong></p>
<p><strong></p>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">To create a language-specific alias, from the main menu, click Tools &gt; Options &gt; Languages, expand your language category and language, then select Aliases. On the Alias option page, click New and enter a short text snippet that you can easily remember for the alias name, then click OK. Back on the Options dialog, select the new alias, then enter the text substitution for the alias in the text box on the right. Click OK on the Options dialog.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Now when you have a buffer or file open in that language, you can use the alias by typing the identifier and pressing Ctrl+SpaceLanguage-specific aliases are similar to [url="http://community.slickedit.com/index.php?topic=3399.0"]directory aliases[/url] except they can be used in edit windows for any frequently used text, like comment headers and language structures.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">To create a language-specific alias, from the main menu, click Tools &gt; Options &gt; Languages, expand your language category and language, then select Aliases. On the Alias option page, click New and enter a short text snippet that you can easily remember for the alias name, then click OK. Back on the Options dialog, select the new alias, then enter the text substitution for the alias in the text box on the right. Click OK on the Options dialog.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Now when you have a buffer or file open in that language, you can use the alias by typing the identifier and pressing Ctrl+Space.</div>
<p></strong></p>
<p>To create a language-specific alias, from the main menu, click <strong>Tools &gt; Options &gt; Languages</strong>, expand your language category and language, then select Aliases. On the Alias option page, click New and enter a short text snippet that you can easily remember for the alias name, then click OK. Back on the Options dialog, select the new alias, then enter the text substitution for the alias in the text box on the right. Click OK on the Options dialog.</p>
<p>Now when you have a buffer or file open in that language, you can use the alias by typing the identifier and pressing Ctrl+Space.</p>
<p><strong>Alias from Selection</strong></p>
<p>A quick way to create a language-specific alias is to create it from a selection. Select some text in the editor, then right-click and select Create Alias from the context menu. Enter a name for the alias and click OK. The Options dialog appears, open to the Language-Specific Alias Options for the current language, and showing the new alias. Click OK on the Options dialog.</p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fblog.slickedit.com%2F2009%2F11%2Faliases%2F';
  addthis_title  = 'Aliases';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=3cy5A7phXO8:RHgMqLnG530:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=3cy5A7phXO8:RHgMqLnG530:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=3cy5A7phXO8:RHgMqLnG530:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=3cy5A7phXO8:RHgMqLnG530:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=3cy5A7phXO8:RHgMqLnG530:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=3cy5A7phXO8:RHgMqLnG530:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=3cy5A7phXO8:RHgMqLnG530:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=3cy5A7phXO8:RHgMqLnG530:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/helloWorld-TheSlickeditDeveloperBlog/~4/3cy5A7phXO8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.slickedit.com/2009/11/aliases/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.slickedit.com/2009/11/aliases/</feedburner:origLink></item>
		<item>
		<title>Hey, Check Out My Slick New Editor!</title>
		<link>http://feedproxy.google.com/~r/helloWorld-TheSlickeditDeveloperBlog/~3/Sns4AIoNEBA/</link>
		<comments>http://blog.slickedit.com/2009/09/hey-check-out-my-slick-new-editor/#comments</comments>
		<pubDate>Wed, 23 Sep 2009 14:21:01 +0000</pubDate>
		<dc:creator>Jeffrey</dc:creator>
				<category><![CDATA[Code Editors]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[SlickEdit Products]]></category>
		<category><![CDATA[Diffzilla]]></category>
		<category><![CDATA[Macro Record/Playback]]></category>
		<category><![CDATA[Refactoring]]></category>
		<category><![CDATA[Regular Expressions]]></category>
		<category><![CDATA[slickedit]]></category>

		<guid isPermaLink="false">http://blog.slickedit.com/?p=396</guid>
		<description><![CDATA[Greg Christopher of VMware has written an article for DevX.com: Hey, Check Out My Slick New Editor! In the article he discussing some of his favorite features of SlickEdit and why SlickEdit is his code editor of choice for programming. On objections on switching editors If your current editor works well enough for you, why switch? [...]]]></description>
			<content:encoded><![CDATA[<p>Greg Christopher of VMware has written an article for DevX.com: <a href="http://www.devx.com/enterprise/Article/42874/0/page/1"><strong>Hey, Check Out My Slick New Editor!</strong></a></p>
<p>In the article he discussing some of his favorite features of SlickEdit and why SlickEdit is his code editor of choice for programming.</p>
<p><strong>On objections on switching editors</strong></p>
<blockquote><p>If your current editor works well enough for you, why switch? The answer depends on how you define &#8220;well enough.&#8221; Your current editor probably handles every editing command you think you need now, but consider the possibility that something could make you far more productive. You&#8217;ll see a few examples in a moment, but first, here are some of the reasons you might decide not to switch editors.</p></blockquote>
<p><span id="more-396"></span> <strong>Regular Expression Search and Replace</strong></p>
<blockquote><p>This isn&#8217;t an exclusive SlickEdit feature, some other editors have it too; but if you haven&#8217;t had the opportunity to experience regular expression searches, you should really consider switching to an editor that supports the feature.</p></blockquote>
<p><strong>Macro Record/Playback</strong></p>
<blockquote><p>SlickEdit carries out many of its commands through its slick-C programming language (note that both Brief and Emacs have their own languages as well). SlickEdit lets you write your own macros, or do a simple record / playback. This comes in handy when the syntax for find and replace gets too dicey.</p></blockquote>
<p><strong>Other Features</strong></p>
<blockquote><p>As you might imagine, because SlickEdit&#8217;s been around for 20 years, this article just scratches the surface.</p></blockquote>
<p>Continue reading <a href="http://www.devx.com/enterprise/Article/42874/0/page/1">Hey, Check Out My Slick New Editor<strong>!</strong></a> here: <a href="http://www.devx.com/enterprise/Article/42874/0/page/1">http://www.devx.com/enterprise/Article/42874/0/page/1 </a></p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fblog.slickedit.com%2F2009%2F09%2Fhey-check-out-my-slick-new-editor%2F';
  addthis_title  = 'Hey%2C+Check+Out+My+Slick+New+Editor%21';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=Sns4AIoNEBA:JTY5aTceA14:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=Sns4AIoNEBA:JTY5aTceA14:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=Sns4AIoNEBA:JTY5aTceA14:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=Sns4AIoNEBA:JTY5aTceA14:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=Sns4AIoNEBA:JTY5aTceA14:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=Sns4AIoNEBA:JTY5aTceA14:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=Sns4AIoNEBA:JTY5aTceA14:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=Sns4AIoNEBA:JTY5aTceA14:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/helloWorld-TheSlickeditDeveloperBlog/~4/Sns4AIoNEBA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.slickedit.com/2009/09/hey-check-out-my-slick-new-editor/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.slickedit.com/2009/09/hey-check-out-my-slick-new-editor/</feedburner:origLink></item>
		<item>
		<title>Automating SlickEdit with Snow Leopard Services</title>
		<link>http://feedproxy.google.com/~r/helloWorld-TheSlickeditDeveloperBlog/~3/iGU-Q_y0fOE/</link>
		<comments>http://blog.slickedit.com/2009/09/automating-slickedit-with-snow-leopard-services/#comments</comments>
		<pubDate>Fri, 18 Sep 2009 13:45:40 +0000</pubDate>
		<dc:creator>Matthew E</dc:creator>
				<category><![CDATA[Productivity]]></category>
		<category><![CDATA[SlickEdit Products]]></category>
		<category><![CDATA[SlickEdit Mac]]></category>

		<guid isPermaLink="false">http://blog.slickedit.com/?p=379</guid>
		<description><![CDATA[I have always liked the idea of the Services menu, but found it frustratingly crowded and not often helpful. And I always thought Automator had real potential, but I never really found a place for it in my day-to-day work. With the improvements to the Services menu in Snow Leopard, the combination of these features is wonderfully [...]]]></description>
			<content:encoded><![CDATA[<p>I have always liked the idea of the Services menu, but found it frustratingly crowded and not often helpful. And I always thought Automator had real potential, but I never really found a place for it in my day-to-day work. With the improvements to the Services menu in Snow Leopard, the combination of these features is wonderfully useful.</p>
<p>SlickEdit&#8217;s Slick-C macro language should be no stranger to our users, but many folks aren&#8217;t aware that macros can be called when SlickEdit is started. In this tutorial, I&#8217;ll demonstrate how to use Automator to create a simple text service for SlickEdit, using this macro call facility.<span id="more-379"></span></p>
<p>First, launch the <strong>Automator</strong> application and create a new service using the Service template. At the top of the new workflow, it should say <em>Service receives <strong>selected text</strong> in <strong>any application</strong></em>. Make sure <em>Replaces selected text</em> is <strong>not</strong><em> </em>checked.</p>
<p>From the library&#8217;s actions panel, select the <strong>Text &gt; New Text File </strong>action, and drag it into the workflow as the first item. Pick a name and location for the temporary file to be saved, and make sure <em>Replace existing files </em>is checked, or else you&#8217;ll receive an Automator error the second time you use the service. Select the Encoding to be (UTF-8).</p>
<p>From the library&#8217;s action panel, select the <strong>Utilities &gt; Run Shell Script</strong> action, and drag it into workflow as the second item. The shell should be set to the default of <strong>/bin/bash</strong>. Change the right-hand drop-down to read <em>Pass input <strong>as arguments</strong></em>.</p>
<p>Delete any existing text in the shell script editor. Add the following text as the first line.</p>
<pre>export VSLICKXNOPLUSNEWMSG="1"</pre>
<p>Switch to Finder, and navigate to the Applications directory. Highlight your SlickEdit application, and Control-Click the application, and select <em>Show Package Contents</em> from the context menu. Drill down to the <strong>Contents/slickedit/bin</strong>, highlight the <strong>vs </strong>executable, and drag this into the shell script editor. This will insert the full path to the executable in the script editor. Make sure it&#8217;s on a new line after the export line you just typed.<br />
Append the following right after vs, making sure the command is all one line.</p>
<pre>-#new-file "-#get $1"&amp;</pre>
<p>The full script should look like the following:</p>
<pre>export VSLICKXNOPLUSNEWMSG="1"
/Applications/SlickEditV1402.app/Contents/slickedit/bin/vs -#new-file "-#get $1"&amp;</pre>
<div id="attachment_380" class="wp-caption alignnone" style="width: 160px"><a href="http://blog.slickedit.com/wp-content/uploads/2009/09/AutomatorService.png"><img class="size-thumbnail wp-image-380" src="http://blog.slickedit.com/wp-content/uploads/2009/09/AutomatorService-150x150.png" alt="Automator Service" width="150" height="150" /></a><p class="wp-caption-text">Automator Service</p></div>
<p>Don&#8217;t forget the ampersand at the end of the second line. Save the service, (⌘+S), and give it the name &#8220;New SlickEdit File&#8221;.</p>
<p>Switch to another application, like Safari or TextEdit, highlight some text, and pull down the application&#8217;s services menu. Your new service should now be available in the menu in the Text category.</p>
<p>The SlickEdit &#8220;magic&#8221; is done with the <strong>-#</strong> arguments. These specify macros to be called when SlickEdit in invoked. Any SlickEdit macro command (defined with the <span style="color: #0000ff">_command</span> keyword in Slick-C) can be called. Surround the entire -# argument with quotes if the Slick-C command takes any parameters, like the <strong>get</strong> macro in this example.</p>
<p>You can create a similar service that will insert the text into the currently active document by simply removing the <strong>-#new-file</strong> argument.</p>
<p>By default, service workflows are saved under $HOME/Library/Services. You can remove the service by removing this file.</p>
<p>To rename a Service, select the workflow file under $HOME/Library/Services, Control-Click to bring up the context menu, and select Show Package Contents. Look for the <strong>Contents/Info.plist</strong> file, and open it in the Property List Editor application. Change the value of the <strong>Services/Item/Menu/Menu item title</strong> entry. You do not need to rename the workflow file itself.</p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fblog.slickedit.com%2F2009%2F09%2Fautomating-slickedit-with-snow-leopard-services%2F';
  addthis_title  = 'Automating+SlickEdit+with+Snow+Leopard+Services';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=iGU-Q_y0fOE:h5PmZYFPrtM:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=iGU-Q_y0fOE:h5PmZYFPrtM:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=iGU-Q_y0fOE:h5PmZYFPrtM:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=iGU-Q_y0fOE:h5PmZYFPrtM:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=iGU-Q_y0fOE:h5PmZYFPrtM:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=iGU-Q_y0fOE:h5PmZYFPrtM:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=iGU-Q_y0fOE:h5PmZYFPrtM:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=iGU-Q_y0fOE:h5PmZYFPrtM:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/helloWorld-TheSlickeditDeveloperBlog/~4/iGU-Q_y0fOE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.slickedit.com/2009/09/automating-slickedit-with-snow-leopard-services/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.slickedit.com/2009/09/automating-slickedit-with-snow-leopard-services/</feedburner:origLink></item>
		<item>
		<title>Diminishing the Role of Folklore in Software Development</title>
		<link>http://feedproxy.google.com/~r/helloWorld-TheSlickeditDeveloperBlog/~3/T3raLheo178/</link>
		<comments>http://blog.slickedit.com/2009/09/diminishing-the-role-of-folklore-in-software-development/#comments</comments>
		<pubDate>Thu, 10 Sep 2009 13:45:52 +0000</pubDate>
		<dc:creator>Scott Westfall</dc:creator>
				<category><![CDATA[Dev Management]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://blog.slickedit.com/?p=347</guid>
		<description><![CDATA[There&#8217;s a great old commercial for Tootsie Roll Tootsie Pops that reminds me a lot of what happens on most software projects. The commercial features a crudely drawn cartoon of a boy trying to figure out a vitally important question. Boy: Mr. Turtle, how many licks does it take to get to the Tootsie Roll [...]]]></description>
			<content:encoded><![CDATA[<p>There&#8217;s a great old <a href="http://en.wikipedia.org/wiki/Tootsie_Pops">commercial for Tootsie Roll Tootsie Pops</a> that reminds me a lot of what happens on most software projects. The commercial features a crudely drawn cartoon of a boy trying to figure out a vitally important question.</p>
<p><strong>Boy</strong>: Mr. Turtle, how many licks does it take to get to the Tootsie Roll center of a Tootsie Pop?<br />
<strong>Mr. Turtle</strong>: I&#8217;ve never even made it without biting. Ask Mr. Owl.<br />
<strong>Boy</strong>: Mr. Owl, how many licks does it take to get to the Tootsie Roll center of a Tootsie Pop?<br />
<strong>Mr. Owl</strong>: Let&#8217;s find out. A One&#8230; A two-HOO&#8230;A three.<br />
(crunch sound effect)<br />
<strong>Mr. Owl</strong>: Three!</p>
<p>This illustrates two common problems in oral communication. The first is the iterative process of finding someone who might know the answer to your question. In software development, the questions are typically of a more concrete nature, relating to a specific design or implementation choice.<span id="more-347"></span></p>
<p>Most software projects depend on a great deal of local knowledge. This is knowledge that is specific to the project, something you couldn&#8217;t know prior to working on the project. This include things like architectural and design details. The local knowledge is rarely written down in an organized manner but is contained in the collective experience of the development team. Because it isn&#8217;t written down and cataloged it cannot be searched, except through the iterative query process.</p>
<p>The other problem that this commercial illustrates is that of false experts. Like Mr. Owl, you will find people who will give you a definitive answer but one that is, unfortunately, wrong. In software development, it can be very difficult to spot these wrong answers&#8211;you don&#8217;t get to see someone just bite into the Tootsie Pop to come up with it.</p>
<p>In some cases, the person may truly believe the answer they give, and we&#8217;ll assume that until we have proof to the contrary. At other times, people just don&#8217;t like to admit that they don&#8217;t know something. So, they make up an answer. In either case, the damage to your work is just as bad. </p>
<p>Folklore is typified by this kind of oral communication. It is the main method for communicating important information in primitive cultures. Knowledge is passed from one person to another. Often, because of miscommunication, the knowledge is corrupted by each successive telling. </p>
<p>It&#8217;s like that <a href="http://en.wikipedia.org/wiki/Chinese_whispers">party game where you start off with a sentence and have each person whisper it to another person</a>. This is repeated several times and then the last person writes down the sentence. In the end, the meaning of the sentence is often radically changed with comical results. The same thing happens in software development, but the results are far less comical.</p>
<p>The solution to both of these problems is to document local knowledge. One form of that is code comments. So much has been written on that topic, that I don&#8217;t feel the need to add more. However, many things are not appropriate to store in code comments. It&#8217;s that kind of knowledge that is most often passed along as folklore.</p>
<p>Fortunately, technology has given us a solution. A <a href="http://en.wikipedia.org/wiki/Wiki">wiki </a>provides a centralized knowledge repository that is edited by the group. This allows for the information to be easily reviewed for accuracy. It also eliminates the need to wander around and find someone who might know the answer to your question.</p>
<p>It also addresses another problem. Many people are hesitant to go ask questions. Either they are afraid of looking stupid, or they don&#8217;t want to trouble their coworkers. So, they will often flounder around trying to figure it out on their own, wasting time, or they will try to make due without the answer. A wiki allows people to find an answer without the potential embarrassment of exposing their ignorance. </p>
<p>To be successful, a wiki needs to be searchable and browseable. The search capability is needed to find the answer to specific questions. Browseability allows someone to view a set of topics and delve deeper to get more information. This is important to allow someone to gain the initial knowledge on a topic, particularly for getting new team members up to speed.  Most packages do a good job providing the search capability. But very few provide a good mechanism to build a browseable knowledge structure. </p>
<p>At SlickEdit, we use <a href="http://www.mediawiki.org/wiki/MediaWiki">MediaWiki </a>for our shared knowledge. It provides both an excellent search and a convenient means to organize topics. The side menu allows you to structure your top-level categories, and each page automatically includes a table of contents if it contains 4 or more subsections. This makes it simple to build a logical knowledge decomposition. It&#8217;s this capability to create a browseable structure that sets MediaWiki apart from other wiki software we tried. </p>
<p>Finding the right wiki software and setting up an initial structure is only the first step, though. The main challenge is getting the team to populate it. You face a couple of common problems here. </p>
<p>The first is the normal reluctance of programmers to document things. Many programmers despise any activity that is not directly related to producing code. This is a tough nut to crack, since this attitude is often deeply ingrained in the developers psyche. How you overcome this depends on the person and the arguments that they will listen to. You can appeal to their sense of professionalism and explain that this is part of professional development. You can appeal to their sense of teamwork and explain how this helps make the team more effective. You will need your full set of management skills to get everyone contributing.</p>
<p>Even if everyone is willing to contribute, one problem that often prevents a wiki from reaching its true potential is that of obviousness. Once you know something, it seems obvious to you. If it&#8217;s obvious, then why document it? This same problem plagues code comments. The best solution is to make the wiki an essential part of the problem solving process. When someone is trying to answer a question, they should look in the wiki. If they don&#8217;t find the answer, they should make a note to come back and add this information to the wiki after folklore has delivered an answer. </p>
<p>So, how does having a wiki alter the scenario depicted in the commercial?<br />
<strong>Boy</strong>: Hmm, I wonder how many licks does it take to get to the Tootsie Roll center of a Tootsie Pop?<br />
(Boy looks in wiki for the answer and finds an entry by Mr. Owl: &#8220;How many licks does it take to get to the Tootsie Roll center of a Tootsie Pop?  Three.&#8221;)</p>
<p>Well, at least he didn&#8217;t have to go bother curmudgeonly, old Mr. Turtle.</p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fblog.slickedit.com%2F2009%2F09%2Fdiminishing-the-role-of-folklore-in-software-development%2F';
  addthis_title  = 'Diminishing+the+Role+of+Folklore+in+Software+Development';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=T3raLheo178:YRA4iPzSFbQ:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=T3raLheo178:YRA4iPzSFbQ:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=T3raLheo178:YRA4iPzSFbQ:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=T3raLheo178:YRA4iPzSFbQ:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=T3raLheo178:YRA4iPzSFbQ:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=T3raLheo178:YRA4iPzSFbQ:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=T3raLheo178:YRA4iPzSFbQ:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=T3raLheo178:YRA4iPzSFbQ:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/helloWorld-TheSlickeditDeveloperBlog/~4/T3raLheo178" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.slickedit.com/2009/09/diminishing-the-role-of-folklore-in-software-development/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://blog.slickedit.com/2009/09/diminishing-the-role-of-folklore-in-software-development/</feedburner:origLink></item>
		<item>
		<title>My Economic Stimulus Plan: Cash for Clunky Editors</title>
		<link>http://feedproxy.google.com/~r/helloWorld-TheSlickeditDeveloperBlog/~3/WwjOo-vpOrw/</link>
		<comments>http://blog.slickedit.com/2009/08/my-economic-stimulus-plan-cash-for-clunky-editors/#comments</comments>
		<pubDate>Mon, 10 Aug 2009 16:52:59 +0000</pubDate>
		<dc:creator>Scott Westfall</dc:creator>
				<category><![CDATA[Code Editors]]></category>
		<category><![CDATA[Productivity]]></category>

		<guid isPermaLink="false">http://blog.slickedit.com/?p=339</guid>
		<description><![CDATA[As part of the economic stimulus package, the government has instituted a Cash for Clunkers program that pays people to trade in older, less fuel-efficient cars for new, more fuel-efficient ones. $1 billion was made available for this program, and it was quickly used up. So, Congress is debating allocating even more money. While the [...]]]></description>
			<content:encoded><![CDATA[<p>As part of the economic stimulus package, the government has instituted a Cash for Clunkers program that pays people to trade in older, less fuel-efficient cars for new, more fuel-efficient ones. $1 billion was made available for this program, and it was quickly used up. So, Congress is debating allocating even more money. While the government is in such a giving mood, I&#8217;d like to see a Cash for Clunky Editors program that pays people to trade in their current, less effective editor on a new, more powerful editor.</p>
<p>In terms of economic stimulus, this could have a much greater effect on the nation. Consider that many programmers use minimalist editors that provide little help to analyze and navigate their code, don&#8217;t include powerful completions, or features to cut the number of keystrokes necessary to type their code. If these programmers switched to a more powerful editor, like&#8230;oh, let&#8217;s say, SlickEdit&#8230;their productivity would go way up.<span id="more-339"></span></p>
<p>As the productivity of the individual programmers goes up, their projects would get done earlier or include more capabilities. This increases the productivity of the people using that software, which would then increase the profitability of those companies. Since software underlies almost every industry, this could lead to a potential boom, the likes of which hasn&#8217;t been seen since the post-WWII expansion. Suddenly, there&#8217;s a surge in the US GDP. We pay off the national debt in a few years and have money left over for a comprehensive public health care system.</p>
<p>And it all begins with getting people to switch to a more effective editor.</p>
<p>Unfortunately, SlickEdit isn&#8217;t big enough to warrant a special government program like this. We&#8217;re not one of those too-big-to-fail kind of companies. But that doesn&#8217;t mean you can&#8217;t experience your own little economic stimulus.</p>
<p>Look at your coding practices and see if a more powerful editor wouldn&#8217;t help you write more code faster with fewer errors. Though the government won&#8217;t pay you for switching, the boost in productivity surely will.</p>
<p><strong><br />
SlickEdit is Giving Cash for your Clunky Editor!<br />
<em>Cash for Clunky Editors Program:</em></strong></p>
<p>If the editor you purchased is lacking the <em>speed, power, and flexibility</em> SlickEdit provides…trade it in for CASH towards SlickEdit.  Call <strong>1-800-934-EDIT (3348)</strong> or email <a href="mailto:sales@slickedit.com">sales@slickedit.com</a>, and mention the Cash for Clunky Editors Program to learn about the savings.</p>
<p>The program expires on September 30<sup>th</sup>, 2009, so act quickly.</p>
<p>Happy coding,<br />
The SlickEdit Team</p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fblog.slickedit.com%2F2009%2F08%2Fmy-economic-stimulus-plan-cash-for-clunky-editors%2F';
  addthis_title  = 'My+Economic+Stimulus+Plan%3A+Cash+for+Clunky+Editors';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=WwjOo-vpOrw:--ocZgPc_pk:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=WwjOo-vpOrw:--ocZgPc_pk:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=WwjOo-vpOrw:--ocZgPc_pk:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=WwjOo-vpOrw:--ocZgPc_pk:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=WwjOo-vpOrw:--ocZgPc_pk:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=WwjOo-vpOrw:--ocZgPc_pk:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=WwjOo-vpOrw:--ocZgPc_pk:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=WwjOo-vpOrw:--ocZgPc_pk:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/helloWorld-TheSlickeditDeveloperBlog/~4/WwjOo-vpOrw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.slickedit.com/2009/08/my-economic-stimulus-plan-cash-for-clunky-editors/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://blog.slickedit.com/2009/08/my-economic-stimulus-plan-cash-for-clunky-editors/</feedburner:origLink></item>
		<item>
		<title>On Hearing and Speaking the Truth</title>
		<link>http://feedproxy.google.com/~r/helloWorld-TheSlickeditDeveloperBlog/~3/06WVxS0IOUM/</link>
		<comments>http://blog.slickedit.com/2009/07/on-hearing-and-speaking-the-truth/#comments</comments>
		<pubDate>Mon, 06 Jul 2009 13:42:42 +0000</pubDate>
		<dc:creator>Scott Westfall</dc:creator>
				<category><![CDATA[Dev Management]]></category>

		<guid isPermaLink="false">http://blog.slickedit.com/?p=327</guid>
		<description><![CDATA[I&#8217;ve worked at two kinds of companies in my career: those with open and honest communication those whose communications better resembled Soviet-style propaganda As a manager, I&#8217;ve always considered accurate information one of my most important assets. I need to know where we are and what it&#8217;s going to take to succeed. My team has [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve worked at two kinds of companies in my career:</p>
<ol>
<li>those with open and honest communication</li>
<li>those whose communications better resembled Soviet-style propaganda</li>
</ol>
<p>As a manager, I&#8217;ve always considered accurate information one of my most important assets. I need to know where we are and what it&#8217;s going to take to succeed. My team has standing orders to let me know as soon as they figure out that they&#8217;re not going to make it so we can adjust the plan.</p>
<p>I&#8217;ve always been surprised when the people I have reported to didn&#8217;t share this enthusiasm. As managers, our chief responsibility is making effective decisions to achieve the stated goals. How can you possibly do that in an environment that doesn&#8217;t encourage people to speak the truth?<span id="more-327"></span></p>
<p>On one project, we developed the following phrase to report statuses, &#8220;I know of no reason that the project won&#8217;t be completed on time.&#8221; While most of us had serious misgivings about the plan, anytime someone voiced those concerns their manager would grill them like Perry Mason trying to get a confession. In the end, you really can&#8217;t prove that things won&#8217;t get done on time, so why get worked over for nothing.</p>
<p>This predilection for denial showed up when we were asked to build a new capability in about 3 months. I did some analysis and determined that it couldn&#8217;t be done and that it would take more like 9 months. My manager wasn&#8217;t happy with that estimate, so he asked some other developers. One said he could do it, which vindicated the manager and made him happy.</p>
<p>After 3 months, the project  was starting to come together, but the core of it still had a lot of work left. So the developer told the manager that he needed a couple more months. The manager, really needing this to get done, granted the extension. That cycle repeated itself a couple of times until, in the end, the project took about 9 months to complete.</p>
<p>You would think that the manager would be upset at a developer who so seriously underestimated the amount of work needed. Instead, he was roundly praised for his can-do attitude.</p>
<p>It takes courage to speak the truth, particularly when it is an unpopular truth. Likewise, it takes courage to be willing to hear the truth, since it will often conflict with your own beliefs and desires. Being willing to speak and hear the truth has always been the hallmark of the best companies for which I have worked.</p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fblog.slickedit.com%2F2009%2F07%2Fon-hearing-and-speaking-the-truth%2F';
  addthis_title  = 'On+Hearing+and+Speaking+the+Truth';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=06WVxS0IOUM:NfYa83R6kV8:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=06WVxS0IOUM:NfYa83R6kV8:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=06WVxS0IOUM:NfYa83R6kV8:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=06WVxS0IOUM:NfYa83R6kV8:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=06WVxS0IOUM:NfYa83R6kV8:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=06WVxS0IOUM:NfYa83R6kV8:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=06WVxS0IOUM:NfYa83R6kV8:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=06WVxS0IOUM:NfYa83R6kV8:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/helloWorld-TheSlickeditDeveloperBlog/~4/06WVxS0IOUM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.slickedit.com/2009/07/on-hearing-and-speaking-the-truth/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://blog.slickedit.com/2009/07/on-hearing-and-speaking-the-truth/</feedburner:origLink></item>
		<item>
		<title>The SlickEdit Command Line</title>
		<link>http://feedproxy.google.com/~r/helloWorld-TheSlickeditDeveloperBlog/~3/fVNHqYYkOBQ/</link>
		<comments>http://blog.slickedit.com/2009/06/the-slickedit-command-line/#comments</comments>
		<pubDate>Tue, 23 Jun 2009 17:08:33 +0000</pubDate>
		<dc:creator>Jeffrey</dc:creator>
				<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[slickedit]]></category>

		<guid isPermaLink="false">http://blog.slickedit.com/?p=325</guid>
		<description><![CDATA[Use SlickEdit commands instead of the mouse to save time as you work. Open the SlickEdit command line by pressing Esc (in most emulations), type the command and any options, then press Enter. If you use a command frequently, bind it to a keyboard shortcut to save even more time. Type “Slickedit command line” in [...]]]></description>
			<content:encoded><![CDATA[<p>Use SlickEdit commands instead of the mouse to save time as you work. Open the SlickEdit command line by pressing <strong>Esc</strong> (in most emulations), type the command and any options, then press Enter. If you use a command frequently, bind it to a keyboard shortcut to save even more time. Type “Slickedit command line” in the Help Index (<strong>Help &gt; Index</strong>) to learn more.</p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fblog.slickedit.com%2F2009%2F06%2Fthe-slickedit-command-line%2F';
  addthis_title  = 'The+SlickEdit+Command+Line';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=fVNHqYYkOBQ:ZEb7mKruffs:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=fVNHqYYkOBQ:ZEb7mKruffs:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=fVNHqYYkOBQ:ZEb7mKruffs:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=fVNHqYYkOBQ:ZEb7mKruffs:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=fVNHqYYkOBQ:ZEb7mKruffs:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=fVNHqYYkOBQ:ZEb7mKruffs:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=fVNHqYYkOBQ:ZEb7mKruffs:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=fVNHqYYkOBQ:ZEb7mKruffs:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/helloWorld-TheSlickeditDeveloperBlog/~4/fVNHqYYkOBQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.slickedit.com/2009/06/the-slickedit-command-line/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.slickedit.com/2009/06/the-slickedit-command-line/</feedburner:origLink></item>
		<item>
		<title>Why does SlickEdit insert “/**/” when I type “/*” ?</title>
		<link>http://feedproxy.google.com/~r/helloWorld-TheSlickeditDeveloperBlog/~3/CQJ7KK_8cZ4/</link>
		<comments>http://blog.slickedit.com/2009/06/why-does-slickedit-insert-%e2%80%9c%e2%80%9d-when-i-type-%e2%80%9c%e2%80%9d/#comments</comments>
		<pubDate>Wed, 17 Jun 2009 15:17:52 +0000</pubDate>
		<dc:creator>Jeffrey</dc:creator>
				<category><![CDATA[Productivity]]></category>

		<guid isPermaLink="false">http://blog.slickedit.com/?p=323</guid>
		<description><![CDATA[This is to make it possible to create a multi-line comment without temporarily commenting out all the code from the /* to the end of the file or to the end of  the next already existing multi-line comment.  This makes it possible to keep your file in a syntacticly correct state.  This allows you to [...]]]></description>
			<content:encoded><![CDATA[<p><span style="color: #29303b; font-family: Arial; font-size: 12px; line-height: 18px; text-align: left;">This is to make it possible to create a multi-line comment without temporarily commenting out all the code from the /* to the end of the file or to the end of  the next already existing multi-line comment.  This makes it possible to keep your file in a syntacticly correct state.  This allows you to use things like tag navigation or statement navigation to move to the location where you want to end the comment.  When you type */ in order to close the comment, the editor will search backwards for a matching /**/ and patch things up by deleting the */ characters.  The unique thing about this technique is that it gives you the benefit of keeping your code syntactically correct without actually changing what you type to create a comment at all.  You still type /*, then move your cursor down, then type */, just like you did before.</span></p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fblog.slickedit.com%2F2009%2F06%2Fwhy-does-slickedit-insert-%25e2%2580%259c%25e2%2580%259d-when-i-type-%25e2%2580%259c%25e2%2580%259d%2F';
  addthis_title  = 'Why+does+SlickEdit+insert+%E2%80%9C%2F%2A%2A%2F%E2%80%9D+when+I+type+%E2%80%9C%2F%2A%E2%80%9D+%3F';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=CQJ7KK_8cZ4:uE5_WPkSqP0:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=CQJ7KK_8cZ4:uE5_WPkSqP0:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=CQJ7KK_8cZ4:uE5_WPkSqP0:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=CQJ7KK_8cZ4:uE5_WPkSqP0:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=CQJ7KK_8cZ4:uE5_WPkSqP0:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=CQJ7KK_8cZ4:uE5_WPkSqP0:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=CQJ7KK_8cZ4:uE5_WPkSqP0:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=CQJ7KK_8cZ4:uE5_WPkSqP0:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/helloWorld-TheSlickeditDeveloperBlog/~4/CQJ7KK_8cZ4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.slickedit.com/2009/06/why-does-slickedit-insert-%e2%80%9c%e2%80%9d-when-i-type-%e2%80%9c%e2%80%9d/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.slickedit.com/2009/06/why-does-slickedit-insert-%e2%80%9c%e2%80%9d-when-i-type-%e2%80%9c%e2%80%9d/</feedburner:origLink></item>
		<item>
		<title>Clipboard Formats</title>
		<link>http://feedproxy.google.com/~r/helloWorld-TheSlickeditDeveloperBlog/~3/07adZosbsZY/</link>
		<comments>http://blog.slickedit.com/2009/06/clipboard-formats/#comments</comments>
		<pubDate>Thu, 11 Jun 2009 14:05:48 +0000</pubDate>
		<dc:creator>Jeffrey</dc:creator>
				<category><![CDATA[Productivity]]></category>

		<guid isPermaLink="false">http://blog.slickedit.com/?p=319</guid>
		<description><![CDATA[SlickEdit supports RTF and HTML clipboard formats for Windows. This means you can paste formatted and color-coded text from SlickEdit into other applications. The HTML clipboard format type is enabled by default. You can change to the RTF format or turn the feature off completely using the Clipboard formats option (located at Tools &#62; Options [...]]]></description>
			<content:encoded><![CDATA[<p>SlickEdit supports RTF and HTML clipboard formats for Windows. This means you can paste formatted and color-coded text from SlickEdit into other applications. The HTML clipboard format type is enabled by default. You can change to the RTF format or turn the feature off completely using the <strong>Clipboard formats</strong> option (located at <strong>Tools &gt; Options &gt; Editing &gt; Selections</strong>).</p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fblog.slickedit.com%2F2009%2F06%2Fclipboard-formats%2F';
  addthis_title  = 'Clipboard+Formats';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=07adZosbsZY:qH8sSNQTVs8:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=07adZosbsZY:qH8sSNQTVs8:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=07adZosbsZY:qH8sSNQTVs8:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=07adZosbsZY:qH8sSNQTVs8:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=07adZosbsZY:qH8sSNQTVs8:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=07adZosbsZY:qH8sSNQTVs8:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=07adZosbsZY:qH8sSNQTVs8:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=07adZosbsZY:qH8sSNQTVs8:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/helloWorld-TheSlickeditDeveloperBlog/~4/07adZosbsZY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.slickedit.com/2009/06/clipboard-formats/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.slickedit.com/2009/06/clipboard-formats/</feedburner:origLink></item>
		<item>
		<title>…But It’s More Fun to Reinvent the Wheel</title>
		<link>http://feedproxy.google.com/~r/helloWorld-TheSlickeditDeveloperBlog/~3/Uw2ldGwp7Ew/</link>
		<comments>http://blog.slickedit.com/2009/06/but-its-more-fun-to-reinvent-the-wheel/#comments</comments>
		<pubDate>Thu, 04 Jun 2009 17:17:44 +0000</pubDate>
		<dc:creator>Scott Westfall</dc:creator>
				<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://blog.slickedit.com/?p=309</guid>
		<description><![CDATA[&#8220;Reinventing the wheel&#8221; is used as a common metaphor in software development for rewriting code that has already been written. For example, SlickEdit contains a number of features that traverse directories and process files, including Find in Files, DIFFzilla, Add Tree, and more. In each case the syntax used to exlclude files or directories is [...]]]></description>
			<content:encoded><![CDATA[<p>&#8220;Reinventing the wheel&#8221; is used as a common metaphor in software development for rewriting code that has already been written. For example, SlickEdit contains a number of features that traverse directories and process files, including Find in Files, DIFFzilla, Add Tree, and more. In each case the syntax used to exlclude files or directories is different. Sometimes the exclude specs are space delimited; sometimes they are delimited with semi-colons. Some require the use of asterisks to specify a directory; some don&#8217;t.</p>
<p>The basic reason for this is that each feature was written in isolation without finding and reusing the capabilities of the other features. This is a very common problem on most software projects. To address this issue, I believe that software development should be broken down into two different workflows: mechanism application and mechanism creation.</p>
<p>We can define a mechanism as a component with a cohesive set of functionality, like the wheel. In most cases, mechanisms are meant to be reusable, though it is possible that there will be only one use for that mechanism in a particular program. Common mechanisms in software include login processors, calendar widgets, and sorted lists. These elements perform a specific function that is independent of what they are used for.</p>
<p>Mechanisms can also be specific solutions to common design problems, like error logging, object persistence, and thread synchronization. Ideally, these would be encapsulated in a library that is used by other developers, but in some instances it is more a matter of following a specified convention.</p>
<p>For example, one project I worked on specified that each function would contain #ifdefs for tracing and logging with specific information that each function should output. This still represents a mechanism that defines a cohesive functionality, in this case, tracing. But instead of writing a reusable library, the mechanism was primarily a set of conventions we all followed when writing our functions.</p>
<p>During mechanism application, the specialized functionality of a feature is built using existing mechanisms. You can work on your own unless you have a question about the specs or need assistance from another developer. The code being written is unique to the feature, so little attention is given to reuse unless a new mechanism is needed. Then you enter mechanism creation.</p>
<p>During mechanism creation, you are developing a generalized capability that is specifically intended to be reusable. This requires a totally different workflow. You have to stop and do a degree of analysis before you create the new mechanism. Several questions need to be answered. Are you sure there isn&#8217;t already a mechanism for this? If not, what are the essential behaviors of this mechanism? Where should it be stored?</p>
<p>These questions are best addressed with other members of the team. The goal is to produce a mechanism that can be used by everyone, not just by you. So, you need to get their input to make sure it does more than meet your immediate needs, or at least doesn&#8217;t prevent someone from extending it in the future.</p>
<p>When a developer tackles the new mechanism as part of their normal development, two common problems occur. Often the programmer includes the mechanism as part of the feature-specific code, rather than placing the mechanism into the library where others can find it. Even when they do put the code in the proper place, it often is written in such a way that it is only useful for this feature. You can&#8217;t make it reusable without breaking the feature that already depends on it.</p>
<p>In most applications, mechanism application is very straightforward, simple programming and requires little creativity. Mechanism creation, on the other hand, requires a great deal of creativity and design effort. You have to think more about algorithms and efficiency.</p>
<p>So why don&#8217;t programmers naturally break their work into these separate workflows? I think there are a number of explanations.</p>
<p>First, I think programmers get very focused on completing a feature. If they have to interrupt that work to enter the slower and more deliberate workflow required to create a new mechanism, then it delays the attainment of their goal.</p>
<p>Secondly, programmers like to program. Designing reusable components requires meetings, documentation, and reviews&#8211;all of which get in the way of programming.</p>
<p>Thirdly, most programmers aren&#8217;t too keen on collaboration. When you talk things over in a group, you have a chance of not getting your way. If you just build it yourself, you can do it the way you think it should be done.</p>
<p>Finally, by separating the two workflows, the creation of a needed mechanism might be assigned to a different programmer. Since the creation of these mechanisms is often more challenging and, therefore, more fun; developers are hesitant to initiate a workflow that would potentially deprive them of this fun.</p>
<p>Basically, it&#8217;s more fun to reinvent the wheel than to determine whether a suitable wheel already exists. If the wheel does need to be invented, it&#8217;s less fun to do it with a committee of your peers who may disagree with your vision for the wheel.</p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fblog.slickedit.com%2F2009%2F06%2Fbut-its-more-fun-to-reinvent-the-wheel%2F';
  addthis_title  = '%26%238230%3BBut+It%26%238217%3Bs+More+Fun+to+Reinvent+the+Wheel';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=Uw2ldGwp7Ew:XHkiZhXUHU4:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=Uw2ldGwp7Ew:XHkiZhXUHU4:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=Uw2ldGwp7Ew:XHkiZhXUHU4:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=Uw2ldGwp7Ew:XHkiZhXUHU4:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=Uw2ldGwp7Ew:XHkiZhXUHU4:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=Uw2ldGwp7Ew:XHkiZhXUHU4:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=Uw2ldGwp7Ew:XHkiZhXUHU4:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=Uw2ldGwp7Ew:XHkiZhXUHU4:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/helloWorld-TheSlickeditDeveloperBlog/~4/Uw2ldGwp7Ew" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.slickedit.com/2009/06/but-its-more-fun-to-reinvent-the-wheel/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.slickedit.com/2009/06/but-its-more-fun-to-reinvent-the-wheel/</feedburner:origLink></item>
		<item>
		<title>No Small Changes</title>
		<link>http://feedproxy.google.com/~r/helloWorld-TheSlickeditDeveloperBlog/~3/gUFv5ud8kak/</link>
		<comments>http://blog.slickedit.com/2009/05/no-small-changes/#comments</comments>
		<pubDate>Thu, 14 May 2009 15:12:19 +0000</pubDate>
		<dc:creator>Scott Westfall</dc:creator>
				<category><![CDATA[Dev Management]]></category>
		<category><![CDATA[SlickEdit Products]]></category>

		<guid isPermaLink="false">http://blog.slickedit.com/?p=296</guid>
		<description><![CDATA[Recent experiences with SlickEdit 2009 have reminded me that there are no small changes. Even when you think you understand the nature of a change, severe side-effects can pop up in complex software. This was the case when we put out our first release of SlickEdit 2009, version 14.0.0.5. We had completed our usual beta [...]]]></description>
			<content:encoded><![CDATA[<p>Recent experiences with SlickEdit 2009 have reminded me that there are no small changes. Even when you think you understand the nature of a change, severe side-effects can pop up in complex software.</p>
<p>This was the case when we put out our first release of SlickEdit 2009, version 14.0.0.5. We had completed our usual beta cycle before releasing this version, which included a number of drops to correct reported problems. After the last beta drop, we made a few more changes, all of which seemed totally risk-free.</p>
<p>Within two hours of releasing SlickEdit 2009, we had reports of severe problems with the File tabs and the File list. These problems trace back to one of these simple, risk-free changes. We had done our normal testing after these changes, and we hadn&#8217;t discovered any problems. But this problem was so severe we had to pull the release until it could be fixed.</p>
<p>So, what did we learn from this?</p>
<p>First, there are no small changes. Even when you think you know the effect a change will have, you could be wrong.</p>
<p>Should we have tested more? Sure, you can always test more, but that is no guarantee that you will find a problem. Testing suffers from a horizon effect: you can only see as far as you test. The problem you need to find could lay just beyond or miles beyond. You don&#8217;t know until you find it.</p>
<p>Second, testing is different than using. When you are testing, you click all the buttons and try all the functions, but you are rarely able to perform all combinations of operations. Some problems depend on the order in which operations are invoked. Others require multiple operations before the problem surfaces, as was the case with the problem we missed.</p>
<p>It should be no surprise that the parts of SlickEdit that work the best are the things we use everyday. But there are many languages we don&#8217;t use on a daily basis. Even if we did, with a product like SlickEdit, our testing cannot hope to replicate the variety and complexity of our customers&#8217; use patterns.</p>
<p>We&#8217;ve determined that prior to shipping any release, we need help validating it. So, we&#8217;ll create a Release Candidate when we have finished our testing. We&#8217;ll make the Release Candidate available for early adopters to test, and if all goes well, it will be used for the General Availability release. In this way, we hope to catch more problems before they are set free to roam the countryside and terrorize the populace.</p>
<p><strong>Q&amp;A</strong></p>
<p><strong>Does that mean you&#8217;ve given up on testing? </strong>No, we plan to continue testing just as we always have. We just need help with final validation.</p>
<p><strong>What if I don&#8217;t have time to help you catch problems?</strong> Then wait until a release is no longer a release candidate. At that point, others will have helped to validate it, and you will have less likelihood of experiencing issues with a new version.</p>
<p><strong>If an unladen swallow flies west from New York&#8230;</strong></p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fblog.slickedit.com%2F2009%2F05%2Fno-small-changes%2F';
  addthis_title  = 'No+Small+Changes';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=gUFv5ud8kak:Kmn5dLCBPMA:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=gUFv5ud8kak:Kmn5dLCBPMA:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=gUFv5ud8kak:Kmn5dLCBPMA:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=gUFv5ud8kak:Kmn5dLCBPMA:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=gUFv5ud8kak:Kmn5dLCBPMA:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=gUFv5ud8kak:Kmn5dLCBPMA:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=gUFv5ud8kak:Kmn5dLCBPMA:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=gUFv5ud8kak:Kmn5dLCBPMA:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/helloWorld-TheSlickeditDeveloperBlog/~4/gUFv5ud8kak" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.slickedit.com/2009/05/no-small-changes/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://blog.slickedit.com/2009/05/no-small-changes/</feedburner:origLink></item>
		<item>
		<title>S-Expression Navigation</title>
		<link>http://feedproxy.google.com/~r/helloWorld-TheSlickeditDeveloperBlog/~3/Yc6vf-dKLDk/</link>
		<comments>http://blog.slickedit.com/2009/05/s-expression-navigation/#comments</comments>
		<pubDate>Mon, 11 May 2009 16:40:13 +0000</pubDate>
		<dc:creator>Jeffrey</dc:creator>
				<category><![CDATA[Productivity]]></category>

		<guid isPermaLink="false">http://blog.slickedit.com/?p=294</guid>
		<description><![CDATA[Commands (and key bindings) are available for Emacs-like S-expression navigation. These work in all emulations. The next_sexp (Ctrl+Alt+Right) and prev_sexp (Ctrl+Alt+Left) commands can be compared to next_word and prev_word, except that they treat blocks as words.  The backward_up_sexp (Ctrl+Alt+Up) command is the shortcut for navigating to the start of the immediately enclosing block (in Lisp, this would [...]]]></description>
			<content:encoded><![CDATA[<p>Commands (and key bindings) are available for Emacs-like S-expression navigation. These work in all emulations.</p>
<ul>
<li>The <strong>next_sexp</strong> (Ctrl+Alt+Right) and <strong>prev_sexp</strong> (Ctrl+Alt+Left) commands can be compared to <strong>next_word</strong> and <strong>prev_word</strong>, except that they treat blocks as words.</li>
<li> The <strong>backward_up_sexp</strong> (Ctrl+Alt+Up) command is the shortcut for navigating to the start of the immediately enclosing block (in Lisp, this would be the open paren).</li>
<li>The <strong>forward_down_sexp</strong> (Ctrl+Alt+Down) command is used to drill into a block. If the cursor is at the start of a block, it moves the cursor to the first S-expression within the block; otherwise, it behaves like next_sexp.</li>
<li>The commands <strong>select_prev_sexp</strong> (Ctrl+Alt+Shift+Left) and <strong>select_next_sexp</strong> (Ctrl+Alt+Shift+Right) extend a character selection from the cursor position to the start of the next or previous S-expression, respectively. Like the Shift+Cursor commands do to CUA style selections, if executed repeatedly, they will extend the current character selection.</li>
<li> The <strong>cut_prev_sexp</strong> (Ctrl+Alt+Backspace) command will delete the S-expression to the left of the cursor and copy it to the clipboard. Again, if called repeatedly, this will prepend the subsequent deletions to the clipboard.</li>
</ul>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fblog.slickedit.com%2F2009%2F05%2Fs-expression-navigation%2F';
  addthis_title  = 'S-Expression+Navigation';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=Yc6vf-dKLDk:11nBpAUC8Qo:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=Yc6vf-dKLDk:11nBpAUC8Qo:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=Yc6vf-dKLDk:11nBpAUC8Qo:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=Yc6vf-dKLDk:11nBpAUC8Qo:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=Yc6vf-dKLDk:11nBpAUC8Qo:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=Yc6vf-dKLDk:11nBpAUC8Qo:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=Yc6vf-dKLDk:11nBpAUC8Qo:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=Yc6vf-dKLDk:11nBpAUC8Qo:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/helloWorld-TheSlickeditDeveloperBlog/~4/Yc6vf-dKLDk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.slickedit.com/2009/05/s-expression-navigation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.slickedit.com/2009/05/s-expression-navigation/</feedburner:origLink></item>
		<item>
		<title>How to Beat Down an “else” Statement in Three Keystrokes</title>
		<link>http://feedproxy.google.com/~r/helloWorld-TheSlickeditDeveloperBlog/~3/nX4QOfx17AI/</link>
		<comments>http://blog.slickedit.com/2009/04/how-to-beat-down-an-else-statement-in-three-keystrokes/#comments</comments>
		<pubDate>Tue, 28 Apr 2009 13:52:40 +0000</pubDate>
		<dc:creator>Jeffrey</dc:creator>
				<category><![CDATA[Productivity]]></category>

		<guid isPermaLink="false">http://blog.slickedit.com/?p=286</guid>
		<description><![CDATA[Suppose you want to get from something like this:          if ( cond ) {           doSomething();        } else {           goSomewhere();           doSomethingElse();           comeBack();           takeANap();        }   To [...]]]></description>
			<content:encoded><![CDATA[<div>Suppose you want to get from something like this:</div>
<div> </div>
<div>       if ( cond ) {</div>
<div>          doSomething();</div>
<div>       } else {</div>
<div>          goSomewhere();</div>
<div>          doSomethingElse();</div>
<div>          comeBack();</div>
<div>          takeANap();</div>
<div>       }</div>
<div> </div>
<div>To this:</div>
<div> </div>
<div>       if ( cond ) {</div>
<div>          doSomething();</div>
<div>       }</div>
<div>       goSomewhere();</div>
<div>       doSomethingElse();</div>
<div>       comeBack();</div>
<div>       takeANap();</div>
<p>
<div>
1. First, put your cursor on else and press Ctrl+Shift+Right to select it.</div>
<div>2. Press Enter.</div>
<div>3. Press Ctrl+Delete, and select Unsurround the code block.</div>
<p></p>
<div>Though Unsurround does not normally apply to else blocks, this example shows how you can manipulate your code to make a feature work for you in order to save time.</div>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fblog.slickedit.com%2F2009%2F04%2Fhow-to-beat-down-an-else-statement-in-three-keystrokes%2F';
  addthis_title  = 'How+to+Beat+Down+an+%26%238220%3Belse%26%238221%3B+Statement+in+Three+Keystrokes';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=nX4QOfx17AI:ehHb8ZLItKg:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=nX4QOfx17AI:ehHb8ZLItKg:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=nX4QOfx17AI:ehHb8ZLItKg:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=nX4QOfx17AI:ehHb8ZLItKg:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=nX4QOfx17AI:ehHb8ZLItKg:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=nX4QOfx17AI:ehHb8ZLItKg:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=nX4QOfx17AI:ehHb8ZLItKg:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=nX4QOfx17AI:ehHb8ZLItKg:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/helloWorld-TheSlickeditDeveloperBlog/~4/nX4QOfx17AI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.slickedit.com/2009/04/how-to-beat-down-an-else-statement-in-three-keystrokes/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://blog.slickedit.com/2009/04/how-to-beat-down-an-else-statement-in-three-keystrokes/</feedburner:origLink></item>
		<item>
		<title>I miss paper</title>
		<link>http://feedproxy.google.com/~r/helloWorld-TheSlickeditDeveloperBlog/~3/j0ua1sqPvX0/</link>
		<comments>http://blog.slickedit.com/2009/04/i-miss-paper/#comments</comments>
		<pubDate>Thu, 23 Apr 2009 15:07:41 +0000</pubDate>
		<dc:creator>Scott Hackett</dc:creator>
				<category><![CDATA[Other]]></category>

		<guid isPermaLink="false">http://blog.slickedit.com/?p=275</guid>
		<description><![CDATA[I do my best to keep up with the latest technology and I like to read a lot about what&#8217;s going on in the world of programming.  However, I also have a limited amount of time to read.  Lately, I&#8217;ve been taking a hard look at my reading habits.  This is usually made up of [...]]]></description>
			<content:encoded><![CDATA[<p>I do my best to keep up with the latest technology and I like to read a lot about what&#8217;s going on in the world of programming.  However, I also have a limited amount of time to read.  Lately, I&#8217;ve been taking a hard look at my reading habits.  This is usually made up of going to my favorite group-think sites like <a href="http://www.reddit.com/r/programming/">reddit</a>, <a href="http://digg.com/programming">digg</a> or <a href="http://www.stumbleupon.com/tag/programming/">stumbleupon</a> and see what the latest programming blog posts are.  Over the last few years more and more of my reading has turned to blogs.  It feels more in touch with the community as a whole and keeps me on the edge of what&#8217;s going on.</p>
<p>The let down happened when I started thinking about the content of what I&#8217;m reading now versus what I was reading about 5-10 years ago.  Blog content is great, but it&#8217;s like reading a newspaper that&#8217;s nothing but a big editorial section.  Most posts are packed with unfiltered content that often falls into one of two categories; &#8220;You know what I think?&#8221; and &#8220;This is cool, check this out!&#8221;.   Both types of blog post are great and I&#8217;ve spent many, many hours reading these.  When I really thought about the content I&#8217;m reading though, I realized that I&#8217;m actually <strong>learning</strong> a lot less than I used to.  That wasn&#8217;t the only problem either.  Reading primarily in the browser has turned me into a skimmer, something I rarely used to do.  There&#8217;s so much pure bloggage out there that you have to skim and filter what&#8217;s worth reading and what&#8217;s not.  While that&#8217;s not awful in itself, I&#8217;ve noticed that I tend to retain a lot less when I read this way.  I also found that reading the blogs was only half of the reading I was doing.  The rest was reading people&#8217;s comments about what I had just read.  I can easily spend more time reading that than reading actual blog content.</p>
<p>At some point in your life, you say things or do things that make you think to yourself, &#8220;I&#8217;m really getting old.&#8221;  Everything is turning digital now.  Do I sound old yet?  In addition to programming, I&#8217;ve been a photographer for a long time, almost thirty years.  I started back in high school doing black and white film and eventually built a darkroom in my house.  About three years ago, I realized that buying film, paper and chemicals and spending countless hours in that darkroom could be replaced by spending a fraction of the time, at no cost, in front of my computer with Photoshop.  It was a sad realization, but I moved on to a digital SLR and turned the darkroom back into the original walk-in closet.  The only thing missing from Photoshop is actually feeling the film and the paper.  It may not sound like much, but after so many years I can say that those things are significant.  There&#8217;s something about handling the materials that puts you in touch with the process, and I haven&#8217;t found a replacement for that yet when I &#8220;develop&#8221; my photos the computer.</p>
<p>Reading is the same way.  There&#8217;s something about sitting down with a book that puts you in the mode of committing to read.  I can&#8217;t browse away from what I&#8217;m reading in a book with the click of a mouse.  Actually opening the book, holding it in my lap and turning the pages makes me feel like I&#8217;m ready to learning something new.  This is all about the experience of reading, and retaining what you read, without distraction.  It&#8217;s the same reason I wasn&#8217;t allowed to do my homework with the TV on when I was in school.  I can say for sure that I retain more when I read a book than when I read a blog at the computer.</p>
<p>Most computer books are also directed at actually teaching something.  Whether it&#8217;s a book about <a href="http://www.amazon.com/C-Programming-Language-Special-3rd/dp/0201700735/ref=sr_1_2?ie=UTF8&amp;s=books&amp;qid=1240491169&amp;sr=8-2">a programming language</a>, <a href="http://www.amazon.com/Design-Patterns-Object-Oriented-Addison-Wesley-Professional/dp/0201633612/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1240491211&amp;sr=8-1">a way of approaching design</a>, or <a href="http://www.amazon.com/Code-Complete-Practical-Handbook-Construction/dp/0735619670/ref=sr_1_8?ie=UTF8&amp;s=books&amp;qid=1240491211&amp;sr=8-8">how to see a development project through to completion</a>, most books teach.  However, it&#8217;s a rare occasion when a blog post really teaches you something.  Opinion pieces are great and have their place, but when the scale tips from spending time reading books to reading blog posts, you&#8217;re also tipping the the scale of how much you&#8217;re learning.</p>
<p>So now you&#8217;ve read a blog post about why you should try to read less blog posts.  You should probably eat more green vegetables and get eight hours of sleep each night, but I&#8217;ll save that for another post.  I&#8217;m going to try to make a change in my blogging, and do more writing that leaves readers with something more useful than a simple conversation piece.  Until then, try turning off the browser and go pick up a book&#8230; the trees will forgive you.</p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fblog.slickedit.com%2F2009%2F04%2Fi-miss-paper%2F';
  addthis_title  = 'I+miss+paper';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=j0ua1sqPvX0:MGNLh7G_ElY:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=j0ua1sqPvX0:MGNLh7G_ElY:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=j0ua1sqPvX0:MGNLh7G_ElY:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=j0ua1sqPvX0:MGNLh7G_ElY:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=j0ua1sqPvX0:MGNLh7G_ElY:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=j0ua1sqPvX0:MGNLh7G_ElY:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=j0ua1sqPvX0:MGNLh7G_ElY:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=j0ua1sqPvX0:MGNLh7G_ElY:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/helloWorld-TheSlickeditDeveloperBlog/~4/j0ua1sqPvX0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.slickedit.com/2009/04/i-miss-paper/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://blog.slickedit.com/2009/04/i-miss-paper/</feedburner:origLink></item>
		<item>
		<title>Interactively Write and Test Regular Expressions</title>
		<link>http://feedproxy.google.com/~r/helloWorld-TheSlickeditDeveloperBlog/~3/pUQhb7xWeYU/</link>
		<comments>http://blog.slickedit.com/2009/04/interactively-write-and-test-regular-expressions/#comments</comments>
		<pubDate>Thu, 16 Apr 2009 17:04:18 +0000</pubDate>
		<dc:creator>Jeffrey</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.slickedit.com/?p=272</guid>
		<description><![CDATA[Sometimes it&#8217;s hard to figure out the exact regular expression to write that will get the job done. With the Regex Evaluator tool window, SlickEdit provides a convenient method for creating, saving, and re-using tests of regular expressions.  To display the window, from the main menu, click Tools &#62; Regex Evaluator. Enter some sample text [...]]]></description>
			<content:encoded><![CDATA[<p>Sometimes it&#8217;s hard to figure out the exact regular expression to write that will get the job done. With the Regex Evaluator tool window, SlickEdit provides a convenient method for creating, saving, and re-using tests of regular expressions. </p>
<p>To display the window, from the main menu, click <strong>Tools &gt; Regex Evaluator</strong>. Enter some sample text in the top area. Select the type of regular expression syntax to use, then enter your expression pattern in the bottom field. Matching patterns in the test case are indicated with a wavy underline. Groups (tagged expressions) are indicated with a boxed yellow highlight.</p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fblog.slickedit.com%2F2009%2F04%2Finteractively-write-and-test-regular-expressions%2F';
  addthis_title  = 'Interactively+Write+and+Test+Regular+Expressions';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=pUQhb7xWeYU:XS5jMuSMpmA:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=pUQhb7xWeYU:XS5jMuSMpmA:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=pUQhb7xWeYU:XS5jMuSMpmA:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=pUQhb7xWeYU:XS5jMuSMpmA:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=pUQhb7xWeYU:XS5jMuSMpmA:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=pUQhb7xWeYU:XS5jMuSMpmA:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=pUQhb7xWeYU:XS5jMuSMpmA:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=pUQhb7xWeYU:XS5jMuSMpmA:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/helloWorld-TheSlickeditDeveloperBlog/~4/pUQhb7xWeYU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.slickedit.com/2009/04/interactively-write-and-test-regular-expressions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.slickedit.com/2009/04/interactively-write-and-test-regular-expressions/</feedburner:origLink></item>
		<item>
		<title>Want to Learn Vim?</title>
		<link>http://feedproxy.google.com/~r/helloWorld-TheSlickeditDeveloperBlog/~3/cJEqjPSV4VM/</link>
		<comments>http://blog.slickedit.com/2009/04/want-to-learn-vim/#comments</comments>
		<pubDate>Tue, 14 Apr 2009 15:09:07 +0000</pubDate>
		<dc:creator>Jeffrey</dc:creator>
				<category><![CDATA[Productivity]]></category>

		<guid isPermaLink="false">http://blog.slickedit.com/?p=268</guid>
		<description><![CDATA[Did You Know? SlickEdit provides an emulation mode for the Vim text editor. If you want to learn Vim, or need to hone your skills, you can use the vimtutor command. Most Vim installations come with this command, which displays a special &#8220;learn-by-doing&#8221; practice file in the editor that you can can actually edit as [...]]]></description>
			<content:encoded><![CDATA[<p class="NormalText"><strong>Did You Know?</strong></p>
<p class="NormalText">SlickEdit provides an emulation mode for the Vim text  editor. If you want to learn Vim, or need to hone your skills, you can use the <span><strong class="command">vimtutor</strong></span> command. Most Vim installations come with  this command, which displays a special &#8220;learn-by-doing&#8221; practice file in the  editor that you can can actually edit as you learn how to use the Vim commands.  This file has been customized for SlickEdit users.</p>
<p class="NormalText">To use the command, open the SlickEdit command line, then  type the command and press <span><strong class="keycap">Enter</strong></span>. The  practice file is displayed in the editor. Each time you use the <span><strong class="command">vimtutor</strong></span> command, SlickEdit creates a fresh copy  of this file.</p>
<p class="NormalText">
<h3 class="admon">Tip</h3>
<p class="CellBody"> </p>
<div class="itemizedlist">
<ul type="disc">
<li>
<p class="NormalText">You will be prompted to switch to the Vim emulation when you  invoke the command if the editor is set to a different emulation. </p>
</li>
<li>
<p class="NormalText">When in the Vim emulation, you can open the SlickEdit  command line with <span><strong class="keycap">Ctrl</strong></span>+<span><strong class="keycap">A</strong></span>, or in any emulation, by clicking in the message  area with the mouse. See <a>Activating the Command  Line</a> for more information.</p>
</li>
</ul>
</div>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fblog.slickedit.com%2F2009%2F04%2Fwant-to-learn-vim%2F';
  addthis_title  = 'Want+to+Learn+Vim%3F';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=cJEqjPSV4VM:uDPxY7LuDYs:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=cJEqjPSV4VM:uDPxY7LuDYs:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=cJEqjPSV4VM:uDPxY7LuDYs:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=cJEqjPSV4VM:uDPxY7LuDYs:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=cJEqjPSV4VM:uDPxY7LuDYs:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=cJEqjPSV4VM:uDPxY7LuDYs:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=cJEqjPSV4VM:uDPxY7LuDYs:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=cJEqjPSV4VM:uDPxY7LuDYs:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/helloWorld-TheSlickeditDeveloperBlog/~4/cJEqjPSV4VM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.slickedit.com/2009/04/want-to-learn-vim/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.slickedit.com/2009/04/want-to-learn-vim/</feedburner:origLink></item>
		<item>
		<title>Software Under Construction</title>
		<link>http://feedproxy.google.com/~r/helloWorld-TheSlickeditDeveloperBlog/~3/slShCWpQQgY/</link>
		<comments>http://blog.slickedit.com/2009/02/software-under-construction/#comments</comments>
		<pubDate>Tue, 10 Feb 2009 15:15:34 +0000</pubDate>
		<dc:creator>Scott Hackett</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.slickedit.com/?p=258</guid>
		<description><![CDATA[This week, our office is being remodeled.  Not just adding a couch here or a plant there&#8230; entire walls are being knocked down and the concrete floors are being cut.  It&#8217;s loud and disruptive and the whole place is a mess.  Having a construction crew at work amongst a group of software developers has been [...]]]></description>
			<content:encoded><![CDATA[<p>This week, our office is being remodeled.  Not just adding a couch here or a plant there&#8230; entire walls are being knocked down and the concrete floors are being cut.  It&#8217;s loud and disruptive and the whole place is a mess.  Having a construction crew at work amongst a group of software developers has been an interesting experience.  These guys work with real materials.  They cut down real drywall and set real concrete.  We work with text.  We edit, copy and paste, undo, refactor, revert, save and compile. In the end, though, we do pretty much the same thing.  We&#8217;re both either working on creating or restructuring something to meet someone&#8217;s requirements.  Having these guys around has made me realize some things I&#8217;d forgotten about and a few things I&#8217;d never thought about before.</p>
<p><strong>Blueprints</strong></p>
<p>One of the first things I noticed was that whenever I walk past the area where the construction guys are working on, there are always blueprints around.  Serious blueprints, not just stuff scribbled in a notebook.  Someone had taken the time to document in great detail every angle and aspect of even the most boring places in our office.  How often have you ever seen such blueprint level detail in software design documentation?  It&#8217;s rarely done, and if it is, it&#8217;s rarely maintained.  There are many times when I wished I&#8217;d just done the work of writing down my thoughts as I coded, so that if I needed to revise that code in the future, I&#8217;d have a blueprint of what was there.  It&#8217;s obviously important enough for the construction workers to insist on, why not software engineers?  Most of the code I&#8217;ve ever seen or worked on is barely commented, let alone designed or modeled.</p>
<p><strong>Diff, undo and revert</strong></p>
<p>Of course, for construction, having the blueprint level of detail is essential.  For them, there is no <em>Undo </em>command.  If you&#8217;re cutting drywall and you saw through a main electrical line or cut a key structural support, there&#8217;s no way to easily fix that problem.  If there&#8217;s one thing I learned from watching &#8220;This Old House&#8221;, it&#8217;s that when you build something, you measure twice and cut once.  For us software developers, we have a whole arsenal of life saving techniques.  Diff, undo and revert are all things we do when we&#8217;ve gone down the wrong path.  I joke sometimes that I wish everything in life had an undo command.  Unfortunately, these things have also made us lazy (there, I said it).  Diff, revert and automated refactoring have caused many software developers to stop measuring at all before cutting.  Admit it, if compiling refactored code could potentially cause the roof to collapse, we&#8217;d be a lot better at verifying correctness by:</p>
<ol>
<li>Reading documentation and notes written by other developers whose functions and classes our code relies on.</li>
<li>Documenting the functions and classes we write so that others will use them correctly.</li>
</ol>
<p>These are easy things to do that can potentially save a lot of time in future coding work.<br />
<strong><br />
Frog in the Well</strong></p>
<p>There&#8217;s a riddle about a frog trying to get out of a well who can jump up three feet, but then falls back two feet.  The more times you cut without measuring, or edit without designing, the more you increase the chance that you will make the wrong cut.  For construction workers, making a wrong cut is absolutely disastrous.  For software engineers, making the wrong cut means backing out and trying again.  It&#8217;s easy to forget that there&#8217;s a cost to reverting and refactoring; the time you spent writing what is being undone.  I&#8217;ve known software engineers that program like the frog trying to get out of that well.</p>
<p>Being able to back out of changes is a luxury that shouldn&#8217;t be taken lightly. There will always be times when it&#8217;s necessary, but it&#8217;s important to understand why it&#8217;s necessary.  The next time you have to revert or refactor, ask yourself how much time you lost writing the original code that had to be changed.  How much time could have been saved by designing the code before writing it.  How much time will be lost in the future if you don&#8217;t document why you had to revert or refactor?  If you wrote some code that you realized later was a mistake, what will keep other developers from making the same mistake in the future?</p>
<p>Don&#8217;t be the frog in the well.  Take a tip from our friends, the construction workers, and provide a plan for the code you intend to create or restructure.  Put it somewhere where everyone can get to it, and finally, tell everyone it&#8217;s there.  Not only will you benefit from the fore-thought of your design, but other developers will benefit from your insight before working on the same code.</p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fblog.slickedit.com%2F2009%2F02%2Fsoftware-under-construction%2F';
  addthis_title  = 'Software+Under+Construction';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=slShCWpQQgY:Rz3qgbdBkZU:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=slShCWpQQgY:Rz3qgbdBkZU:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=slShCWpQQgY:Rz3qgbdBkZU:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=slShCWpQQgY:Rz3qgbdBkZU:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=slShCWpQQgY:Rz3qgbdBkZU:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=slShCWpQQgY:Rz3qgbdBkZU:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=slShCWpQQgY:Rz3qgbdBkZU:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=slShCWpQQgY:Rz3qgbdBkZU:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/helloWorld-TheSlickeditDeveloperBlog/~4/slShCWpQQgY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.slickedit.com/2009/02/software-under-construction/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://blog.slickedit.com/2009/02/software-under-construction/</feedburner:origLink></item>
		<item>
		<title>Monkey or Rooster: Annual Reviews and the Chinese Zodiac</title>
		<link>http://feedproxy.google.com/~r/helloWorld-TheSlickeditDeveloperBlog/~3/oaAyKjD0gSs/</link>
		<comments>http://blog.slickedit.com/2009/01/monkey-or-rooster-annual-reviews-and-the-chinese-zodiac/#comments</comments>
		<pubDate>Wed, 14 Jan 2009 16:02:09 +0000</pubDate>
		<dc:creator>Scott Westfall</dc:creator>
				<category><![CDATA[Dev Management]]></category>

		<guid isPermaLink="false">http://blog.slickedit.com/?p=257</guid>
		<description><![CDATA[It’s my favorite time of the year, again: time for annual reviews! Hopefully, you could hear the sound of sarcasm dripping from each word in that sentence. I don’t know anyone who looks forward to annual reviews. As a manager, I dread this more than others. Not only do I get to have my own [...]]]></description>
			<content:encoded><![CDATA[<p>It’s my favorite time of the year, again: time for annual reviews!</p>
<p>Hopefully, you could hear the sound of sarcasm dripping from each word in that sentence. I don’t know anyone who looks forward to annual reviews. As a manager, I dread this more than others. Not only do I get to have my own review, but I get to do the review for all of those who report to me.</p>
<p>I have to say that doing annual reviews falls somewhere between performing a root canal on myself and suffering through reruns of “Little House on the Prairie”. I know that seems like a broad area of pain, unless you hate that show as much as I do.</p>
<p>The chief reason for this angst is that no one, it seems, is ever happy with their review. Maybe that’s a good sign that I’m taking the process seriously and trying to really evaluate my team members’ strengths and weaknesses. Maybe that means I’m an overly critical [insert epithet here]. Believe me, nothing would be easier than telling everybody that they rock and just send them back to their cubicles.</p>
<p>I can’t bring myself to do that, though. I have to try to make this a meaningful event. To grow, everyone needs to know where they are strong and where they are weak. How many people realistically have no areas they cannot improve on?</p>
<p>Aside from the discomfort of doing an honest assessment of someone, the biggest problem in most review systems is that the scores are arbitrary and meaningless. At most companies, there is no effort to baseline scores or set a reasonable standard for what they mean.</p>
<p>At one company, we used a complex review system with 16 different ratings in 5 areas. Each was assigned a value from 1 to 10 with a 10 being the best score. When I had finished the reviews for my team, most scores ranged from 5 to 10 with a reasonable bell-shaped distribution. So, 7 and 8 were far more common than 5, 6, 9, and 10. I later learned that another manager had simply gone through and given his people all 9’s and 10’s. Since the raises were tied to scores, his people got bigger raises than mine.</p>
<p>I could have saved so much time and so much aggravation by just doing the same thing. Obviously the company didn’t care. They never said anything to me that my scores were unduly low or that his were unreasonably high.</p>
<p>It makes me miss the simple scoring systems used in college. There you are given a course syllabus that outlines the structure of your grade. It shows what percentage of your grade will come from homework assignments and what percentage will come from exams. Where I attended college, scores were posted on the professor’s door. Not only could you look-up your score, but you could see your ranking among your peers. So, even if you got an 87 on a test, you might find that it was one of the highest scores achieved.</p>
<p>In the work world, you rarely have that kind of clarity. Some of your peers succeed on the basis of their social skills rather than their contributions. And even when you are given a rating, you have no idea how it compares to those of your peers. Is it any wonder that employees typically view annual reviews with suspicion and hostility?</p>
<p>So, to simply things this year, I propose a new system based on the <a href="http://en.wikipedia.org/wiki/Chinese_astrology">Signs of the Chinese Zodiac </a>. I got the idea from a placemat at a Chinese restaurant. There are 12 animals: Rat, Ox, Tiger, Rabbit, Dragon, Snake, Horse, Ram, Monkey, Rooster, Dog, and Pig. Each animal is assigned a set of characteristics both positive and negative.</p>
<p>For example, the rat is said to be “Forthright, disciplined, systematic, meticulous, charismatic, hardworking, industrious, charming, eloquent, sociable, shrewd. Can be manipulative, vindictive, mendacious, venal, selfish, obstinate, critical, over-ambitious, ruthless, intolerant, scheming.” (from <a href="http://en.wikipedia.org/wiki/Chinese_astrology">Wikipedia</a>).</p>
<p>The Chinese zodiac assigns an animal to each year, month, day, and hour. So, you can interpret your personality based on these animals and how they interact. The interpretation of these signs is very complex and subtle.</p>
<p>To apply this system to annual reviews, I would take the traditional approach of breaking down performance into key areas: communication, teamwork, leadership, initiative, job knowledge, etc. For each area, the manager assigns one of the 12 animals. Along with the reviews, the employees would be given a key, like the placemat, that lists all of the animals and their characteristics. Together the employee and the manager would discuss the interpretation.</p>
<p>“Well, Frank, you got a Monkey for Communication and Rat for Leadership. I’d like to see you bring these two into better harmony next year. You should strive for an Ox in Communication or maybe a Rooster.”</p>
<p>This would also help when employees compare their results. Yes, we know they aren’t supposed to do that, but in my experience those kind of corporate rules are no more effective than speed limit signs. Using the Signs of the Chinese Zodiac for reviews would eliminate any hard feelings over someone getting a better review.</p>
<p>“Jim got a Rabbit in Customer Focus and I got a Horse.” Walks away with a look of utter puzzlement.</p>
<p>This would also head off any arguments due to an employee feeling they got an unfairly low score. “Damn it, Scott! I can’t believe you gave me a Tiger in Judgment. You know I should have gotten a Ram!”</p>
<p>Yes, this would produce a review system that allows for the arbitrary results of most modern reviews while allowing each employee to find their own meaning in their scores. &#8230;and peace and harmony rang throughout the kingdom!</p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fblog.slickedit.com%2F2009%2F01%2Fmonkey-or-rooster-annual-reviews-and-the-chinese-zodiac%2F';
  addthis_title  = 'Monkey+or+Rooster%3A+Annual+Reviews+and+the+Chinese+Zodiac';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=oaAyKjD0gSs:sX0puAHu6m8:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=oaAyKjD0gSs:sX0puAHu6m8:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=oaAyKjD0gSs:sX0puAHu6m8:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=oaAyKjD0gSs:sX0puAHu6m8:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=oaAyKjD0gSs:sX0puAHu6m8:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=oaAyKjD0gSs:sX0puAHu6m8:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=oaAyKjD0gSs:sX0puAHu6m8:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=oaAyKjD0gSs:sX0puAHu6m8:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/helloWorld-TheSlickeditDeveloperBlog/~4/oaAyKjD0gSs" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.slickedit.com/2009/01/monkey-or-rooster-annual-reviews-and-the-chinese-zodiac/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://blog.slickedit.com/2009/01/monkey-or-rooster-annual-reviews-and-the-chinese-zodiac/</feedburner:origLink></item>
		<item>
		<title>Reformatting Old Yeller</title>
		<link>http://feedproxy.google.com/~r/helloWorld-TheSlickeditDeveloperBlog/~3/S7fW9cBfTKQ/</link>
		<comments>http://blog.slickedit.com/2009/01/reformatting-old-yeller/#comments</comments>
		<pubDate>Wed, 07 Jan 2009 14:25:11 +0000</pubDate>
		<dc:creator>Scott Hackett</dc:creator>
				<category><![CDATA[Other]]></category>

		<guid isPermaLink="false">http://blog.slickedit.com/?p=256</guid>
		<description><![CDATA[My first blog post of this year is going to be a tribute to one of my best friends that I recently had to say goodbye to&#8230; the computer I started with here at SlickEdit.   As a programmer, your computer is something that you spend 8-9 hours a day interacting with.  My work computer gets [...]]]></description>
			<content:encoded><![CDATA[<p>My first blog post of this year is going to be a tribute to one of my best friends that I recently had to say goodbye to&#8230; the computer I started with here at SlickEdit.   As a programmer, your computer is something that you spend 8-9 hours a day interacting with.  My work computer gets more face-to-face time than any other person I know, so it&#8217;s only natural to develop a friendship with it.</p>
<p>After three years of use it had developed its own unique personality.  It had the perfect background with cool sounds to match.  The fonts were just right.  All of the desktop icons were where I wanted them and I knew exactly where everything was off the Start menu.  I had scripts, shortcuts and bindings to do all the common stuff I need to quickly.  I&#8217;d gotten to know all of its quirks, traits, flaws and mannerisms over those few years.</p>
<p>However, like many computers, after installing several versions of many large apps, it wasn&#8217;t the playful, energetic puppy that it was back when I started using it.  It was in no rush when rebooting, and I could hear it let out a sigh whenever started Outlook or Visual Studio.  What were once speedy builds turned into mandatory coffee breaks.  Still, I loved that computer&#8230; we knew each other and wrote software together every day.</p>
<p>Then, early one morning, our sys admin came over to my office.  &#8220;It seems like your computer&#8217;s been trying to send out emails directly on port 25 during the middle of the night, any idea what that could be?&#8221;  I didn&#8217;t know.  We looked up the address where they were being sent, somewhere I&#8217;d never heard of before.  &#8220;Alright, I&#8217;ll bring over the Vista DVD,&#8221; he said.</p>
<p>And that&#8217;s when it sunk in.  An infection&#8230; a virus&#8230; the Vista DVD&#8230; I was going to have to reformat my machine.  I was going to have to shoot Old Yeller.</p>
<blockquote><p>[<em>From the movie... Old Yeller's gone rabid and Mama's holding a shotgun</em>]<br />
<strong>Travis:</strong> No mama!<br />
<strong>Mama:</strong> There&#8217;s no hope for him now. He&#8217;s sufferin&#8217;. You know we gotta do it.<br />
<strong>Travis:</strong> I know Mama&#8230; But he was my dog&#8230; I&#8217;ll do it.</p></blockquote>
<p>I sat quietly for a while after he left, realizing that this was the end.  I spent the next few hours backing up all of my important files and exporting all of my preferences.  &#8220;There are automatic updates ready to install, reboot now?&#8221; it prompted innocently.  The poor thing had no clue.  I missed him already, and I wondered if a better place awaited him after fdisk.  A place without disk fragmentation, bloated installations, useless polling auto-update tray apps and frozen taskbars.  I said goodbye and shut down one last time before booting from the Vista DVD.</p>
<p>I&#8217;m still sitting at the same desk, but everything feels new and a little unknown now.  It&#8217;s like working again with that energetic puppy I began with.  He&#8217;s eager to start up and get to work, builds are a snap and the desktop is clutter-free.  I&#8217;m still getting to know it, and soon he&#8217;ll develop his own personality.  I still miss Old Yeller, though.</p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fblog.slickedit.com%2F2009%2F01%2Freformatting-old-yeller%2F';
  addthis_title  = 'Reformatting+Old+Yeller';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=S7fW9cBfTKQ:Oe9qe1o0T_Y:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=S7fW9cBfTKQ:Oe9qe1o0T_Y:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=S7fW9cBfTKQ:Oe9qe1o0T_Y:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=S7fW9cBfTKQ:Oe9qe1o0T_Y:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=S7fW9cBfTKQ:Oe9qe1o0T_Y:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=S7fW9cBfTKQ:Oe9qe1o0T_Y:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=S7fW9cBfTKQ:Oe9qe1o0T_Y:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=S7fW9cBfTKQ:Oe9qe1o0T_Y:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/helloWorld-TheSlickeditDeveloperBlog/~4/S7fW9cBfTKQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.slickedit.com/2009/01/reformatting-old-yeller/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.slickedit.com/2009/01/reformatting-old-yeller/</feedburner:origLink></item>
		<item>
		<title>Eliminating the Programmer</title>
		<link>http://feedproxy.google.com/~r/helloWorld-TheSlickeditDeveloperBlog/~3/mx_oYvUBifs/</link>
		<comments>http://blog.slickedit.com/2008/12/eliminating-the-programmer/#comments</comments>
		<pubDate>Mon, 15 Dec 2008 15:48:37 +0000</pubDate>
		<dc:creator>Scott Westfall</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://blog.slickedit.com/?p=255</guid>
		<description><![CDATA[Occasionally I run across a tool or development project with the intent of eliminating the programmer. The goal is to have the business team control the behavior of the system. From a business management perspective, this sounds like a great idea. Think of all the money saved if we didn’t have to hire programmers or [...]]]></description>
			<content:encoded><![CDATA[<p>Occasionally I run across a tool or development project with the intent of eliminating the programmer. The goal is to have the business team control the behavior of the system. From a business management perspective, this sounds like a great idea. Think of all the money saved if we didn’t have to hire programmers or to waste time communicating requirements to them. In reality, I’ve never seen a tool or project succeed at this.</p>
<p>I worked as a contractor on one such project a few years ago. We were writing a call center application for a large enterprise client. The architect of this system convinced the client that the business analysts would be able to write in a high-level business language (invented by the architect) so that future changes wouldn’t require hiring programmers to modify the system. Each line of business script, it was claimed, had the power of 20 or 30 lines of lower level code. So, this promised even greater efficiency than just eliminating the programmer.</p>
<p>The business language had classes, constructors, destructors, and nearly all of the features of modern object-oriented languages. Maybe it started out as a simplified language that would be accessible to the business team, but it grew into the same level of complexity as the Java code we were writing to implement the rest of the system. There was no way that a business analyst without training as a programmer was going to be able to write effective code with this language.</p>
<p>Even worse, the programming team was struggling to write code with the language. There was no debugger or other tools, not even an editor with color coding. When you had an error, you had to determine if it was a bug in the script or in the interpreter, which was being modified almost daily.</p>
<p>Even if we accept that it is a worthy goal to eliminate the need for programmers, I don’t think it’s possible. That’s because programmers have skills and abilities other than just their knowledge of programming languages.</p>
<p>Whether this is by training or nature, I cannot say. Likely, it is a little of both. Programmers have aptitude in the skills necessary to succeed in our field and these get nurtured through practice. Regardless, I’ve noticed that programmers are often more capable in many ways than their non-programming coworkers.</p>
<p>Programmers think more logically. Working through if-then-else conditions is a core capability for any programmer. While working with business teams on requirements, I have often run across cases the where same ability was lacking.</p>
<p>During one project to develop an expert system for mortgage analysis, I was often given requirements for rules on how to handle loans with particular Loan-To-Value ratios or for a particular loan amounts. Not uncommonly, these requirements would have gaps. I’d have requirements for loans from $0 to $100,000; from $150,000 to $250,000; and for loans over $250,000. But there was a hole between $100,000 and $150,000. At other times I’d have conflicting requirements for overlapping ranges.</p>
<p>Programmers have a superior ability to analyze problems and come up with solutions. They excel at analyzing preconditions, sequences of events, and outcomes. Certainly, this is a key skill in programming, but it is also useful in troubleshooting and business case analysis.</p>
<p>Another key ability where programmers typically have an edge is the ability to make order out of chaos. I think that’s because the programmer is responsible for creating order within the program. We break systems into subsystems, subsystems into modules, and modules into units. There are no physical constraints that dictate the structure of the solution. Whatever order exists is created by the people who write the code. Reflecting on some of the codebases I’ve worked on, it’s clear that this is not a universal trait in all programmers.</p>
<p>While people typically think of programmers as coders, whose main talent lies in writing the arcane syntax of programming languages. I think that their main talent lies in their ability to analyze, troubleshoot, and solve problems. Code is just the physical manifestation that culminates the thought process of the programmer.</p>
<p>Let’s say that someone does manage to write a tool that allows people to define software and control its behavior without having to write code. The person using this tool will still need all of the other mental abilities of a programmer. If this were to happen, we haven’t eliminated the programmer; we just changed the job description a little.</p>
<p>Yes, I can envision a distant future where Artificial Intelligence is used to develop code—but that won&#8217;t eliminate programmers, either; it just ported them to a different platform.</p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fblog.slickedit.com%2F2008%2F12%2Feliminating-the-programmer%2F';
  addthis_title  = 'Eliminating+the+Programmer';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=mx_oYvUBifs:7C_jDUVpYyE:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=mx_oYvUBifs:7C_jDUVpYyE:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=mx_oYvUBifs:7C_jDUVpYyE:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=mx_oYvUBifs:7C_jDUVpYyE:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=mx_oYvUBifs:7C_jDUVpYyE:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=mx_oYvUBifs:7C_jDUVpYyE:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=mx_oYvUBifs:7C_jDUVpYyE:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=mx_oYvUBifs:7C_jDUVpYyE:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/helloWorld-TheSlickeditDeveloperBlog/~4/mx_oYvUBifs" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.slickedit.com/2008/12/eliminating-the-programmer/feed/</wfw:commentRss>
		<slash:comments>23</slash:comments>
		<feedburner:origLink>http://blog.slickedit.com/2008/12/eliminating-the-programmer/</feedburner:origLink></item>
		<item>
		<title>SlickEdit Macros for Everybody</title>
		<link>http://feedproxy.google.com/~r/helloWorld-TheSlickeditDeveloperBlog/~3/CxQR4JO2XDM/</link>
		<comments>http://blog.slickedit.com/2008/11/slickedit-macros-for-everybody/#comments</comments>
		<pubDate>Wed, 26 Nov 2008 15:34:06 +0000</pubDate>
		<dc:creator>Jeffrey</dc:creator>
				<category><![CDATA[Productivity]]></category>

		<guid isPermaLink="false">http://blog.slickedit.com/?p=254</guid>
		<description><![CDATA[I ran across a great blog the other day &#8220;SlickEdit Macros for Everybody&#8220;.  The blog is written by David Hicks, a self-proclaimed SlickEdit devotee, who enjoys &#8220;Squeezing as much functionality as possible out of his editor of choice.&#8221; He created the site because he likes working with Slick-C and felt there was not enough Slick-C code [...]]]></description>
			<content:encoded><![CDATA[<p>I ran across a great blog the other day &#8220;<a href="http://myslickeditmacros.blogspot.com/">SlickEdit Macros for Everybody</a>&#8220;.  The blog is written by David Hicks, a self-proclaimed SlickEdit devotee, who enjoys &#8220;Squeezing as much functionality as possible out of his editor of choice.&#8221; He created the site because he likes working with Slick-C and felt there was not enough Slick-C code on the web.</p>
<p>Slick-C is a macro programming language upon which the SlickEdit code editor is based.  Slick-C allows developers to modify the look and feel of the editor, write macros to perform custom operations, add new language support, and essentially extend the editor’s functionality until it is completely customized according to your preferences.</p>
<p><a href="http://myslickeditmacros.blogspot.com/2008_09_04_archive.html">From his first post</a>:</p>
<blockquote><p>Here you&#8217;ll find Slick-C macros of all kinds, from overly simple to fairly complex. I&#8217;m a writer/editor/journalist by trade, not a professional developer. Slick-C programmers should find something 0f interest here, including plenty of code that can be tweaked or fixed.</p>
<p>The purpose of this blog is to address the shortage of Slick-C code on the Web, while stimulating discussion and encouraging code sharing.</p>
<p>I&#8217;ve used Slickedit in my daily work since approximately 1998. Currently I have 388 _command macros in my vusrmacs.e file. I&#8217;m sure there are other Slickedit users whose macro folders are wishing to burst free and benefit the larger community.</p>
<p>My professional roles are technical writer; editor and researcher of print and electronic publications; desktop publisher; journalist. My programming experience has generally been limited to high-level scripting languages. I&#8217;ve spent a lot of time using numerous text editors and macro languages. Of the two kinds of Slickedit users named in the subtitle of this blog, I&#8217;m a Wordsmith rather than a Code Maven.</p></blockquote>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fblog.slickedit.com%2F2008%2F11%2Fslickedit-macros-for-everybody%2F';
  addthis_title  = 'SlickEdit+Macros+for+Everybody';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=CxQR4JO2XDM:E9KM2k_Mogk:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=CxQR4JO2XDM:E9KM2k_Mogk:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=CxQR4JO2XDM:E9KM2k_Mogk:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=CxQR4JO2XDM:E9KM2k_Mogk:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=CxQR4JO2XDM:E9KM2k_Mogk:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=CxQR4JO2XDM:E9KM2k_Mogk:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=CxQR4JO2XDM:E9KM2k_Mogk:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=CxQR4JO2XDM:E9KM2k_Mogk:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/helloWorld-TheSlickeditDeveloperBlog/~4/CxQR4JO2XDM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.slickedit.com/2008/11/slickedit-macros-for-everybody/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://blog.slickedit.com/2008/11/slickedit-macros-for-everybody/</feedburner:origLink></item>
		<item>
		<title>“Please” and “Thank You” Macro</title>
		<link>http://feedproxy.google.com/~r/helloWorld-TheSlickeditDeveloperBlog/~3/19FW0hOpEvE/</link>
		<comments>http://blog.slickedit.com/2008/11/please-and-thank-you-macro/#comments</comments>
		<pubDate>Wed, 19 Nov 2008 15:14:25 +0000</pubDate>
		<dc:creator>Scott Westfall</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://blog.slickedit.com/?p=253</guid>
		<description><![CDATA[Though I now work as a programming manager I have been a programmer for many years. Programmers typically share many characteristics in common. Among them, a certain inpatience with inefficiency. I&#8217;m not sure if that trait was there before we became programmers or whether it is something we learn through years of coding. Perhaps we [...]]]></description>
			<content:encoded><![CDATA[<p>Though I now work as a programming manager I have been a programmer for many years. Programmers typically share many characteristics in common. Among them, a certain inpatience with inefficiency. I&#8217;m not sure if that trait was there before we became programmers or whether it is something we learn through years of coding. Perhaps we start with that characteristic and it gets nutured through our programming experience.</p>
<p>Regardless, I&#8217;ve grown weary of some wasteful pleasantries, and I&#8217;ve been trying to make things more efficient. In particular, I&#8217;m tired of saying &#8220;please&#8221; and &#8220;thank you&#8221; all the time, particularly with my wife. After nearly 25 years of marriage, haven&#8217;t I proven my love and respect? Do I need to continually show it through endless &#8220;pleases&#8221; and &#8220;thank yous&#8221;?</p>
<p>So, I asked her if she could just assume that every request I ask is automatically preceeded by a &#8220;please&#8221; and followed by a &#8220;thank you&#8221;. I mean really, if she expects one every time, why not just assume it&#8217;s there in the first place?</p>
<p>In programmer parlance, this would be equivalent to writing a macro. Macros are substitutions that are inserted inline so that the code is altered, as though the substitution were there all along. I won&#8217;t bore you with the syntax, but if you&#8217;ve used macros before then you know what a time-saver they can be.</p>
<p>Unfortunately, my wife didn&#8217;t go along with this notion. It appears that her ability to execute macros is substantially less effective than a C compiler. So, she still expects a tedious &#8220;please&#8221; and &#8220;thank you&#8221; for each request. Sheesh!</p>
<p>Some programmers have taken this notion of macros a little too far. From the many programmers I have worked with, I have noticed the following macros in use:</p>
<p><strong>The Greeting Macro</strong> &#8212; this is a common one, where the programmer has fully eschewed any responsibility for saying &#8220;Good morning&#8221;, &#8220;Hi&#8221;, &#8220;How&#8217;s it going?&#8221; or any of the regular acknowledgements of the other person&#8217;s existence.</p>
<p><strong>The &#8220;Yes sir, I&#8217;ll get right on it&#8221; Macro </strong>&#8211; with this macro, a programmer will no longer let you know that they have heard and understood your requests. You must infer that they will comply because they have ceased their efforts to make you feel stupid for asking.</p>
<p><strong>The &#8220;No I don&#8217;t think you&#8217;re a complete moron&#8221; Macro </strong>&#8211; here, the programmer has given up with trying to smile politely and respect your opinion. The macro is intended to soften his critical and belittling demeanor. It is important to note the stress on the word &#8220;complete&#8221; in this macro.</p>
<p><strong>The Personal Hygiene Macro </strong>&#8211; I know it&#8217;s boring to shower every day, but the rest of us really appreciate it. Trust me on this one!</p>
<p>please_and_thankyou(&#8220;If you enjoyed this article, leave a comment.&#8221;)</p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fblog.slickedit.com%2F2008%2F11%2Fplease-and-thank-you-macro%2F';
  addthis_title  = '%26%238220%3BPlease%26%238221%3B+and+%26%238220%3BThank+You%26%238221%3B+Macro';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=19FW0hOpEvE:-8bBDGbYbmk:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=19FW0hOpEvE:-8bBDGbYbmk:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=19FW0hOpEvE:-8bBDGbYbmk:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=19FW0hOpEvE:-8bBDGbYbmk:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=19FW0hOpEvE:-8bBDGbYbmk:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=19FW0hOpEvE:-8bBDGbYbmk:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=19FW0hOpEvE:-8bBDGbYbmk:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=19FW0hOpEvE:-8bBDGbYbmk:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/helloWorld-TheSlickeditDeveloperBlog/~4/19FW0hOpEvE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.slickedit.com/2008/11/please-and-thank-you-macro/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		<feedburner:origLink>http://blog.slickedit.com/2008/11/please-and-thank-you-macro/</feedburner:origLink></item>
		<item>
		<title>Our Nation’s First CTO</title>
		<link>http://feedproxy.google.com/~r/helloWorld-TheSlickeditDeveloperBlog/~3/tPElnhkv5p8/</link>
		<comments>http://blog.slickedit.com/2008/11/our-nation%e2%80%99s-first-cto/#comments</comments>
		<pubDate>Wed, 12 Nov 2008 18:31:22 +0000</pubDate>
		<dc:creator>Scott Westfall</dc:creator>
				<category><![CDATA[Dev Management]]></category>

		<guid isPermaLink="false">http://blog.slickedit.com/?p=252</guid>
		<description><![CDATA[The press is abuzz with news items about President-Elect Obama’s search for a CTO and the possibility that he could make this a cabinet-level position. This is a great idea! Technology is so prevalent in our society and in our government that it’s impossible to conceive of a plan for effective government that is not [...]]]></description>
			<content:encoded><![CDATA[<p>The press is abuzz with news items about President-Elect Obama’s <a href="http://www.infoworld.com/article/08/11/10/Googleenabled_government_starts_with_Obamas_CTO_1.html">search for a CTO</a> and the possibility that he could make this a cabinet-level position.</p>
<p>This is a great idea! Technology is so prevalent in our society and in our government that it’s impossible to conceive of a plan for effective government that is not based on a sound technology roadmap. Certainly, if we need a Secretary of Transportation, then we need a Secretary of Technology.</p>
<p>Making this a cabinet-level position will hopefully give the USCTO the authority to bring uncooperative agencies together. In truth, I think that will be the biggest challenge. Bureaucracies are rife with politics. They don’t like to be told what to do or to work with others. They want to do things their way without someone else suggesting a better way.</p>
<p>A Chief Technology Officer can be instrumental in setting goals and directions for our nation’s IT infrastructure. However, I have seen CTOs wreak havoc on organizations that were doing just fine without them. Here are a few common pitfalls I hope the new US CTO will be able to avoid.</p>
<p><strong>Outsourcing Core Expertise</strong></p>
<p>I have worked for years as a contract programmer, and I have worked for companies that provided outsourcing services. There are times when it truly makes sense to outsource. If you are not a software company, but you need to have software built, then you are generally better off hiring a company to do that for you. A company that develops software full-time will be far more successful than one with no experience.</p>
<p>For example, I worked for a company that developed workflow and routing systems that incorporated high-speed scanners. We had significant knowledge and experience with the hardware and issues involved with these systems. Our customers were companies that processed forms for things like book clubs or medical records. Those companies simply could not have built these systems as effectively as we could.</p>
<p>For them, the systems we built were just a tool. Their core knowledge was related to the business of processing the records. They just needed a system that made it faster and easier to process the information.</p>
<p>However, I have seen companies whose main revenue comes from selling software outsource the development of their products. Commonly, this is done by partnering with an offshore development house.</p>
<p>The problem with this approach isn’t that it’s overseas; it’s that the people working on the product do not work for the company. If you make money by building and selling software, then why would you ever want the knowledge necessary to create and maintain your products to be held by someone with no attachment to your company?!?</p>
<p><strong>Cost Centric Management</strong></p>
<p>Improving an organization is hard. It takes thorough analysis and creative thinking to find ways to do things better. Rather than finding ways to do things better, some CTOs try to make their mark by doing things cheaper.</p>
<p>Don’t get me wrong, I do believe that organizations should be run efficiently and that managers should be looking at costs to make sure they are in line. However, cost management is often taken to an extreme.</p>
<p>Examples of this mentality include hiring cheaper programmers rather than focusing on the knowledge and experience needed. Many companies treat programmers like interchangeable cogs with no appreciation for the difference between individuals. So, if they can hire programmers for $10K or $20K less per year, that’s a big win, right?</p>
<p>This mentality drives the offshoring approach. The lower cost is touted as a big win for the company, but little consideration is given to whether the product can be developed as successfully. This is particularly problematic if the development team is split, as is so often the case, with the business team working here and the developers working overseas. Software development has been shown to be far more successful when there is close interaction between the programmers and the subject matter experts, even more so with direct customer interaction.</p>
<p>Companies also attempt to restrict costs by scrimping on the tools they provide. We see that one a lot at SlickEdit. We often hear from programmers who want to buy SlickEdit but are told by their management that $300 is too expensive.</p>
<p>At SlickEdit, every developer has multiple monitors. We believe this is essential to getting your work done efficiently. I have worked at some companies where I bought my own equipment because they would not approve anything more than a single 17” monitor.</p>
<p>The fundamental mistake that drives these decisions is that they assume a fixed level of output. So, they believe they can cut costs and the output will not change. In truth, we know that the level of output in software development is highly variable and subject to many complex factors. The definitive work in this area is “<a href="http://en.wikipedia.org/wiki/Peopleware">Peopleware</a>” by DeMarco and Lister.</p>
<p><strong>Over Standardization</strong></p>
<p>Standardization can be a good thing. When done properly, it ensures efficiencies of scale and the ability to dynamically manage resources within an organization. Standardization can be helpful to assist everyone in producing a similar result. If taken too far, it becomes a force to make sure that no one can achieve excellence.</p>
<p>No single tool or technology is good for all situations. The cost of trying to pound a square peg into a round hole can often exceed the cost of buying a round peg. You do have to guard against capricious choices (see <a href="http://blog.slickedit.com/?p=249">Design Fail Patterns</a>), but you should guard against a policy that is too rigid. Standardization should be a gravitational force that pulls towards a center, but it should not become an inescapable black hole</p>
<p>The larger the company, the more diverse their technology should be. Small companies may not be able to afford to dabble in different technologies, but larger companies can often see greater efficiency by allowing teams to select the right tools even when they are different. Further, by having a broader technology portfolio they reduce the risks associated with selecting a single technology, and they are more likely to discover new, more efficient ways of doing things.</p>
<p><strong>“Vision”</strong></p>
<p>I often see the word “vision” used with CTOs. They have “vision”. When I hear this word, I cringe. While having vision is often essential in succeeding, too often this word is used as license for narrow-minded, megalomaniacal tendencies that will brook no discussion or alternatives. Can you tell I feel strongly about this one?</p>
<p>Often the CTO forms this vision before they know anything about the organization. In my experience, the employees already know what needs to be done to fix most problems at the company. What they need is a management team that’s willing to listen. Instead, most employees fear going to upper management with problems and solutions.</p>
<p>Sometimes this “vision” is based on a success at a previous company. They see the new company as an opportunity to do what they did before. However, these successes are rarely repeatable. Organizations are just too different. Often, the reason a project succeeds is because of complex factors, not the least of which is the team that implemented it. Given the choice, I’d rather have the team from that successful project rather than one guy with the “vision”. Be careful how much credit you give managers (or any leaders) for the accomplishments of their teams.</p>
<p>Vision should provide an overall direction, a set of values that are used to balance competing needs. It should not be a totalitarian model to which an organization must conform.</p>
<p>I wish the new CTO of the United States much luck. It will be needed. Confidence in our government is at an all-time low. It will take much more than vision to change that.</p>
<p> </p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fblog.slickedit.com%2F2008%2F11%2Four-nation%25e2%2580%2599s-first-cto%2F';
  addthis_title  = 'Our+Nation%E2%80%99s+First+CTO';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=tPElnhkv5p8:fTz20Gn4I_8:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=tPElnhkv5p8:fTz20Gn4I_8:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=tPElnhkv5p8:fTz20Gn4I_8:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=tPElnhkv5p8:fTz20Gn4I_8:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=tPElnhkv5p8:fTz20Gn4I_8:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=tPElnhkv5p8:fTz20Gn4I_8:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=tPElnhkv5p8:fTz20Gn4I_8:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=tPElnhkv5p8:fTz20Gn4I_8:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/helloWorld-TheSlickeditDeveloperBlog/~4/tPElnhkv5p8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.slickedit.com/2008/11/our-nation%e2%80%99s-first-cto/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.slickedit.com/2008/11/our-nation%e2%80%99s-first-cto/</feedburner:origLink></item>
		<item>
		<title>The Politics of Features</title>
		<link>http://feedproxy.google.com/~r/helloWorld-TheSlickeditDeveloperBlog/~3/ro-H1rIDz-k/</link>
		<comments>http://blog.slickedit.com/2008/11/the-politics-of-features/#comments</comments>
		<pubDate>Wed, 05 Nov 2008 15:50:42 +0000</pubDate>
		<dc:creator>Scott Westfall</dc:creator>
				<category><![CDATA[Dev Management]]></category>

		<guid isPermaLink="false">http://blog.slickedit.com/?p=251</guid>
		<description><![CDATA[The election season puts me in mind of the many ways I have seen teams decide on which features to implement. Like all human endeavors this process is political, meaning that it is shaped by the relationships and power structure of the organization. Consequently, you can use various systems of government as metaphors for different [...]]]></description>
			<content:encoded><![CDATA[<p>The election season puts me in mind of the many ways I have seen teams decide on which features to implement. Like all human endeavors this process is political, meaning that it is shaped by the relationships and power structure of the organization. Consequently, you can use various systems of government as metaphors for different approaches.</p>
<p>For the sake of this discussion, we’ll treat defects the same as features. This isn’t totally accurate since some defects simply must be fixed as soon as possible. However, most defects are subject to the same decision process as features.</p>
<p><strong>The Dictatorship</strong></p>
<p>With this system, a single, all-powerful voice decides what gets done when. This is a common approach on smaller projects, where these decisions are made by the project manager. That’s not to say that this person doesn’t listen to advice from others. But when it comes time to decide they, alone, make the call.</p>
<p>Ultimately, the other systems typically have a single person who has to make the final decision. In my opinion, this is an essential characteristic of an effective organization. Everything should funnel up to a single person authorized to make decisions. People at different levels should be empowered to make various decisions, but in the end a single person should have the final authority. Otherwise, you flounder endlessly when a consensus cannot be achieved. It becomes a dictatorship when the leader ignores the advice and guidance of others and acts strictly on their own belief.</p>
<p>This approach only appeals to me if I can be the dictator, using my sagely wisdom to guide the product direction. In truth, this system can work well if the person in charge has a keen sense of what it takes to succeed. From accounts I’ve read, this is not unlike Steve Jobs’ approach to new product development. Though you can argue with his approach, it’s hard to question the results.</p>
<p><strong>The Oligarchy</strong></p>
<p>In an <a href="http://en.wikipedia.org/wiki/Oligarchy">oligarchy </a>, power is shared by small, elite group. This approach is often used on larger projects where various constituencies are represented. You might have representatives from project management, sales, development, quality assurance, and product support. In some cases, actual customer representatives might be involved.</p>
<p>The group meets regularly to discuss what is needed and when. Tradeoffs are weighed between features needed to spur new sales and fixes needed to appease existing customers. Typically, the group is lead by someone with final decision authority, but most decisions have a strong consensus.</p>
<p>This approach is certainly more representative, but it is also much more time-consuming. I’ve worked on projects that used this method, but they were very large with complex interactions between subsystems. Still, a light-weight version of this can be helpful to make sure all factors are weighed effectively.</p>
<p><strong>The Democracy</strong></p>
<p>In its purest form, this approach relies on votes from the masses to make the selection. Sometimes, members of the development team do the voting. In other systems, the customers are allowed to vote.</p>
<p>Though I cannot find a reference to it anymore, I recall that Sun used Duke Dollars as a way for developers to vote for specific fixes in the early days of Java. I’ve worked on teams where each developer was given some number of votes that they could apply to the bugs or features of their choosing.</p>
<p>I’m not a big fan of this approach. When the developers do the voting, this tends to favor the interesting, glamorous features over those that are more mundane. Often, these mundane features make a bigger difference to the customers. When the customers vote, they are typically guided by their own way of working. An effective product has to balance the different ways customers will use it.</p>
<p>You could use a hybrid approach, where the developers or customers submit votes but the decisions is ultimately made by a small group or individual. The problem with this is that it can be demotivating to the voters. If a feature with a high number of votes is rejected, they will ask why they even bothered. So, if you use a voting system, you should be willing to act on the results.</p>
<p><strong>The Meritocracy</strong></p>
<p>In the <a href="http://en.wikipedia.org/wiki/Meritocracy">meritocracy </a>, the best idea wins. Instead of suggesting a feature or voting for it, each feature is submitted with a business case. The business case is used to decide which changes make the biggest difference to the product.</p>
<p>This is my preferred approach to prioritizing features. It allows for input from all stakeholders and provides a means to assess priorities. With this system, anyone can challenge a feature and have it replaced in the schedule by demonstrating that another feature has a better business case.</p>
<p>Unfortunately, it is not always evident which idea has the greatest merit. So, this system relies on approaches from the others to make that call. A team or individual weighs the various proposals and picks the ones that best meet the business needs.</p>
<p>This approach also avoids the “squeaky wheel gets the grease” syndrome. Often, it is the customer or developer who is most vocal that gets their way. Great ideas languish because the proponent is not willing or able to be heard above the din of the highly vocal.</p>
<p>Truthfully, there are very few pure examples of any form of government. Most are a combination of these approaches. The most important characteristics of a feature planning system are:</p>
<p>• The ability to gather ideas from all stakeholders.<br />
• The willingness to listen to these ideas.<br />
• A system to evaluate ideas on their true merit.<br />
• A clear vision of the product that helps to determine which ideas truly enhance the product and which just muddy the waters.</p>
<p>Of course, it wouldn&#8217;t hurt if we could somehow take humans out of the equation and have features selected by a race of benevolent and powerful robots. But that&#8217;s a post for another time.</p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fblog.slickedit.com%2F2008%2F11%2Fthe-politics-of-features%2F';
  addthis_title  = 'The+Politics+of+Features';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=ro-H1rIDz-k:SfXWVj4IthA:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=ro-H1rIDz-k:SfXWVj4IthA:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=ro-H1rIDz-k:SfXWVj4IthA:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=ro-H1rIDz-k:SfXWVj4IthA:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=ro-H1rIDz-k:SfXWVj4IthA:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=ro-H1rIDz-k:SfXWVj4IthA:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=ro-H1rIDz-k:SfXWVj4IthA:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=ro-H1rIDz-k:SfXWVj4IthA:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/helloWorld-TheSlickeditDeveloperBlog/~4/ro-H1rIDz-k" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.slickedit.com/2008/11/the-politics-of-features/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.slickedit.com/2008/11/the-politics-of-features/</feedburner:origLink></item>
		<item>
		<title>Too Busy Bailing to Plug the Leak</title>
		<link>http://feedproxy.google.com/~r/helloWorld-TheSlickeditDeveloperBlog/~3/PNeETM_9Lcs/</link>
		<comments>http://blog.slickedit.com/2008/10/too-busy-bailing-to-plug-the-leak/#comments</comments>
		<pubDate>Wed, 29 Oct 2008 14:15:33 +0000</pubDate>
		<dc:creator>Scott Westfall</dc:creator>
				<category><![CDATA[Dev Management]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://blog.slickedit.com/?p=250</guid>
		<description><![CDATA[My last post, Design Fail Patterns, dealt with the ways that people often select the wrong technologies for a project. That made me think of another way I&#8217;ve seen projects and people fail. Cast your mind back to the days of the tall ships, great wooden vessels that plied the oceans under wind power. Imagine [...]]]></description>
			<content:encoded><![CDATA[<p>My last post, <a href="http://blog.slickedit.com/?p=249">Design Fail Patterns</a>, dealt with the ways that people often select the wrong technologies for a project. That made me think of another way I&#8217;ve seen projects and people fail.</p>
<p>Cast your mind back to the days of the tall ships, great wooden vessels that plied the oceans under wind power. Imagine one of those majestic ships sailing along when suddenly it hits a reef, tearing a large hole below the waterline. All hands scramble to save the ship. They bail and bail, but the ship continues to sink. As the ship sinks lower, they bail more furiously until finally the ship is lost. The survivors are washed ashore on a nearby island.</p>
<p>As they stare out at the masts of the ship, still visible above the waves, the Captain asks, “Why weren’t we able to plug the leak?”</p>
<p>One of the crew pipes up, “Captain, sir, we were too busy bailing to plug the leak.”</p>
<p>OK, this is a contrived example, and it’s very hard to believe that it could occur in real life. However, very similar situations frequently arise in software development.</p>
<p><strong>Bad Codebase</strong></p>
<p>The most typical way I’ve seen this occur is on projects where the early work has set us up for failure. The infrastructural code is so full of bugs or badly designed that it has become a stumbling block to get the rest of the system built. The team furiously pounds away at the code, driving toward a critical milestone fixing bugs as they can. But with every iteration, things take longer to do and the codebase gets harder to work with.</p>
<p>In this case, the leak is the poor codebase. The only way to plug the leak is to rewrite that part of the system. Often, the programming team is unable to recognize that this code is a lost cause, particularly if they participated in its development. More commonly, the programmers know that this code is the problem, but they can’t talk management into the schedule slip that is necessary to fix it. In the end, the project takes longer to complete than if we had stopped and rewritten the offending code.</p>
<p>Unfortunately, a leak in software is rarely as visible or as easy to appreciate as a gaping hole in a hull. However, the programmers’ work to patch the system instead of fixing it is just as futile as the sailors who just keep bailing. And the result is nearly as predictable.</p>
<p><strong>Poor Process</strong></p>
<p>Another way this phenomenon is manifested is in adherence to bad processes. I worked on a project that used very poor configuration management techniques. The approach to version control was sloppy, and there were no controls for how integration servers were configured or how code was deployed for testing. Consequently, even though we would get successful tests on the integration server, we continually faced problems in production. These problems stemmed from several causes. Sometimes it was because of files that were edited on the integration server and not checked into source control, so they never got deployed to production. Or someone would set up the directory structure differently so that it would work on one machine but not the other.</p>
<p>When these problems appeared, the proffered solution was that people should be more careful. This case might be slightly different. Instead of thinking that you’re too busy bailing to plug the leak; in this case you believe that bailing may be all that’s needed.</p>
<p>I’m a firm believer that your test machines should mirror your production environment in every way possible and that you should deploy your code for testing exactly as it will be deployed to the production environment. And if I ever catch someone editing a file on a test or integration server, I’ll <a href="http://en.wikipedia.org/wiki/Keelhauling">keel haul</a> them!</p>
<p><strong>No Time for Personal Development</strong></p>
<p>I also see the “too busy bailing” mentality at work in peoples’ careers. As a hiring manager, I have interviewed hundreds of candidates for jobs over the years. I’m frequently amazed to learn how little people invest in their careers and the knowledge necessary to advance.</p>
<p>For example, most of my work has been on Object-Oriented projects. So, I typically ask OO questions of the candidates. One question is about how they learned OO programming. What books did they read? How did they hone this knowledge? Typically, I find that most candidates learned OO in college and have done nothing to build on that knowledge, other than their normal work experience.</p>
<p>I’ve also interviewed candidates for web development. So, I’ll get a resume from a bright young college student who is about to graduate. They tell me they want to be a web developer.</p>
<p>“Great!” I say. “So, have you ever built a website?”</p>
<p>“No.”</p>
<p>“Do you know HTML and JavaScript?”</p>
<p>“We had that in a class once.”</p>
<p>“Well, then what have you done to become a web developer?”</p>
<p>“I’m real busy with class right now.”</p>
<p>So, basically, this guy is looking for someone to pay him to become a web developer. I’ll always consider a new grad without formal experience, but I want someone who has done more than just sit through classes on their way to a degree. Show me some passion or interest in your area by working on something outside of class. Or at least have knowledge in the basic tools.</p>
<p><strong>Tool Selection</strong></p>
<p>The final way I see people being too busy bailing is through adherence to less effective tools. I often interact with people who have been using vi their whole career, or some other minimal editor, and just can’t be bothered to change. No amount of telling them how you can save them time will convince them to switch. They may even admit that they know they could be more productive if they switched, but they don’t want to take the time to learn a new tool.</p>
<p>Truthfully, this could be a case of the tool becoming the job rather than being too busy bailing. In that situation, a person spends so much time, say, hammering that they lose sight of why they are hammering: to build houses. So when a new way of driving nails comes along, they stick to their current way of working. “I’ve been hammering for 20 years. I’m not about to switch.”</p>
<p>Switching tools will always involve an investment in time. But if you pick the right tool, that investment will pay off rapidly.</p>
<p>So watch for signs of bailing in your own work and career. Consider whether there is a leak that needs to be plugged first. If not, then bail for all your worth. If you have spotted a leak and no one will listen, maybe you need to do a different kind of bailing.</p>
<p> </p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fblog.slickedit.com%2F2008%2F10%2Ftoo-busy-bailing-to-plug-the-leak%2F';
  addthis_title  = 'Too+Busy+Bailing+to+Plug+the+Leak';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=PNeETM_9Lcs:GD4bTNqif4E:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=PNeETM_9Lcs:GD4bTNqif4E:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=PNeETM_9Lcs:GD4bTNqif4E:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=PNeETM_9Lcs:GD4bTNqif4E:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=PNeETM_9Lcs:GD4bTNqif4E:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=PNeETM_9Lcs:GD4bTNqif4E:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?a=PNeETM_9Lcs:GD4bTNqif4E:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/helloWorld-TheSlickeditDeveloperBlog?i=PNeETM_9Lcs:GD4bTNqif4E:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/helloWorld-TheSlickeditDeveloperBlog/~4/PNeETM_9Lcs" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.slickedit.com/2008/10/too-busy-bailing-to-plug-the-leak/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://blog.slickedit.com/2008/10/too-busy-bailing-to-plug-the-leak/</feedburner:origLink></item>
	</channel>
</rss>

