<?xml version='1.0' encoding='UTF-8'?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/'><id>tag:blogger.com,1999:blog-744073533598635586</id><updated>2008-01-16T14:28:11.729-05:00</updated><title type='text'>Gospel Midi &amp; Programming</title><link rel='alternate' type='text/html' href='http://www.unc.edu/~zplewis/'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/744073533598635586/posts/default'/><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.unc.edu/~zplewis/atom.xml'/><author><name>Z. Patrick Lewis</name></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>12</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-744073533598635586.post-3255151087826503499</id><published>2008-01-16T14:17:00.000-05:00</published><updated>2008-01-16T14:28:11.758-05:00</updated><title type='text'>New Bethel Missionary Church Inspirational Choir</title><content type='html'>This post is for the Inspirational Choir in &lt;a href="http://www.nbethelbaptist.com"&gt;New Bethel Missionary Baptist Church&lt;/a&gt; in Durham, NC, where the pastor is the Rev. Dr. Glenn R. Davis.  If you are here to upload materials for rehearsal or get lyrics for songs, you will need to use the username and password in order to log in.&lt;br /&gt;&lt;br /&gt;More information on New Bethel Missionary Baptist Church can be found &lt;a href="http://www.nbethelbaptist.com"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="./inspirational/"&gt;Choir members, click here&lt;/a&gt;&lt;/b&gt; to log in.</content><link rel='alternate' type='text/html' href='http://www.unc.edu/~zplewis/2008/01/new-bethel-missionary-church.html' title='New Bethel Missionary Church Inspirational Choir'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=744073533598635586&amp;postID=3255151087826503499' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://www.unc.edu/~zplewis/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/744073533598635586/posts/default/3255151087826503499'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/744073533598635586/posts/default/3255151087826503499'/><author><name>Z. Patrick Lewis</name></author></entry><entry><id>tag:blogger.com,1999:blog-744073533598635586.post-3203130050724171948</id><published>2007-12-19T14:37:00.000-05:00</published><updated>2008-01-02T13:02:30.685-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='visual studio'/><category scheme='http://www.blogger.com/atom/ns#' term='vb.net'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='aim'/><title type='text'>Creating an AIM Plugin in VB.NET Using the .NET Framework - Part 2</title><content type='html'>Welcome back.&lt;br /&gt;&lt;br /&gt;The method &lt;b&gt;m_session_BeforeImSend&lt;/b&gt; calls the &lt;b&gt;transmogrify&lt;/b&gt; function.  Since there isn't one there, we'll add it.  The &lt;b&gt;transmogrify&lt;/b&gt; function takes a string and shifts each letter 13 characters then returns the "transmogrified" string:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;''' &amp;#60;summary&amp;#62;&lt;br /&gt;''' All letters in a sent IM will be shifted 13 places.&lt;br /&gt;''' &amp;#60;/summary&amp;#62;&lt;br /&gt;''' &amp;#60;param name="s"&amp;#62;&amp;#60;/param&gt;&lt;br /&gt;''' &amp;#60;returns&amp;#62;&amp;#60;/returns&amp;#62;&lt;br /&gt;''' &amp;#60;remarks&amp;#62;&amp;#60;/remarks&amp;#62;&lt;br /&gt;Private Function transmogrify(ByVal s As String) As String&lt;br /&gt;&lt;br /&gt;Dim output As New StringBuilder&lt;br /&gt;&lt;br /&gt;Dim chs As Char() = s.ToCharArray&lt;br /&gt;&lt;br /&gt;For i As Integer = 0 To s.Length - 1&lt;br /&gt;&lt;br /&gt;Select Case chs(1)&lt;br /&gt;&lt;br /&gt;Case "a"c&lt;br /&gt;output.Append("n")&lt;br /&gt;&lt;br /&gt;Case Else&lt;br /&gt;output.Append(chs(i).ToString)&lt;br /&gt;&lt;br /&gt;End Select&lt;br /&gt;&lt;br /&gt;Next i&lt;br /&gt;&lt;br /&gt;Return output.ToString&lt;br /&gt;&lt;br /&gt;End Function&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I have no idea why the author uses a StringBuilder instead of a regular String.  Maybe you can try it and tell me what the difference is.  Just like the original author, I'm not going to implement all 52 cases either.  I will say that there is definitely an easier way than actually defining 52 cases.&lt;br /&gt;&lt;br /&gt;Think about it like this.  If the letter is the 14th letter (N) of the alphabet (26 letters total), then shifting it 13 places would be (A).  All characters have numeric values.  For anything less than N, add 13.  For anything N or later, start with the value 12 less than A's value, and then add 13.  Two cases will handle the entire alphabet.&lt;br /&gt;&lt;br /&gt;Or, for the sake of testing, you could have this function return something like "I love ______!" no matter what is typed.  I have "Julia" in that blank.&lt;br /&gt;&lt;br /&gt;If you didn't know (it was news to me when I found out), you can specify the text for your custom functions and parameters that Intellisense displays.  Just type:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;'''&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;before any class, subroutine, function, property, or structure declaration, and you will be able to describe in more detail what this piece of code does.  Excellent if you have to share code.&lt;br /&gt;&lt;br /&gt;Additionally, what I just learned today, a single quoted letter or character followed by &lt;b&gt;c&lt;/b&gt; will give you the Char value.  Priceless.&lt;br /&gt;&lt;br /&gt;This is the end of Part 2 of this post.  Come back for part 3.</content><link rel='alternate' type='text/html' href='http://www.unc.edu/~zplewis/2007/12/creating-aim-plugin-in-vbnet-using-net_19.html' title='Creating an AIM Plugin in VB.NET Using the .NET Framework - Part 2'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=744073533598635586&amp;postID=3203130050724171948' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://www.unc.edu/~zplewis/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/744073533598635586/posts/default/3203130050724171948'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/744073533598635586/posts/default/3203130050724171948'/><author><name>Z. Patrick Lewis</name></author></entry><entry><id>tag:blogger.com,1999:blog-744073533598635586.post-4595458263998804117</id><published>2007-12-19T12:46:00.000-05:00</published><updated>2008-01-02T17:10:24.055-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='visual studio'/><category scheme='http://www.blogger.com/atom/ns#' term='vb.net'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='aim'/><title type='text'>Creating an AIM Plugin in VB.NET Using the .NET Framework - Part 1</title><content type='html'>This post is based upon this web site:&lt;br /&gt;&lt;br /&gt;http://dev.aol.com/creating-aim-plugin-in-csharp#comment-208&lt;br /&gt;&lt;br /&gt;I love VB.NET; am I going to say it's better than C#?  No.  I don't have time for petty squabbling.  Both are languages for the same framework, but it does seem that C# allows for better control in particular areas.  That is a fact.  &lt;br /&gt;&lt;br /&gt;*NOTE: This tutorial uses Visual Studio 2005, which requires .NET 2.0.&lt;br /&gt;&lt;br /&gt;With that aside:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;&lt;span style="font-weight:bold;"&gt;Getting Started...&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;1)  Open Visual Studio 2005.  Go to File --&gt; New Project (Ctrl + N).&lt;br /&gt;2)  Under "Project Types", go to Visual Basic --&gt; Windows --&gt; and select "Class Library" on the right-hand side.  In the text box beside "Name," type:&lt;br /&gt;&lt;br /&gt;Rotate&lt;br /&gt;&lt;br /&gt;(Personally, I typed "Rotate - VB.NET", but that doesn't matter).&lt;br /&gt;&lt;br /&gt;3)  If you haven't already, download the latest version of the Open AIM SDK (I'm using version 1.5) from http://developer.aim.com/plugin.  Log in by clicking &lt;b&gt;"Manage your keys"&lt;/b&gt; under the yellow &lt;b&gt;"Get Started"&lt;/b&gt; button.  Although the page claims 1.1.2 is the latest version, if you login, 1.5 is available for download.  Download &lt;b&gt;accsdk_win32_1_5.zip&lt;/b&gt; to your desktop.&lt;br /&gt;&lt;br /&gt;4)  In Visual Studio 2005, go to Project --&gt; Rotate Properties.  Click "Compile" on the left-hand side.  Look at the bottom and check &lt;b&gt;"Register for COM interop."&lt;/b&gt;  &lt;br /&gt;&lt;br /&gt;5)  Press Ctrl + Shift + S to save all files in your solution.  You will be presented with a dialog box asking you where to save your files.  For location, I used &lt;b&gt;&lt;i&gt;My Documents\Visual Studio 2005\Projects&lt;/b&gt;&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;6)  After you have created the folder for our "Rotate" solution, unzip the accsdk_win32_1_5.zip file in a folder called &lt;b&gt;accsdk_win32_1_5&lt;/b&gt; within the folder created for your solution so we can locate it easier.  We will need this in the near future.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;&lt;span style="font-weight:bold;"&gt;Creating a Reference to the SDK Library&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;1)  Go to Project --&gt; Add Reference.&lt;br /&gt;2)  Click "Browse" and browse to the &lt;b&gt;accsdk_win32_1_5&lt;/b&gt; folder where you unzipped the Open AIM SDK.  Go to the:&lt;br /&gt;&lt;br /&gt;Dist --&gt; Release &lt;br /&gt;&lt;br /&gt;folder to add a reference to &lt;b&gt;"acccore.dll"&lt;/b&gt; to your project by double-clicking the file.  &lt;br /&gt;&lt;br /&gt;*NOTE: The reason I didn't use the COM tab is that because on the first time, it has to scan the entire computer for usable DLLs.  I don't like to wait.&lt;br /&gt;&lt;br /&gt;3)  Go to Project --&gt; Add Reference --&gt; .NET and hold Ctrl and click the following two .NET libraries:&lt;br /&gt;&lt;br /&gt;System.Drawing&lt;br /&gt;System.Windows.Forms&lt;br /&gt;&lt;br /&gt;Click OK to add references to these libraries.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;&lt;span style="font-weight:bold;"&gt;Creating a Rotate Class&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;I didn't want to use "Class1.vb", so I went in the Solution Explorer and deleted it.  I added a new class called &lt;b&gt;"Rotate.vb"&lt;/b&gt; by going to Project --&gt; Add Class.  Select "Class" as the template and type "Rotate.vb" in the textbox beside "Name."  Click OK.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;&lt;span style="font-weight:bold;"&gt;Importing the Necessary Libraries&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;In order to use our referenced libraries, we need to import them.  Add the following code before "Public Class Rotate":&lt;br /&gt;&lt;br /&gt;Imports System.drawing&lt;br /&gt;Imports System.Runtime.InteropServices&lt;br /&gt;Imports System.Text&lt;br /&gt;Imports System.windows.forms&lt;br /&gt;&lt;br /&gt;Imports Microsoft.Win32&lt;br /&gt;Imports AccCoreLib&lt;br /&gt;&lt;br /&gt;If any of these lines are underlined in green, it means that the required references have not been added to the solution.  Go to Project --&gt; Add References to add any missing references.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;&lt;span style="font-weight:bold;"&gt;Adding Self-Registering&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Self-registering allows your application to add information to the registry so that your plugin is known to AIM. Add the following code to your class:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;#Region "Plugin Registration"&lt;br /&gt;&amp;#60;ComRegisterFunctionAttribute()&amp;#62; _&lt;br /&gt;Public Shared Sub RegisterFunction(ByVal t As Type)&lt;br /&gt;    Dim key As RegistryKey = Registry.LocalMachine.CreateSubKey(PluginKeyName(t))&lt;br /&gt;    key.SetValue("Name", t.Name)&lt;br /&gt;End Sub&lt;br /&gt;&amp;#60;ComUnregisterFunctionAttribute()&amp;#62; _ &lt;br /&gt;Public Shared Sub UnregisterFunction(ByVal t As Type)&lt;br /&gt;    Registry.LocalMachine.DeleteSubKey(PluginKeyName(t))&lt;br /&gt;End Sub&lt;br /&gt;Private Shared Function PluginKeyName(ByVal t As Type) As String&lt;br /&gt;    Return "Software\America Online\AIM\Plugins\" + "{"C + t.GUID.ToString() + "}"C&lt;br /&gt;End Function&lt;br /&gt;#End Region&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If you know about the "My" namespace, you can use this instead to handle the registry.  For the sake of creating a VB.NET version of the article, that will not be covered here.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;&lt;span style="font-weight:bold;"&gt;Implementing the Interfaces&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Now we are going to change our class declaration to include a reference to our developer key (replace DEVELOPER_KEY in the following code with the key value) and the two interfaces we use from the SDK. Change your class declaration from:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Public Class Rotate&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;to&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;&amp;#60;GuidAttribute("DEVELOPER_KEY")&amp;#62; _&lt;br /&gt;Public Class Rotate&lt;br /&gt;    Implements IAccPlugin, IAccCommandTarget&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;NOTE:  Replace the text &lt;b&gt;DEVELOPER_KEY&lt;/b&gt; with your own key.  You must use a Dev (Development) key for compiling your plugin.  This may seem elementary to some, but since the Deploy key seemed to have less restrictions, I thought it was ideal. Wrong.&lt;br /&gt;&lt;br /&gt;According to an e-mail I received from &lt;a href="mailto:gregsblog@aol.com"&gt;gregsblog@aol.com&lt;/a&gt; Development keys require a fingerprint otherwise known as a hash of your dll.  Anytime you compile the code with a modification, the hash will change, thus making AIM not load the plugin.&lt;br /&gt;&lt;br /&gt;Thanks, &lt;a href="http://www.gregsmind.com"&gt;Greg&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;If you copy and paste this code and &lt;b&gt;IAccPlugin&lt;/b&gt; and &lt;b&gt;IAccCommandTarget&lt;/b&gt; are underlined in blue, indicating that they have not been implemented by this class, then move your cursor to the end of &lt;b&gt;IAccCommandTarget&lt;/b&gt; and press Enter.  This will automatically add the necessary functions and subroutines (methods) for implementing these two classes.  The added code is:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;Public Sub Exec(ByVal command As Integer, ByVal users As Object) Implements AccCoreLib.IAccCommandTarget.Exec&lt;br /&gt;&lt;br /&gt;    End Sub&lt;br /&gt;&lt;br /&gt;    Public Function QueryStatus(ByVal command As Integer, ByVal users As Object) As Boolean Implements AccCoreLib.IAccCommandTarget.QueryStatus&lt;br /&gt;&lt;br /&gt;    End Function&lt;br /&gt;&lt;br /&gt;    Public Sub Init(ByVal session As AccCoreLib.AccSession, ByVal pluginInfo As AccCoreLib.IAccPluginInfo) Implements AccCoreLib.IAccPlugin.Init&lt;br /&gt;&lt;br /&gt;    End Sub&lt;br /&gt;&lt;br /&gt;    Public Sub Shutdown() Implements AccCoreLib.IAccPlugin.Shutdown&lt;br /&gt;&lt;br /&gt;    End Sub&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Before we implement these methods, we need to create some variables; otherwise, we will get errors as we implement the methods. At the top of the class, just below the class declaration, add the following variables:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;Const kCommandID As Integer = 0&lt;br /&gt;Private WithEvents m_session As AccSession&lt;br /&gt;Private xlate As Boolean = False&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The first declaration creates a constant value that represents a command. The second &lt;b&gt;m_session&lt;/b&gt; is a session object we use to keep track of user preferences. For VB.NET, we need &lt;b&gt;WithEvents&lt;/b&gt; because we need to access the events that happen during the current AIM session.  The last is a Boolean that tells our plugin whether to translate the text message.&lt;br /&gt;&lt;br /&gt;Find the Init method in the IAccPlugin region and add the following code:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;Me.m_session = session&lt;br /&gt;Dim command As IAccCommand = pluginInfo.AddCommand(kCommandID)&lt;br /&gt;Dim command2 As IAccCommand = pluginInfo.AddCommand(AccCommandId.AccCommandId_Preferences)&lt;br /&gt;command.Property(AccCommandProp.AccCommandProp_Text) = "Command #1..."&lt;br /&gt;command2.Property(AccCommandProp.AccCommandProp_Text) = "Command #2..."&lt;br /&gt;AddHandler Me.m_session.BeforeImSend, AddressOf m_session_BeforeImSend&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Why are there two different commands added instead of 1 like in the example?  I'll explain at the end&lt;br /&gt;&lt;br /&gt;In the last line of the Init method, the BeforeIMSend event of the m_session object is handled by the m_session_BeforeImSend.  We have to create this method with the correct signature:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;Private Sub m_session_BeforeImSend(ByVal session As AccSession, ByVal imSession As IAccImSession, _&lt;br /&gt;ByVal recipient As IAccParticipant, ByVal im As IAccIm) Handles m_session.BeforeImSend&lt;br /&gt;&lt;br /&gt;End Sub&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Before our IM is sent, we want to "transmogrify" our text if the plugin is enabled.  Add this code to the m_session_BeforeImSend method:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;If Me.xlate Then im.Text = Me.transmogrify(im.Text)&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;When our plugin is shutdown, we need to release the resources used to keep our preferences for the current session.  Add this line to the &lt;b&gt;Shutdown&lt;/b&gt; method:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;Me.m_session = Nothing&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Stay tuned for &lt;a href="http://www.unc.edu/~zplewis/2007/12/creating-aim-plugin-in-vbnet-using-net_19.html"&gt;Part 2&lt;/a&gt; of this tutorial.</content><link rel='alternate' type='text/html' href='http://www.unc.edu/~zplewis/2007/12/creating-aim-plugin-in-vbnet-using-net.html' title='Creating an AIM Plugin in VB.NET Using the .NET Framework - Part 1'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=744073533598635586&amp;postID=4595458263998804117' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://www.unc.edu/~zplewis/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/744073533598635586/posts/default/4595458263998804117'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/744073533598635586/posts/default/4595458263998804117'/><author><name>Z. Patrick Lewis</name></author></entry><entry><id>tag:blogger.com,1999:blog-744073533598635586.post-874371079536065155</id><published>2007-12-14T15:12:00.000-05:00</published><updated>2007-12-14T15:19:02.161-05:00</updated><title type='text'>MIT Class</title><content type='html'>One of the things I did not mention in the short description of this blog is that I am currently training to be a minister.  MIT (Minister-in-Training) class is the training program provided at &lt;a href="http://www.nbethelbaptist.com"&gt;New Bethel Missionary Baptist Church&lt;/a&gt; by Rev. Dr. Glenn R. Davis.  Currently, we have finished reading the Bible and are "in the field" so to speak.  We are not licensed just yet, but our "Joy Night Service" (Friday Night) is set aside to give ministers the opportunity to proclaim the gospel of Jesus Christ.&lt;br /&gt;&lt;br /&gt;So far, I have spoken twice; I am currently working on a message entitled "Faith = Authority," coming from Matthew 8:5-10, cross-referencing Luke 7:1-10.  Perhaps what I'll do is start recording messages with my Sony DSC-H2 camera and posting them on Youtube, creating a "New Bethel" channel if you will, featuring messages from services at New Bethel.&lt;br /&gt;&lt;br /&gt;We'll see...you see you frequently I post to this page.</content><link rel='alternate' type='text/html' href='http://www.unc.edu/~zplewis/2007/12/mit-class.html' title='MIT Class'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=744073533598635586&amp;postID=874371079536065155' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://www.unc.edu/~zplewis/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/744073533598635586/posts/default/874371079536065155'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/744073533598635586/posts/default/874371079536065155'/><author><name>Z. Patrick Lewis</name></author></entry><entry><id>tag:blogger.com,1999:blog-744073533598635586.post-3547442547060313336</id><published>2007-10-25T11:43:00.000-05:00</published><updated>2007-10-25T12:15:30.669-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lyrics'/><category scheme='http://www.blogger.com/atom/ns#' term='music'/><title type='text'>The Struggle is Over</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.unc.edu/~zplewis/uploaded_images/struggle-760485.jpg"&gt;&lt;img style="float:bottom; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://www.unc.edu/~zplewis/uploaded_images/struggle-760482.jpg" border="0" alt="Click to view full-size album art!" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Here are the lyrics for "The Struggle is Over" by Youth for Christ on their album, &lt;span style="font-style:italic;"&gt;The Struggle is Over&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.unc.edu/~zplewis/lyrics/struggle.txt"&gt;Click here to view the lyrics.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Enjoy!</content><link rel='alternate' type='text/html' href='http://www.unc.edu/~zplewis/2007/10/here-are-lyrics-for-struggle-is-over-by.html' title='The Struggle is Over'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=744073533598635586&amp;postID=3547442547060313336' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://www.unc.edu/~zplewis/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/744073533598635586/posts/default/3547442547060313336'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/744073533598635586/posts/default/3547442547060313336'/><author><name>Z. Patrick Lewis</name></author></entry><entry><id>tag:blogger.com,1999:blog-744073533598635586.post-6626868871125409623</id><published>2007-09-15T01:55:00.001-05:00</published><updated>2007-09-15T02:17:48.202-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lyrics'/><category scheme='http://www.blogger.com/atom/ns#' term='music'/><title type='text'>"Grace" by T.D. Jakes - Lyrics</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.unc.edu/~zplewis/uploaded_images/gracealbum-797626.jpg"&gt;&lt;img style="float:bottom; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://www.unc.edu/~zplewis/uploaded_images/gracealbum-797616.jpg" border="0" alt="Click to view full-size album art!" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;In case you were looking for these, I have provided lyrics to T.D. Jakes' new song, "Grace" from his new Grace: Live in Kenya album.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.unc.edu/~zplewis/lyrics/grace.txt"&gt;Click here to view the lyrics.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Enjoy!</content><link rel='alternate' type='text/html' href='http://www.unc.edu/~zplewis/2007/09/grace-by-td-jakes-lyrics.html' title='&quot;Grace&quot; by T.D. Jakes - Lyrics'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=744073533598635586&amp;postID=6626868871125409623' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://www.unc.edu/~zplewis/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/744073533598635586/posts/default/6626868871125409623'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/744073533598635586/posts/default/6626868871125409623'/><author><name>Z. Patrick Lewis</name></author></entry><entry><id>tag:blogger.com,1999:blog-744073533598635586.post-87284829207268162</id><published>2007-09-13T12:40:00.000-05:00</published><updated>2007-09-13T12:40:29.062-05:00</updated><title type='text'>New Pit preachers spew a message of hate not love - Letters to the Editor</title><content type='html'>&lt;a href="http://media.www.dailytarheel.com/media/storage/paper885/news/2007/09/13/LettersToTheEditor/New-Pit.Preachers.Spew.A.Message.Of.Hate.Not.Love-2966147.shtml?reffeature=recentlycommentedstoriestab"&gt;New Pit preachers spew a message of hate not love - Letters to the Editor&lt;/a&gt;</content><link rel='alternate' type='text/html' href='http://www.unc.edu/~zplewis/2007/09/new-pit-preachers-spew-message-of-hate.html' title='New Pit preachers spew a message of hate not love - Letters to the Editor'/><link rel='related' href='http://media.www.dailytarheel.com/media/storage/paper885/news/2007/09/13/LettersToTheEditor/New-Pit.Preachers.Spew.A.Message.Of.Hate.Not.Love-2966147.shtml?reffeature=recentlycommentedstoriestab' title='New Pit preachers spew a message of hate not love - Letters to the Editor'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=744073533598635586&amp;postID=87284829207268162' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://www.unc.edu/~zplewis/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/744073533598635586/posts/default/87284829207268162'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/744073533598635586/posts/default/87284829207268162'/><author><name>Z. Patrick Lewis</name></author></entry><entry><id>tag:blogger.com,1999:blog-744073533598635586.post-6291422942754036815</id><published>2007-07-19T13:59:00.000-05:00</published><updated>2007-07-19T14:04:12.999-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unc'/><category scheme='http://www.blogger.com/atom/ns#' term='vista'/><category scheme='http://www.blogger.com/atom/ns#' term='xp'/><category scheme='http://www.blogger.com/atom/ns#' term='computer'/><title type='text'>Improving Windows System Performance</title><content type='html'>As a technician at UNC-Chapel Hill, I occasionally have to write help documentation that pertain to different aspects of computing.  Today, I have completed an article that explains at least the basics of improving the performance of Windows:&lt;br /&gt;&lt;br /&gt;Windows: Optimizing the Speed &amp; Space of your Hard Disk&lt;br /&gt;&lt;a href="http://help.unc.edu/3116"&gt;http://help.unc.edu/3116&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Enjoy!</content><link rel='alternate' type='text/html' href='http://www.unc.edu/~zplewis/2007/07/improving-windows-system-performance.html' title='Improving Windows System Performance'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=744073533598635586&amp;postID=6291422942754036815' title='1 Comments'/><link rel='replies' type='application/atom+xml' href='http://www.unc.edu/~zplewis/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/744073533598635586/posts/default/6291422942754036815'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/744073533598635586/posts/default/6291422942754036815'/><author><name>Z. Patrick Lewis</name></author></entry><entry><id>tag:blogger.com,1999:blog-744073533598635586.post-18196352682233682</id><published>2007-06-18T00:56:00.000-05:00</published><updated>2007-06-18T01:02:16.917-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='midi'/><category scheme='http://www.blogger.com/atom/ns#' term='music'/><category scheme='http://www.blogger.com/atom/ns#' term='gospel'/><title type='text'>New Midi Songs</title><content type='html'>Since there was not a new song posted last week, here are two:&lt;br /&gt;&lt;table style="width: 100%;" border="0" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.unc.edu/~zplewis/midi/wemustpraise.mid"&gt;We Must Praise - J. Moss - The J. Moss Project&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;a href="javascript:popUp('http://www.unc.edu/~zplewis/midi/wemustpraise.mid', '500','45')"&gt;&lt;img src="http://www.unc.edu/~zplewis/images/midi.jpg" alt="Play!" align="right" width="20px" height="20px" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;a href="http://www.unc.edu/~zplewis/midi/wemustpraise.mid"&gt;&lt;img src="http://www.unc.edu/~zplewis/images/saveas.jpg" align="right" alt="Download!" border="0" width="20px" height="20px" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.unc.edu/~zplewis/midi/welcomeintothisplace.mid"&gt;Welcome Into This Place (C Major)&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;a href="javascript:popUp('http://www.unc.edu/~zplewis/midi/welcomeintothisplace.mid', '500','45')"&gt;&lt;img src="http://www.unc.edu/~zplewis/images/midi.jpg" alt="Play!" align="right" width="20px" height="20px" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;a href="http://www.unc.edu/~zplewis/midi/welcomeintothisplace.mid"&gt;&lt;img src="http://www.unc.edu/~zplewis/images/saveas.jpg" align="right" alt="Download!" border="0" width="20px" height="20px" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; Enjoy!</content><link rel='alternate' type='text/html' href='http://www.unc.edu/~zplewis/2007/06/new-midi-songs.html' title='New Midi Songs'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=744073533598635586&amp;postID=18196352682233682' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://www.unc.edu/~zplewis/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/744073533598635586/posts/default/18196352682233682'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/744073533598635586/posts/default/18196352682233682'/><author><name>Z. Patrick Lewis</name></author></entry><entry><id>tag:blogger.com,1999:blog-744073533598635586.post-8958760933615871074</id><published>2007-06-04T01:06:00.001-05:00</published><updated>2007-06-06T12:57:41.133-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='midi'/><category scheme='http://www.blogger.com/atom/ns#' term='music'/><category scheme='http://www.blogger.com/atom/ns#' term='gospel'/><title type='text'>1st MIDI Post</title><content type='html'>Here is some MIDI files to start with:&lt;br /&gt;&lt;table style="width: 100%;" border="0" cellpadding="0" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.unc.edu/~zplewis/midi/totalpraise.mid"&gt;Total Praise - Richard Smallwood - Adoration&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;a href="javascript:popUp('http://www.unc.edu/~zplewis/midi/totalpraise.mid', '500','45')"&gt;&lt;img src="http://www.unc.edu/~zplewis/images/midi.jpg" alt="Play!" align="right" width="20px" height="20px" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;a href="http://www.unc.edu/~zplewis/midi/totalpraise.mid"&gt;&lt;img src="http://www.unc.edu/~zplewis/images/saveas.jpg" align="right" alt="Download!" border="0" width="20px" height="20px" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.unc.edu/~zplewis/midi/goddidntgiveup.mid"&gt;God Didn't Give Up - Deitrick Haddon - Crossroads&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;a href="javascript:popUp('http://www.unc.edu/~zplewis/midi/goddidntgiveup.mid', '500','45')"&gt;&lt;img src="http://www.unc.edu/~zplewis/images/midi.jpg" alt="Play!" align="right" border="0" width="20px" height="20px" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;a href="http://www.unc.edu/~zplewis/midi/goddidntgiveup.mid"&gt;&lt;img src="http://www.unc.edu/~zplewis/images/saveas.jpg" align="right" alt="Download!" border="0" width="20px" height="20px" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.unc.edu/~zplewis/midi/callingmyname.mid"&gt;Calling My Name - Hezekiah Walker - Live in Atlanta&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;a href="javascript:popUp('http://www.unc.edu/~zplewis/midi/callingmyname.mid', '500','45')"&gt;&lt;img src="http://www.unc.edu/~zplewis/images/midi.jpg" alt="Play!" align="right" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;a href="http://www.unc.edu/~zplewis/midi/callingmyname.mid"&gt;&lt;img src="http://www.unc.edu/~zplewis/images/saveas.jpg" align="right" alt="Download!" border="0" width="20px" height="20px" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://www.unc.edu/~zplewis/midi/baptistbenediction.mid"&gt;Baptist Benediction (Threefold Amen)&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;a href="javascript:popUp('http://www.unc.edu/~zplewis/midi/baptistbenediction.mid', '500','45')"&gt;&lt;img src="http://www.unc.edu/~zplewis/images/midi.jpg" alt="Play!" align="right" border="0" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;a href="http://www.unc.edu/~zplewis/midi/baptistbenediction.mid"&gt;&lt;img src="http://www.unc.edu/~zplewis/images/saveas.jpg" align="right" alt="Download!" border="0" width="20px" height="20px" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;Enjoy!</content><link rel='alternate' type='text/html' href='http://www.unc.edu/~zplewis/2007/06/1st-midi-post_04.html' title='1st MIDI Post'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=744073533598635586&amp;postID=8958760933615871074' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://www.unc.edu/~zplewis/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/744073533598635586/posts/default/8958760933615871074'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/744073533598635586/posts/default/8958760933615871074'/><author><name>Z. Patrick Lewis</name></author></entry><entry><id>tag:blogger.com,1999:blog-744073533598635586.post-819777063620055525</id><published>2007-06-03T22:51:00.001-05:00</published><updated>2007-06-04T13:18:58.555-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='midi'/><title type='text'>Essential: VanBasco's Karaoke Player</title><content type='html'>Before I post any &lt;a href="http://en.wikipedia.org/wiki/Midi" target="_blank"&gt;midi&lt;/a&gt; files, I feel that it is important to first explain what a MIDI file is. A MIDI (&lt;a href="http://en.wikipedia.org/wiki/Midi" target="_blank"&gt;Musical Instrument Digital Interface&lt;/a&gt;) file is a file that contains sound data from musical instruments, like a keyboard. MIDI also allows for multiple instruments within the same file (for example, drums, keyboard, sax) and allows you to place them on separate tracks. Imagine the separate instruments playing together as cars traveling along separate lanes on a highway. &lt;br /&gt;&lt;br /&gt;VanBasco’s Karaoke Player (&lt;a href="http://www.vanbasco.com/"&gt;http://www.vanbasco.com&lt;/a&gt; - freeware!), a program that enables you to view the actual keys on the piano that were pressed to produce the sounds of the separate tracks of a MIDI file (drum tracks are not shown):&lt;br /&gt;&lt;br /&gt;&lt;p align="center"&gt;&lt;img src="http://www.unc.edu/%7Ezplewis/images/vanbasco.png" alt="vanbasco" align="middle" border="0" height="200" hspace="8" width="375" /&gt;&lt;/p&gt;&lt;br /&gt;An in-depth description of the interface can be found on the author’s website &lt;br /&gt;&lt;a href="http://www.vanbasco.com/karaokeplayer/windows.html" target="_blank"&gt;here.&lt;/a&gt;  Additionally, the application’s appearance can be changed with the use of &lt;a href="http://www.vanbasco.com/karaokeplayer/skins.html" target="_blank"&gt;skins&lt;/a&gt;. One skin in particular, Big Piano, is useful because it enlarges the piano window, making the keys easier to see. You can get it from the &lt;a href="http://www.vanbasco.com/karaokeplayer/skins.html" target="_blank"&gt;skin gallery&lt;/a&gt;.  To quote &lt;a href="http://www.vanbasco.com/karaokeplayer/skins.html"&gt;the author&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;To install a new skin, first download the .zip-archive of the file, e.g. skin.zip. Then extract the contents of the downloaded file to the installation folder of vanBasco’s Karaoke Player, e.g. C:’Program Files’vanBasco’s Karaoke Player. (To do this, you will need a file manager that is capable of reading .zip files. If you are using Windows XP, then Windows Explorer already supports this. Otherwise, you can download &lt;a href="http://www.7zip.org/" target="_blank"&gt;7-zip&lt;/a&gt; - freeware!)&lt;br /&gt;&lt;br /&gt;Then, inside vanBasco’s Karaoke Player, open the setup dialog. (You get to the setup dialog by clicking the note button in the top-left corner in the main program window of vanBasco’s Karaoke Player and choosing "Setup...".) Choose the "Misc" tab. In the box labeled "Skin" select the skin you just installed. Then close the setup dialog by clicking the "OK" button. The last step is to restart vanBasco’s Karaoke Player. Enjoy!</content><link rel='alternate' type='text/html' href='http://www.unc.edu/~zplewis/2007/06/essential-vanbascos-karaoke-player.html' title='Essential: VanBasco&apos;s Karaoke Player'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=744073533598635586&amp;postID=819777063620055525' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://www.unc.edu/~zplewis/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/744073533598635586/posts/default/819777063620055525'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/744073533598635586/posts/default/819777063620055525'/><author><name>Z. Patrick Lewis</name></author></entry><entry><id>tag:blogger.com,1999:blog-744073533598635586.post-1686842981924301653</id><published>2007-06-03T20:18:00.001-05:00</published><updated>2007-06-04T13:19:22.768-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='God'/><title type='text'>God First</title><content type='html'>Giving honor to my Lord and Savior Jesus Christ, I open this blog to spread what has been given unto me to others--the gift of music.  My original intentions for this blog is to post songs that I learn to play so that others can learn them as well.  I'm still learning, but I will try to at least post 1 song a week if it will help anyone else who is learning to play gospel by ear.  Additionally, this blog will host links to other great pages that may pertain to God, or programming, or video games, or gospel, or anything that somehow opened my mind further or could help make me a better person.  Requests are welcome, I'll do my best!</content><link rel='alternate' type='text/html' href='http://www.unc.edu/~zplewis/2007/06/god-first.html' title='God First'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=744073533598635586&amp;postID=1686842981924301653' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://www.unc.edu/~zplewis/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/744073533598635586/posts/default/1686842981924301653'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/744073533598635586/posts/default/1686842981924301653'/><author><name>Z. Patrick Lewis</name></author></entry></feed>