More Pictures

Lately I’ve come to the realization that most any photo will look much better after being processed in Photoshop.

Here’s a post-processed image from my trip to Ghana:

Stripped Car

It has some technical flaws (it was taken through a window and is crooked), but it’s a pretty good shot technically…

Straight out of the Camera

There it is straight out of the camera. Notice how everything looks a little hazy, the colors are washed out, and everything is blue/green?

It’s kind of like becoming a nut about cleaning your wheels or watching HDTV: you suddenly realize that what you’ve been used to is really pretty bad, and can’t help but notice problems where you hadn’t seen them before.

I’ve recently begun processing a lot of the pictures I took in Ghana… And I’ll probably be putting some more up in the coming days.

SSD, Affordable

Since Windows keeps hinting that I could use my CompactFlash card as a ReadyBoost drive, I was just thinking… My Thinkpad has an ExpressCard slot…

….and an 8GB Lexar solid-state drive* is only $90 at NewEgg.

In theory, I could pluck it in and use it for ReadyBoost and as a paging file, and still have a bit of room for Photoshop’s scratch disk and/or random file storage.

Unfortunately, booting from SSD isn’t the wonderful experience everyone raves about. SSD is slower in terms of throughput; it’s only in random-access that it shines. I’ve seen some videos of booting otherwise-identical machines from SSD and not using SSD, and the difference is really not all that great. It is faster, but it’s maybe 25 seconds instead of 30 seconds. Really not worth it in my mind. (I do think that SSD will eventually come to exceed conventional disk drives in throughput eventually, though…)

Fileserver Thoughts++

I’d posted before about how my ‘dream computer setup’ would have a big fileserver with a bunch of disks… Something like 4-8 SATA drives, 7200 RPM, running RAID 5. The net result is several terabytes of storage, and, since RAID 5 provides striping, excellent performance.

It would have to be delivered over Gigabit Ethernet, since 100 Mbps caps out at 12.5 MB/sec (100 Mbps / 8 bits to a byte).

Running something like OpenFiler, it would “speak” most all protocols, allowing me to have shares for Windows, Linux, and Mac machines merrily get along… (I’d also like to make it, for once, highly organized! Have a “share” for music, and another for photos I’ve taken, etc.)

I just had another idea, though…The main advantage of this setup was to keep everything in one place, so I can get to my music or photos from any PC. But I soon realized that a stripe set over GigE could exceed the performance of an internal hard drive, where 20-30 MB/sec maximum throughput is considered good.

The hard bottleneck is GigE at 125MB/sec. (Although, unless you’re someone like my dad and start doing interrupt- and driver-level optimization, you might not get more than 85% of so of the rated line, with overhead and all.) A couple of SATA drives striped won’t hit that. But why not try to make GigE your bottleneck?

There are tons of used servers and related equipment on eBay these days. So pick up a couple of smaller (18-36?) GB SCSI disks. 15K RPM. Quite a few claim to exceed 100MB/sec, with some closer to 200MB/sec. You could be really conservative since you’re buying used hard drives and use RAID 1 (mirroring), but let’s live on the edge and say we get three of them and use RAID5. (Or get 2 and use RAID 0…. Or 4 and RAID 1+0.) And while we’re on eBay, let’s pick up a used SCSI RAID controller to keep things fast.

So we now have a fileserver with terabytes of space that’s probably faster than your hard drive, and we now have, depending on how crazy you felt, a partition of between 18 and 72GB that’s capable of at least 100MB/sec speeds. What do we use it for?

Well, first of all, anything that you think of that you want to be really fast. If you’re net-booting machines, put ’em in there. (That would be an interesting experiment, actually: speed is normally not thought of as a reason to do network boots.) If you have some essential file that you work with, keep it in there.

But I envision this more as a spot of short-term storage. The first thing that comes to mind is Photoshop’s scratch disk. You get better performance (when you’re using it) if it’s on a separate hard drive. Set it up there.

But then I got an even neater idea… Your paging file performs much better if it’s on a separate disk. I’m fairly certain that Windows won’t let you use a network share as your paging file. (It won’t let you use a USB drive, although they merrily let you set up the paging file there, it just never actually creates it.) However, Openfiler and Vista Business (at least) seem to support iSCSI with no problem… Are you seeing what I’m thinking? Tell Windows it can keep a 4GB page file on your S: drive, which is actually a SCSI stripe set on another machine… I wonder if, though iSCSI, Windows would allow this. (There is a decent reason not to allow it: it would be somewhat bad if your paging file, located on a remote machine, went away. However, I maintain that, especially if you used RAID, the odds aren’t that much greater than of your hard disk crapping out on you.)

I’ve got to get a job so I can afford to try this out! 😉

Idea of the Day

Someone ought to make an application that will allow you to download files from sites, but submit the URLs to a central service that’s a BitTorrent tracker, and see if anyone else using the service is also downloading those files, or has recently downloaded them, to try to accelerate the download a bit.

I’m currently downloading a file from a mirror that seems capable of about 100KB/sec, whereas I’m capable of something like 1MB/sec… And it’s a big file, which means I’m sitting here twiddling my thumbs. In my case, the only benefit would be a speedup.

But then consider something like yesterday, when the Mozilla servers were presumably getting slammed. (Or anyone who uses sites like Digg/Slashdot, that result in a sudden flood of traffic to particular sites.) They could ease a lot of traffic on those sites, and also give users a bit of redundancy: sometimes the main site will die under the load, but there could potentially be hundreds of clients with the information.

Police Call of the Day

I recently came across our digital scanner, which I updated with a newer DSP firmware, and I dug up some good batteries. I’ve been keeping it on fairly often, and have to say that I’m glad I have.

I think I kind of got accustomed to the Waltham/Boston scene, where it wasn’t that uncommon to hear officers being dispatched to a shooting or a carjacking or similar. I did hear an awfully exciting call Sunday (?) night, in which an officer was dispatched to an alarm activation (very routine: it seems like there are constant false activations), and reported that there was a hole cut in the back door with a torch and the smell of the torch was still in the air. Basically every officer high-tailed it over there, and they surrounded the building while waiting for State Police to bring in a dog to search the building… Turned out that they’d already left, though. (Without stealing anything, though I didn’t find that out until I saw it on the news the next evening.)

But more often than not, the calls are laughably mundane. So the highlights for today and yesterday:

  • Yesterday: “I’ll be off with three males… having an altercation over, uhh… a baseball cap.”
  • Today, I only caught the tail end of it, but it was a dispatcher giving out a call: “regarding some fake swans on her property… in her way.”

The best part is that you can tell they’re trying their hardest to remain serious, as if they’re pausing trying to find a way to make the call not sound laughably unimportant.

Defragging & Paging Files

I just noticed that Piriform has released Defraggler, a free defrag tool. You may not recognize the name Piriform, but many will recognize CCleaner, their most popular product.

Defraggler seems a little spiffier than the standard Windows tool, though I’m not yet sure how it compares with Diskeeper, a commercial solution I’ve used in the past. Since I’d deleted many gigs of junk (the Vista “upgrade” kept around my old XP stuff, which still lives on another drive, and I wanted to start fresh, so I deleted my ~10GB in Windows.old), I figured a defrag was in order.

I’d actually downloaded AusLogics Disk Defrag, which claimed a 10% speedup after running, although it didn’t give me a lot of information. It mentioned that I had lots of ‘junk files’ or whatnot, so I went to get CCleaner, and that’s when I noticed Defraggler. So I downloaded that… I still had 15 fragmented files, although that’s not many. One novel feature of Defraggler is that you can defragment a single file if you want.

Of course, my paging file is in about 90 pieces, which seems to always happen to me. (I don’t actually use the paging file often, but I digress.) Enter PageDefrag, a free tool from SysInternals, now owned by Microsoft. It will check fragmentation of various software and let me schedule a boot-time defrag of those files, since they normally can’t be touched while Windows is running. (Aside: you should do a “normal” disk defrag first, so that PageDefrag has better odds of having a big, contiguous chunk of disk space to use.)

The wall I’ve currently run into is that PageDefrag doesn’t run on Vista. (I’m not sure I buy it, but a case could be made that a fragmented paging file isn’t necessarily bad: if you’re not writing anything too big, it might be beneficial to have a ‘nearby’ sector to write in.

Microsoft Innovation

For a really long time, I felt like all I ever did was bash Microsoft. Not so much because I’m mean, but because I really didn’t see them doing anything terribly creative. I was somewhat impressed with Vista, mostly because it’s a ‘fresh’ attempt at Windows, one without all the suck. It seems like they got a lot of things right this way. But still, it was just an extension of existing technology, even if it was optimized under the hood.

I just plugged in a solid-state USB drive (a 2GB CF card from my camera), and Windows popped up with its usually little dialog asking if I wanted to import the pictures or AutoPlay or whatever it usually asks. But I noticed there was an additional option, to use it as a ReadyBoost drive.

I did some reading up on it, and it essentially uses solid-state media, which has super-fast seek times, as a ‘swap partition’ (or whatever Windows calls it). When you run out of RAM, your computer will normally “swap out” (hence the name ‘swap file’ in Linux circles) the least-recently-used stuff from memory to your hard drive to free up some room for newer stuff. But hard disks are slow, especially compared to RAM, so this results in a major performance hit. (And eventually, you’ll have to read it back in, which slows things down again!) So Windows allows you to offload much of that to solid-state storage, which makes the moving of data much quicker.

This, in and of itself, isn’t entirely a ground-breaking idea. It’s just generally accepted that you want your swap partition in Linux on your fastest drive, and it’s not entirely unheard of to do stuff like have a big ol’ IDE disk, but use a 9GB, 15K RPM SCSI disk (or similar) for swap and the boot partition, to speed things up. Doing it on solid-state media has surely been done before Windows implemented this feature.

But I remain impressed, for a number of reasons:

  • Moving your swap partition to a high-speed storage medium is akin to compiling a custom kernel on Linux: not all that hard in the grand scheme of things and quite beneficial, but also quite obscure. “Yeah, I moved my paging file to a solid-state disk!” is a conversation ‘normal people’ don’t have. Microsoft’s just made it quite accessible. No black magic is involved: plug in a USB thumbdrive or similar, and click the option that pops up.
  • They apparently include some logic to move stuff likely to be accessed in random fashion to solid-state, to eliminate seek time, yet it will put big, contiguous stuff on normal disks, which have higher throughput. Sheer brilliance, and probably a bit of code that’s never been written.
  • The contents are encrypted. This seems like it’s right out OpenBSD’s book, in that it’s pretty awesome security. I actually wouldn’t have done this myself, as I don’t have anything all that secret in memory, so it seems like the overhead in encrypting it isn’t worthwhile. But the fact that it’s there still impresses me.
  • Some sort of compression is available as well; they cite 2:1. Much like encryption, I’m really not sure what to make of this: the whole point is to improve speed by using solid-state disks, so I wonder about the overhead here. But But then again, it means that my 2GB CF card, which matches the amount of RAM I have, might just work.
  • Per Wikipedia, “According to Jim Allchin, for future releases of Windows, ReadyBoost will be able to use spare RAM on other networked Windows Vista PCs.” For a long time, I’ve thought that this would be a good idea, and something easy enough to do. (Though there is the risk that I’m going to write data to your machine, and then you’re going to shut your computer down for the night…) This is a pretty exciting future idea!

Internet Time on Windows

A quick tutorial on keeping accurate time in Windows… Double-click on the clock in the system tray (usually in the very lower-right of your screen). There should be an “Internet Time” tab.

  • If the tab isn’t there, you’re either running an ancient version of Windows, or your PC is a member of an Active Domain directory, and the system is getting its time from that. (Your network administrator wants all the PCs to get the time from the same source, which is actually a very good way to do things… But only if they’re accurate!)
  • You should have the “Synchronize with an Internet time server” setting checked. (If not, check it!) The default is usually time.windows.com. This is pretty good, but we’re OCD, so we can do better. Mine is set to pool.ntp.org, which is a huge network of independently-run timeservers. (Two of my own servers are in it.) Please don’t use the nist.gov ones for your desktop: they appear to be extremely overloaded, and should really only be used if you’re providing time to other people.
  • By default, Windows will check that network source once a week. (Every 604,800 seconds.) This option isn’t presented to the user, but it’s a registry setting. (I won’t get into changing registry entries, since it’s not the most user-friendly interface, and mistakes can basically ruin your computer.) But HKEY_LOCAL_MACHINE SYSTEM CurrentControlSet Services W32Time TimeProviders NtpClient is your friend here. There’s a DWORD value called SpecialPollInterval, where you’ll see the default 608400. This is how often, in seconds, it’ll query. You could put anything in here, but I’d highly encourage you to set a fairly large value. My time servers query “upstream” every 1024 seconds (~17 minutes), which keeps them within 5-15ms. Unless you need sub-second precision, I wouldn’t set a desktop machine below 3600 (once an hour). I chose 28,800, which is every 8 hours. That shouldn’t let your clock drift more than a second or two, if that. Bear in mind that you’re coming from 608,400, which is once every 7 days… Every 8 hours is 21 times as often, but still an acceptable value in my mind.
  • Make sure you use the “Update Now” option to verify that your time setting works.

Obviously, this assumes you’ll be online every 8 hours… I’d imagine that Windows will just get the time time you’re online otherwise.