“Objects in System.Reflection are closer than they appear.”
by Greg McCoy

Archive for January, 2008

Installer vs. SOS.VSA

Here’s an interesting tidbit that I just learned. I’m not sure why, but the installer (as it is now) will not update the Visual Studio Add-ins if they already exist.

I was certain that I had included them in the newest installer, but installing here at work gave me a copy of the add-ins from 1/15/08 (or so I thought). I deleted the SOS.VSA.dll file, re-ran the installer, chose “Repair”, and the new version was right there.

I will need to investigate this further, but until then, you may need to do something similar if installing newer versions of the SOS.VSA. Sorry for the inconvenience, I will keep you updated.

Snippet: Rijndael Encrypt (and Decrypt)

Here is a pretty easy and useful little snippet to encrypt and decrypt in Rijndael (AES). Nothing fancy, but here it is nonetheless. Oh, and it uses your logged in Windows account name as the key, so you may want to change that to be your company’s domain, an MD5, your pet’s mother’s favorite teacher’s high-school sweetheart’s maiden name, etc… ;)

Download: Rijndael Encrypt and Decrypt (C#)

Sample Clear:

Sample Encrypted: (with “KEY”)

Installer v0.15/v0.4

I know I just put v0.14 out, but hey… it’s the weekend! So here’s the download, and the skinny on the v0.15/v0.4 changes…

Click here to download the Snippets on Steroids (S·O·S) Client/Add-in Installer (v0.15/v0.4)

SOS.Tray v0.15 (client) changes…
* Added web snippets (*.swb).
* Added snippet macros (*.smx).

SOS.VSA v0.4 (add-in) changes…
* Added support for new snippet types (*.scs, *.svb, *.swb, *.smx).

SOS.Setup v0.15 (installer) changes…
* Added file-type associations for new snippet types (*.swb, *.smx).
* Added five new “starter” snippets.

Example of a web snippet file (*.swb):


Example of a snippet macro file (*.smx):

Security\Rijndael Encrypt.scs
Development\URL Encode.scs

*** UPDATE ***
The SOS.VSA v0.4 that was supposed to be included in the installer now is. Sorry for the inconvenience.

SOS.Tray v0.14 + SOS.VSA v0.2 (Installer)

Wow! So much to say… No time. Must sleep.

Okay, so here’s the QnD overview. This installer has the latest build of the SOS.Tray client and the SOS.VSA add-in all bundled up. The enhancement report will come later, but the real kicker is that I migrated Michael’s Compiler snippet into the client as a dynamic snippet builder. Now you have three types of snippets— compiled (*.sos), C# (*.scs), and VB.NET (*.svb). Base classes sit in your “My SOS” folder, and get compiled (as ran) with the dynamic snippets. Also, these files are now associated to the SOS.Tray client, and will “pretend” a [Screen -> Screen] with the default input as whatever is on the clipboard.

Like I said, I’ll post more in an update. Until then, here’s the installer.

Click here to download the Snippets on Steroids (S·O·S) Client/Add-in Installer (v0.14/v0.2)

*** UPDATE ***

Changes in SOS.Tray v0.14…
* Snippet input is now streamed first, then again via argument if streaming returns nothing.
* Added dynamic C# snippets (*.scs) and base partial class at “My SOS\Base.cs”.
* Added dynamic VB.NET snippets (*.svb) and base partial class at “My SOS\Base.vb”.
* Associated snippets (*.sos, *.scs, and *.svb) with a [Screen -> Screen] input/output method.
* Snippet menu reloading now keeps active snippet in the tree menu.

Change in SOS.VSA v0.2…
* Snippet no longer “replaces” input if output matches. (Stops unnecessary check-outs.)

Snippet: Lipsum

I needed some Lorem Ipsum for a design that I’m working on. So I hit lipsum.com (as always), and it hit me; why in the world couldn’t I turn the lipsum process into a snippet? So here it is. It takes your input and generates replacement words (matching length, and capitalization) extracted from lipsum.com‘s official output (no injection). Now, they say that there are over 200 words in their dictionary, but I generated 100 paragraphs and only ended up with 186 distinct. Oh well. 186 is still pretty good looking. Have fun!

Click here to download the snippet: Lipsum

Sample Input:
Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old.

Sample Output:
Praesent et natoque libero, Curae Magna id dis aenean montes erat. In hac velit ad a morbi ac convallis Proin vestibulum nibh 45 ID, tempor ut quam 2000 fusce hac.

Visual Studio Add-in…

Whew! So here’s the deal… I’ve been killing myself for the past few days writing the Visual Studio (2005 and 2008) Add-in for SOS. After days of head-shaking, throat-clearing, knuckle-popping, and ear-ringing (listening to Kristin’s favorite music; what I call “angry-poppy-crap”), I have finally gotten to a point where I am in the last stages of testing. After I get some personal confirmation that it’s behaving as desired, I’ll be releasing here for you all. I’m hoping this only is another day or so out, but I really don’t want to give you all something that acts crazy, doesn’t load, or worse— gives you any of my aforementioned develo-phrenia symptoms.

A brief explanation of the Add-in is warranted, I beleive…

The Add-in adds your entire SOS menu (save for the Input/Output methods) in the context (right-click) menu of the code window. The item that shows directly on this menu is labeled “Snippets on Steroids”, and houses everything else (so to not clutter your context menu. Under the root menu item are your snippet categories and snippets, labeled and nested just as they are currently in the SOS.Tray client. An example of the menu structure would be “Snippets on Steroids > Translation > ROT-13“. When you click on a snippet, the text that is currently selected is simply fed to the snippet, then replaced by the output of it.

Developers— I know you can appreciate the simplicity of this one… How nice will it be to just select one of your long string literal SQL queries and run formatting or regex operations against it, take that same literal pasted into an XML document and HTML encode it in couple of clicks, or automatically encrypt your connection string with your company’s proprietary algorithm that you hate the tool for (sorry; I had to throw that one in there). ¦¬]

Like I said, only another day or two. If you want to try it now, leave a comment and I’ll shoot it over to you. I really think it’s stable now though, so it shouldn’t be long…

Wish me luck! (…and my testers; yikes!)

*** UPDATE ***

Click here to download the SOS Visual Studio Add-in (SOS.VSA) v0.1

Binary search tree epiphany…

Oh, wow! I finally found a real-world representation of one of the worlds stupidest “computer science” scenarios. I’ve heard of the binary search tree being of the utmost theoretical importance to CIS instructors. Being a developer, and writing code every day, I can honestly say that I have never ran into an instance where I thought “Oh, this is a perfect time to implement a binary search tree!”

Well, at least now I know that the need does exist, it may have some uses, and wouldn’t be a complete waste of retention. It all came down to Morse Code in the end. While writing a regular expression replacement snippet for SOS, I stumbled across this wonderful display of binary-tree-search-ism. ;)

learn morse code

Place your pencil where it says START and listen to morse code. Move down and to the right every time you hear a DIT (a dot). Move down and to the left every time you hear a DAH (a dash). Here’s an example: You hear DAH DIT DIT which is a dash then dot then dot. You start at START and hear a DAH then move down and left to the T and then you hear a DIT so you move down and RIGHT to the N and then you hear another DIT so you move DOWN and RIGHT again and land on the D You then write down the letter D on your code copy paper and jump back to START waiting for your next letter.

A while, yes…

Okay, so it’s been a while since I’ve posted here. That’s only because I started trying to use my own site for things. Not that that is a bad thing; I just felt it was time to come back to Blogger.

I’ve been spending a lot of time lately over at my other Blogger home working on a personal project (Snippets on Steroids) with all of my free time. Aside from that, just work alone is enough to put a damper on a solid blogging moment.


  • I’ve pretty much sworn-off gaming again.
  • Skinning is not my constant side-work anymore.
  • Kristin and I are now engaged.
  • I took a permanent position with iPay Technologies.
  • Kristin and I moved to Elizabethtown, KY.
  • Kristin took a position at iPay, as well.

I’m sure there are more, but I wanted to give the overview. That is all that comes to mind at the moment.

MSU/iPay (more headlines)…


Payment Processing: Michigan State University Federal Credit

iPay Technologies, a leading online bill pay provider for community financial institutions, was selected by Michigan State University Federal Credit Union (MSU FCU) to provide its 145,000 membership base online bill pay services.

iPay/MSU in the news…

I was looking over a few things in my LinkedIn account and some random piece of news jumped out at me. Check this little blurb out. ;)

MSU FCU Goes with iPay for Bill Pay – Credit Union Times

EAST LANSING, Mich. – Michigan State University Federal Credit Union will be offering its 144,000 members online bill pay services through the iPay Technologies platform.

The $1.4 billion CU had been using an internal system.

“iPay’s sole focus is online bill pay, so being able to access their award-winning graphical user interface expansive functionality and impressive electronic rate will greatly improve our members’ online experience,” says Jeffrey Jackson, vice president of member services at MSU FCU, the nation’s largest university-based credit union.

Headquartered in Elizabethtown, Ky., iPay Technologies provides online bill pay solutions to more than 1,400 community financial institutions nationwide.

Get a free book about code review best practices.