<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>&#34;Hello World&#34; - The SlickEdit Developer Blog &#187; Code Editors</title>
	<atom:link href="http://blog.slickedit.com/category/code-editors/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.slickedit.com</link>
	<description>&#34;Hello World&#34; - 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>
		<item>
		<title>Setting up new file types with the SlickEdit Core plugin</title>
		<link>http://blog.slickedit.com/2011/12/setting-up-new-file-types-with-the-slickedit-core-plugin/</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>
]]></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>
		</item>
		<item>
		<title>SlickEdit Core for Mainframe Developers</title>
		<link>http://blog.slickedit.com/2011/12/slickedit-core-for-mainframe-developers/</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>
]]></content:encoded>
			<wfw:commentRss>http://blog.slickedit.com/2011/12/slickedit-core-for-mainframe-developers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SlickEdit for Mac doesn&#8217;t look like iTunes</title>
		<link>http://blog.slickedit.com/2011/12/slickedit-for-mac-doesnt-look-like-itunes/</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>
]]></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>
		</item>
		<item>
		<title>Code on the (Driving) Range</title>
		<link>http://blog.slickedit.com/2011/08/code-on-the-driving-range/</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>
]]></content:encoded>
			<wfw:commentRss>http://blog.slickedit.com/2011/08/code-on-the-driving-range/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Threads and a Bicycle-built-for-two</title>
		<link>http://blog.slickedit.com/2011/05/threads-and-a-bicycle-built-for-two/</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>
]]></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>
		</item>
		<item>
		<title>Hey! Where are all the features?</title>
		<link>http://blog.slickedit.com/2011/05/hey-where-are-all-the-features/</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>
]]></content:encoded>
			<wfw:commentRss>http://blog.slickedit.com/2011/05/hey-where-are-all-the-features/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Homemade SlickEdit Box</title>
		<link>http://blog.slickedit.com/2011/04/homemade-slickedit-box-3/</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>
]]></content:encoded>
			<wfw:commentRss>http://blog.slickedit.com/2011/04/homemade-slickedit-box-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Enhancing Eclipse with SlickEdit Core: Split Editor Windows</title>
		<link>http://blog.slickedit.com/2010/12/enhancing-eclipse-with-slickedit-core-split-editor-windows/</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>
]]></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" />
		</item>
		<item>
		<title>Key Binding, Command, Menu: The Golden Triangle</title>
		<link>http://blog.slickedit.com/2010/05/key-binding-command-menu-the-golden-triangle/</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>
]]></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>
		</item>
		<item>
		<title>Hey, Check Out My Slick New Editor!</title>
		<link>http://blog.slickedit.com/2009/09/hey-check-out-my-slick-new-editor/</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>
]]></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>
		</item>
		<item>
		<title>My Economic Stimulus Plan: Cash for Clunky Editors</title>
		<link>http://blog.slickedit.com/2009/08/my-economic-stimulus-plan-cash-for-clunky-editors/</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>
]]></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>
		</item>
		<item>
		<title>How I Got VB for Fifty Cents</title>
		<link>http://blog.slickedit.com/2008/09/how-i-got-vb-for-fifty-cents/</link>
		<comments>http://blog.slickedit.com/2008/09/how-i-got-vb-for-fifty-cents/#comments</comments>
		<pubDate>Wed, 10 Sep 2008 13:38:20 +0000</pubDate>
		<dc:creator>Scott Hackett</dc:creator>
				<category><![CDATA[Code Editors]]></category>
		<category><![CDATA[Other]]></category>

		<guid isPermaLink="false">http://blog.slickedit.com/?p=246</guid>
		<description><![CDATA[It&#8217;s become a custom with me and my kids to hit the yard sales during the summer and fall weekends.  They can get a lot more for their allowance money at those sales than they can at the toy stores, and sometimes I find stuff that&#8217;s such a bargain I can&#8217;t pass it up.  We [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s become a custom with me and my kids to hit the yard sales during the summer and fall weekends.  They can get a lot more for their allowance money at those sales than they can at the toy stores, and sometimes I find stuff that&#8217;s such a bargain I can&#8217;t pass it up.  We recently went to one that turned up one of the most amazing finds I&#8217;ve ever run into at a garage sale yet.</p>
<p><a href="http://www.scotthackett.com/slick_edit/box_front.jpg"><img src="http://www.scotthackett.com/slick_edit/box_front_small.jpg" /></a></p>
<p><strong>Visual Basic 1.0</strong></p>
<p>Sitting in between Turbo Tax &#8217;99 and Mavis Beacon&#8217;s Typing Tutor was this gem&#8230;.  Visual Basic 1.0.  I almost couldn&#8217;t believe my eyes.  To me, this was on par with finding the missing link.  As a programmer, this was archeological gold, and it was on sale for fifty cents.  My kids saw the excitement on my face and must have thought that I&#8217;d found an XBox 360.  For them, Visual Basic was a major let down.</p>
<p>A lot of people think that VB is soft and if you program in it, you&#8217;re automatically a drooling hack developer who couldn&#8217;t program their alarm clock.  I cut my teeth on <a href="http://http://blog.slickedit.com/?p=224">VB 4.0 in my first job</a>, and learned that when combined with COM in C++, VB was a fantastic language for the job of making a user interface. That being said, VB still has some special memories for me.</p>
<p><a href="http://www.scotthackett.com/slick_edit/box_back.jpg"><img src="http://www.scotthackett.com/slick_edit/box_back_small.jpg" /></a></p>
<p>The contents of the box were practically undisturbed.  The disks were all still in their original plastic wrap and the manual didn&#8217;t seem to have ever been opened.  Immediately, there are certain clues that tell you just how old it is (even though the box is copyrighted 1991).  First, the box contains two forms of media; 3.5&#8243; and 5.25&#8243; floppies.  To actually take a 5.25&#8243; floppy out of its sleeve and hold it brought me back to the days of floppy doors and the red LED that told you the disk was being read.  The system requirements for VB 1.0 were Windows 3.0, a 286 processor and 1MB of memory.  Somewhat of a far cry from the Visual Basic of today.</p>
<p><a href="http://www.scotthackett.com/slick_edit/contents.jpg"><img src="http://www.scotthackett.com/slick_edit/contents_small.jpg" /></a></p>
<p>I also loved the included &#8220;Companion Products and Services Directory&#8221;.  The third party marketing rush had already begun back then.  Most of the components in the catalog, though, are for connecting to a VAX server or to a dBase or Btrieve database.  There are a handful of charting components and widgets such as tree controls (not yet standard in 1991) and grids.  The reminiscing continues.</p>
<p>This box goes right up on my bookshelf at home next to the most revered books in my collection. Say what you will about Visual Basic, but it may be one of the most important developments in programming over the last 20 years for the simple reason that it allowed any non-programmer to write a Windows program.  If you think that&#8217;s not a valid reason for such importance, let me repeat&#8230; it allowed any non-programmer to write a Windows program.  It was Prometheus, stealing fire from Zeus and giving it to mere mortals for their use.</p>
<p>You no longer had to know C, and wade through <a href="http://www.amazon.com/Programming-Windows%C2%AE-Fifth-Microsoft/dp/157231995X/ref=pd_bbs_sr_3?ie=UTF8&amp;s=books&amp;qid=1220965587&amp;sr=8-3">Petzold</a>, to write &#8220;Hello World&#8221; in a window.  Employees from any company with core business knowledge, but no degree in programming, could now quickly write customized applications.  Of course, the debate of whether this was a good thing for programming or not still goes on today.  However, regardless of which side you&#8217;re on, you can&#8217;t deny that VB was a major victory for bringing the PC to the business market.  Without VB, we may not even have a Microsoft today.</p>
<p>So thank you very much, guy from two streets down, who decided that Visual Basic 1.0 wasn&#8217;t important enough to keep, but too important to just throw away.  One man&#8217;s junk is another man&#8217;s gold, and I really struck it rich that weekend.</p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fblog.slickedit.com%2F2008%2F09%2Fhow-i-got-vb-for-fifty-cents%2F';
  addthis_title  = 'How+I+Got+VB+for+Fifty+Cents';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
]]></content:encoded>
			<wfw:commentRss>http://blog.slickedit.com/2008/09/how-i-got-vb-for-fifty-cents/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Better way to find Eclipse command Ids, and more&#8230;</title>
		<link>http://blog.slickedit.com/2008/08/better-way-to-find-eclipse-command-ids-and-more/</link>
		<comments>http://blog.slickedit.com/2008/08/better-way-to-find-eclipse-command-ids-and-more/#comments</comments>
		<pubDate>Tue, 19 Aug 2008 13:26:45 +0000</pubDate>
		<dc:creator>Ryan</dc:creator>
				<category><![CDATA[Code Editors]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[SlickEdit Products]]></category>

		<guid isPermaLink="false">http://blog.slickedit.com/?p=243</guid>
		<description><![CDATA[Core 3.4.0 introduced the Slick-C function _eclipse_execute_command which allows you to execute Eclipse commands from the SlickEdit environment.  The documentation for this function shows you how you can search the Plug-in Registry to find Eclipse command names and ids, but there is a much better way documented in the following blog post:  http://evans-stuff.blogspot.com/2007/10/it-seems-that-im-not-only-one-still.html .  Unfortunately [...]]]></description>
			<content:encoded><![CDATA[<p>Core 3.4.0 introduced the Slick-C function <strong>_eclipse_execute_command</strong> which allows you to execute Eclipse commands from the SlickEdit environment.  The documentation for this function shows you how you can search the Plug-in Registry to find Eclipse command names and ids, but there is a much better way documented in the following blog post:  <a target="_blank" href="http://evans-stuff.blogspot.com/2007/10/it-seems-that-im-not-only-one-still.html">http://evans-stuff.blogspot.com/2007/10/it-seems-that-im-not-only-one-still.html</a> . </p>
<p>Unfortunately I discovered this technique after we finished the documentation and shipped the plug-in, but hopefully me pointing it out here may help some users. </p>
<p>Also, don&#8217;t forget the &#8220;Activate Editor&#8221; command in Eclipse (F12 by default).  If you are using <strong>_eclipse_execute_command</strong> to jump into different Eclipse Views and search around mouse-less, hitting F12 will jump you back into the last active editor.</p>
<p><strong>&lt;update&gt;</strong> </p>
<p>Check out this thread of the SlickEdit Forums for adding a generic Eclipse Pass-through Command: <a href="http://community.slickedit.com/index.php?topic=3549.0">http://community.slickedit.com/index.php?topic=3549.0</a></p>
<p><strong>From the post:</strong><br />
If you are evaluating 3.4.0 for your company, you can make this happen easily.  One of the best features in Core 3.4.0 is the introduction of _eclipse_execute_command, which is discussed in the user guide/readme, and also a little more in my post here: <a href="http://community.slickedit.com/index.php?topic=3816.0">http://community.slickedit.com/index.php?topic=3816.0</a> .  This is the idea that Rob suggests in this thread.</p>
<p>I&#8217;ll take this opportunity to give a brief tutorial on how to integrate that &#8220;Activate Task&#8221; shortcut into the SlickEdit environment.</p>
<p>First you need to know the command id of what you are trying to execute.  I used the method described <a href="http://evans-stuff.blogspot.com/2007/10/it-seems-that-im-not-only-one-still.html">http://evans-stuff.blogspot.com/2007/10/it-seems-that-im-not-only-one-still.html</a> , in which you create a Simple Cheat Sheet and use the Command Browse button (see first screenshot).</p>
<p><img src="http://www.slickedit.com/images/stories/blog/task1.png" /></p>
<p>Then I just used the search field to find the command (see second screenshot).</p>
<p><a href="http://www.slickedit.com/images/stories/blog/task2.png"><img src="http://www.slickedit.com/images/stories/blog/task2.png" /></a></p>
<p>Now that I had the command/parameter info, I opened up the Slick-C macro file where I write my custom commands (ryan.e), and added functions for Activate Task and Deactivate Task using _eclipse_execute_command (see third screenshot).  Remember to load your macro file with F12 after writing the functions.</p>
<p><a href="http://www.slickedit.com/images/stories/blog/task3.png"><img src="http://www.slickedit.com/images/stories/blog/task3.png" /></a></p>
<p>Then I used the SlickEdit Keybindings dialog to bind eclipse_activate_task to Ctrl + F9 (see fourth screenshot), and voila.  Hitting Ctrl + F9 in a SlickEdit editor will launch the Mylyn Activate Task dialog.</p>
<p><a href="http://www.slickedit.com/images/stories/blog/task4.png"><img src="http://www.slickedit.com/images/stories/blog/task4.png" /></a></p>
<p>It may seem like a lot of steps, but it&#8217;s really not.  This whole process took me less than 10 minutes including the time I took to capture/crop/annotate the screenshots.  You can use this method to execute almost any Eclipse command from any plug-in from the SlickEdit environment.</p>
<p>- Ryan</p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fblog.slickedit.com%2F2008%2F08%2Fbetter-way-to-find-eclipse-command-ids-and-more%2F';
  addthis_title  = 'Better+way+to+find+Eclipse+command+Ids%2C+and+more%26%238230%3B';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
]]></content:encoded>
			<wfw:commentRss>http://blog.slickedit.com/2008/08/better-way-to-find-eclipse-command-ids-and-more/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Let&#8217;s Do a Code Review With SlickEdit Tools (Part 1)</title>
		<link>http://blog.slickedit.com/2008/06/lets-do-a-code-review-with-slickedit-tools-part-1/</link>
		<comments>http://blog.slickedit.com/2008/06/lets-do-a-code-review-with-slickedit-tools-part-1/#comments</comments>
		<pubDate>Wed, 25 Jun 2008 15:11:34 +0000</pubDate>
		<dc:creator>Scott Hackett</dc:creator>
				<category><![CDATA[Code Editors]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[SlickEdit Products]]></category>

		<guid isPermaLink="false">http://blog.slickedit.com/?p=237</guid>
		<description><![CDATA[As a developer, I look for tools that help me get things done quicker, and make tasks easier. This series of articles shows you how to take a handful of the features in SlickEdit Tools for Microsoft® Visual Studio® and use them to effectively put together and perform a code review. I can&#8217;t say that [...]]]></description>
			<content:encoded><![CDATA[<p>As a developer, I look for tools that help me get things done quicker, and make tasks easier. This series of articles shows you how to take a handful of the features in <a href="http://www.slickedit.com/content/view/408/244?utm_source=seblogtoolstut&amp;utm_medium=blog&amp;utm_campaign=seblogtoolstut">SlickEdit Tools</a> for Microsoft® Visual Studio® and use them to effectively put together and perform a code review.</p>
<p>I can&#8217;t say that I&#8217;ve met too many developers that eagerly looked forward to reviewing code. Most developers understand the importance of code reviews, but many have experienced the pain of poorly run code reviews. Although SlickEdit Tools does not have a &#8220;code review&#8221; feature, it provides several features that can be used together to make a code review run smoothly. A well done code review process can be the difference between developer loathing and developer buy-in.</p>
<p>Because code reviews are such a big topic, this article will focus on some of the steps that lead up to a code review. Code reviews typically focus on the work of a single developer, so we&#8217;ll start there. We are going to be code reviewing the developer with ID <em>SLICKEDIT\shackett</em> (or <strong>Scott</strong>) in source control, and we&#8217;ll be reviewing his work since March 3, 2008, which is the date of our last (fictional) release.</p>
<p><strong>Finding the Best Files to Review</strong><br />
Our first challenge involves finding the set of files that Scott has worked on since March 3, 2008. We&#8217;ll use the <strong>Find Version</strong> feature of the SlickEdit Tools Versioning Toolbox as our starting point.</p>
<p><img src="http://www.slickedit.com/images/stories/blog/code_review/findversion.jpg" /></p>
<p>Find Version allows you to query versions of the source code files in your solution. The code review organizer can use this feature to find an ideal set of files to review. Simply click <em>SlickEdit &gt; Find Version</em> to bring up the Find Version tool window. For this example, we&#8217;ll find versions with the following criteria:</p>
<ul>
<li><strong>Since date:</strong> Finds all versions checked in since a particular date, such as the last release.</li>
<li><strong>Developer name:</strong> Finds all versions checked in by one or more specific developers.</li>
</ul>
<p>These two criteria are used to find all versions checked in by Scott during the latest development cycle (March 3, 2008 &#8211; present).</p>
<p>No development team has the resources to code review every file in that list, so it&#8217;s important to find the best candidate files to review. Therefore, the next task is to look through the results and find a sampling of files that represent the most important or complex code. You might also include some files that have a high number of check-ins by that developer, which indicates high rate of change, or churn. These are the ideal candidate files to be reviewed. Email the names of those files to all developers who will be participating in the code review.</p>
<p><a href="http://www.slickedit.com/images/stories/blog/code_review/findversionresults.jpg"><img src="http://www.slickedit.com/images/stories/blog/code_review/findversionresults_small.jpg" /><br />
[Click here for the full size image]</a></p>
<p>In this example, <em>PackageBaseWhidbey.cs</em> has had several changes and is a very important file, so we&#8217;ll include that in our code review process.</p>
<p><strong>Loading the Files to Review</strong><br />
When a developer is ready to prepare their review comments, they should close all other files and open the files in the list sent by the code review organizer. This can be done quickly using the <strong>Load Files </strong>feature in the Editing Toolbox, which allows you to quickly filter the list of files in your solution and open the ones you&#8217;re looking for. Click <em>SlickEdit &gt; Load Files</em> to use this feature.</p>
<p><img src="http://www.slickedit.com/images/stories/blog/code_review/loadfiles.jpg" /></p>
<p>By typing &#8220;<em>basew</em>&#8221; in the filter, we narrow down the files in the list to only those that include that text in their file name. We&#8217;ll select <em>PackageBaseWhidbey.cs</em> and open it.</p>
<p><strong>Isolating a Developer&#8217;s Work</strong><br />
One of the most difficult things to do when reviewing the code of another developer is actually identifying the work that that developer did, especially if it was done as part of a team. Once you have <em>PackageBaseWhidbey.cs</em> open, we&#8217;ll use the <strong>Version Visualizer</strong> feature of the Versioning Toolbox to see which parts Scott has worked on. Click <em>SlickEdit &gt; Version Visualizer</em> to show this tool window. Next, select &#8220;Default User Scheme&#8221; in the drop down at the top of that tool window.</p>
<p><img src="http://www.slickedit.com/images/stories/blog/code_review/versionvisualizer.jpg" /></p>
<p>The versions of the file will be processed and the tool window will list the names of all developers who have contributed to the current state of the file. The editor also becomes colorized into segments of lines that identify who wrote each line of the file.</p>
<p><a href="http://www.slickedit.com/images/stories/blog/code_review/defaultuserscheme1.jpg"><img src="http://www.slickedit.com/images/stories/blog/code_review/defaultuserscheme1_small.jpg" /><br />
[Click here for the full size image]</a></p>
<p>You can find Scott&#8217;s name (<em>SLICKEDIT\shackett</em>) in the tool window list and double click on it to go to the first line of code he contributed. You can then use the next and previous button on the tool window to navigate through the blocks of his work.</p>
<p>To make Scott&#8217;s work stand out more distinctly, select his name (<em>SLICKEDIT\shackett</em>) in the list and click the &#8220;Toggle Selection Visibility&#8221; toolbar button. When toggled on, Scott&#8217;s work will stand out, and all other developer&#8217;s work will be dimmed out. This allows you to quickly see what code is Scott&#8217;s and what code isn&#8217;t. You can click this button again to toggle it back off.</p>
<p><a href="http://www.slickedit.com/images/stories/blog/code_review/defaultuserscheme2.jpg"><img src="http://www.slickedit.com/images/stories/blog/code_review/defaultuserscheme2_small.jpg" /><br />
[Click here for the full size image]</a></p>
<p>Another option is to assign a unique color to Scott. To do this, click the <strong>Configure Visualization Schemes</strong> button on the <strong>Version Visualizer</strong> toolbar. This will bring up the <strong>Scheme Builder</strong> dialog. We&#8217;ll create a new scheme to highlight all areas of code worked on by Scott. Click the <strong>Add new scheme</strong> button and give the scheme a name of &#8220;Scott&#8217;s code&#8221;. We can now add a scheme item for Scott and give it a color of bright red.</p>
<p><a href="http://www.slickedit.com/images/stories/blog/code_review/schemebuilder.jpg"><img src="http://www.slickedit.com/images/stories/blog/code_review/schemebuilder_small.jpg" /><br />
[Click here for the full size image]</a></p>
<p>We can save this visualization scheme and then apply it by selecting it in the <strong>Version Visualizer</strong> drop down. This same scheme can be applied to any file to highlight areas of the code written by Scott.</p>
<p><a href="http://www.slickedit.com/images/stories/blog/code_review/defaultuserscheme3.jpg"><img src="http://www.slickedit.com/images/stories/blog/code_review/defaultuserscheme3_small.jpg" /><br />
[Click here for the full size image]</a></p>
<p>If you find a block of code written by the developer being reviewed that looks questionable, you may want more context about the developer&#8217;s intent, such as the check in comment made when that section of code was checked in. This information is very important for creating meaningful code review comments. The easiest way to do this is to see which version that code was checked in as, and look at the comment associated with that version. To do this, select &#8220;Default Relative Age Scheme&#8221; in the drop down at the top of the <strong>Version Visualizer</strong> tool window.</p>
<p><a href="http://www.slickedit.com/images/stories/blog/code_review/defaultrelativeagecheme.jpg"><img src="http://www.slickedit.com/images/stories/blog/code_review/defaultrelativeagecheme_small.jpg" /><br />
[Click here for the full size image]</a></p>
<p>Again, the versions of the file will be processed, but now the tool window will list the IDs of all versions that have contributed to the current state of the file. The editor also becomes colorized into segments of lines that identify which version last updated each line of the file. The colorizing of each segment corresponds to the age of the version it was checked in with (dark is oldest, light is most recent).</p>
<p>You can find the version associated with the questionable code and take a look at the comments associated with it. You can also use the next and previous button as before to see all of the code in the file that was updated as a result of that check in. For instance, we may have disagreed with the AddMenuCommandHandler function being public. We can see that change was part of version 762. By hovering over that version in the <strong>Version Visualizer</strong> tool window, we get a better understanding of why the function was made public. All of these features assist the team in making judgments about which code to review. They also provide some insight into the motivation the developer being reviewed might have had when checking a set of code in.</p>
<p>Next is the task of actually commenting on the code. This task is always best done in electronic format, in a way that can be pulled together as part of the code review meeting. The <strong>next article</strong> in the series will go through some of the features of SlickEdit Tools that facilitate writing comments about code and tying them directly to the source, without modifying the files.</p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fblog.slickedit.com%2F2008%2F06%2Flets-do-a-code-review-with-slickedit-tools-part-1%2F';
  addthis_title  = 'Let%26%238217%3Bs+Do+a+Code+Review+With+SlickEdit+Tools+%28Part+1%29';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
]]></content:encoded>
			<wfw:commentRss>http://blog.slickedit.com/2008/06/lets-do-a-code-review-with-slickedit-tools-part-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Works on my Machine</title>
		<link>http://blog.slickedit.com/2008/04/works-on-my-machine/</link>
		<comments>http://blog.slickedit.com/2008/04/works-on-my-machine/#comments</comments>
		<pubDate>Wed, 23 Apr 2008 14:57:08 +0000</pubDate>
		<dc:creator>Sandra</dc:creator>
				<category><![CDATA[Code Editors]]></category>
		<category><![CDATA[SlickEdit Products]]></category>

		<guid isPermaLink="false">http://blog.slickedit.com/?p=225</guid>
		<description><![CDATA[I report a problem to a colleague. After trying and failing to use the &#8220;works on my machine&#8221; excuse, he comes over to see for himself. He asks to drive so he can do a little debugging on my editor, so I step aside to let him use the keyboard. He squints at the code [...]]]></description>
			<content:encoded><![CDATA[<p>I report a problem to a colleague. After trying and failing to use the &#8220;works on my machine&#8221; excuse, he comes over to see for himself. He asks to drive so he can do a little debugging on my editor, so I step aside to let him use the keyboard. He squints at the code and seems unable to type. Several times he presses an elaborate key combination, only to curse and have to undo whatever he did. Usually, when he tries to undo, he again curses before finally looking at the keyboard to press Ctrl+Z with the concentration of an octogenarian trying to double-click the AOL icon fast enough.</p>
<p>Why is he having so much trouble using my editor? Because I&#8217;m using SlickEdit. What does he use? SlickEdit.This scenario happens a lot to me, really anytime a coworker tries to use my machine. Even after he gets used to the color scheme and whatever tool windows I use, if he doesn&#8217;t happen to use the same emulation that I use, he&#8217;s hosed. He spends more time trying to get somewhere in the code than he does actually making any changes. And no doubt he&#8217;s got some custom keybindings on his machine that he uses all the time, but my editor seems to think they have completely different functions.</p>
<p>So the good thing about SlickEdit is that it&#8217;s incredibly customizable. You can set it up to do whatever you want, however you want. You can go over, under, around, and through your code using commands and keybindings that you define, and after using them for a couple of days, you&#8217;ll feel like you were born using Ctrl+W to comment a line of code. You&#8217;ll do all this without thinking about it, because you&#8217;re thinking about the code instead of the use of the editor.</p>
<p>Ah, but then you have to use someone else&#8217;s configuration. It&#8217;s worse if they&#8217;re looking over your shoulder, giving you keyboard performance anxiety. You&#8217;re all thumbs, two left hands, a DVORAK user in a QWERTY world. Your customizations are your crutches, and you have to limp along to solve a stupid problem when you know it works perfectly on your machine.</p>
<p>In fact, you work perfectly on your machine, too.</p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fblog.slickedit.com%2F2008%2F04%2Fworks-on-my-machine%2F';
  addthis_title  = 'Works+on+my+Machine';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
]]></content:encoded>
			<wfw:commentRss>http://blog.slickedit.com/2008/04/works-on-my-machine/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Why I Hate HTML and How SlickEdit Saved the Day</title>
		<link>http://blog.slickedit.com/2008/01/why-i-hate-html-and-how-slickedit-saved-the-day/</link>
		<comments>http://blog.slickedit.com/2008/01/why-i-hate-html-and-how-slickedit-saved-the-day/#comments</comments>
		<pubDate>Wed, 23 Jan 2008 17:11:56 +0000</pubDate>
		<dc:creator>David O</dc:creator>
				<category><![CDATA[Code Editors]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://blog.slickedit.com/?p=213</guid>
		<description><![CDATA[I hate HTML. I know that is a little unfair, after all, so much of my life revolves around it. Like everyone in the tech industry, there is a browser open on my computer almost all the time and without it, I&#8217;d lose my major source for news, entertainment, and communication. But I still hate [...]]]></description>
			<content:encoded><![CDATA[<p>I hate HTML. I know that is a little unfair, after all, so much of my life revolves around it. Like everyone in the tech industry, there is a browser open on my computer almost all the time and without it, I&#8217;d lose my major source for news, entertainment, and communication. But I still hate dealing with it. Perhaps if HTML had been more like xhtml from the start (You know what I mean. The tight syntax, all tags closed etc.), or if XHTMLs other problems (validation, compatibility with existing HTML infrastructure, and browser support etc.) were solved, I wouldn&#8217;t be writing this.</p>
<p>The worst thing, though, is having to hand edit HTML that has been generated by other software, be it an Office document or HTML created by web page authoring software. This was the situation I found myself in recently when I was asked to do some simple web page maintenance for a local volunteer organization.</p>
<p>The site was hosted by Yahoo! Japan and was originally authored by Japanese web site software from a major unnamed corporation, which I will just refer to as HAL. I was not given the original project files from which I could make changes and regenerate the html, so I was going to have edit the HTML directly. The Yahoo! Japan portal provides web-based maintenance tools for the sites they host. Through a browser you can see a list of the directories and files in your site, backup and rename files, and edit and save HTML files in an editor control. You could also upload new files. These are crude tools, but for the changes I had, it should have worked. I didn&#8217;t want to manually download and upload each page.</p>
<p>I pulled up the first page in the editor control, and started editing. The file was many times longer than needed, filled with obtuse metadata and other unintelligible nonsense. The page switched between English and Japanese frequently, often many times in one sentence, and each change in language required that section to be enclosed in yet another &lt;span&gt; tag with the proper lang attribute. In many cases, a single word was nested in 2 to 3 identical &lt;span&gt; tags. Most lines were about 80 characters wide, but there were also 500+ character lines just to make things interesting. (I hate HTML.) Anyway, without too much trouble, I was able to find the content and make the changes. It wasn&#8217;t hard, just tedious.</p>
<p>I was now ready to view the result. I hit save to close the editor control and return to the file list. I switched to another browser tab that had the page loaded and hit F5 to refresh the display. Every bit of Japanese text was total garbage. Argh!!. I inadvertently changed something that ruined the display of the entire page. I knew I&#8217;d have to try again and be more careful. So I open the page in the editor control again and much to my chagrin, now all the Japanese text in the original file was garbage as well. The whole page was ruined. It hadn&#8217;t just a bug in my edits causing the display to go bad. (Another lesson in why you should back up your content before you start editing. Fortunately I had. Whew!)</p>
<p>I was stuck. A little experimentation quickly revealed that just loading the file in the Yahoo! Japan editor control and immediately saving it still ruined the Japanese. Not very impressive considering this was a site specifically for hosting and maintaining Japanese websites! (To be fair, this did not happen to every page on the site. Most I could edit just fine.) The problem was that the Yahoo! Japan on-line editor control did not resave the file with the correct encoding. It could read the file, display the file, and edit the file, but not save the file correctly. It was actually rather pitiful. Would it have worked had I been running on a native Japanese version of Windows XP and IE? Who knows? I would hope so, but that wouldn&#8217;t help me. I had the same problem in IE and Firefox. Could I have changed my browser settings to fix the problem? I don&#8217;t know, but I&#8217;ve never had a problem with any other Japanese page.</p>
<p>I was about to resign myself to having to recreate the whole page from scratch and upload it. Then I remembered SlickEdit handles different encodings. So I pulled up the backup copy in the Yahoo! Japan editor control and opened a new blank HTML page in SlickEdit and selected Japanese (Shift-Jis) encoding. After a simple copy and paste into SlickEdit, I had the original contents in a real editor (syntax highlighting, completions, HTML beautifier, parenthesis matching etc..) that could preserve the encoding. In a lot less time, thanks to the features in SlickEdit, I had the changes in again, saved properly to Japanese (Shift-Jis), and uploaded back to Yahoo! Japan.</p>
<p>Thank you SlickEdit.</p>
<p>(But I still hate software generated HTML.)</p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fblog.slickedit.com%2F2008%2F01%2Fwhy-i-hate-html-and-how-slickedit-saved-the-day%2F';
  addthis_title  = 'Why+I+Hate+HTML+and+How+SlickEdit+Saved+the+Day';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
]]></content:encoded>
			<wfw:commentRss>http://blog.slickedit.com/2008/01/why-i-hate-html-and-how-slickedit-saved-the-day/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Professional SlickEdit® Hits the Shelves</title>
		<link>http://blog.slickedit.com/2007/11/professional-slickedit%c2%ae-hits-the-shelves/</link>
		<comments>http://blog.slickedit.com/2007/11/professional-slickedit%c2%ae-hits-the-shelves/#comments</comments>
		<pubDate>Wed, 21 Nov 2007 19:39:37 +0000</pubDate>
		<dc:creator>Scott Westfall</dc:creator>
				<category><![CDATA[Code Editors]]></category>
		<category><![CDATA[SlickEdit Products]]></category>

		<guid isPermaLink="false">http://blog.slickedit.com/?p=191</guid>
		<description><![CDATA[Last Saturday I had one of the most rewarding moments of my professional life. I was at Barnes &#38; Noble looking through the computer books when I saw two copies of the new Professional SlickEdit® book [1] on the shelf. Seeing this filled me with a sense of pride I have rarely experienced before. I [...]]]></description>
			<content:encoded><![CDATA[<p>Last Saturday I had one of the most rewarding moments of my professional life. I was at Barnes &amp; Noble looking through the computer books when I saw two copies of the new <u>Professional SlickEdit®</u> book [1] on the shelf. Seeing this filled me with a sense of pride I have rarely experienced before.</p>
<p><center><a rel="lightbox[pics191]" href="http://blog.slickedit.com/wp-content/uploads/2007/11/slickeditbooksmall.JPG" title="slickeditbooksmall.JPG"><img width="200" src="http://blog.slickedit.com/wp-content/uploads/2007/11/slickeditbooksmall.thumbnail.JPG" alt="slickeditbooksmall.JPG" height="150" class="imageframe imgalignleft" /></a> </center>I didn’t write the book. It was written by John Hurst, a long-time SlickEdit user with no affiliation with SlickEdit Inc. I did help to review the material John wrote and provided feedback, but the pride I felt wasn’t related to my minor contribution to the book. It was because of what the book says about our product that made me proud.</p>
<p>The book is a symbol of the impact our work has on others. It says that there are enough people using SlickEdit for a publisher like Wrox to publish this book. That someone like John, whose knowledge of SlickEdit is remarkable, was available to write this book also indicates something of the passion our customers feel for our work. This awareness of the positive effect our work has had on others is often missing in software development.</p>
<p>I’ve worked on a lot of different projects in my career. Most were large custom automation jobs that were deployed on a server somewhere. Often there was little to no interaction with the actual users of the system. With SlickEdit, I get to see and use the result of my efforts. I interact with people who use our products every day. And now, with the release of <u>Professional SlickEdit®</u>, I feel, well, almost famous.</p>
<p><strong>Why a SlickEdit Book?</strong></p>
<p>The very existence of a 3rd party book on SlickEdit raises the question of why such a book is needed. Some might ask, “Isn’t the user guide good enough?” The answer, frankly, is “yes it is” and “no it isn’t”.</p>
<p>After 20 years of development, SlickEdit is full of features. Even though we’ve made great strides in improving our documentation over the last several releases, there’s still a long way to go. As John points out in the introduction to <u>Professional SlickEdit®</u>, “The SlickEdit User Guide that is shipped with the product does not even document every feature…” Hey! We’re working on it!</p>
<p>The SlickEdit User Guide and <u>Professional SlickEdit®</u> describe SlickEdit from two different perspectives. Our goal with the User Guide is to teach you how to install, configure, and use the features in SlickEdit. <u>Professional SlickEdit®</u> picks up where the SlickEdit User Guide leaves off. It covers many of the features that are documented in the user guide but it does so from an advanced usage perspective, showing effective ways to use the features. The book includes examples showing actual code and how various features can be used. It also includes sample Slick-C macro code to customize and extend SlickEdit, which will be of particular interest to advanced users.</p>
<p>We try to be process-agnostic at SlickEdit. We recognize that people have very different work patterns, and we don’t want to force you to change them. Instead, we believe it is important for SlickEdit to adapt to your work style. No matter how much we are convinced that brace style 1 (shown below) is the only sensible choice we allow you to mess up your code with brace style 2 and 3 as much as you like.</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&lt;pre&gt;<br />
if () { <br />
}&lt;/pre&gt;</div></td></tr></tbody></table></div>
<p>As an independent author, John had more degrees of freedom. He was freer to express his opinion, not unlike the freedom one has while blogging. So, where our documentation provides a list of the capabilities, John directs you towards the ones he finds to be most useful.</p>
<p><strong>A Fresh Perspective</strong></p>
<p>One of the key benefits I’ve gotten from this process is the insight from seeing our product from another perspective. Working with John and reading his descriptions of SlickEdit helped me see the product in a new way.</p>
<p>It’s a common problem. The more you work on something the less you are able to really see it. You see, instead, your perceptions of the product. How many times have you written something, code or text, and missed a simple flaw, like an omitted word or a boundary condition? No matter how many times you read it, you see what you expect to see not what is really there. Then, someone who reads it for the first time easily finds the problem.</p>
<p>My thanks to John Hurst for writing this book and the good people at Wrox for publishing it. And for treating me to a truly rewarding moment in my career!</p>
<p>[1] <u>Professional SlickEdit®</u> by John Hurst (ISBN-13: 978-0-470-12215-0), Wiley Publishing, Inc.</p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fblog.slickedit.com%2F2007%2F11%2Fprofessional-slickedit%25c2%25ae-hits-the-shelves%2F';
  addthis_title  = 'Professional+SlickEdit%3Csup%3E%C2%AE%3C%2Fsup%3E+Hits+the+Shelves';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
]]></content:encoded>
			<wfw:commentRss>http://blog.slickedit.com/2007/11/professional-slickedit%c2%ae-hits-the-shelves/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Comfort, Habits and Ruts in Software Development</title>
		<link>http://blog.slickedit.com/2007/10/comfort-habits-and-ruts-in-software-development/</link>
		<comments>http://blog.slickedit.com/2007/10/comfort-habits-and-ruts-in-software-development/#comments</comments>
		<pubDate>Wed, 03 Oct 2007 12:39:25 +0000</pubDate>
		<dc:creator>Scott Hackett</dc:creator>
				<category><![CDATA[Code Editors]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://blog.slickedit.com/?p=98</guid>
		<description><![CDATA[Some years ago, I worked on software used by a separate department within the company. It was a great program, but it ran behind an ugly console interface. Myself and the other programmers proposed a windowed interface which made a world of difference to the program&#8217;s workflow. &#8220;It&#8217;s not going to happen,&#8221; said our manager. [...]]]></description>
			<content:encoded><![CDATA[<p>Some years ago, I worked on software used by a separate department within the company. It was a great program, but it ran behind an ugly console interface. Myself and the other programmers proposed a windowed interface which made a world of difference to the program&#8217;s workflow. &#8220;It&#8217;s not going to happen,&#8221; said our manager. In less than thirty seconds, our great ideas fell to pieces. &#8220;They&#8217;ve used that console interface for 15 years now, <strong>it&#8217;s just the way it&#8217;s done here.</strong>&#8221;</p>
<p>I&#8217;d heard that before; resistance to change for fear of change. It&#8217;s like being told, &#8220;because I said so,&#8221; by your parents for lack of a good reason. I always saw that guy as being an obstacle in our software development, more interested in not rocking the boat than improving the process.</p>
<p><strong>6 years later&#8230;</strong></p>
<p>When I started at SlickEdit, I was introduced to a lot of firsts. I&#8217;m a Microsoft programmer [ducks behind cube wall]. I&#8217;ve been programming with Microsoft&#8217;s APIs, toolkits, libraries, IDEs, etc for a long time. When it comes to Microsoft technology, I&#8217;ve done a lot, and it&#8217;s a world that I feel completely at home in.</p>
<p>My first assignment here was to test SlickEdit on AIX, having never used SlickEdit before and with virtually no UNIX background. I tried my best to learn my way around, but I never shook that feeling of being <strong>hopelessly </strong>lost. To make things worse, everyone else was using it at the Jedi Knight level. All of my creature comforts were gone during this testing cycle. As an experienced programmer, it&#8217;s humbling and flat out embarrassing to have to ask questions like, &#8220;How do I install this program?&#8221;, &#8220;Where is my personal directory?&#8221; and &#8220;How do I build with GCC?&#8221;</p>
<p>When I got to work on Tools, and got back to Visual Studio and Windows, I felt like I was back home. I knew where everything was; I knew which step was the creaky step, I knew how to use all the buttons on the TV remote control, I was completely familiar with my surroundings. This isn&#8217;t at all to say that Visual Studio is better than SlickEdit, because in a lot of ways, it&#8217;s not. The same could be said about Windows vs. UNIX or Linux.</p>
<p>After so many years, I&#8217;ve become a creature of habit, and I recognize that. Not because the task of learning a new OS or code editor is too difficult, but because I really hate the feeling of being lost. Even worse is thinking about the wasted hours learning to do the same thing I could do in my comfort space in five minutes. Most horrible of all is just feeling stupid about not knowing how to do the simplest things.</p>
<p>After all this time, I feel like I&#8217;ve gained a little perspective from my old manager&#8217;s side of the fence. &#8220;Don&#8217;t take away their console interface&#8230; they don&#8217;t want to learn, they just want to get their job done,&#8221; was what he was really trying to say. Starting from square one and leaving your areas of proficiency behind is scary. I&#8217;m always happy to learn new things, but it&#8217;s always nice to come back home. Now I see his point of view.</p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fblog.slickedit.com%2F2007%2F10%2Fcomfort-habits-and-ruts-in-software-development%2F';
  addthis_title  = 'Comfort%2C+Habits+and+Ruts+in+Software+Development';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
]]></content:encoded>
			<wfw:commentRss>http://blog.slickedit.com/2007/10/comfort-habits-and-ruts-in-software-development/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Editor or IDE?</title>
		<link>http://blog.slickedit.com/2007/08/editor-or-ide/</link>
		<comments>http://blog.slickedit.com/2007/08/editor-or-ide/#comments</comments>
		<pubDate>Wed, 29 Aug 2007 13:15:07 +0000</pubDate>
		<dc:creator>Scott Westfall</dc:creator>
				<category><![CDATA[Code Editors]]></category>
		<category><![CDATA[SlickEdit Products]]></category>

		<guid isPermaLink="false">http://blog.slickedit.com/?p=122</guid>
		<description><![CDATA[The first season of Saturday Night Live had a great skit featuring Gilda Radner, Dan Aykroyd , and Chevy Chase arguing about new Shimmer(i): Gilda: “New Shimmer is a floor wax.” Dan: “No, new Shimmer is a dessert topping.” Gilda: “It’s a floor wax!” Dan: “It’s a desert topping!” Gilda: “It’s a floor wax, I’m [...]]]></description>
			<content:encoded><![CDATA[<p>The first season of Saturday Night Live had a great skit featuring Gilda Radner, Dan Aykroyd , and Chevy Chase arguing about new Shimmer(i):<br />
<strong>Gilda</strong>: “New Shimmer is a floor wax.”<br />
<strong>Dan</strong>: “No, new Shimmer is a dessert topping.”<br />
<strong>Gilda</strong>: “It’s a floor wax!”<br />
<strong>Dan</strong>: “It’s a desert topping!”<br />
<strong>Gilda</strong>: “It’s a floor wax, I’m telling you!”<br />
<strong>Dan</strong>: “It’s a desert topping, you cow!”<br />
<strong>Chevy</strong>: “Hey, hey, hey, calm down, you two. New Shimmer is both a floor wax and a dessert topping!”</p>
<p>I often get involved in a similar debate about SlickEdit&#8211;not about whether it is a floor wax or dessert topping&#8211;but whether it is an editor or an Integrated Development Environment (IDE). To answer this we need to examine a brief history of programming and the differences between editors and IDEs.</p>
<p><strong>A Brief History of Programming</strong><br />
The first evidence we have of man as programmer lies in the cave paintings in France. Some would have you believe that these are depictions recording daily prehistoric life. If you look more closely it becomes clear that these are really the first known examples of a written program.</p>
<p>The programming language is symbolic with a confusing syntax. What, today, we would write simply as:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">man.hunt(antelope);</div></td></tr></tbody></table></div>
<p>requires many more figures in this primitive programming language. Of course, there were no computers back then, so all programs had to be hand executed. This could explain why most of the programs were about hunting and dancing. These early cave programs were written with bits of charcoal and pigments made from plant extracts. Editing tools were utterly lacking.</p>
<p>Another prominent example of early programming is seen in Egypt during the reign of the pharaohs. While some hieroglyphs may, indeed, be a form of writing, some we now know were early programs. This is particularly true of the large obelisks carved by the Egyptians. These were intended to be inserted into a large, obelisk-shaped reader. Unfortunately, no examples of these early peripherals still exist. As with many stone computers, they were disassembled and reconfigured into items more practical in those times, such as homes, restaurants, and parking garages.</p>
<p>The Egyptians’ programming language, called Osiris (later replaced by Osiris++), uses several abstract symbols that are combined to represent a larger set of programming concepts. In fact, the Egyptians were the first to introduce the concept of the variable, as seen in this example:</p>
<p><a rel="lightbox[pics122]" href="http://blog.slickedit.com/wp-content/uploads/2007/08/hieroglyphs.JPG" title="hieroglyphs.JPG"><img width="200" src="http://blog.slickedit.com/wp-content/uploads/2007/08/hieroglyphs.thumbnail.JPG" alt="hieroglyphs.JPG" height="65" class="imageframe imgalignleft" /></a></p>
<p>Though no interpreters from that time still exists, it’s largely believed that this statement translates into:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">int i = 0;</div></td></tr></tbody></table></div>
<p>Again, the Egyptians had little in the way of editing tools. Programs were typically written with a hammer and chisel, making undo a very time consuming operation. They did, however, introduce the earliest use of whiteboards in the form of clay tablets, which allowed them to prototype code in a more forgiving form.</p>
<p>There isn’t time for a comprehensive history of programming, so we’ll have to skip over the early Greek and Roman programmers, who used Scroll 1.0 to write their programs, and frontier programmers in the early American west, who whittled their programs out of wood. We’ll skip past systems where you toggled programs into the front panel in binary and those using paper tape or punch cards.</p>
<p>The modern era of programming began in 19-mumble-mumble with the advent of the teletype. With these systems you had access to your full program and could readily extend and modify it. Editing was done a line at a time, so these editors were called “line editors”. You would print a range of lines, then type a command to insert or alter a line.</p>
<p>Teletypes were just an evolutionary bridge to the console, early CRT systems that displayed your code electronically. With consoles, the first visual editors were created. These editors displayed a page of code and allowed you to move a cursor within the file. Editing could be done simply by positioning the cursor and inserting or overwriting characters.</p>
<p>Contemporary editors share many characteristics with these early editors. They have added features like syntax highlighting, Graphical User Interfaces, window management, and a host of other features, but the process of writing code is fundamentally the same. Typically, these editors are file-oriented. You open a file, make changes, and save the file. All other activities are performed by programs or utilities launched from a command line or shell.</p>
<p>Integrated Development Environments group the related development activities into a single…well…integrated development environment. This is generally considered to be more convenient because it allows previously separate utilities to interact.</p>
<p>An IDE generally has 4 main components:</p>
<ol>
<li>An editor—something providing the heretofore described ability to write code.</li>
<li>A project/build system—something that knows about the set of files in your project and allows you to launch a build on these files.</li>
<li>A compiler or interpreter—that allows you to build and execute your program.</li>
<li>A debugger—that allows you to step through your code and examine values.</li>
</ol>
<p>Typically, an IDE will also provide a number of code/object browsers, integration with source control tools, and other utilities related to programming.</p>
<p>Interaction between the editor and the other components in the IDE provides key points of efficiency not available using standalone editors:</p>
<ul>
<li>The project/build system provides the knowledge of the available files and symbols in the program. Using this information you can browse to open files and use powerful completions while typing. This saves keystrokes, prevents wasted time looking up functions and methods, and reduces the number of compile errors.</li>
<li>Integration with the compiler allows an IDE to launch a build and gather the results of the build. Programmers can quickly step through the errors and navigate to the source code for that error. With a standalone editor, you must manually open files and execute an operation to go to the specified line.</li>
<li>Integration with the debugger allows you to set breakpoints from within the editor and view the code in the editor as you step through the code. Though similar capabilities are available in standalone debuggers, the code will be displayed differently, often without or with different color coding (sometimes called syntax highlighting). Once you are used to reading code in color, any alternate presentation slows your comprehension.</li>
</ul>
<p><strong>Different Strokes for Different Folks?</strong><br />
So, obviously, the IDE has completely supplanted the visual editor, right? No, for a number of reasons some users still prefer to use editors rather than IDEs. Emacs and vi (and their descendents) are the two most common examples of these.</p>
<p>One reason some people prefer a standalone editor is that IDEs tend to be very GUI-oriented, providing graphical mechanisms to launch operations. Standalone editors tend to be command-oriented, providing comprehensive key bindings to initiate operations. Using commands and key bindings is a big boost to programming efficiency, compared to the time lost grabbing the mouse and selecting things.</p>
<p>The editors in IDEs are often less powerful than the standalone editors. When all you do is write an editor, you can focus on the kind of power programmer operations that really improve programming efficiency. Developers of IDEs have to split their time between the editor and all of the other elements in the environment.</p>
<p>The choice of platform also makes a difference. Use of standalone editors is far more common on UNIX and Linux systems than on MS Windows or the Apple Macintosh. UNIX and Linux users are typically more comfortable writing scripts to automate builds and process results. They see the OS as the integrated environment.</p>
<p>Even with these reasons, users of standalone editors are missing out on those key points of efficiency that come with an IDE. That’s why the descendents of standalone editors, like Vim and GNU Emacs, have been adding more of those capabilities.</p>
<p><strong>So What the Heck is SlickEdit?</strong><br />
SlickEdit looks and works like an IDE, but we call ourselves an editor. This is because we don’t include a compiler or a debugger with SlickEdit. It’s also because we place our emphasis on the editor. SlickEdit is a command-oriented, keyboard-centric editor. In fact, SlickEdit began as a powerful visual editor that grew to include the most essential IDE capabilities.</p>
<p>Though we don’t include a compiler and a debugger(iii), we work with commonly available compilers and debuggers. If you have installed the GNU C/C++ tool chain, a Java JDK, or Microsoft Visual Studio, then SlickEdit works like an IDE, providing the key integrations described previously. SlickEdit detects the presence of these tools and interacts with them inside the SlickEdit environment(ii).</p>
<p>So, is SlickEdit a great editor that works like an IDE, or is it an IDE with a great editor? Like the Shimmer product in the SNL skit, SlickEdit is both.</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
i: http://snltranscripts.jt.org/75/75ishimmer.phtml<br />
ii: SlickEdit launches the Visual Studio debugger in a separate window.<br />
iii: SlickEdit does include a copy of GDB to insure compatibility.</p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fblog.slickedit.com%2F2007%2F08%2Feditor-or-ide%2F';
  addthis_title  = 'Editor+or+IDE%3F';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
]]></content:encoded>
			<wfw:commentRss>http://blog.slickedit.com/2007/08/editor-or-ide/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SlickEdit 2007 For Windows Development</title>
		<link>http://blog.slickedit.com/2007/08/slickedit-2007-for-windows-development/</link>
		<comments>http://blog.slickedit.com/2007/08/slickedit-2007-for-windows-development/#comments</comments>
		<pubDate>Thu, 09 Aug 2007 14:56:51 +0000</pubDate>
		<dc:creator>Matthew E</dc:creator>
				<category><![CDATA[Code Editors]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[SlickEdit Products]]></category>

		<guid isPermaLink="false">http://blog.slickedit.com/?p=103</guid>
		<description><![CDATA[You&#8217;ve got Visual Studio®, and you mostly write applications for Windows. So why would you need SlickEdit? SlickEdit can read most Visual Studio solution and project files, and can pinch hit nicely for Visual Studio. If you just need to load up a project, make some edits, check some files in and out of source [...]]]></description>
			<content:encoded><![CDATA[<p>You&#8217;ve got Visual Studio<sup>®</sup>, and you mostly write applications for Windows. So why would you need SlickEdit? SlickEdit can read most Visual Studio solution and project files, and can pinch hit nicely for Visual Studio. If you just need to load up a project, make some edits, check some files in and out of source control, and kick off a build, you can do all this in SlickEdit.<br />
But where SlickEdit really shines is helping you organize and edit all of that code you&#8217;ve got that doesn&#8217;t fit neatly into an application project. It all starts with using SlickEdit&#8217;s flexible and customizable project system in combination with other time-saving features.</p>
<p><strong>Managing Builds</strong></p>
<p style="float: right; margin: 0px 0px 10px 10px">Schema URL Mappings<br />
 <a rel="lightbox[pics103]" href="http://blog.slickedit.com/wp-content/uploads/2007/08/urlmappings.jpg" title="urlmappings.jpg"><img width="200" src="http://blog.slickedit.com/wp-content/uploads/2007/08/urlmappings.thumbnail.jpg" alt="urlmappings.jpg" height="103" class="imageframe imgalignleft" /></a></p>
<p>We&#8217;ve been using CruiseControl.NET and NAnt for nightly builds of our products. Both technologies use an XML file format. SlickEdit&#8217;s XML features include Auto-completion of tags and attributes, gleaned from the definitions in XSD schemas. Visual Studio also has an excellent XML editing experience, but SlickEdit allows you to customize what specific XSD schemas are used for a particular XML namespace declaration. CruiseControl.NET does not distribute an &#8220;official&#8221; schema for their namespace, mostly because the CruiseControl syntax is extensible with a plug-in architecture. By using Microsoft&#8217;s XML tools I was able to take my existing CruiseControl project files and generate a starter schema. SlickEdit&#8217;s URL Mappings allow me to then use that custom schema for document validation and auto-completion.</p>
<p>In an effort to reduce redundant code and reduce the size of the NAnt source files, many common properties and tasks used by multiple projects have been broken out into a series of include files. However, locating a property or task that is defined in an external file usually requires<a rel="lightbox[pics103]" href="http://blog.slickedit.com/wp-content/uploads/2007/08/alias.jpg" title="alias.jpg"></a> a multi-file search.</p>
<p style="float: right; margin: 0px 0px 10px 10px">Regex Evaluator<br />
<a rel="lightbox[pics103]" href="http://blog.slickedit.com/wp-content/uploads/2007/08/regexeval.jpg" title="regexeval.jpg"><img width="200" src="http://blog.slickedit.com/wp-content/uploads/2007/08/regexeval.thumbnail.jpg" alt="regexeval.jpg" height="171" class="imageframe imgalignleft" /></a></p>
<p>By using the SlickEdit Regex Evaluator I was able to craft a regular expression to search for task and property definitions. Once the expression was ready, I created a macro in Slick-C (SlickEdit&#8217;s C-like macro language)(<a href="http://blog.slickedit.com/?page_id=108">snippet</a>) to search for the word at the cursor in the current NAnt build file and any included build files. Now I have instant search across multiple files when the definition of a property or target eludes me.</p>
<p><strong>Building Installers with WIX (Windows Installer XML)<br />
</strong>WIX is an open-source toolkit from Microsoft for building Windows Installer .msi files. It too uses an XML file format. There are tools available in Wix for getting your project started and compiling your list of files to be installed, but authoring an installer still requires quite a bit of hand-editing the XML source. I use SlickEdit&#8217;s Aliases feature to provide <a href="http://blog.slickedit.com/wp-content/uploads/2007/08/aliascall.jpg">completion of code snippets </a>for commonly used Wix XML constructs. Aliases go well beyond simple insertion of prewritten code. You can configure an alias to format and auto-indent the new text, set the initial editing position, and prompt for replacement parameters.<strong> </strong></p>
<p style="float: right; margin: 0px 0px 10px 10px"><strong>Defining Aliases<br />
</strong><a rel="lightbox[pics103]" href="http://blog.slickedit.com/wp-content/uploads/2007/08/alias.jpg" title="alias.jpg"><strong><img width="200" src="http://blog.slickedit.com/wp-content/uploads/2007/08/alias.thumbnail.jpg" alt="alias.jpg" height="155" class="imageframe imgalignleft" /></strong></a></p>
<p>All of the code for the installer is placed in a custom SlickEdit project. A custom project allows you to create as many organizational folders as you need, optionally organized by physical directories or file extensions. The real power in SlickEdit projects is the ability to define custom build steps to call external tools. Since this project invokes quite a few NAnt build targets, I <a href="http://blog.slickedit.com/wp-content/uploads/2007/08/buildmenu.jpg">customized the build menu</a> by adding <a href="http://blog.slickedit.com/wp-content/uploads/2007/08/projprops.jpg">new build tools</a> to the project. These allow me to invoke NAnt to execute the build targets and display the output in the build window.</p>
<p><strong>Dabbling in PHP and MySQL, with a Side of PowerShell</strong><br />
A year or so ago, I worked on a side project to develop a content management website using PHP and MySQL. The application had to work with Internet Explorer, Firefox, and Safari browsers. Using SlickEdit allowed me to create a single project to organize the code and work with the Subversion repository located on a remote Linux hosting account. And I was able to edit the code on both a Windows XP tablet PC and my MacBook as the custom project format is identical on Windows and *Nix platforms. Customizing the project&#8217;s build commands allowed me to add shortcuts for opening pages in multiple browsers, execute MySQL scripts one the database, and transfer files via FTP to my remote hosting account.</p>
<p style="float: right; margin: 0px 0px 10px 10px">PowerShell Syntax<a href="slickedit_win/PowerShell.jpg"><br />
</a><a rel="lightbox[pics103]" href="http://blog.slickedit.com/wp-content/uploads/2007/08/powershell.jpg" title="powershell.jpg"><img width="200" src="http://blog.slickedit.com/wp-content/uploads/2007/08/powershell.thumbnail.jpg" alt="powershell.jpg" height="163" class="imageframe imgalignleft" /></a></p>
<p>SlickEdit supports dozens of languages out of the box, and has the ability to quickly add your own user-defined highlighting schemes or modify existing ones. I found that the default listing of SQL keywords didn&#8217;t include some of the MySQL keywords, but they were <a href="http://blog.slickedit.com/wp-content/uploads/2007/08/syntax.jpg">easy enough to add</a> via the Color Coding options dialog.</p>
<p>For the past year or so I&#8217;ve been using PowerShell in place of cmd.exe, and steadily building a library of scripts to automate routine tasks. But it just didn&#8217;t seem right that such a neat shell language should have to be edited without any syntax highlighting. With SlickEdit, this was easily solved. To <a href="http://blog.slickedit.com/wp-content/uploads/2007/08/powershell.jpg">set up color coding</a> for PowerShell, all I had to do was create a new language definition, specify the comment format, and add a list of keywords.</p>
<p><strong>No Code Left Behind</strong><br />
These examples only begin to scratch the surface of the features available in SlickEdit. Your code or build process doesn&#8217;t have to be a second-class citizen just because it doesn&#8217;t fit neatly into Visual Studio. For all those times you have to &#8220;just edit it in notepad&#8221; or &#8220;run this tool from the commandline&#8221;, think of how SlickEdit could save you time and hassle.</p>
<p><strong>Download Free Trial</strong></p>
<p>You can download a free trial of Slickedit 2007 here: <u><a href="http://www.slickedit.com/content/view/409/239/">SlickEdit Trial</a></u></p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fblog.slickedit.com%2F2007%2F08%2Fslickedit-2007-for-windows-development%2F';
  addthis_title  = 'SlickEdit+2007+For+Windows+Development';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
]]></content:encoded>
			<wfw:commentRss>http://blog.slickedit.com/2007/08/slickedit-2007-for-windows-development/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>The Font Tournament</title>
		<link>http://blog.slickedit.com/2007/08/the-font-tournament/</link>
		<comments>http://blog.slickedit.com/2007/08/the-font-tournament/#comments</comments>
		<pubDate>Tue, 07 Aug 2007 12:49:21 +0000</pubDate>
		<dc:creator>Dennis B</dc:creator>
				<category><![CDATA[Code Editors]]></category>
		<category><![CDATA[Productivity]]></category>

		<guid isPermaLink="false">http://blog.slickedit.com/?p=101</guid>
		<description><![CDATA[Here we are in the worst time of the year, that time after hockey season ends and before football season begins. The time of nothingness, boredom, spelling bees on ESPN2. So, what do sports fans do during this down time. If they are desperate, they watch tennis, really desperate, maybe try to get into watching [...]]]></description>
			<content:encoded><![CDATA[<p>Here we are in the worst time of the year, that time after hockey season ends and before football season begins. The time of nothingness, boredom, spelling bees on ESPN2.</p>
<p>So, what do sports fans do during this down time. If they are desperate, they watch tennis, really desperate, maybe try to get into watching a soccer game. But, if you are exceedingly desperate, you invent a new tournament sport.</p>
<p><strong>The Single Elimination Font Championship</strong></p>
<p>It&#8217;s hard to pick a really good programming font. There are a lot of fonts out there, just google for &#8220;programming font&#8221; and you will find a lot of really great fonts, and a lot of really weird fonts. But how do you pick the best font?</p>
<p>Here is my grudge about font selection dialogs. They work in one of two ways:</p>
<ol>
<li>They will only show you one font at a time.</li>
<li>They display the list of fonts in the font itself.This seems like a nice visual solution, except that it makes it impossible to<br />
decipher the font name of a symbol font or foreign language font.</li>
</ol>
<p>Finding a good programming font seems to involve a lot of trial and error. Some fonts look great in the font dialog, but do not look very good in practice. Sometimes it is hard to read vertical spacing from the font dialog. Sometimes, the plain font looks great, but it&#8217;s italic or bold variant is horrid, and you do not notice that until you are using the font in your editor.</p>
<p>In this article, I am going to outline a design for a new paradigm for font selection that overcomes some of these issues, including the problem with there being no sports on TV.</p>
<p>Picking the contestants</p>
<p>The first step is to select a set of candidate fonts. This is where you use a traditional font dialog, with one modification to the font list: checkboxes so you can pick which fonts will participate in the tournament.</p>
<p><strong>The Playoff&#8217;s</strong></p>
<p>Once you have a set of contestants, you begin the playoffs. The fonts are assigned randomly into a single-elimination bracket. A slightly more thorough variation of the system could use double-elimination brackets, but I don&#8217;t believe it&#8217;s really necessary.</p>
<p>The font contests are head-to-head. You are shown a big dialog with both fonts, their names, a size selector, and six samples side-by-side:</p>
<ol>
<li>The plain font with programmer-friendly sample text:
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">== Line before ==<br />
Aa_Bb_Cc = (l1 + O0);<br />
== Line after ==</div></td></tr></tbody></table></div>
</li>
<li>The font in bold with the same text.</li>
<li>The font in italic with the same text.</li>
<li>The font in bold and italic with the same text.</li>
<li>The font in underline with the same text.</li>
<li>An editor control with your color scheme displaying code<br />
in a language of your choice where you can paste in your<br />
own text to see.</li>
</ol>
<p>Then you select the font that you like better, and move on to the next contest. The fundamental principal is that while it may be hard to select a favorite font from a list of 100 fonts, most programmers can look at <em>two</em> fonts and pick one that they like better than the other.</p>
<p>The brackets are played out until you reach the championship round and select one favorite programming font, which you will then have the opportunity to assign the champion as your default source window font in SlickEdit. Playing out the brackets with a single-elimination tournament requires (N -1) contests where N is the number of candidate fonts participating in the tournament. Even with a huge field of 50 fonts, you could finish in 15 minutes, and you would know that the font you are using is a champion. Which will leave you plenty of time to catch that spelling bee later on ESPN2.</p>
<p><strong>Conclusion</strong></p>
<p>&#8220;It&#8217;s so crazy, it just might work.&#8221;</p>
<p>This is merely a design sketch for a font tournament system. It&#8217;s not a feature that is being developed or even in the works, just an idea. If some industrious SlickEdit user wanted to exercise his/her Slick-C skills, it would be quite easy to implement, and would be a really great user-contributed batch macro.</p>
<p>I mean, what else are you going to do with your time? It&#8217;s not like there&#8217;s any sports on TV.</p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fblog.slickedit.com%2F2007%2F08%2Fthe-font-tournament%2F';
  addthis_title  = 'The+Font+Tournament';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
]]></content:encoded>
			<wfw:commentRss>http://blog.slickedit.com/2007/08/the-font-tournament/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Programming Language Wars</title>
		<link>http://blog.slickedit.com/2007/07/programming-language-wars/</link>
		<comments>http://blog.slickedit.com/2007/07/programming-language-wars/#comments</comments>
		<pubDate>Wed, 18 Jul 2007 13:31:15 +0000</pubDate>
		<dc:creator>Scott Westfall</dc:creator>
				<category><![CDATA[Code Editors]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://blog.slickedit.com/?p=95</guid>
		<description><![CDATA[Human beings love to argue. Whether the argument is about boxers vs. briefs, ketchup vs. mustard, or Ginger vs. Mary Ann, people will take a position and argue. I don’t know if it is a uniquely human trait or a natural consequence of any intelligent beings that develop language. Some say that dolphins have sophisticated [...]]]></description>
			<content:encoded><![CDATA[<p>Human beings love to argue. Whether the argument is about boxers vs. briefs, ketchup vs. mustard, or Ginger vs. Mary Ann, people will take a position and argue.</p>
<p>I don’t know if it is a uniquely human trait or a natural consequence of any intelligent beings that develop language. Some say that dolphins have sophisticated communication abilities. If so, they could be swimming around discussing all kinds of topics,</p>
<p>“Isn’t the water chilly, today, George?”<br />
“Actually, I think it’s gotten a bit warmer due to that global warming I keep hearing about.”</p>
<p>Or they could be swimming around arguing, the way humans do.</p>
<p>“Herring.”<br />
“No way! Anchovies!”<br />
“I’m telling you, herring is way better than anchovies.”</p>
<p>This trait is particularly common among programmers. Classic arguments include big endian versus little endian, indexing arrays beginning with 1 or 0, and which language is best. While the other debates have subsided a bit, the argument over which language is best seems to have heated up.</p>
<p>I’ve read a lot of articles lately where the author compares two languages in an effort to show why his favorite is superior. Often, these articles make it clear that only an intoxicated moron would use the language he so clearly shows to be inferior to his. Often, this superiority is established by showing features lacking in the one language. Sometimes they try to demonstrate superiority by accusing a language of being verbose and showing how the same thing can be achieved in fewer characters in the other language.</p>
<p><strong>Fundamental Theorem of Programming Languages</strong><br />
In order to analyze programming languages, you first need to understand why they exist. I offer my fundamental theorem of programming languages: Programming languages exist to make computer programs understandable to humans.</p>
<p>Modern computers execute machine instructions that are represented in binary. Programming languages were created to overcome limitations in human cognitive abilities. It’s just plain hard for us to look at 1s and 0s and make sense of a program. So we created abstractions that make it easier for us to express and understand the actions we want the computer to perform.</p>
<p>Any comparison of languages should examine the abstractions they provide to facilitate human understanding of the program.</p>
<p><strong>Second Theorem of Programming Languages</strong><br />
The second theorem is closely related to the first: If programmers do not understand a piece of code, they will either break it or rewrite it.</p>
<p>More important than how quickly you could write the code is how quickly someone else will be able to understand it later. This principle can be called “obviousness”.</p>
<p>An example of this principle occurs in languages that don’t require variables to be declared before they are used:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">parm=10;</div></td></tr></tbody></table></div>
<p>How can I tell if this line of code is correct? Maybe this line was supposed to use “param” instead of “parm”. I can only tell this by reading the rest of the code. The compiler (if this was a compiled language) would be no help, since this is perfectly legal. This minor typo, which is easily caught in some languages, can be very difficult to find in others.</p>
<p>You might be surprised how many times you have to look at the code to even notice this problem, even when you know the problem is in this unit. A common problem in proofreading is that you see what you expect to see not what you actually sea (sic).</p>
<p><strong>Third Theorem of Programming Languages</strong><br />
My third theorem goes as follows: No single programming language is equally suited to all programming tasks.</p>
<p>If all languages contained the exact same set of abstractions, they would differ only in minor syntactic ways. Then all languages would be equally applicable to all programming tasks, and we could analyze languages merely by comparing the effectiveness of the syntax chosen.</p>
<p>Things to consider when choosing the language to use:</p>
<ul>
<li>Normal stuff—performance, compatibility with existing code or libraries, …</li>
<li>Size of the team—I can staff a large project with competent Java programmers much more easily than with similarly capable C++ programmers (measured in how likely the code performs the intended action without unintended problems).</li>
<li>Size of the code—a short script allows you to forgo many of the heavy-handed mechanisms or processes that are helpful in larger programs. Some say that the usefulness of Perl decreases rapidly as the number lines in the code increases.</li>
<li>Longevity of the code—if the code is to be used and maintained for a long period of time, coding in a language that clearly expresses intent is much more important. See the Second Theorem of Programming Languages.</li>
<li>Domain—what does the program do? Certainly I would make a different choice in languages if I need to write a real-time operating system kernel versus writing a GUI-oriented web application.</li>
</ul>
<p><strong>Tool Support</strong><br />
One last thing to consider when choosing a language is tool support. The right editor can often make a bigger difference in your productivity than the syntax of the language. Can an editor readily provide completions for the language you are considering? If you are typing every character in your program, you aren’t nearly as productive as someone who makes effective use of completions. How easy is the language to parse? Can a program readily provide type analysis? This will determine how easily tools can be developed to support the language.</p>
<p>At SlickEdit, we’re in the business of helping you write code. I speak from experience when I say that some languages seem to go out of their way to make it hard on us. Whether you’re picking the language for your next project or designing a new language, please keep these principles in mind.</p>
<p>&#8211;Scott Westfall</p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fblog.slickedit.com%2F2007%2F07%2Fprogramming-language-wars%2F';
  addthis_title  = 'Programming+Language+Wars';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
]]></content:encoded>
			<wfw:commentRss>http://blog.slickedit.com/2007/07/programming-language-wars/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Learning to Fly: The Musings of a New SlickEdit Employee</title>
		<link>http://blog.slickedit.com/2007/06/learning-to-fly-the-musings-of-a-new-slickedit-employee/</link>
		<comments>http://blog.slickedit.com/2007/06/learning-to-fly-the-musings-of-a-new-slickedit-employee/#comments</comments>
		<pubDate>Tue, 26 Jun 2007 12:44:57 +0000</pubDate>
		<dc:creator>Sandra</dc:creator>
				<category><![CDATA[Code Editors]]></category>

		<guid isPermaLink="false">http://blog.slickedit.com/?p=96</guid>
		<description><![CDATA[I first started using SlickEdit when I started a new job. It was first on a long list of programs that I would need to install to set up my development machine. I was also handed a SlickEdit travel coffee mug and a SlickEdit t-shirt. My first experience with SlickEdit, the editor, was when I [...]]]></description>
			<content:encoded><![CDATA[<p>I first started using SlickEdit when I started a new job. It was first on a long list of programs that I would need to install to set up my development machine. I was also handed a SlickEdit travel coffee mug and a SlickEdit t-shirt. My first experience with SlickEdit, the editor, was when I started with SlickEdit, the company.</p>
<p>I was excited to start using SlickEdit, because I&#8217;d heard about all the fancy features during the interview process. I&#8217;d browsed through the forums and seen the kind of devotion the product had garnered. I&#8217;d seen some of the SlickTeam coding like mad men, windows opening and closing, text disappearing and appearing somewhere else, all faster than I could follow, all without my favorite crutch, the mouse. But when I actually sat down to start coding my first tasks, it seemed I had two left hands. Using SlickEdit for the first time feels a bit like driving an airplane on the highway. Sure, you can get to work with all the rest of the sedans and minivans, but the whole time, you get the feeling that there&#8217;s something more that you&#8217;re just not sure how to access. So you try a button, maybe you read the manual a little bit, and slowly you pick up new tricks. All the while you have to force yourself to use those tricks before they fade away into the abyss of That Thing You Learned That One Time.</p>
<p>My coworkers, the SlickTeam, were all too willing to show me the power of their product. The slogan of my first week could have been &#8220;Well, that&#8217;s <em>one</em> way to do it,&#8221; as each person chimed in favorite features and tools and explained why those were better than the ones the previous person had outlined. People outside the coding world would never understand the passion that can be evoked about things like aliases, brace styles, and syntax expansion. At the end of it all, I would have been glad to remember one tip from each person. Still, it&#8217;s keep your head down, use the command line, code code code, don&#8217;t touch that mouse. It&#8217;s harder to learn to fly an airplane than drive a car, but I daresay it&#8217;s worth the effort once you&#8217;re in the air.</p>
<p>I&#8217;m catching on, surely, but too slowly for my tastes. Every time I reach for my old friend the mouse, I feel like I&#8217;ve somehow let someone down. Every time I navigate through the extensive codebase that is SlickEdit, I know that there is probably a much easier way to find whatever it is I&#8217;m looking for, because this is a product built by impatient programmers. But I will figure it out. And someday I will regard some new member of the SlickTeam as he takes the long way around, then I&#8217;ll interrupt and say, &#8220;Well, that&#8217;s <em>one</em> way to do it.&#8221;</p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fblog.slickedit.com%2F2007%2F06%2Flearning-to-fly-the-musings-of-a-new-slickedit-employee%2F';
  addthis_title  = 'Learning+to+Fly%3A+The+Musings+of+a+New+SlickEdit+Employee';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
]]></content:encoded>
			<wfw:commentRss>http://blog.slickedit.com/2007/06/learning-to-fly-the-musings-of-a-new-slickedit-employee/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SlickEdit Offers Help to All CodeWright Orphans</title>
		<link>http://blog.slickedit.com/2007/04/slickedit-offers-help-to-all-codewright-orphans/</link>
		<comments>http://blog.slickedit.com/2007/04/slickedit-offers-help-to-all-codewright-orphans/#comments</comments>
		<pubDate>Tue, 24 Apr 2007 16:06:00 +0000</pubDate>
		<dc:creator>Scott Westfall</dc:creator>
				<category><![CDATA[Code Editors]]></category>
		<category><![CDATA[SlickEdit Products]]></category>

		<guid isPermaLink="false">http://blog.slickedit.com/?p=5</guid>
		<description><![CDATA[Many CodeWright® orphans were created when Borland® announced that they would no longer develop or support CodeWright. It’s a sad sight, these poor urchins wandering the streets in search of support. “Pardon me, sir, but could you spare a bug fix?” SlickEdit® offers a solution for those who want a powerful code editor that is [...]]]></description>
			<content:encoded><![CDATA[<p>Many CodeWright<sup>®</sup> orphans were created when Borland<sup>®</sup> announced that they would no longer develop or support CodeWright. It’s a sad sight, these poor urchins wandering the streets in search of support. “Pardon me, sir, but could you spare a bug fix?” SlickEdit<sup>®</sup> offers a solution for those who want a powerful code editor that is actively being developed and supported.</p>
<p>While no editor can offer the exact same set of capabilities as another, SlickEdit provides more of the powerful editing features that CodeWright users are accustomed to than any other editor…and some that CodeWright users never had before, like Comment Wrapping, Backup History, and the Regular Expression Evaluator.<br />
 <br />
No programmer relishes the thought of switching editors. After using an editor for years, the key sequences and operations become second nature. To ease this migration, SlickEdit offers a CodeWright emulation that uses the same key bindings for common operations and provides default behaviors familiar to CodeWright users. This makes you productive right away on SlickEdit.</p>
<p>A PDF of the CodeWright emulation is available at <a href="http://www.slickedit.com/images/stories/products/slickedit/emulation_charts/codewright_emulation.pdf"><strong>http://www.slickedit.com/codewright</strong></a>.</p>
<p>SlickEdit also provides a utility that converts CodeWright workspaces and projects into SlickEdit workspaces and projects. Each CodeWright .psp file is converted to a corresponding SlickEdit .vpw file. Likewise, the CodeWright .pjt files are converted to SlickEdit .vpj files. While this utility doesn’t convert all commands or options, it does save a lot of time setting up the project structure in SlickEdit. The CodeWright project converter is implemented as a Slick-C macro file.</p>
<p>To download it, go to <a href="http://www.slickedit.com/content/view/432"><strong>http://www.slickedit.com/codewright</strong></a>.</p>
<p>Follow these instructions to load the file:<br />
1. Save the file to any directory.<br />
2. Open SlickEdit.<br />
3. Select Help &gt; Product Updates &gt; Load Hot Fix.<br />
4. Navigate to the saved zip file, select it, and click OK.</p>
<p>Once loaded, you run the converter by selecting Project &gt; Open Other Project &gt; Convert CodeWright Project. Or you can run it from the SlickEdit command line. Press F9 (in the CodeWright emulation) to bring up the SlickEdit command line. Type: <span style="font-size: 10pt; font-family: Courier">convert_cw_project –o</span>Then press Enter. The ‘o’ option tells the converter to open the newly converted workspace. CodeWright users, you have a new home!</p>
<p><strong>Visit </strong><a href="http://www.slickedit.com/2007"><strong>www.slickedit.com/2007</strong></a><strong> to download a free trial today!</strong></p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fblog.slickedit.com%2F2007%2F04%2Fslickedit-offers-help-to-all-codewright-orphans%2F';
  addthis_title  = 'SlickEdit+Offers+Help+to+All+CodeWright+Orphans';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
]]></content:encoded>
			<wfw:commentRss>http://blog.slickedit.com/2007/04/slickedit-offers-help-to-all-codewright-orphans/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>$300 Is Free</title>
		<link>http://blog.slickedit.com/2007/04/300-is-free/</link>
		<comments>http://blog.slickedit.com/2007/04/300-is-free/#comments</comments>
		<pubDate>Tue, 17 Apr 2007 16:10:32 +0000</pubDate>
		<dc:creator>Scott Westfall</dc:creator>
				<category><![CDATA[Code Editors]]></category>

		<guid isPermaLink="false">http://blog.slickedit.com/?p=6</guid>
		<description><![CDATA[No, sorry, we’re not giving away money. But you could say we are giving away time, time in the form of increased productivity. Customers evaluating SlickEdit® sometimes note that there are cheaper editors out there and that $300 seems like a lot to pay for an editor. Yes, you can pay less for an editor—some [...]]]></description>
			<content:encoded><![CDATA[<p>No, sorry, we’re not giving away money. But you could say we are giving away time, time in the form of increased productivity.</p>
<p>Customers evaluating SlickEdit<sup>®</sup> sometimes note that there are cheaper editors out there and that $300 seems like a lot to pay for an editor. Yes, you can pay less for an editor—some are actually free. But focusing on price is missing the most important aspect of an editor: how it can make you more productive.</p>
<p>Rather than asking whether there is a cheaper editor available, you should ask whether there is a better editor available. The right tool will always deliver more than enough time savings to pay for itself. If not, you should look for another tool.</p>
<p><strong>Professional Tools<br />
</strong>As a programmer, the editor is the main tool of your trade. The editor is to the programmer what the tennis racquet is to the tennis player or golf clubs to the golfer. Do you think Tiger Woods cares whether there is a cheaper set of golf clubs out there? OK, Tiger can afford any clubs he wants, but professional players are sure to have the equipment they need to be competitive. Should you do any less?</p>
<p>No other tool contributes more to your productivity and effectiveness than your editor. So by choosing a less capable editor, you are really choosing to make yourself less capable, to get less done in a given measure of time. If you’re being paid by the hour, that may be fine. Maybe you have one of those jobs where you can just code as you like and turn things in when they are ready to go. The rest of us, who are on a salary with challenging milestones, know that we are the ones who have to put in the late nights to get things done on time. In that situation, you want the tool that will help you get more done, faster.Not all editors are alike. If they were, you could make a decision solely on the basis of price. The right editor will not only increase your productivity, it will reduce your frustration. Much of what’s involved in programming is tedious, busy work. SlickEdit allows you to focus on what the code should do while it handles many of the boring, clerical tasks.</p>
<p>As a professional programmer, you have an investment in the knowledge and skills you have built. This knowledge is not limited to just the programming languages and techniques you use. It includes your mastery of programming tools. As the primary tool of your trade, you should have a special command of your editor.</p>
<p><strong>Return on Investment</strong><br />
Only you can calculate a true return on investment for your work patterns. However, it’s easy to show that you don’t have to save much time to quickly make up for a $300 purchase. Assume an annual salary of $60,000, which is a conservative value for the average salary paid to programmers in the USA. Assuming a normal work year of 236 days and a normal work day of 8 hours, you have to save 1.6 minutes per day [i] to pay for SlickEdit in the first year of purchase.Here are some of the ways SlickEdit can help you save 1.6 minutes per day:</p>
<ul>
<li>It takes 30 seconds for Eclipse™ or Microsoft<sup>®</sup> Visual Studio<sup>®</sup> to open on my machine. The same project in SlickEdit opens in a second or two. So SlickEdit can save you that much time if you open your environment at least 3 times per day.</li>
<li>Our tagging engine allows you to instantly jump from a symbol to its definition with a single keystroke (Ctrl+Dot). In most editors, you have to either know the file and where it is stored or search for it. Then you have to scroll down or search for the function name. This process can easily take 30 seconds to a minute. So a couple of quick navigations per day will pay for SlickEdit. By the way, we also have a Symbol View that will preview the definition of the current symbol without having to open the file!</li>
<li>We have many features that cut down on the number of characters you have to type, like Syntax Expansion, which automatically completes block statements like if and for. Surround With quickly wraps the selected lines in a block statement. In a normal coding session, these will easily save you a couple minutes.</li>
<li>Code Templates automate the process of creating new classes or patterns. Powerful substitutions are run when a template is instantiated, easily saving you a minute or two on a simple class and several minutes on multi-file templates.</li>
<li>DIFFzilla<sup>®</sup>, our dynamic differencing tool allows you to compare files and edit them in the diff view, providing many of the same editing capabilities in our editor window. This saves wasted time re-running a diff after making changes.</li>
</ul>
<p>For a more complete list of the features we think will save you time and frustration, check out our Cool Features list on our website: http://www.slickedit.com/content/view/353/217, containing feature descriptions and demos showing those features in action.</p>
<p><strong>But My Company Won’t Buy Me an Editor</strong><br />
OK, you’re convinced. You want to buy a new editor. You’ve talked to your boss about the benefits and the added productivity, but your company won’t buy it for you. Well then, buy it yourself.You’re thinking, “Not only does this guy want me to spend $300 on an editor, but he wants me to buy it with my own money!” That’s right. As a professional programmer, your skill with your editor is as important as any other knowledge you possess. Purchasing an editor that makes you more capable is an investment in your career that can pay off in better reviews, higher salaries, and bonuses. Hey! Maybe we’re giving away money after all.</p>
<p><span style="font-size: 10pt; font-family: Garamond">&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</span><span style="font-size: 10pt; font-family: Garamond"> <span style="font-size: 10pt; font-family: Garamond"><span style="font-size: 10pt; font-family: Garamond">[1] Calculation for minutes per day savings:<span style="font-size: 10pt; font-family: Garamond"><span style="font-size: 10pt; font-family: Garamond"> </span></span></span></span><span style="font-size: 10pt; font-family: Garamond"><span style="font-size: 10pt; font-family: Garamond"><span style="font-size: 10pt; font-family: Garamond"><span style="font-size: 10pt; font-family: Garamond"></p>
<table border="0" width="100%" cellPadding="0" cellSpacing="0" id="table1">
<tr>
<td vAlign="top" style="width: 35%"><span style="font-size: 10pt; font-family: Garamond">Minutes to Save per Day</span></td>
<td style="width: 65%"><span style="font-size: 10pt; font-family: Garamond">= (Price of SlickEdit® / Employee Cost per Minute) / Work Days per Year<br />
= ($299 / $0.79) / 236<br />
= 1.6 </span></td>
</tr>
<tr>
<td vAlign="top" style="width: 35%"><span style="font-size: 10pt; font-family: Garamond">Employee Cost per Minute</span></td>
<td style="width: 65%"><span style="font-size: 10pt; font-family: Garamond">= Fully Loaded Cost / (Work Days per Year * Minutes per Day)<br />
= $90,000 / (236 * 480)<br />
= $0.79 </span></td>
</tr>
<tr>
<td vAlign="top" style="width: 35%"><span style="font-size: 10pt; font-family: Garamond">Fully Loaded Cost</span></td>
<td style="width: 65%"><span style="font-size: 10pt; font-family: Garamond">= Annual Salary + Overhead<br />
= $60,000 + $30,000 </span></td>
</tr>
</table>
<p><span style="font-size: 10pt; font-family: Garamond"><span style="font-size: 10pt; font-family: Garamond">Overhead is the cost for benefits, equipment, training, facilities, and management. We use a conservative figure of 50% for overhead. Many websites say overhead is as high as 100% to 200%.<span style="font-size: 10pt; font-family: Garamond"><span style="font-size: 10pt; font-family: Garamond">This calculation assumes an annual salary of $60,000 per year, which is a conservative median salary for programmers in the USA. It assumes 236 work days per year based on 104 weekend days, 10 company holidays, 10 vacation days, and 5 sick days. It assumes a normal 8 hour work day, 480 minutes per day.</span></span></span></span></p>
<p></span></span></span></span></span></p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fblog.slickedit.com%2F2007%2F04%2F300-is-free%2F';
  addthis_title  = '%24300+Is+Free';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
]]></content:encoded>
			<wfw:commentRss>http://blog.slickedit.com/2007/04/300-is-free/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Is Your Editor Working Hard Enough?</title>
		<link>http://blog.slickedit.com/2007/04/what-is-a-programmers-editor/</link>
		<comments>http://blog.slickedit.com/2007/04/what-is-a-programmers-editor/#comments</comments>
		<pubDate>Mon, 16 Apr 2007 16:30:45 +0000</pubDate>
		<dc:creator>Dennis B</dc:creator>
				<category><![CDATA[Code Editors]]></category>

		<guid isPermaLink="false">http://blog.slickedit.com/?p=7</guid>
		<description><![CDATA[A programmer&#8217;s editor is a text editor with features fine tuned for writing code. In this article we will explore the top 10 essential features of a programmer&#8217;s editor and how each one saves you time and energy. * Color coding * Syntax expansion * Code navigation features * List-members and function parameter information * [...]]]></description>
			<content:encoded><![CDATA[<p>A programmer&#8217;s editor is a text editor with features fine tuned for writing code. In this article we will explore the top 10 essential features of a programmer&#8217;s editor and how each one saves you time and energy.</p>
<p>* Color coding<br />
* Syntax expansion<br />
* Code navigation features<br />
* List-members and function parameter information<br />
* Comment and function documentation extraction<br />
* Syntax-driven auto-indentation<br />
* Macro recording and playback<br />
* Code snippets and other shortcuts<br />
* Integrated project build support<br />
* Multiple file and window support</p>
<p><strong>Color Coding<br />
</strong>Color coding is a language specific feature which allows the editor to display comments, keywords, strings, numbers, and other lexical elements using specific foreground and background colors as well as potentially using bold or italic fonts.</p>
<p><em>Argument</em><br />
&#8220;I don&#8217;t need my editor to look like Walt Disney lost his lunch.&#8221; &#8212; How do you find your car in a parking lot? Do you look at every car until you find your 1998 Camry with velvet blue interior, or do you look for a red sedan with a &#8220;My border collie is smarter than your honor student&#8221; bumper sticker. Color stands out; it helps you find things. You have a color monitor, why waste the potential?</p>
<p><em>Benefits<br />
</em>Color coding helps you distinguish comments from code. If that were all it did, that would be a great win, but it can do so much more. Color coding also helps you see immediately when you have mistyped a keyword, or if you have accidentally used a keyword as an identifier, or failed to terminate a string. This saves you many compile and edit cycles and lets you focus on what&#8217;s important.</p>
<p><em>Investment<br />
</em>There is very little investment to this feature; if anything, you may find yourself un-training your eyes because you do not have to read as much syntax to see comments vs. strings vs. code.</p>
<p><strong>Syntax Expansion</strong><br />
This feature completes statements for you so you only have to type the leading keyword such as &#8220;if&#8221; or &#8220;while&#8221; and the editor will insert the rest of the code for that statement in accordance with your brace style and indentation preferences.</p>
<p><em>Argument<br />
</em>&#8220;I&#8217;ve been coding for years; I type these statements without even thinking.&#8221; &#8212; This is true for many seasoned programmers, but the real question is why?</p>
<p><em>Benefits<br />
</em>For novice programmers, syntax expansion can save them time trying to remember how a particular statement is written. This is especially true for statement heavy languages such as COBOL. For all programmers, syntax expansion helps enforce coding consistency; it will always use your brace style and your indention preferences.</p>
<p><em>Investment<br />
</em>In fact, the investment to start using syntax expansion is just a matter of un-training your fingers to type the whole statement. Very quickly, you will get used to just typing &#8220;while&#8221; and then being ready to put in the loop condition.</p>
<p><strong>Syntax driven auto-indentation<br />
</strong>Auto-indentation will position your cursor at the expected indentation level when you split or open a new line so that you can start typing code immediately. A good implementation of auto-indentation will respect your tab preferences and either insert real tabs, spaces, or position the cursor on a virtual column without inserting unnecessary space. A very good implementation will handle more than just simple block scopes: it will also handle continuation indents, parameter lists, initialization lists, and splitting comments.</p>
<p><em>Argument<br />
</em>&#8220;I am very particular about indentation; I don&#8217;t trust the editor to do it for me.&#8221; &#8212; This is the sort of feature that must be configured to match your preferences. Once you configure it correctly, the editor will do the right thing more than 90% of the time. If it doesn&#8217;t, you are probably using the wrong editor, or in the worst case, can turn the feature off.</p>
<p><em>Benefits<br />
</em>Auto-indentation will save you time for every line of code you write. Furthermore, it will improve the consistency of your code.</p>
<p><em>Investment</em><br />
This feature requires no time to learn, but you may have to un-train your fingers to not lean on the space key every time after you hit enter.</p>
<p><strong>Code navigation<br />
</strong>A good implementation of code navigation turns your code into a hypertext. For any symbol in your code, you can jump to it&#8217;s declaration or definition in one keystroke. You can jump back to where you were in another keystroke.</p>
<p><em>Argument<br />
</em>&#8220;I don&#8217;t need this; I&#8217;ve memorized where everything is.&#8221; &#8212; That&#8217;s very impressive; let me know how that works out when you inherit a half-million lines of code you have never seen before.</p>
<p><em>Benefits</em><br />
A really good code navigation system makes file boundaries irrelevant, which make it possible for you to focus on the code, not what files the code is stored in. A good implementation does not just use the symbol&#8217;s name, but finds the symbol&#8217;s declaration or definition using the same language specific scoping rules that your compiler uses. A better implementation can also find all references to a symbol. An awesome implementation recognizes that when you navigate to a symbol and then pop back, it can close the file in order not to pollute your working set of open files.</p>
<p><em>Investment</em><br />
In terms of keyboard shortcuts, you need to learn three things: (a) the key to jump to the symbol under the cursor, (b) the key to see all references to the symbol under the cursor, and (c) the key to jump back. If you have not been using code navigation, you are probably finding symbols by manually opening files and poking around, or using grep or another multi-file search to find symbols. In terms of work habits, you may have to train yourself that there is an easier way to do things and use it.</p>
<p><strong>List members and function parameter information<br />
</strong>List members (referred to as Intellisense™ by Microsoft) will display a list of class members in the class when you type a member access operator such as &#8220;.&#8221; or &#8220;-&gt;&#8221; in C++. You can then pick one of the items from the list and the editor will insert it, or you can continue typing the name of the symbol and the list will be filtered down to include only symbols that match what you have typed.</p>
<p>Function parameter information is typically activated when you type the open parenthesis for a function call and will display the prototype for the function being called and highlight the current argument.</p>
<p><em>Argument<br />
</em>&#8220;Those things will just get in my way.&#8221; &#8212; A well designed implementation of list members and function parameter information will not get in your way. List members is typically displayed below the current line, left aligned to the cursor position. Function parameter information is typically displayed below the current line, aligned with the function name. The windows typically have minimal borders and are shrunk down to the minimal size to display the required information. A good implementation works hard to stay out of your way when coding.</p>
<p><em>Benefits<br />
</em>If you do not have list members, you will need to be very good at remembering the names of the members of the classes and structures that you use. Suppose you need to convert a STL string to a character pointer. You may remember that it is done using the &#8220;c_str()&#8221; method. You may have an STL reference manual on your desk and can spend five minutes looking it up. If you have list members, you type &#8220;.&#8221; and then scan through the list and see that &#8220;c_str()&#8221; returns &#8220;const char*&#8221; and remember that is the conversion function.</p>
<p>Likewise, function parameter information brings vital information to you when you need it. Suppose you need to call the standard C library function strncpy(), but you can not remember the order of the arguments. You could look it up in your C book, check MSDN or the man page. That&#8217;s fine if you have five minutes to burn. If you have parameter information, the prototype is displayed for you: &#8220;char* strncpy(char *, const char *, size_t)&#8221;, and you can see immediately that the first argument is the destination (by virtue of being char*), and the second argument is the source string, and the third argument is the max number of chars to copy.</p>
<p><em>Investment<br />
</em>Typically, these features are invoked automatically when you type open parenthesis or member access operators. You will also want to learn two keyboard shortcuts: one to bring up list members manually and one to bring up function help manually. This will be extremely valuable to you when you are editing established code.</p>
<p><strong>Comment and documentation extraction<br />
</strong>Comment and documentation extraction pulls documentation comments from your source code and displays them in conjunction with list members and function parameter information. Really good implementations of this feature will format JavaDoc and XMLdoc comments for you, and highlight function parameter documentation when displaying function parameter information.</p>
<p><em>Argument</em><br />
&#8220;What will I do with all these Java reference manuals?&#8221; &#8212; Build a giant pyramid in your cubical and declare yourself a Java deity.</p>
<p><em>Benefits<br />
</em>If your editor does not have this feature then when you need to see the documentation for a function, you either need to look it up in a reference manual, or jump to that function, read it, remember it, and then jump back to where you were working. Having this feature is like having a really good research assistant who brings exactly what you need directly to you exactly when you need it.</p>
<p>Another nice side-effect of having this feature is that it genuinely encourages you and your whole team to write better documentation comments in your code because you will be seeing them and using them on a regular basis.</p>
<p><em>Investment</em><br />
This feature is typically completely automated.</p>
<p><strong>Macro recording and playback<br />
</strong>This facility allows you to record a sequence of keystrokes and/or editor commands and then play them back later.</p>
<p><em>Argument</em><br />
&#8220;You&#8217;re hurting my head!&#8221; &#8212; No, your head will be fine, and your fingers will also appreciate the break once you master this feature.</p>
<p><em>Benefits<br />
</em>Sometimes you need to make a bunch of very similar changes to code. Macro recording allows you to do it once and repeat the macro instead of tediously doing the same thing over and over again. More powerful editors allow you not only to record macros, but to name them and save them for later. Some even more powerful editors allows you to record not just one, but a suite of macros that you can repeat with a single keystroke.</p>
<p><em>Investment</em><br />
There are, at a minimum, two keyboard shortcuts you need to learn: one to toggle macro recording on and off, and one to repeat the last recorded macro.</p>
<p><strong>Code snippets and other shortcuts<br />
</strong>This feature allows you to define chunks of text that can be expanded using a keyboard shortcut.</p>
<p><em>Argument</em><br />
&#8220;I just copy and paste when I need to create idiomatic code.&#8221; &#8212; The problem with this technique is that, first, it is slow and tedious. Second, it requires you to remember where you can find an example to copy. Third, when you copy and paste chunks of code, you might be copying and pasting chunks of code with errors in it.</p>
<p><em>Benefits</em><br />
This feature helps you build a library of snippets of idiomatic code that you can expand at the touch of a key. To add further power, most editors support parameterized code snippets so you can plug in different variable names, constant values, etc.</p>
<p>In addition, some editors also let you define global shortcuts and use them nearly anywhere in the editor, including the open file dialog. Why type &#8220;/usr/include/sys/&#8221; or fiddle around with the mouse to navigate to that directory if you could just have an alias named &#8220;sys&#8221;, expand it, and continue from there?</p>
<p><em>Investment</em><br />
You need to learn how to create and customize a snippet in your editor, and you need to learn one keyboard shortcut for expanding snippets.</p>
<p><strong>Integrated project build support<br />
</strong>This feature allows you to invoke a compile or a project build from your editor, and correlate the compilation errors with source code.</p>
<p><em>Argument</em><br />
&#8220;We have a custom build system and we can not change it.&#8221; &#8212; In most cases, you do not have to change your build environment; you just have to be able to tell your editor to use your existing build command to build the project.</p>
<p><em>Benefits</em><br />
The first benefit is that you will not have to leave your editor to start a build. You can associate the project build with a keyboard shortcut, such as Control-M (for make). You no longer have to remember the build commands for different, disparate projects. Last, and definitely not least, you can navigate directly to the compilation errors with a single keystroke instead of manually locating the offending file, opening it, jumping to the line number, and then repeating that process for every error.</p>
<p><em>Investment</em><br />
You will need to learn the project system of your new editor; how to create a project, how to specify your build command. You will also need to learn the keyboard shortcut for navigating to the next build error.</p>
<p><strong>Multiple file and window support<br />
</strong>This is really two facilities. One is the ability to open more than one file at a time in your editor and rapidly switch between them. The other is to be able to open multiple windows so that you can look at different files or different parts of the same file at the same time.</p>
<p>In particular, I address this issue for the programmers out there who are still using text mode vi on Unix or notepad on Windows. Noting those exceptions, almost all other modern editors have these capabilities to varying extents. Some support multiple files and windows, but force you to use the mouse to switch buffers or switch windows. Some editors have a tabbed view for quickly seeing what files you have open and modified. Some editors have support for buffer management, so if you navigate to a file and then pop back (see Code navigation, above) the file is automatically closed, keeping your working set of files small and tidy.</p>
<p><em>Argument</em><br />
&#8220;Too much clutter&#8221; &#8212; Some people like to keep things simple, so viewing just one file at a time is great for them, they don&#8217;t need side-by-side windows all the time. But, for those times when you absolutely need it, this is a feature that is well worth having available.</p>
<p><em>Benefits</em><br />
Modern projects are large and encompass many source files, sometimes tens of thousands. You can seldom get a complete understanding of a system looking at just one file at a time. Being able to switch between files with a single keyboard shortcut is more efficient than starting a new editor to view another file. If you have unsaved changes to a file and need to look at another file, what do you do if your editor does not support multiple files?</p>
<p><em>Investment</em><br />
You need to learn a few keyboard shortcuts: (a) to open a file; (b) to cycle through your open files; (c) to split windows horizontally and vertically; (d) to cycle through your open windows; and (e) minimizing and maximizing windows. The first two will get you up and running so that you can maintain a working set of open files. The last three will help you move to the next level.</p>
<p><strong>Conclusion<br />
</strong>It&#8217;s natural to resist change. Learning a new editor requires an investment of time and a change of work habits. You will seldom regain your investment in the timeframe of your <em>first</em> project with a new editor. But the time you will save in the long run will <em>quickly</em> eclipse the small amount of time you invest. Perhaps you feel that you are extremely proficient with your current editor, maybe even working at power programmer level. This may trick you into thinking that you are already working at peak productivity and will not benefit from a better programmer&#8217;s editor. The truth is exactly the opposite, you will benefit even more. Your tools are your foundation. Think of this analogy. No matter how proficient you are at riding a bicycle; you can go further faster on a motorcycle.</p>
<p>The features outlined in this article are things that I have grown to view as essential for writing code proficiently. It can be hard to appreciate exactly how much they help you until you seriously set down to work with these tools in your hands. After which, I can assure you that you will ask yourself how you ever managed to work without them.</p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fblog.slickedit.com%2F2007%2F04%2Fwhat-is-a-programmers-editor%2F';
  addthis_title  = 'Is+Your+Editor+Working+Hard+Enough%3F';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
]]></content:encoded>
			<wfw:commentRss>http://blog.slickedit.com/2007/04/what-is-a-programmers-editor/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Transitioning from CodeWright to SlickEdit is as Easy as 1,2,3&#8230;</title>
		<link>http://blog.slickedit.com/2007/02/transitioning-from-codewright-to-slickedit-is-as-easy-as-123/</link>
		<comments>http://blog.slickedit.com/2007/02/transitioning-from-codewright-to-slickedit-is-as-easy-as-123/#comments</comments>
		<pubDate>Thu, 15 Feb 2007 15:23:11 +0000</pubDate>
		<dc:creator>Jeffrey</dc:creator>
				<category><![CDATA[Code Editors]]></category>

		<guid isPermaLink="false">http://blog.slickedit.com/?p=126</guid>
		<description><![CDATA[Borland® no Longer Engaging in New Development of CodeWright® Many CodeWright developers became orphans when Borland announced that they would no longer develop or support CodeWright. SlickEdit offers a home for developers and programmers who want a powerful code editor that is actively being developed and supported. Click here to download a free trial of SlickEdit. [...]]]></description>
			<content:encoded><![CDATA[<p><strong><img border="0" align="right" width="100" src="http://www.slickedit.com/images/stories/products/SlickEdit/SlickEdit2007/se%20100x15.jpg" height="150" />Borland<sup>®</sup> no Longer Engaging in New Development of CodeWright<sup>®<br />
</sup></strong>Many CodeWright developers became orphans when Borland<sup> </sup>announced that they would no longer develop or support CodeWright. SlickEdit offers a home for developers and programmers who want a powerful code editor that is actively being developed and supported. <a href="http://www.slickedit.com/content/view/409/239/">Click here to download a free trial of SlickEdit</a>.</p>
<p><strong>CodeWright Emulation <a href="http://www.slickedit.com/images/stories/products/codewright_emulation.pdf">PDF</a><br />
</strong>No programmer relishes the thought of switching editors. After using an editor for years, the key sequences and operations become second nature. To ease this migration, SlickEdit offers a CodeWright emulation that uses the same key bindings for common operations and provides default behaviors familiar to CodeWright users. This makes you productive right away on SlickEdit. A PDF to the supported CodeWright emulations can be viewed <a href="http://www.slickedit.com/images/stories/products/codewright_emulation.pdf">here</a>.</p>
<p><strong>CodeWright Project Support<br />
</strong>SlickEdit also provides a utility that converts CodeWright workspaces and projects into SlickEdit workspaces and projects. Each CodeWright .psp file is converted to a corresponding SlickEdit .vpw file. Likewise, the CodeWright .pjt files are converted to SlickEdit .vpj files. While this utility doesn’t convert all commands or options, it does save a lot of time setting up the project structure in SlickEdit. From the SlickEdit  menu select Project &gt; Open Other Workspace &gt; Convert CodeWright Workspace.</p>
<p><strong>Why SlickEdit</strong></p>
<p><strong>Speed: </strong>Type fewer characters and make fewer errors using syntax expansion, completions, aliases, and code templates.</p>
<p><strong>Power: </strong>Create and manage large workspaces and projects. Edit files up to 2 GB in size.  </p>
<p><strong>Flexibility: </strong>Code in over 40 languages on 8 platforms. Configure SlickEdit to match your coding style. Choose from 13 editor emulations.</p>
<p>SlickEdit Product Page: <a href="http://www.slickedit.com/content/view/73/60/">http://www.slickedit.com/content/view/73/60/</a></p>
<p>SlickEdit Cool Features Demos: <a href="http://www.slickedit.com/content/view/353/217">http://www.slickedit.com/content/view/353/217</a></p>
<p align="center"><a href="http://www.slickedit.com/content/view/409/239/"><strong>Click here to download a free trial of SlickEdit</strong></a></p>
<script type="text/javascript">
  addthis_url    = 'http%3A%2F%2Fblog.slickedit.com%2F2007%2F02%2Ftransitioning-from-codewright-to-slickedit-is-as-easy-as-123%2F';
  addthis_title  = 'Transitioning+from+CodeWright+to+SlickEdit+is+as+Easy+as+1%2C2%2C3%26%238230%3B';
  addthis_pub    = '';
</script><script type="text/javascript" src="http://s7.addthis.com/js/addthis_widget.php?v=12" ></script>
]]></content:encoded>
			<wfw:commentRss>http://blog.slickedit.com/2007/02/transitioning-from-codewright-to-slickedit-is-as-easy-as-123/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

