I’ll miss you Joomla! After using Joomla 1.5 for a good few months, I’ve decided to give it a rest and migrate back to WordPress. Publishing content in the exact format that I want is such a breeze with WordPress, and a big step up from Joomla’s constant tweaking.
This was a hard decision to make since Joomla is such an excellent content management system with heaps of awesome extensions, but that’s part of the reason why I’ve chosen to abandon it.
Continue reading

Windows Explorer's familiar tree navigation.
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
At the company where I work, we run a client portal web app that gives our clients access to their files through password protected website that dynamically generates content individually for each client. We wanted to provide a secondary method for our clients to access their files should anything happen, so we opted for creating an FTP site in IIS with the option Isolate users using Active Directory, since our Win2K3 servers support it out of the box. Our idea was to have the client portal web app add the user accounts and home directory properties to Active Directory automatically so we wouldn’t have to configure these things manually using scripts. To date, our solution has been working very reliably.
Setting up a user FTP should be a straightforward Windows administration task, but you might find that the Isolate users using Active Directory option doesn’t work as you would expect. While IIS allows you to select this user isolation mode during the creation of a new FTP site, it obscures some of the configuration that is essential to making everything work properly. This article focuses on those hidden essentials.
Continue reading
Right after you logon to your computer, have you ever just wished you could pause everything else that seems to be going on, just for 10 seconds so you could fire up your internet browser and start surfing the web before your computer chugs along for an extra 5 minutes – sometimes completely unresponsive – while it tries to load up everything else all at once?
Or maybe you just want a way to control the order and delay for your startup programs. A company by the name of r2 Studios has the solution.
Continue reading
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

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.
Some fully working features include:
- Collision detection with the ground surface for walking around as a playable character
- Command line console (similar to Quake)
- Footstep and gunshot sound effects
- Level design using any number of top, side, and 3D viewports (similar to 3D Studio Max)
- Textures and materials (similar to 3D Studio Max)
- Polygon manipulation using vertex anchors
- Load and display .x models and meshes (from 3D Studio Max)
- Colored fog
- Animated, rotating planet with alpha blended cloud layer
- Texture mapped polygonal objects and faces
- Bounding box hit detection
Screenshots
On my first venture into 3D graphics using DirectX 8 I began by designing a simple rendering engine which turned into a test bed for various features such as terrain with collision, x models, fog techniques, colored dynamic lighting, alpha blending and sound effects. After grasping many of the concepts of DirectX, I decided to set my ambitions higher. |
I started programming the first editor with Visual Basic 6.0 and DirectX 8.1. This shows the use of three viewports and anchor points on polygons for simple drag-and-drop mouse shaping of a 3D world. Colored lighting and multiple textures are used here, but each brush is rendered one by one. The octree node was nothing at the time. The floor you see in the picture is a “Cube” brush with several sub-divisions, each division being able to have separate texture mapping. |
Here’s where I implemented a space partitioning technique; a simple sector based system. The editor at this stage was much more complex and offered control of very specific parts of the geometry. |
This was where my work on the VB6 version of the editor ended. The screenshot shows two viewports (you could create as many viewports/cameras you wanted) with the first viewport displaying a direct view on the world and the second viewport a couple steps behind that of the first camera. The view frustum of the first viewport camera is visible in the second viewport. This frustum was tested against the space
partition for faster rendering. |
The first shot of the new editor interface I programmed using the .NET framework and Managed DirectX 9. It has been coded from scratch. Due to the nature of the game in mind, there is no need for complex space partitioning when brute force rendering will work better. This editor version has perspective/orthogonal viewports with a ray picking function which allows for selection of the objects in the scene. Clicking on an already selected object cycles to the next closest object under the mouse. Objects are positioned with the mouse or keyboard, or by typing values in the property box. A selected cube is shown in the viewer. |

Folder Options dialog box (Windows XP)
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
If the Connect a fingerprint sensor fiasco wasn’t enough…
We needed a new way to backup our remote users’ files who regularly work on their laptops in the field. The USB thumb drives we assigned to those users no longer work since we discovered they were full of unecessary files and basically not being used since the backup process was not automagic.
Enter Offline Files, included as a standard feature in Windows XP Professional or better. Offline Files is not without it’s own quirks though. I quickly discovered how temperamental it can actually be, behaving normally one minute and totally out of whack the next minute. After completing several run-throughs with Offline Files in my test environment, we concluded that it would be highly beneficial to the company not only for backup purposes, but since the remote users’ files were now being stored on our server, we could integrate those files with our project management software and cut down on email usage.
Continue reading

We were hiring an employee for our sales staff, so I had the privilege of purchasing a much nicer laptop than usual due to a reduced wear and tear factor for our field staff. We buy all of our computer systems through Dell, so I browsed the business section on Dell’s website until I found the perfect match for our new employee: a Dell Latitude E6400 with solid state disk.
Booting up Windows XP on this laptop was an absolute dream. The solid state disk eliminated that immense 5-15 minutes of sluggishness one experiences while all of the startup programs are loading, checking for updates, etc. It seemed like the solid state disk alone doubled the system’s responsiveness. So far, I was impressed.
My final task would be to enroll the new employee’s fingerprints so he could log on by swiping his finger rather than typing a password. Every attempt I made at doing this failed. All it said was Connect a fingerprint sensor, even though the damn fingerprint sensor was built into the palm rest. So I called Dell Support, and this is where things got a little out of control.
Continue reading
Glass Ocean is Perry Butler’s personal home page.
This website contains my blog, music productions, services, and software development efforts. I am currently employed as an IT Manager in Anaheim CA, where I’ve earned over 8 years of professional experience. I enjoy sharing my projects and works with the public.
Thank you for visiting and feel free to contact me if you need anything.