Jonathan Hilgeman

Everything complex is made up of simpler things.

Archive for the ‘Uncategorized’ Category




Quick Summary

One of the best investments I ever made was to pony up a few extra bucks over a decade ago to buy the lifetime license for UltraEdit. It’s lightning fast, has more features than a dozen Swiss army knives, has fantastic, responsive and personal support (no outsourced tech support that claims their name is “Ken” and only responds with canned messages), and is just a an all-around fantastic editor for anything text-based (code, XML, etc).

All the basic stuff you’d expect from any decent code editor is in there (syntax highlighting, expandable/collapsible sections, bookmarking lines, etc…), but UE takes it many steps further.

Do you work with XML documents often? Use built-in tools to navigate through XML documents easily, quickly and reliably reformat / prettify them in a click, and more!

Need to edit or view a document in hex? Just hit Ctrl+H to toggle between the views (it auto-defaults to hex for binary files).

Need support for different character sets or want to convert between them? It’s a matter of selecting the desired character set from a dropdown.

Did Windows blue-screen while you were editing a document? No worries – UE keeps draft copies automatically and recovers them for you on the next startup.

Want to edit in columns (e.g. add a comma before 1000 lines all at once)? No problem – switch to column edit mode.

Need powerful search-and-replace functionality that works with different regex engines and also supports filesystem searches? UE’s got that.

Need macros? Not a problem, and hotkeys make it a breeze to do quick recording and repeated playback. There’s a full macro editor for more advanced functionality.

Want to define your own custom commands? Easy.

Want an ASCII table? Yeah, that’s built in.

Need integrated SFTP, SSH, and similar file transfer support? Yeah, that’s also built in so you can edit a file, hit save, and have it auto-upload.

Need to edit HUGE, multi-gigabyte files? No problem.

Need easy-to-navigate file tabs? That’s a default.

Want to compare two files? That’s built in, and it’ll even guess the right files you want to compare based on filename similarity!

And there’s a lot more not covered here, and even more getting added with every version. It’s an absolutely fantastic editor.

Yes, you can get SOME of this via some open-source editors like Notepad++ and I have to use some of those editors on client machines sometimes. There’s just no comparison in terms of how refined UltraEdit is compared to other editors. This is a tool that would be extremely difficult to live without on a day-to-day basis.

Unfortunately, I don’t think they offer lifetime licenses anymore, but it’s well worth the money to own a copy of this if you’re a developer!

Security Task Manager



Quick Summary

When I’m checking out a system for malware, one of my first stops is to install Neuber’s Security Task Manager. I came across this little gem several years ago, when a client asked me to investigate the “Case of the Missing Space”. Basically, their drives were constantly losing free space, and none of the regular tools like TreeSize were able to determine where the massive amounts of used bytes were, and the regular task manager wasn’t showing any weird activity, but the server was acting very strange.

I finally came across Security Task Manager and gave it a go on the server. It instantly picked up a stealth process that was running Java. The process had created folders that were invisible and serving up German pirated movies via FTP. Using that information, cleanup was a snap!

What Does It Do?

The app basically does a thorough analysis of running programs and rates their risk based on behaviors (e.g. invisible windows, ability to record keystrokes, etc…) and also takes publisher information into account (e.g. core Windows processes that “act” suspicious aren’t thrown to the top of the list) and also community-based ratings. It’s still up to you to determine whether or not a process is malicious or not. There are many valid processes (e.g. MySQL server, some browser plugins, etc) that will get rated as risky, but are safe.

However, it’s a great way to quickly get a snapshot of the riskiest running processes in the system, including processes that might be hidden from the normal Windows task manager.

Hiding TreeNodes in C#


In a recent project, I was building out a TreeView control that could be searched and filtered. One of the primary problems was that there was no proper way to hide a TreeNode temporarily. The solution was fairly simple, though, and performed very well.

1. I started by created a new class that extended the base TreeView class.

2. Inside the new class, I defined a public TreeView called tvHidden, which held the nodes that were temporarily hidden.

3. I then added two public methods, Hide and Show, which both accepted a TreeNode as a parameter.

4. In the Hide method, I used the TreeNode’s Tag to store a reference to the original parent (Node.Parent), then removed the node from its current collection and added it to the tvHidden Nodes collection.

5. In the Show method, I removed the node from its current collection, then cast the Node.Tag back to its proper original TreeView or TreeNode value, and then added the node object back into that parent’s Nodes collection.

Presto! A simple, efficient solution for temporarily hiding TreeNodes!

The full version of the class implements a custom structure to stuff more custom data into the Node.Tag property, a Dictionary to look up nodes by name (no matter which TreeView they’re in), and support for copying parent structures.

Napster Bad!


I tried Napster long ago and decided to give it another shot based on a review on another site.

Overview: 6 bad marks, 2 good marks

BAD: Inconvenience
I was looking for a specific album, so I wanted to see if they had it BEFORE I signed up, but they don’t have an easy way to do it.

BAD: Signup Process
During my trial signup, I got to the payment page, and immediately hit the Back button, since I didn’t want to put in my payment information if they didn’t have what I was looking for RIGHT NOW (why would I pay for an on-demand service that doesn’t meet my current demand?).

After I hit Back, I was suddenly logged into Napster’s web interface without having filled in my payment info, so now I could see their available tracks.

BAD: No-warning Gears Popup
The site apparently uses Google Gears, which is good for speed purposes, but it would’ve been nice to have some warning before the installation warning popped up in my face. I cancelled it the first time, and then the next page popped it up again. No means no, but in the interests of not dealing with a popup on every page, I went ahead and installed it.

BAD: Sluggish UI
The site still felt sluggish, which shouldn’t happen on Gears-enabled sites.

BAD: Bad navigation
This was the real kicker. Bad navigation UI was everywhere.

Once I finally found the section I was looking for, getting around to seeing the albums I wanted was a chore. Napster kept trying to give me the “top 10” of everything from new releases to popular tracks. I wanted to just see new releases and be able to keep paging back to see results 11 through 20 of the New Releases section, but that’s not possible.

I finally found a “Browse by Artist” page (you would think they’d have a “Browse by” set of buttons for other things, like album, release date, etc, but nope). Guess what? The list isn’t sorted alphabetically and there’s no way to do it. So all I could do was search the page for the name, which worked fine, but it’s definitely not intuitive.

Some of the UI felt like it had been copied from iTunes, but without any thought to how the users actually used the site.

BAD: Selection and information
Not only did they not have what I wanted, but the artist page had “featured tracks” and then a list of his albums. The “featured” tracks list contained tracks that were on albums that were not in the list of his albums, and I know there wasn’t a compilation out there yet, so someone messed up somewhere.

GOOD: MP3 format
Even though I didn’t end up buying anything, at least they use DRM-free music.