The Dream Network

Periodically I come across deals for computers that are very tempting. I’m not necessarily in the market right away: I’m going to keep my laptop until I’ve been working long enough that I can afford something stellar. It’s silly to “upgrade” a little bit. But every time I see these deals, I think of the various ways I could set things up… My “ideal (but realistic) computer” would actually be a network:

  • Network infrastructure: Gigabit Ethernet, switched, over Cat6. 10GigE and fiber are cool, but really not worth the cost for a home network.
  • A server machine. It needn’t be anything too powerful, and could (should) be something that doesn’t use a ton of electricity. The machine would run Linux and serve multiple rolls:
    • Fileserver. It’d have a handful (4-6?) of 500GB disks, running RAID. While performance is important, it’s important to me that this thing be very ‘safe’ and not lose data. (Actually, in a very ideal setup, there’d be two fileservers for maximum redundancy, but my goal with this setup is to be reasonable. What interests me, though, is that I think it’d be possible to use an uncommon but awesome network file system like Coda or AFS, but also have some network shares on top of that service that ‘look normal,’ so Windows could just merrily connect to an M: drive or whatnot, merrily oblivious to the fact that the fileserver is actually a network of two machines.) It’s important that the machine have gobs of free space, so that I can merrily rip every CD and DVD I own, save every photo I take, and back up my computers, without every worrying about being almost out of disk space. It’s also important to be hyper-organized here, and have one “share” for music, one “share” for photos I’ve taken, etc.
    • Internet gateway. It’d act as my router/firewall to the Internet, and also do stuff like DNS caching. It may or may not serve as a caching proxy; I tend to only notice caches when they act up, but then again, it might be quite helpful.
    • Timeserver. For about $100 you can get a good GPS with PPS (pulse-per-second) output and keep time down to a microsecond. Hook it up to the serial port of this machine, and have your local machine sync to that for unnecessarily accurate time. (Actually, it looks like you can do PTP in software with reasonable accuracy?)
    • Asterisk machine, potentially taking in an analog phone line and also VoIP services, and giving me a nice IP-based system to use, blending them all so it’s transparent how they’re coming in. It would also do stuff like voicemail, call routing/forwarding, etc. For added fun, it could be made to do faxes: receive them and save them as a PDF, and act as a “printer” for outgoing faxes. The code’s there to do this already.
    • Printserver. If you have multiple machines, it’s best to hang your printer(s) off of an always-on server. It could speak CUPS or the like to Linux, and simultaneously share the printer for Windows hosts.
    • MythTV backend? But most likely not; I’d prefer to offload that to a more powerful machine, rather than bogging down a server.
  • Primary desktop. Surprisingly, a quad-core system, 4 GB of RAM, and a 24″ LCD can be had for around $1,000 these days. That’s all I need in a system. I have my Logitech G15, which is all the keyboard I need. My concern is with what to run… These days I make use of Windows and Linux pretty heavily. I think virtualization will be mature enough by the time I’m actually going for a setup like this to allow me to get a Linux-based Xen host and run Windows inside of a virtual machine with no performance degradation. (This is actually mostly possible already, but as Andrew will attest, Xen can still have some kinks….) The system should have a big monitor. It’d be interesting to put something like an 8GB solid-state drive in it and use that for a super-fast boot, but the jury’s still out on whether it’s worthwhile. (I guess that some places are pushing SSD under some special name to make Windows boot instantly, but the reviews I’ve heard suggest that it gives a nominal improvement at best.)
  • Secondary desktop. Pay attention for a while to the short bursts of time when you can’t use your computer. The system locks up for a bit, or it’s just unbearably slow while the disks spin up and get a massive file, or you have to reboot, or you’re playing a full-screen game and die and wait 15 seconds to respawn, or….. In this “ideal setup,” I’d have a second machine. It needn’t be anything special; in fact, it could be the cheapest machine possible. It’d basically run Firefox, AIM/IRC, Picasa (off of the network fileserver), iTunes, and the like. For the sake of completeness, it should probably run whatever the other system doesn’t, out of Linux, XP, and Vista.

3 thoughts on “The Dream Network

  1. Have you tried Picasa off a network share? I’m trying to come up with a storage solution for photos (longer-term than putting them on whichever laptop we happen to be closest to), and I’d really like something we could use to browse from any computer… :-

  2. I haven’t. Now that you mention it and I’m giving it some thought, I’d be curious how it handles a “drive” disappearing and reappearing (e.g., on a laptop, where the network share wouldn’t always be there).

    I’m also not sure what I think about its ‘tagging’ / comment support, or if that can be accessed from other apps. (It’d be AWESOME if it was plaintext and a little PHP script could view it?) For an “ideal” system, I’d really like to be able to go nuts with ‘tags’ on photos: “Uncle Joe,” “Aunt Mary,” “Cousin Fred,” “4th of July,” “outdoors,” “2008,” “My Backyard”…

    I haven’t played enough, but I’m not sure its tagging ability is meant to support that.

    It also appears to lack an ability to find duplicate photos? What I’m notorious for doing is filling my card 1/3 of the way and wanting the photos, so I’ll copy ’em to my computer. And then I unmount the drive and go take some more pictures, and copy those…. I end up with 2 or 3 copies of some things. I think what’d help is to keep a little table of MD5 hashes for each image. You’d incur a big overhead at first, having a script calculate an MD5 for each image. But once it was done, you could just have it run on newly-created images.

    And I’ve just involved MySQL in my plan to store my pictures on a network fileserver.

    Actually, that reminds me of an even more grandiose idea I had… Look at this iimage and then this image. They look similar. Not duplicates, but the colors are so similar that I wonder if a script could be written to ‘guess’ that they’re from the same set.

    If I “resize” each to a 1×1-pixel image, I’m left with a dark blue. This is probably a bad idea, though… This would probably be dark blue, too, but it clearly doesn’t look anything like it. (Although it might be neat to view images by ‘average color’? I just don’t see a lot of value in it.)

    So then I tried resizing to 8×5 (pixels). At 8×5, the two images of Obama speaking in a cool tent look very similar, but the poorly-planned “Drive Drunk” roadsign looks totally different.

    The problem is that I think this is doable, but that the effort in making it work wouldn’t be worthwhile. Generally, chronology is good — if I snap two photos half a second apart, they’re most likely of the same thing. What it would be good for is recognizing similar shots from different photoshoots, but this is fraught with problems… Two shots of the library clocktower here, taken on different days: this and this.

    I also don’t know for sure how iTunes would hold up with a network fileserver? It shouldn’t matter in either case, but as you’ve surely noticed before, nothing is ever as easy at it should be.

  3. I guess it’s back to writing my own photo management software… sometime in the next 800 years.

    While I’m at it, I’ll also write an iTunes replacement.

Leave a Reply

Your email address will not be published. Required fields are marked *