<?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>spencerberus.tech</title>
	<atom:link href="http://www.spencerberus.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.spencerberus.com/blog</link>
	<description>the tecnology blog @ spencerberus.com</description>
	<lastBuildDate>Tue, 22 Feb 2011 21:01:54 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>The future of System Nucleus</title>
		<link>http://www.spencerberus.com/blog/2011/the-future-of-system-nucleus/</link>
		<comments>http://www.spencerberus.com/blog/2011/the-future-of-system-nucleus/#comments</comments>
		<pubDate>Tue, 22 Feb 2011 20:23:28 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[system nucleus]]></category>

		<guid isPermaLink="false">http://www.spencerberus.com/blog/?p=118</guid>
		<description><![CDATA[<img src="http://www.spencerberus.com/blog/wp-content/uploads/systemNucleus16.png" width="16" height="16" alt="" title="system nucleus" /><br/>]]></description>
			<content:encoded><![CDATA[<img src="http://www.spencerberus.com/blog/wp-content/uploads/systemNucleus16.png" width="16" height="16" alt="" title="system nucleus" /><br/><h2>The Immediate Future</h2>
<p>If you saw my last post, time for working on System Nucleus has been virtually non-existent over the past few months.  I have made a great deal of progress on a number of major changes &amp; additions, but substantial work is still required before any of these is ready.  It will likely be several months before a new version of System Nucleus is released with any new features.</p>
<p>However, a maintenance release will be made hopefully in the next week or two.  A third party package that provides many of the controls used in System Nucleus has been updated and fixed issues with 64-bit systems.  I have been having numerous intermittent issues on my 64-bit machines with previous versions of this package that I had just about given up on tracking down.  If you have been running the 64-bit version of System Nucleus, chances are you&#8217;ve seen these issues, possibly many times, or maybe only a few times before giving up.</p>
<p>For those running the 32-bit version, there will be a few other changes and improvements that may make it worthwhile to upgrade.  As always, a detailed list of changes will be included in the change log, distributed with the software and available on the <a href="http://www.spencerberus.com/download.aspx">download page</a>.</p>
<h2>Going Forward&#8230;</h2>
<p>Since releasing System Nucleus about 8 months ago, I&#8217;ve gotten a lot of great (and not so great) feedback, requests and suggestions that have significantly shaped its development.  It has also burgeoned into a nearly unwieldy beast, and I have been significantly sidetracked from some of my original goals by things like localization and documentation &#8211; those are important, but not a lot of fun, especially as I did not account for them from the beginning and so have a lot of work to do before they are realized.</p>
<p>From the beginning, one of my main intentions was for System Nucleus to be able to query &amp; manage remote systems &#8211; anyone can manipulate processes &amp; services locally, and while I think there is a great deal of value in some things like batch editing that I haven&#8217;t seen before, most of the functionality is nothing new.  As I&#8217;ve stated in the past, I have no intention of reinventing the wheel &#8211; the wheel&#8217;s pretty, I use the wheel, and have no complaints about the wheel.  As this was an originating idea, most of the code has been written with this in mind and already provides remote functionality, it just needs to be exposed through the interface in an elegant, intuitive and stable manner.</p>
<p>So, after the upcoming maintenance release, I will be focusing on remote functionality.  This will likely mean scaling back functionality significantly and then adding it back as it is made compatible &amp; stable working remotely.   There will probably be some early releases, possibly under alternate names, with only partial functionality &#8211; I imagine the first might be something like a remote process manager, with only the functionality currently available in the Processes view.  This will also give me the opportunity to localize &amp; document pieces at a time, and so make those processes more manageable as well.</p>
<p>This will be a major undertaking, and as yet I cannot say how much time &amp; resources I will be able to dedicate.  I will occasionally post updates on my progress, especially as I near something releasable.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.spencerberus.com/blog/2011/the-future-of-system-nucleus/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Long time, no updates&#8230;</title>
		<link>http://www.spencerberus.com/blog/2011/long-time-no-updates/</link>
		<comments>http://www.spencerberus.com/blog/2011/long-time-no-updates/#comments</comments>
		<pubDate>Tue, 22 Feb 2011 19:57:49 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[uncategorized]]></category>

		<guid isPermaLink="false">http://www.spencerberus.com/blog/?p=116</guid>
		<description><![CDATA[<br/>Its been a while since I posted anything or any updates to System Nucleus.  The holiday season was a very busy, hectic time, and it never seemed to end &#8211; well, the holidays ended, but the busy kept right on.  I have been very busy with work and other projects lately, with little time to [...]]]></description>
			<content:encoded><![CDATA[<br/><p>Its been a while since I posted anything or any updates to System Nucleus.  The holiday season was a very busy, hectic time, and it never seemed to end &#8211; well, the holidays ended, but the busy kept right on.  I have been very busy with work and other projects lately, with little time to spare for work on the web site or software.  As this shows no signs of coming to an end anytime soon, I cannot make many predictions on when new versions of System Nucleus will become available.  I will be detailing a little bit more on the future of System Nucleus in a separate post to come shortly.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.spencerberus.com/blog/2011/long-time-no-updates/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Interview with System Nucleus developer published on FamousWhy</title>
		<link>http://www.spencerberus.com/blog/2010/interview-with-system-nucleus-developer-published-on-famouswhy/</link>
		<comments>http://www.spencerberus.com/blog/2010/interview-with-system-nucleus-developer-published-on-famouswhy/#comments</comments>
		<pubDate>Thu, 09 Dec 2010 04:31:38 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[system nucleus]]></category>

		<guid isPermaLink="false">http://www.spencerberus.com/blog/?p=107</guid>
		<description><![CDATA[<img src="http://www.spencerberus.com/blog/wp-content/uploads/systemNucleus16.png" width="16" height="16" alt="" title="system nucleus" /><br/>FamousWhy.com has published a brief interview with me regarding System Nucleus.  The full interview is available here.  The contents of the interview are also reproduced below with the permission of FamousWhy.com. FW Editor: What are your plans or objectives in the near future? Spencer Salva: From the beginning, System Nucleus was intended to manage both [...]]]></description>
			<content:encoded><![CDATA[<img src="http://www.spencerberus.com/blog/wp-content/uploads/systemNucleus16.png" width="16" height="16" alt="" title="system nucleus" /><br/><p><img class="alignleft" style="margin-right: 12px; margin-bottom: 12px;" title="Famous Interview" src="http://www.famouswhy.com/images/interview/Famous_Interview_FamousWhy_logo5.png" alt="Famous Interview" width="122" height="122" /> <a href="http://www.famouswhy.com/" target="_blank">FamousWhy.com</a> has published a brief interview with me regarding System Nucleus.  The full interview is available <a href="http://download.famouswhy.com/publisher/spencer_salva/" target="_blank">here</a>.  The contents of the interview are also reproduced below with the permission of FamousWhy.com.</p>
<hr style="width: 90%; clear: both;" />
<strong>FW Editor</strong>: What are your plans or objectives in the near future?<br />
<strong>Spencer Salva</strong>: From  the beginning, System Nucleus was intended to manage both local and  remote machines.  I hope to have the remote functionality implemented  for the next major version, 3.0.  Also, I&#8217;ve been working very hard on  reconfiguring the app to support localization.  The first languages  available should be German and Portuguese &#8211; outside of the United  States, I&#8217;m seeing the most downloads from Germany and Brazil.</p>
<p><strong>FW Editor</strong>: How  and when did you start writing the code for System Nucleus? What  inspired you the most? Do you plan to develop new software, or are you  more focused on optimizing the current ones?<br />
<strong>Spencer Salva</strong>: I  started writing it in 2006 as a project to teach myself C#.  At the  time I was using tons of different tools all the time, and I had so many  different tools that I didn&#8217;t remember what they all did.  Also, as  part of my job, I often need to stop several Services or processes at  once, but the built-in tools only let you do one at a time.  I figured  I&#8217;d try to do something to make my job a little easier.</p>
<p><strong>FW Editor</strong>: System Nucleus is one of the best system managers from the market. What is the secret?<br />
<strong>Spencer Salva</strong>: It  serves a major need for myself and I use it all the time, so it&#8217;s been  designed to make my own tasks easier.  I saw certain functionality  missing or difficult to use in a lot of the tools available, and I&#8217;ve  focused on adding those features.  I know from experience that sometimes  software developers never actually use their own products, and don&#8217;t  think about how things should work from an end user&#8217;s perspective.</p>
<p><strong>FW Editor</strong>: Do you plan to improve or change System Nucleus in any way? If yes, how are you going to do that?<br />
<strong>Spencer Salva</strong>: I  have a long list of new features and improvements, there&#8217;s over 150  items on the &#8216;To Do&#8217; list for System Nucleus right now.  Since it  started out as a learning project, there are some things I set up early  on that could be done more efficiently to improve performance.  There  are also a number of interface improvements planned, things that have  taken a while to research and require major customizations.</p>
<p><strong>FW Editor</strong>: Can you tell us more about the System audit feature?<br />
<strong>Spencer Salva</strong>: I  spent a lot of time on this, there is so much information available  about the various hardware and software components, and many of the  tools I have used either aren&#8217;t detailed enough, or present a ton of  information in a very difficult to use format.  I&#8217;ve tried to gather as  much information as is possible while keeping it usable.  Most of it is  based on WMI, but a lot is pulled directly from the registry as well,  and translating that info into understandable information can be tricky.   The original intention was just to display some basic system info on  the Welcome screen, but that sort of spiraled out of control as I added  more &amp; more info, so I figured if I was going to do it, I might as  well do it right.</p>
<p><strong>FW Editor</strong>: Why would you recommend System Nucleus over any other similar product?<br />
<strong>Spencer Salva</strong>: It  really is different than other products.  I&#8217;ve used a lot of similar  products, and I still do, many of which do certain things very well.   I&#8217;ve concentrated on things other tools don&#8217;t do or that I think can be  done better.</p>
<p><strong>FW Editor</strong>: It is safe to use Backup and Recovery tool? Many similar applications register serious problems with this particular feature.<br />
<strong>Spencer Salva</strong>: I&#8217;ve  actually been surprised at how much attention the backup &amp; recovery  features have gotten.  They&#8217;re actually very simple.  The backups are  either copying files, or using tools built-in to Windows to export data;  nothing is ever moved or deleted.  The recovery features are an  interface to Windows&#8217; System Restore, so its all pretty safe to use.</p>
<p><strong>FW Editor</strong>: Is there any customer support service for System Nucleus users?<br />
<strong>Spencer Salva</strong>: There  is a link to email support in the Help menu, and an error reporting  screen that can email error details directly to me, where users can  elect whether to be notified of a fix or assist in testing it. Its just  me working on this project in my spare time, but I do respond to all  emails, except those where the user has not chosen to be notified.  This  has actually been very valuable, a lot of problems have been fixed that  I probably never would have come across on my own, and I think the  software has gotten a lot better because of it.  The support requests  have been very scarce since the latest release, so I&#8217;m hoping that means  people aren&#8217;t having problems, and not that they aren&#8217;t using it.</p>
<p><strong>FW Editor</strong>: Now, to end our small interview, is there any message you would like to send to System Nucleus users?<br />
<strong>Spencer Salva</strong>: Thanks  for all the support, it can be very difficult trying to make everyone  happy and still stay interested in what is ultimately a hobby.  I do  read a lot of the reviews and comments posted on various sites and  blogs, many are favorable, some aren&#8217;t, but that&#8217;s to be expected,  System Nucleus isn&#8217;t perfect and neither am I.  I just ask that anyone  having an issue let me know with as much detail as possible.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.spencerberus.com/blog/2010/interview-with-system-nucleus-developer-published-on-famouswhy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>One of the best sets of 16&#215;16 icons gets much better</title>
		<link>http://www.spencerberus.com/blog/2010/one-of-the-best-sets-of-16x16-icons-gets-much-better/</link>
		<comments>http://www.spencerberus.com/blog/2010/one-of-the-best-sets-of-16x16-icons-gets-much-better/#comments</comments>
		<pubDate>Wed, 24 Nov 2010 07:06:38 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[development]]></category>
		<category><![CDATA[internet]]></category>

		<guid isPermaLink="false">http://www.spencerberus.com/blog/?p=102</guid>
		<description><![CDATA[<img src="http://www.spencerberus.com/blog/wp-content/uploads/tag.png" width="16" height="16" alt="" title="development" /><br/>For a long time now, the Silk icon set by famfamfam has probably been the most widely used set of icons, size 16&#215;16 or otherwise, and for good reason.  With over 700 high quality, easily recognized icons at no cost, it is possible to find all the icons one needs for a project without sacrificing [...]]]></description>
			<content:encoded><![CDATA[<img src="http://www.spencerberus.com/blog/wp-content/uploads/tag.png" width="16" height="16" alt="" title="development" /><br/><p>For a long time now, the<a href="http://www.famfamfam.com/lab/icons/silk/" target="_blank"> Silk icon set</a> by <a href="http://www.famfamfam.com/" target="_blank">famfamfam </a>has probably been the most widely used set of icons, size 16&#215;16 or otherwise, and for good reason.  With over 700 high quality, easily recognized icons at no cost, it is possible to find all the icons one needs for a project without sacrificing quality or a uniform style.  The icons are easily recognizable in numerous web sites and applications, including many notable projects like  <a href="http://www.utorrent.com/" target="_blank">uTorrent</a> and <a href="http://notepad-plus-plus.org/" target="_blank">Notepad++</a>.  Damieng has also contributed the <a href="http://damieng.com/creative/icons/silk-companion-1-icons" target="_blank">Silk Companion</a>, an additional set of nearly 500 icons that extend the Silk icon set with both variations on the existing icons and a number of icons the original set lacked.</p>
<p>When I started creating <a href="http://www.spencerberus.com/projects.aspx">System Nucleus</a>, I used the Silk &amp; companion sets almost exclusively, only straying for icons that had no representation in these sets.  I wanted the icons to match as closely as possible to maintain a uniform appearance.  However, for larger icons I really prefer more crisp (higher resolution?) icons, and always start looking for these in the <a href="http://deviantdark.deviantart.com/art/hydroxygen-iconset-100826865" target="_blank">Hydroxygen </a>set from deviantdark.</p>
<p>I&#8217;m not a graphic designer, and I don&#8217;t know how the difference between these sets would be most accurately described, but when viewed side-by-side, it is immediately clear the icons just don&#8217;t &#8216;go together&#8217;.  Being a bit obsessive myself, this bothered me, and the more Hydroxygen icons I used, the more the Silk icons looked &#8216;cartoonish&#8217; by comparison.  I considered using 16&#215;16 versions of the Hydroxygen icons &#8211; indeed, the set includes this along with a number of other sizes &#8211; but the problem is that, with high resolution graphics, definition decreases along with the size, and what is a beautiful, eye-catching image at 72&#215;72 is reduced to a indistinct smudge at 16&#215;16.  This, I think, is the reason there are so few really good, comprehensive sets of small icons &#8211; there is only so much that can be done in a 16&#215;16 space.</p>
<p>Around this time, I found the <a href="http://p.yusukekamiyamane.com/icons/search/fugue/" target="_blank">Fugue icons</a> from Yusuke Kamiyamane, which I immediately noted for their crisp, modern  appearance.  I considered switching to this as my default icon library, but it just didn&#8217;t have the icons I need.  While nearly 1000 icons strong, this number shrank drastically once considering that for most of the unique icons in the set there were 5 or more variants.  So, while nice, using these meant mixing with numerous other sets of icons, making continuity of appearance nearly impossible.</p>
<p>So I was extremely excited to discover recently that this set had been expanding to over 3,000 icons.  I found out when I noticed <a href="http://www.getpaint.net/download.html" target="_blank">Paint.NET</a>, an excellent freeware graphic editor that uses the Fugue icons, had some I&#8217;d never seen before.   It appears to have been well thought out, as nearly every icon I need is either explicitly provided or can be easily derived by combining the existing icons.  With this update, I believe it is as complete a set as the Silk icons.  Which one is more complete will likely vary depending on your particular needs, but its nice to know there&#8217;s more than one option.    For my part, nearly every 16&#215;16 icon in System Nucleus has been &#8216;fugue-alized&#8217; for the upcoming version 3.0.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.spencerberus.com/blog/2010/one-of-the-best-sets-of-16x16-icons-gets-much-better/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>System Nucleus 2.3.2 Released</title>
		<link>http://www.spencerberus.com/blog/2010/system-nucleus-2-3-2-released/</link>
		<comments>http://www.spencerberus.com/blog/2010/system-nucleus-2-3-2-released/#comments</comments>
		<pubDate>Mon, 08 Nov 2010 22:10:57 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[system nucleus]]></category>

		<guid isPermaLink="false">http://www.spencerberus.com/blog/?p=99</guid>
		<description><![CDATA[<img src="http://www.spencerberus.com/blog/wp-content/uploads/systemNucleus16.png" width="16" height="16" alt="" title="system nucleus" /><br/>I am happy to announce an update to System Nucleus, version 2.3.2 has been released. This is a minor update from the previous release of 2.3.1, including primarily fixes and performance improvements. However, some new functionality has also been included, such as: Added WMI checkpoints &#38; repair options if needed at start up Added shortcuts [...]]]></description>
			<content:encoded><![CDATA[<img src="http://www.spencerberus.com/blog/wp-content/uploads/systemNucleus16.png" width="16" height="16" alt="" title="system nucleus" /><br/><p>I am happy to announce an update to System Nucleus, version 2.3.2 has been released.  This is a minor update from the previous release of 2.3.1, including primarily fixes and performance improvements.  However, some new functionality has also been included, such as:</p>
<ul>
<li>Added WMI checkpoints &amp; repair options if needed at start up</li>
<li>Added shortcuts to over 30 additional Windows applications in Windows 7</li>
<li>Added support for additional languages during installation</li>
<li>Services: Added functionality to create a new service</li>
</ul>
<p>In addition, many behind the scenes changes have been made towards multilingual support, which will be available in version 3.0.  Version 3.0 is the next slated release, and it will likely be some time before this becomes available as there are some major changes and additions to be included.  More details on the planned changes for 3.0 will be detailed in a later posting. No further changes to 2.3 are planned at this time, although maintenance releases may occur if any issues are found.</p>
<p>To see the complete change log and download the new version, visit <a href="http://www.spencerberus.com/download.aspx">the download page</a>.  Also, don&#8217;t forget to vote for what new changes you would most like to see in 3.0.  You can vote &amp; see the current voting results on the <a href="http://www.spencerberus.com/projects.aspx">System Nucleus product page</a> or the <a href="http://www.spencerberus.com/blog/">spencerberus.tech blog</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.spencerberus.com/blog/2010/system-nucleus-2-3-2-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>An Attempt to Explain the Internet in the Time of Dickens</title>
		<link>http://www.spencerberus.com/blog/2010/an-attempt-to-explain-the-internet-in-the-time-of-dickens/</link>
		<comments>http://www.spencerberus.com/blog/2010/an-attempt-to-explain-the-internet-in-the-time-of-dickens/#comments</comments>
		<pubDate>Fri, 29 Oct 2010 16:11:34 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[internet]]></category>

		<guid isPermaLink="false">http://www.spencerberus.com/blog/?p=95</guid>
		<description><![CDATA[<br/>As a major consumer &#38; fan of both the Internet and the works of Charles Dickens, I couldn&#8217;t help but share this amusing story board I came across by Doogie Horner. Presented as a flow chart, it chronicles an attempt to explain the Internet to a 19th century London street urchin named Oliver, no last [...]]]></description>
			<content:encoded><![CDATA[<br/><p>As a major consumer &amp; fan of both the Internet and the works of Charles Dickens, I couldn&#8217;t help but share this amusing story board I came across by Doogie Horner.  Presented as a flow chart, it chronicles an attempt to explain the Internet to a 19th century London street urchin named Oliver, no last name given but one can imagine it might be &#8216;Twist&#8217;.  One inconsistency to note, however &#8211; the year given is 1835, and the urchin makes mention of &#8216;tubes that run under the city&#8217;, of which the first portion was opened in 1863 (source: <a href="https://secure.wikimedia.org/wikipedia/en/wiki/London_Underground" target="_blank">Wikipedia</a>).  Still, historical accuracy is not the goal, and it certainly is amusing.  Check out the full diagram <a href="http://www.fastcompany.com/1697711/explain-the-internet-19th-century-british-street-urchin-doogie-horner#self">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.spencerberus.com/blog/2010/an-attempt-to-explain-the-internet-in-the-time-of-dickens/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Making Sense of Regular Expressions</title>
		<link>http://www.spencerberus.com/blog/2010/making-sense-of-regular-expressions/</link>
		<comments>http://www.spencerberus.com/blog/2010/making-sense-of-regular-expressions/#comments</comments>
		<pubDate>Tue, 26 Oct 2010 19:55:38 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[development]]></category>
		<category><![CDATA[regular expressions]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://www.spencerberus.com/blog/?p=86</guid>
		<description><![CDATA[<img src="http://www.spencerberus.com/blog/wp-content/uploads/tag.png" width="16" height="16" alt="" title="development" /><br/>Regular expressions are very useful and, while they may appear complicated at first, are actually quite simple.  They can become quite long and appear daunting, but by understand the syntax, any expression can be broken down into small components that are easy to understand. So, what is a regular expression?  Very simply, it is a [...]]]></description>
			<content:encoded><![CDATA[<img src="http://www.spencerberus.com/blog/wp-content/uploads/tag.png" width="16" height="16" alt="" title="development" /><br/><p>Regular expressions are very useful and, while they may appear complicated at first, are actually quite simple.  They can become quite long and appear daunting, but by understand the syntax, any expression can be broken down into small components that are easy to understand.</p>
<p>So, what is a regular expression?  Very simply, it is a pattern used to match strings of text.  Everything else is just syntax.   For example, we may have a pattern such as:</p>
<blockquote><p><span style="font-family: courier new,courier;">^[A-J]{2,3}\s?\d+$</span></p></blockquote>
<p>This will match  “AG 2010”, but will not match   “AND Me”.</p>
<p>Stop staring at the regular expression above.  If you don’t understand it, that’s OK, you’re not supposed to, otherwise you wouldn’t be reading this.  If you do understand it &#8211; and REALLY understand, no guessing &#8211; stop reading, you’re wasting your time.</p>
<h3>What Can A Regular Expression Do For Me?</h3>
<p>One primary use of regular expressions is in computer programming.  Most modern programming languages have implemented some degree of support for regular expressions.  Notable among these is <a href="http://perldoc.perl.org/perlrequick.html" target="_blank">Perl</a>, well known for its extensive integration of and extensions to regular expressions.  Depending on the language, there may be some syntactic differences or additions.  However, most implementations support a basic set of standard syntax rules.  All of the syntax discussed here should be applicable to nearly every implementation.</p>
<p>Not a programmer?  That&#8217;s OK, you may still find some use for regular expressions.  An increasingly visible application of regular expressions is in support of Find-and-Replace functionality in text &amp; document editors.  Static strings can be great when looking for static text, but what if you want to locate something with a bit of variance, say, all phone numbers or mail codes in a document?  A static string just won&#8217;t work in such cases, but a regular expression can very easily be employed for such a task.  If your current text editor does not support regular expressions, you may want try one that does after reading this to test out your regular expression skills and see how useful they can be.  Even though I do a fair bit of programming, I probably get the most use out of regular expressions with my favorite text editor, <a href="http://notepad-plus-plus.org/" target="_blank">Notepad++</a>, which, besides having long supported regular expressions in its Find and Replace functionality, has an incredibly comprehensive set of additional features that have made it indispensable for me, and it&#8217;s entirely free.</p>
<h3>Anatomy of a Regular Expression</h3>
<p>There are two parts to a regular expression &#8211; what we want to match, and the quantity to match.  Let’s start with what we want to match.</p>
<h4>1. What To Match</h4>
<p>What to match can be broken down into 3 categories: the actual character(s) to match, grouping of characters, and positional matches.</p>
<p>In its simplest and most literal form, we can explicitly specify literal characters to match.  For example:</p>
<blockquote><p><span style="font-family: courier new,courier;">And</span></p></blockquote>
<p>is a regular expression.  This matches a capital A, followed by a lowercase ‘n’, followed by a lowercase ‘d’.  It’s not all that useful, but it is a valid regular expression.  It is important to note that, as this example demonstrates, regular expressions are case sensitive.</p>
<p><strong>1.1 Grouping</strong></p>
<p>More likely though, we will want to match one of several characters, which is where grouping comes in.  The most common form of grouping is the character class, a series of characters within square brackets.  For example:</p>
<blockquote><p><span style="font-family: courier new,courier;">[ABCDEnr]</span></p></blockquote>
<p>means ‘match a capital A, capital B, capital C, capital D, capital E, lowercase n OR lowercase r’.  But what if I want to match any uppercase letter?  I’d rather not have to type 26 letters.  Not to worry, as multiple consecutive characters can be expressed as a range, specified as two characters separated by a dash, like so:</p>
<blockquote><p><span style="font-family: courier new,courier;">[A-Enr]</span></p></blockquote>
<p>This is equivalent to the previous expression, and can be read as ‘match any capital letter from A to E, lowercase n OR lowercase r’.  Note that the use of the dash to express a range of characters is only valid in a character class; outside of a character class, a dash simply matches a dash. Also, if the dash is the first character in the character class, it will match a literal dash character.</p>
<p>In some cases, it may be simpler to specify those characters you don’t want to match.  Suppose you want to match any character except an underscore or dollar sign.  This can be expressed as:</p>
<blockquote><p><span style="font-family: courier new,courier;">[^_$]</span></p></blockquote>
<p>The carat, when it is the first character within a character class, negates the character class, changing the meaning of the character class to ‘match any character EXCEPT those listed in this character class’.  Note that, to negate a character class, the carat must be the first character within the square brackets; anywhere else in the character class, the carat matches a literal carat character.</p>
<p><strong>1.2 Character Shorthand</strong></p>
<p>To simplify  character matching even further, there are a number of shorthand expressions that can be used to match certain types of characters.  The most common of these are defined in the following table.</p>
<table style="width: 666px;" border="1" cellspacing="0" cellpadding="4">
<col width="147"></col>
<col width="502"></col>
<tbody>
<tr valign="TOP">
<td width="147">Expression</td>
<td width="502">Matches&#8230;</td>
</tr>
<tr valign="TOP">
<td width="147">\s</td>
<td width="502">
<p lang="en-US">Any white-space 			character. Equivalent to [\f\n\r\t\v].</p>
</td>
</tr>
<tr valign="TOP">
<td width="147">\S</td>
<td width="502">
<p lang="en-US">Any non-white-space 			character. Equivalent to [^\f\n\r\t\v].</p>
</td>
</tr>
<tr valign="TOP">
<td width="147">\d</td>
<td width="502">any decimal digit character.  Equivalent to [0-9]</td>
</tr>
<tr valign="TOP">
<td width="147">\D</td>
<td width="502">
<p lang="en-US">Any non-decimal digit 			character. Equivalent to [^0-9].</p>
</td>
</tr>
<tr valign="TOP">
<td width="147">\w</td>
<td width="502">
<p lang="en-US">Any word character. 			Equivalent to [a-zA-Z_0-9].</p>
</td>
</tr>
<tr valign="TOP">
<td width="147">\W</td>
<td width="502">
<p lang="en-US">Any non-word character. 			Equivalent to [^a-zA-Z_0-9].</p>
</td>
</tr>
<tr valign="TOP">
<td width="147">.</td>
<td width="502">
<p lang="en-US">Any single character 			except new line (\n).</p>
</td>
</tr>
</tbody>
</table>
<p>Table 1.2 character shorthand expressions</p>
<p>The shorthand expressions listed above are effective both inside and outside a character class, with the exception of the dot (.).  Within a character class, the dot matches a literal dot character.</p>
<p><strong>1.3 Positional Matches</strong></p>
<p>Suppose we want to find the first page of a document by matching the page number, where the page numbers are in the format ‘Page N’.  We might use the following regular expression:</p>
<blockquote><p><span style="font-family: courier new,courier;">Page 1</span></p></blockquote>
<p>Nothing fancy, we are matching a literal string, and this may seem to work well enough at first.  However, what happens when we get to Page 10?  In most cases, this will also be a match for our expression above.  Why is this so?  A regular expression does a character by character match, so the above expression could be read as ‘Match a capital P, followed by a lowercase a, followed by a lowercase g, followed by a lowercase e, followed by a space, followed by a numeral 1’.  Notice this does not account for anything following the match, so this will match ‘Page 1’, ‘Page 10’, or ‘Page 1983467231894’</p>
<p>To address such cases, positional match characters are provided.  The dollar sign ($) matches the position at the end of a string.  Adding this to our expression above, we have:</p>
<blockquote><p><span style="font-family: courier new,courier;">Page 1$</span></p></blockquote>
<p>This can be read as ‘Match a capital P, followed by a lowercase a, followed by a lowercase g, followed by a lowercase e, followed by a space, followed by a numeral 1, with no further characters in the string’.</p>
<p>Similarly, we can match the position at the beginning of a string using the carat (^).  Recall that the carat negates a character class if it is the first character after the opening square bracket.  To match the beginning of a string, the carat must be outside of any character class.</p>
<p>Note that some regular expression implementations provide configuration options to force the expression to match the given string in its entirety.  This is equivalent to automatically prepending the carat and appending the dollar sign to the specified expression.</p>
<p><span style="font-size: small;"> </span></p>
<h4>2. Quantifiers</h4>
<p>OK, so we’ve looked at character matching, but except for our very first literal expression, we haven’t matched more than a single character.  One way we can match multiple characters is to string together two or more expressions like those we’ve seen so far.  For example:</p>
<blockquote><p><span style="font-family: courier new,courier;">[A-Z][A-Z][A-Z][A-Z][A-Z][A-Z]</span></p></blockquote>
<p>This will match any five consecutive capital alpha characters.  So, this would match ‘SAMPLE’ but not ‘Sample’.  However, our expression is going to become very large very quickly if we have to define each character individually.</p>
<p>We can specify the number of times we want to match a given character by placing the quantity within curly braces following the character expression.  Using this method, an equivalent to the previous expression would be:</p>
<blockquote><p><span style="font-family: courier new,courier;">[A-Z]{5}</span></p></blockquote>
<p>Suppose, in addition to matching 5 capital letters, we’d also like to match if there are only 3 or 4 capital letters.  Again, we specify the quantity in curly braces following the character, but we specify two numbers, the first being the minimum number of instances of the previous character to match, the second being the maximum, separated by a comma.  So, to match 3,4 or 5 capital characters, we write:</p>
<blockquote><p><span style="font-family: courier new,courier;">[A-Z]{3,5}</span></p></blockquote>
<p>Using this notation, we can also specify no minimum or no maximum number of characters to match by leaving the relevant value blank.  So:</p>
<blockquote><p><span style="font-family: courier new,courier;">[A-Z]{3,}</span></p></blockquote>
<p>matches 3 or more capital letters, while</p>
<blockquote><p><span style="font-family: courier new,courier;">[A-Z]{,5}</span></p></blockquote>
<p>matches 5 or fewer capital letters.</p>
<p><strong>2.1 Quantifier Shorthand</strong></p>
<p>Similar to the character shorthand expressions discussed previously, there are a number of quantifier shorthand expressions that make common quantities simple to express.  These are defined in the following table.</p>
<table style="width: 666px;" border="1" cellspacing="0" cellpadding="4">
<col width="159"></col>
<col width="489"></col>
<tbody>
<tr valign="TOP">
<td width="159">Expression</td>
<td width="489">Matches the previous expression/character&#8230;</td>
</tr>
<tr valign="TOP">
<td width="159">*</td>
<td width="489">
<p lang="en-US">0 or more times; 			equivalent to {0, }.</p>
</td>
</tr>
<tr valign="TOP">
<td width="159">?</td>
<td width="489">
<p lang="en-US">1 or more times; 			equivalent to {1, }.</p>
</td>
</tr>
<tr valign="TOP">
<td width="159">+</td>
<td width="489">
<p lang="en-US">0 or 1 times; 			equivalent to {0,1}</p>
</td>
</tr>
</tbody>
</table>
<p><span style="font-size: small;"><span style="color: #000000;">Table 2.1 quantifier shorthand expressions</span></span></p>
<h4>3. How A Regular Expression is Applied</h4>
<p>By default, regular expressions are said to be ‘greedy’, meaning any given element in an expression will match as much of the string to which it is applied as possible.  Take for instance the very common expression:</p>
<blockquote><p><span style="font-family: courier new,courier;">.* </span></p></blockquote>
<p>This means ‘match any given character 0 or more times’, which essentially matches anything and everything, with the exception of new line characters.  Matched characters are said to be ‘consumed’, meaning that, once matched, they are discard and are not subject to any further processing.</p>
<p>If this is the case, what happens with an expression such as:</p>
<blockquote><p>.*e</p></blockquote>
<p>Suppose we apply this to the string ‘Page’.  Given what we know so far, the ‘.*’ portion of our regular expression should match ‘Page’, consuming the entire string and leaving nothing for the ‘e’ to match.  If this is the case, we might suppose that nothing but a new line character could ever be matched after ‘.*’ in a regular expression, as it will consume all other characters.</p>
<p>However, this is not the case, due to a process called ‘backtracing’.  Backtracing essentially allows a regular expression to ‘back up’ and look for a match among the characters already consumed.  So, when applying our expression of ‘.*e’ to the string ‘Page’, the process is as follows:</p>
<ol>
<li>.* is applied to ‘Page’, matching ‘Page’.</li>
<li>‘e’ now must be matched.  The regular expression engine backs up in the string, character by character, until a match is found.  As the last letter in our string is a match, the ‘e’ in our expression matches the ‘e’ in ‘Page’, and subsequently, our first part of the expression, .*, matches ‘Pag’.</li>
</ol>
<p>That&#8217;s all for now, we&#8217;ll cover more in Part 2.  However, with what you now know, you should be able to start writing &amp; understanding most regular expressions.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.spencerberus.com/blog/2010/making-sense-of-regular-expressions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New test builds of System Nucleus</title>
		<link>http://www.spencerberus.com/blog/2010/new-test-builds-of-system-nucleus/</link>
		<comments>http://www.spencerberus.com/blog/2010/new-test-builds-of-system-nucleus/#comments</comments>
		<pubDate>Wed, 20 Oct 2010 17:06:23 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[software]]></category>
		<category><![CDATA[system nucleus]]></category>

		<guid isPermaLink="false">http://spencerberus.com/blog/?p=38</guid>
		<description><![CDATA[<img src="http://www.spencerberus.com/blog/wp-content/uploads/install.png" width="16" height="16" alt="" title="software" /><img src="http://www.spencerberus.com/blog/wp-content/uploads/systemNucleus16.png" width="16" height="16" alt="" title="system nucleus" /><br/>Hidden carefully within Spencerberus.com is a secret &#8211; the latest test builds of System Nucleus.  Actually, they&#8217;re at the following links: 32-bit test build 64-bit test build I&#8217;ve been using these file names for quite some time actually, but only sent the links out to people who report bugs that the new builds were known [...]]]></description>
			<content:encoded><![CDATA[<img src="http://www.spencerberus.com/blog/wp-content/uploads/install.png" width="16" height="16" alt="" title="software" /><img src="http://www.spencerberus.com/blog/wp-content/uploads/systemNucleus16.png" width="16" height="16" alt="" title="system nucleus" /><br/><p>Hidden carefully within Spencerberus.com is a secret &#8211; the latest test builds of System Nucleus.  Actually, they&#8217;re at the following links:</p>
<p><a href="http://www.spencerberus.com/projects/SystemNucleusTest_x32.zip">32-bit test build</a></p>
<p><a href="http://www.spencerberus.com/projects/systemnucleustest_x64.zip">64-bit test build</a></p>
<p>I&#8217;ve been using these file names for quite some time actually, but only sent the links out to people who report bugs that the new builds were known to fix.  I will continue to update these builds as fixes &amp; changes are made, so the above links should remain valid.  If you&#8217;ve found a problem and want to see if it&#8217;s been fixed already, or just want to test out the latest build, feel free to download these at any time.  Note that, while these tend to be pretty stable and improve upon the current release, they have not yet been fully tested and may contain bugs or incomplete features.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.spencerberus.com/blog/2010/new-test-builds-of-system-nucleus/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>When WMI Goes Bad</title>
		<link>http://www.spencerberus.com/blog/2010/when-wmi-goes-bad/</link>
		<comments>http://www.spencerberus.com/blog/2010/when-wmi-goes-bad/#comments</comments>
		<pubDate>Tue, 19 Oct 2010 22:46:24 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[development]]></category>

		<guid isPermaLink="false">http://spencerberus.com/blog/?p=37</guid>
		<description><![CDATA[<img src="http://www.spencerberus.com/blog/wp-content/uploads/tag.png" width="16" height="16" alt="" title="development" /><br/>Windows Management Instrumentation (WMI) is Microsoft&#8217;s implementation of the Web-Based Enterprise Management (WBEM) standard, intended to enable centralized management of disparate platforms and systems.  WMI provides detailed information on just about everything in, on, and connected to a computer running Microsoft Windows.  And, while it&#8217;s probably best know for such audit and inventory abilities, its [...]]]></description>
			<content:encoded><![CDATA[<img src="http://www.spencerberus.com/blog/wp-content/uploads/tag.png" width="16" height="16" alt="" title="development" /><br/><p>Windows Management Instrumentation (WMI) is Microsoft&#8217;s implementation of <a href="http://www.dmtf.org/standards/wbem" target="_blank">the Web-Based Enterprise Management (WBEM) standard</a>, intended to enable centralized management of disparate platforms and systems.  WMI provides detailed information on just about everything in, on, and connected to a computer running Microsoft Windows.   And, while it&#8217;s probably best know for such audit and inventory abilities, its real power lies in the management functionality it provides.  It is not only a way of accessing information, but of configuring and testing many system settings and features.  Plus, all of this functionality can be accessed remotely.</p>
<p>Sometimes though, WMI just doesn&#8217;t work quite right.  Thankfully, there are a number of tools, many built-in to Windows, that can assist in testing, diagnosing, and resolving issues with WMI.  Here is a list of the tools &amp; procedures we will take a look at in this multi-part article:</p>
<ol>
<li><a href="./?p=37&amp;page=2">The WMI service</a></li>
<li><a href="./?p=37&amp;page=3">WMI Tester</a></li>
<li><a href="./?p=37&amp;page=4">Verifying the WMI repository</a></li>
<li><a href="./?p=37&amp;page=5">registering WMI</a></li>
<li><a href="./?p=37&amp;page=6">recompiling WMI classes</a></li>
<li><a href="./?p=37&amp;page=7">Repairing the WMI Repository</a></li>
<li><a href="./?p=37&amp;page=8">System File Checker</a></li>
<li><a href="./?p=37&amp;page=9">Restoring to a previous point in time</a></li>
<li><a href="./?p=37&amp;page=10">Rebuilding the WMI repository</a></li>
<li><a href="./?p=37&amp;page=11">When all else fails&#8230;</a></li>
<li><a href="./?p=37&amp;page=12">References</a></li>
</ol>
<p>WMI concepts necessary to the techniques &amp; tools described will be given throughout the article.  For more detailed information on what WMI is and can do, the following resources may be of use (links will open in a new window or tab):</p>
<ul>
<li><a href="http://msdn.microsoft.com/en-us/library/aa394582%28VS.85%29.aspx" target="_blank">Windows Management Instrumentation @ MSDN</a></li>
<li><a href="https://secure.wikimedia.org/wikipedia/en/wiki/Windows_Management_Instrumentation" target="_blank">Windows Management Instrumentation @ Wikipedia</a></li>
<li><a href="http://msdn.microsoft.com/en-us/library/ms811553.aspx" target="_blank">WMI: Background and Overview</a> (MSDN)</li>
</ul>
<p>NOTE: This article was written to accompany the release of my WMI Recovery Tool, which in turn was created to support the <a href="http://www.spencerberus.com/projects.aspx">System Nucleus</a> toolkit for Windows, which makes extensive use of WMI.  However, while my WMI tool was designed to make performing many of the procedures discussed much simpler, the information presented here does not require either of these software packages to be of use.</p>
<p><a href="./?p=37&amp;page=2">Next: The WMI Service&#8230;</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.spencerberus.com/blog/2010/when-wmi-goes-bad/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>System Nucleus 2.3.1 Maintenance Release &#8211; stability improvements &amp; minor fixes</title>
		<link>http://www.spencerberus.com/blog/2010/system-nucleus-2-3-1-maintenance-release-stability-improvements-minor-fixes/</link>
		<comments>http://www.spencerberus.com/blog/2010/system-nucleus-2-3-1-maintenance-release-stability-improvements-minor-fixes/#comments</comments>
		<pubDate>Mon, 04 Oct 2010 21:02:57 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[software]]></category>
		<category><![CDATA[system nucleus]]></category>

		<guid isPermaLink="false">http://spencerberus.com/blog/?p=31</guid>
		<description><![CDATA[<img src="http://www.spencerberus.com/blog/wp-content/uploads/install.png" width="16" height="16" alt="" title="software" /><img src="http://www.spencerberus.com/blog/wp-content/uploads/systemNucleus16.png" width="16" height="16" alt="" title="system nucleus" /><br/>This release primarily addresses a few stability issues, anyone experiencing any sort of problem with the current version should upgrade.  There are a couple improvements to error reporting as well, so if you are having an issue that is not fixed by the upgrade, re-submit the error report as it may provide more information.  See [...]]]></description>
			<content:encoded><![CDATA[<img src="http://www.spencerberus.com/blog/wp-content/uploads/install.png" width="16" height="16" alt="" title="software" /><img src="http://www.spencerberus.com/blog/wp-content/uploads/systemNucleus16.png" width="16" height="16" alt="" title="system nucleus" /><br/><p>This release primarily addresses a few stability issues, anyone experiencing any sort of problem with the current version should upgrade.  There are a couple improvements to error reporting as well, so if you are having an issue that is not fixed by the upgrade, re-submit the error report as it may provide more information.  See the <a href="http://www.spencerberus.com/projects/ChangeLog.htm">change log </a>for a complete list of changes.</p>
<p>A lot of people have reported issues that appear to be due to WMI installation issues.  This new version will detect at startup if WMI is not installed, not registered or has some other major issue, and offers to attempt a fix.  This should work for the majority of WMI issues, but there will likely be some that it does not address.  I am working on a WMI Diagnostic &amp; Repair Tool that offers a number of additional WMI repair &amp; testing options.  This will be included in all future versions of System Nucleus.  However, there will be a stand alone version available as soon as it is ready, which I expect will be in about a week, perhaps sooner.  Availability will be announced in the <a href="http://spencerberus.com/blog/?feed=rss2">RSS feed</a>, which can be most easily <a href="http://www.addtoany.com/subscribe?linkname=spencerberus.tech&amp;linkurl=http%3A%2F%2Fspencerberus.com%2Fblog%2F%3Ffeed%3Drss2">subscribed to here</a>.  Initial download will be available only through the <a href="http://www.spencerberus.com/download.aspx">System Nucleus download page</a>, but I may add it to other download sites if there is sufficient interest.</p>
<p><a href="http://www.spencerberus.com/download.aspx">Download the latest version of System Nucleus here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.spencerberus.com/blog/2010/system-nucleus-2-3-1-maintenance-release-stability-improvements-minor-fixes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

