Wednesday, November 30, 2011

240 Gallon reef tank build - part 1

My old site had a link to my 80 gallon saltwater reef tank. It had graphs of temperature, pH and ORP, status of lighting, and a small webcam that updated every 15 seconds or so. This was circa 2002. I've long since shut down that tank, moved several times, and finally I own my own house. I'm in the process of finishing the basement and adding a new 240 gallon dream tank, custom built into the wall. I'll document a bit of the process here!

My old tank was 48" long, 18" deep and 24" tall. Each dimension was CLOSE, but not quite what I wanted. So this time around I went with the largest dimensions I could realistically want and also importantly, FIT into my little basement. The new tank is 72" long, 24" deep, and 31" tall. And just barely fit into the basement.

As I was redoing the basement, I realized "Wow, this is where the tank should go!" Up until then, I'd planned to tank over a substantial part of the dining room above, reinforce the floor, run additional power, etc. But the basement was a blank slate, already reinforced (it's concrete!) and was all found space, so no stealing living area from the other inhabitants of the house.

So I immediately tore out the studs I'd begun adding for the wall between the playroom and the storage room, and began to design and construct a built-in stand:

As you can see, it's built from 2x4 dimensional lumber except for the top, which is 2x8... And it is massively overbuilt. A single 24" 2x4 can handle about 19,000 pounds (assuming you can prevent it from moving sideways). I have eight 2x4s in compression, and the entire stand is wrapped in 1/2" plywood to give lateral stability. In reality, the plywood is the real structure of the stand, going without it would be very dangerous. I still have some concerns about the 72" unsupported span on the back, for sump access. Time will tell if I've made a miscalculation. The top of the stand is 3/4" plywood, with a 6" ledge around the sides and back so I can kneel or stand to access the tank from above.

Here's the hole in the wall, drywalled (but not yet spackled or painted) and ready to receive the tank:

Moving the tank into place turned out to be... Challenging. I had three guys helping me, but the total weight of the tank was well over 400 pounds, and the thing is delicate and unwieldy. We could not lift the tank outright, but we could lift an end of it at a time, so we could lower the back out of the car, then lower the front. I'd tacked carpet onto sheets of OSB to make sleds, and those proved to be our salvation. We were able to get the tank from the one in the car onto one on the driveway, then walk that sheet over to the side door of the house, then put the one from the car as a ramp into the door, etc. It was quite a process.

In that second (top right) image, you can see the carpet ramp and the painted/unpainted shadows of the two steps I had to remove from the basement stairs to allow the tank to enter the building. Prior to ordering the tank I'd made a mockup with the same dimensions, and moved it from outside to inside, and dimensionally, it worked. However, I did not take the weight into account, and it wasn't possible to move the tank through the same motions when the real day came. Live and learn there. The third image (bottom left) is the tank sitting half on the ledge of the foundation wall, half on a 2x4 brace I'd made for just this purpose, as a staging step prior to the last push, getting the tank onto the stand (last picture).

I've since replaced the steps, here they are a day or two later:

Once the tank was physically in place, I began building the wall above the tank. I didn't want the wall to impede the lighting entering the tank, so I built the bottom of the wall at an angle, shown below in various stages of being built and drywalled:

Finishing the drywall was a massive pain in the butt, because there was a giant fish tank in the way! But it came along bit by bit, and finally came out ok!

Tuesday, August 9, 2011

Alton Brown's PID-controlled Flower Pot Smoker

I saw Alton Brown's segment on Brined Pulled Pork, and thought "That sure looks good, but I bet it'd be better if the temperature could be controlled to within .1 degrees C. I'm going to do that! Here are the source videos that go the ball rolling:

I then modified the plans I found over here: I thought it was silly to have all the electronics hanging above the water, and given the issues the author mentioned with heaters burning out, it made sense to have it be a separate box, with plugs to plug in whatever heating elements one might want.

One issue I had with the smoker was that the heating element's thermostat would actually cycle the thing on and off even when set on high, making the PID controller useless. So I took the heating plate apart, removed the thermostat, and that fixed things just fine.

Sunday, July 10, 2011

Closet Bathroom Completed

Just completed my mom's tiny 3'x4' half bath! Check out that sink, just about big enough for one hand at a time!

Thursday, July 7, 2011

iSCSI Windows 7 Boot (Using Synology DS1511+)

I recently purchased a Ceton InfiniTV 4 tuner card, not realizing at the time that it would not simply install into my existing SageTV PC... So I'm building out a new box, this time Core i3-based instead of Atom, but I still wanted to keep power consumption low. So a hard-drive-less machine was the way to go, backed by iSCSI provided by the Synology DS1511+

Install Windows 7 to physical drive
I couldn't get the windows installer to recognize the iSCSI drive I had created on my Synology NAS, it would boot, stay connected, and then setup wouldn't find any candidate disks. In any case, it works much easier to install to a physical disk, do all your updates, hack the registry, and then clone to iSCSI.

Tweak the registry so your network card can boot correctly
This was the special sauce that prevented Windows from booting for me on countless attempts: By default, the Light Weight Filter (LWF) is bound to all system NICs. If you install to an iSCSI drive, the setup program automatically unbinds this filter from the boot NIC, but since we've installed to disk, we've got to do it ourselves. I found the solution here, with a link to the MS article about it here.

  • Open HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ Class\{4D36E972-E325-11CE-BFC1-08002BE10318}
  • Find and open the subkey for the NIC (eg. 0007)
  • Open the subkey Linkage
  • Edit the value FilterList. Delete the line that refers to the LWF driver UUID {B70D6460-3635-4D42-B866-B8AB1A24454C}. In my case I had to delete the second line. Before:

  • Clone the physical drive onto an iSCSI drive:

So now we've got a nice clean install, with the LWF disabled on our boot NIC, and we're going to mount the physical disk to another machine, mount the iSCSI drive to the same machine, and use 'dd' to clone the source to the target. I'm on a Mac, though Linux would be similar. I used the GlobalSAN iSCSI Initiator for OSX (available after some hoop-jumping from here)
Determine your device names:
$ diskutil list
will give you something like this:
0: FDisk_partition_scheme *500.1 GB disk0
1: Windows_NTFS System Reserved 104.9 MB disk0s1
2: Windows_NTFS 104.8 GB disk0s2
0: GUID_partition_scheme *160.0 GB disk2
1: EFI 209.7 MB disk2s1
2: Apple_HFS System 159.7 GB disk2s2
0: FDisk_partition_scheme *160.0 GB disk3
1: Apple_HFS User 160.0 GB disk3s1
0: FDisk_partition_scheme *107.4 GB disk4

So in this case, /dev/disk0 is my source drive, and /dev/disk4 is my target iSCSI drive. I want to clone 0->4, so dd is my friend:

$ sudo dd if=/dev/disk0 of=/dev/disk4 bs=64k
And then just wait. It can take a long time. The bs=64k option will make it go faster. I got around 10MB/sec from a local disk to a remote iSCSI disk over a gbit connection. To force dd to give you an update on its progress, you can figure out its pid and then send a SIGINFO to it:

$ ps -ef|grep dd
0 34 1 0 0:03.10 ?? 0:09.20 /usr/libexec/hidd
0 3137 713 0 1:22.63 ttys000 1:22.86 dd if=/dev/disk0 of=/dev/disk4 bs=64k
501 3181 780 0 0:00.00 ttys001 0:00.00 grep dd
$ sudo kill -SIGINFO 3137
which will print something like:
102872+0 records in
102871+0 records out
6741753856 bytes transferred in 640.615671 secs (10523867 bytes/sec)


I got all this working, installed SageTV, and it worked great... Except that bluray playback stuttered like crazy, as if the system was loading the stream from the remote disk, writing it to local disk (which was iSCSI, so was remote), reading again from local, then sending the stream to the client... In any case, it didn't work correctly, so I gave up and put a tiny hard drive into the box. Lame.

Monday, June 13, 2011

Fluffy Java interview question

If the next version of Java contained the keyword fluffy, briefly describe what its purpose would be. Stolen from

Monk Parakeets in Tenafly, NJ

This video is from the older, low-def web cam, but you get the idea. This was the second day we'd seen these parrots, and the first time they'd come as a group. They now come to our feeders every day, several times a day... Looking forward to seeing their bright green in the winter, should be quite striking!

Sunday, June 12, 2011

Alton Brown's Brined Pulled Pork


Makes 8–10 servings. Prep Time: 20 minutes Inactive Prep Time: 13 hours Cook Time: 11 hours

BRINE: 8 ounces or 3/4 cup molasses, 12 ounces pickling salt, 2 quarts bottled water

6–8 pound Boston butt

RUB: 1 teaspoon whole cumin seed 1 teaspoon whole fennel seed 1 teaspoon whole coriander 1 tablespoon chili powder 1 tablespoon onion powder 1 tablespoon paprika

Combine molasses, pickling salt, and water in 6-quart Lexan (Cambro) bucket. Add Boston butt making sure it is completely sub-merged in brine, cover, and let sit in refrigerator for a minimum of 8 hours. 12 hours is ideal.

Place cumin seed, fennel seed, and coriander in food grinder and grind fine. Transfer to a small mixing bowl and stir in chili powder, onion powder, and paprika.

Remove Boston butt from brine and pat dry. Sift the rub evenly over the shoulder and then pat onto the meat making sure as much of the rub as possible adheres. More rub will adhere to the meat if you are wearing latex gloves during the application.

Preheat (AB’s flowerpot) smoker to 210 degrees F. Place butt in smoker and cook for 10–12 hours, maintaining a temperature of 210 degrees F. Begin checking meat for doneness after 10 hours of cooking time. Use fork to check for doneness. Meat is done when it falls apart easily when pulling with a fork.

Once done, remove from pot and set aside to rest for at least 1 hour.

Pull meat apart with 2 forks and serve as sandwich with coleslaw and dressing as desired.
Related Posts Plugin for WordPress, Blogger...