Category Archives: Software Development

This category includes all of my software development efforts, such as free software programs, source code examples, programming tutorials and libraries.

Nest (Your PC on the Internet)

Nest

Access your files from anywhere.

If you’re like most people who have accumulated a large collection of personal photos, music, and videos on your computer at home, but wish you had access to everything whenever and wherever you are, then Nest might be for you!

Or maybe you’re a business owner who’s frequently out of the office. Install Nest on your workstation. Leave town. Open Nest on your smartphone. Start browsing your files!

Your computer + Nest = Your computer on the internet

Or to put it another way, Nest turns your computer into a “Personal Cloud where you can access your files remotely via a web browser from almost any device, much like the new cloud music players, only you host all of your own files.

In a nutshell, Nest is…

  • A remote file browser
  • A remote music streamer with playlist support
  • A remote image viewer with slideshow support
  • A remote document viewer

Don’t allow big corporations to store and own your intellectual property!

Continue reading

Perry’s ID3 Tag Library

ID3v2Perry’s ID3 Tag Library is a free ID3v1 and ID3v2 tag parsing utility that has been tested to work with Visual Studio, VB.NET, ASP.NET, Visual Basic for Applications and VBScript. Use the library as a reference in your own Visual Studio project to parse ID3 tag data embedded in MP3 files. This library is useful for anyone looking to implement ID3 tag capabilities in their own custom solutions and applications. The ability to write tag data will be supported in a future release.

The ID3TagLibrary is pretty simple to use:


Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  ' create an mp3 object from a file on the hard drive
  Dim mp3 As New ID3TagLibrary.MP3File("C:\song.mp3")
  ' put the mp3's title into a label control
  Label1.Text = mp3.Title
  ' put the mp3's artwork (if any!) into a picturebox control
  PictureBox1.Picture = mp3.Tag2.Artwork
End Sub

Continue reading

Perry’s Reverb Rhythm Calculator

Screenshot 1Perry’s Reverb Rhythm Calculator is a utility for musicians (as well as mixing and mastering engineers) that will compute reverb pre-delay and decay values (in milliseconds) for you to use with your reverb plugins. These values are specifically synchronized to the rhythm of a chosen Tempo (BPM), and an offset slider allows for slight adjustments to the output.

Continue reading

Perry’s Music Streamer

Perry’s Music Streamer has evolved into what is now called Nest. Do check it out!

For lack of a better name, Perry’s Music Streamer is a web application that I’m currently developing which enables you to stream mp3′s from your home computer using any other computer or device with a modern web browser. Here you can find more information about this project. The project was started in June of 2010 and has been going strong since!

Continue reading

How to Create a TreeView File Browser Component in VB.NET – Part 2

This tutorial is part of a series: Part 1 | Part 2TreeView Part 2

In Part 1 of this tutorial series, I presented a way to use the .NET TreeView control as a file browser similar to Windows Explorer in functionality. As we navigate through this TreeView, the BeforeExpand event is handled so that each node is dynamically populated as soon as it gets expanded.

The second part of this tutorial focuses on displaying the native system icons for each file and folder in the TreeView.

Continue reading

Perry’s ID3 Tag Viewer

Screenshot 1Perry’s ID3 Tag Viewer parses ID3v1 and ID3v2 tags stored in MP3 files. Not only does it extract common data such as the Artist, Album and Title, but it also extracts frames that contain data which MP3 players and tagging software simply do not care about, such as Private (PRIV) frames, User Defined Text Information (TXXX) frames, and other custom third-party frames that might contain hidden/encrypted data. Perry’s ID3 Tag Viewer utilizes a custom ID3 tag parsing library written from scratch, based on the official specifications at ID3.org.

Continue reading

How to Create a TreeView File Browser Component in VB.NET

Windows Explorer

Windows Explorer's familiar tree navigation.

This tutorial is part of a series: Part 1 | Part 2

As a developer I am often faced with the task of creating a tree-style file browser for navigating the file system similar to Windows Explorer. VB6 provides the DirList and FileList controls, but VB.NET does not provide a control with similar functionality, let alone a full fledged file browser control. It does however include a very nice TreeView control, and with a bit of code you can leverage this powerful control to navigate your file system similar to Windows Explorer.

The idea is pretty simple:

  • Each TreeNode in the TreeView represents a file or folder in the file system.
  • Each TreeNode knows the full path of the file or folder that it represents.
  • Recursion is not used; nodes are populated on demand. When a directory node is expanded by the user, a TreeView event is triggered which clears and repopulates the directory node.

In the first part of this tutorial I’ll show you how to create a simple re-usable File Browser Tree Component by letting the TreeView control do most of the work. In the second part of this tutorial, I’ll show you how to add several features (icons, context menus, drag/drop, etc.) that will spice up your TreeView File Browser Component and bring it more up to par with Windows Explorer.

Continue reading

Perry’s Batch Outlook Item Property Editor

Perry’s Batch Outlook Item Property Editor can be used to edit the properties of multiple items in Microsoft Outlook. I find it most useful when I create a custom Outlook form and I need to change the MessageClass property on a group of items so the items can use the new custom form.

Continue reading

The iosys Game Engine

The iosys Game Engine

Screenshot from a live test run of the iosys Game Engine.

The iosys Game Engine is a 3D video game engine that I was developing in my earlier days of programming with DirectX. I’ve moved on from DirectX for the time being, but I still consider this to be one of my greatest programming achievements ever. I started learning DirectX with a few decent books, some documentation on the web, and an invaluable tutorial series by Jack Hoxley titled DirectX4VB. My experience with DirectX and programming evolved quickly during this time and as a result, the engine went through several recodings.

Continue reading

How to Use Windows Shell Icons in VB.NET

Folder Options

Folder Options

This tutorial explains how to code a simple, reusable Shell Icon Manager component in VB.NET. Windows maintains registered file types and associated icons as seen in the Folder Options dialog box, but there is no way to access them through managed (.NET) code, so we must use Win32 API functions to access them through the Windows shell.

This shell icon manager is useful if you need to:

  • Produce a list of file type / icon associations similar to the “Registered file types” in Windows XP.
  • Get a file’s real icon instead of using icons that look similar, so you can develop an interface that is more streamlined with the native Windows interface.
  • Create a file browser similar to Windows Explorer by tapping into the same icons that Windows Explorer uses. Pair this idea with my other article titled How to Create a TreeView File Browser Component in VB.NET and you’ll have a file browser that closely resembles Windows Explorer.

Continue reading

Perry’s Batch File Rename Utility

Perry’s Batch File Rename Utility can be used to rename several files at once based on your specifications. Files will be renamed according to the Rename Sequence that you specify, which is based on one or more Filters. Available Filters include Serial Number, Insert Text, Replace Text, Trim Start, Trim End, Original Filename, Original Extension, Date Created, Date Modified, and Date Accessed.

Continue reading