Posted on May 27, 2011 by Perry under Blog, Free Software, Software Development
Interact:

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 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

“A well-designed program uses classes and design patterns; it has high cohesion, low coupling, and limited cyclomatic complexity.” -Riyad Mammadov
BEEP BEEP BEEP BULLSHIT DETECTED
Source: Reddit user rafekett

Riyad Mammadov
Any programmer worth his intellect would be cautious of statements such as this one. I’m surprised to see this advice come from an Enterprise Architect with 16 years of experience. Come on man, put away that skunk! Commenting source code is a tool like any other, including unit tests. Some people prefer different tools or a combination of them all. Design practices such as unit testing and commenting source code should yield positive results when used correctly. Why else would these tools exist?
To make an outrageous claim that one should not use a fundamental tool such as commenting source code would be akin to me saying unit tests are a waste of time because they introduce an extra layer of design and complexity that is probably not necessary or useful at all, causing more dependency and a longer development period, not to mention costing the client more money in the end. While my statement is correct in some context or another, there are aspects of unit testing which I cannot deny the plausibility of, such as NASA using their own method of unit testing during the development of Project Mercury in the 1960′s. And I bet my butt that they also had documentation in the form of written English, which is precisely why commenting source code is a solid practice!
Classic sensational headline with a follow up clarification to keep oneself in good standing? In response to his original article, which received a flurry of negative feedback from Reddit.com users, he goes on to clarify that “one often-repeated mistake was that I am advocating against ALL source code comments. This is simply not true, and if you read the blog post through the end, you will see a pretty funny example of a very legitimate comment one programmer left in his code.”
Continue reading
Perry’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
Anyone who wants to build a professional looking add-in for Microsoft Outlook knows that it’s important to make their add-in appear flush/stock/standard/factory, which means implementing the add-in functionality directly into the native Outlook interface via the toolbar/ribbon/menu/property pages/etc. An important part of this is understanding how to use IPictureDisp, because this is the only image type that Outlook will allow you to use for CommandBar controls.
Continue reading
Introducing GO Detach for Outlook. This small add-in lets you bulk save e-mail attachments (or body text) from Outlook to your hard drive. Whether you use it to free up space in your mailbox or personal folder (PST) file, GO Detach will boost your productivity by automating several repetitive tasks at once. For example, GO Detach can save multiple attachments from multiple emails into separate folders based on certain criteria of your choice. Be sure to check out the screenshots.
Continue reading
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
Posted on October 5, 2010 by Perry under Blog, Programming Tutorials, Software Development
Interact:
This tutorial is part of a series: Part 1 | 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
A few years ago I attempted to write an ID3 tag parser for MP3 files. The ID3v1 specification was easy to understand and implement, but the complex ID3v2 specification threw up some hurdles with SyncSafe integers, encoded bits, multiple sub-versions (ID3v2.2.0, ID3v2.3.0, ID3v2.4.0), and custom frame data. Needless to say, I couldn’t implement the specification properly and my parser would trip up on certain MP3 files, but I’ve recently revisited this project and fixed the showstopping bugs.
Continue reading
Perry’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
Posted on June 3, 2010 by Perry under Blog, Programming Tutorials, Software Development
Interact:

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

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

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