Sunday, February 27, 2011

Fish tank setup update

Old tank:
  • 10 ppm nitrate
  • 0.25 ppm ammonium
  • 0.5 ppm phosphate
  • pH 7.6
New tank:
  • 20 ppm nitrate
  • 0.5 ppm ammonium
  • 0.5 ppm phosphate
  • pH 7.6
The ammonium in the old tank is a bit troubling; perhaps the nitrifying bacteria population isn't big enough without that giant floating plant mass acting as a nitrogen sink. Or maybe uprooting the transplanted crypts released underground ammonia? That seems unlikely. Anyways, the animals (nerite snail, shrimp, oto, 2 panda cories, 5 harlequin rasboras) seem to be doing fine.

Initially I thought the ammonium and nitrate in the new tank must have come from the soil, but ammonium levels have been around 0.5 ppm for a week now. I hope it's not steadily leaching from the soil (through 2" of sand); I think it's more likely to be decaying algae on the rock and the log (leftover algae from the old tank, dessicating for almost a year). The new grass seems to be doing all right; some of it has withered away but that just means the remaining leaves are thriving, right? Crypts look all right, except the leaves that I broke while transplanting it - those have died. Stem plants that I took from the old tank are all doing very well. The ones I'd taken from the floating plant mass don't look so good. They started out with smaller leaves, and now many of them have yellowed (probably dying) shoot apical meristems.

Today I did a 50% water change of the new tank and a 20% change of the old tank. 

Saturday, February 26, 2011

MATLAB transpose

Big discovery for today: MATLAB's transpose function (denoted as ') is actually the conjugate transpose! The syntax for the non-conjugate transpose is .'

This caused lots of frustration today.

Tuesday, February 22, 2011

Fishes! An illustrated history, part 6

It's been almost a year since fish history part 5. Lots has happened in the meantime.

2010 Feb 13
We have a sad-looking java fern on the far left, some riccia tied to rocks, a few stem plants of different varieties (there's fuzzy plant, leafy plant, clover plant, and Stem Plant), some crypts in the foreground, a sword plant in the far back, an anubias over towards the right, and a banana plant behind it. There's also an anubias nana in the back right (it's not doing very well), as well as some four-leaf clover and pygmy chain sword scattered around (the clover is doing pretty well, but the chain sword is being shaded by the crypts).

2010 Mar 15
The riccia has grown intensely and is coming loose. Java fern is making a comeback, the crypts continue to thicken, and Stem Plant is growing quite long. The other stem plants are not doing as well. The last of the broad-leafed purple not-actually-an-aquatic-plant in the left is disintegrating. Nana has put out some new leaves.

2010 Apr 13
One riccia bunch has separated for good; the other is making good progress in that direction. Banana plant has sent up a pad to the surface, joining Stem Plant in forming a canopy over the aquarium.

2010 Apr 29
The littlest cowfish died :(

2010 May 16
Banana plant has sent a second pad up to the surface. Both are on some heavy-duty stems, maybe 2 mm in diameter. The sword plant in the back has put out new leaves, but its older leaves are growing fuzzy with algae and starting to die off.

2010 May 31
Did a lot of pruning. I trimmed the stem plants to the aquarium height and took out the riccia. The extra plants are all in the second tank now, acting as a nitrogen sink. With the mess of Stem Plant out of the way, we can see the other stem plants aren't doing as well. Fuzzy plant hasn't grown at all in the last few months, the clover stem plant is down to a single stalk now, and the leafy stem plant is losing old leaves without putting out new ones.

2010 June 1
A shrimp died :(  Also, we try to discipline the belligerent two-stripe rasbora, but that fails.

2010 June 10
Two more fish deaths: loner rasbora and old oto.

2010 Aug 28
The pads that banana plant sent up to the surface have come detached and I removed them. Java fern is quite full now, and the crypts are doing very well. I've been keeping Stem Plant trimmed. The other stem plants are slowly dying...I don't know what to do about that.

2010 Sep. 19
The big move! Pride Rock (the rock you can see jutting out in the picture above) has fallen over and the terrain has generally become flatter.

2010 Nov 13
Not much has changed. Terrain continues to get flatter; I think the army of trumpet snails is at blame. The clover stem plant and the leafy stem plant are gone, leaving only Stem Plant and two stalks of fuzzy plant.

2011 Feb 21
Banana plant has floated away and the fuzzy plants were overcome with algae. But today we took the next step towards the fish tube, a contraption I first alluded to almost a year ago!

I used xyster.com's TimeLapse app (v4.1 for iPhone 4) to make these videos.
That first segment was 2 hours. This next one runs until the iPhone battery dies:
No captions above; I'm just adding more clean water and straightening the plants.

And that leaves us with this:
Ammonium is high (1 ppm), so I'm going to let it go for a few days before reintroducing the trumpet snails (they're hanging out in a bucket right now) and setting up the fish tube. It'll be interesting to see the progression of this tank!

2011 Feb 22
Ammonium down to 0.5 ppm now. I think that initial spike came from the soil; hopefully the 2" of sand will keep that from diffusing out too fast. The plants are also supposed to absorb ammonium preferentially over other forms of nitrogen.

Thursday, February 17, 2011

MATLAB Bode plot units

Sometimes I want Bode plots with frequency in Hz rather than rad/s, or a magnitude in absolute units rather than dB. I've been using workarounds like calling bode with output arguments and plotting it myself, or frequency-shifting the transfer function (for frequency in Hz).

But it turns out you can change it! Call ltiview, and you can use the GUI to change the default axis settings (File -> Toolbox Preferences).

Wednesday, February 2, 2011

Sonar project kickoff

A new project! The goal is to develop an ultrasonic ranger that uses the Doppler effect to produce instantaneous velocity estimates. If successful, I also want to look into a two-receiver setup using interaural time and level differences to produce map the echoes into 3 dimensions.

I've been kicking the idea around in my head for a while, and started working in earnest on hardware January 4.

New plants!

Got these new plants a few weeks ago. A cactus (Red-headed Irishman):
A small, cute plant that I can't remember the name of (this is why I need to post things sooner rather than later). It's probably some sort of sedum?
We planted it in this large pot with our avocado tree. In the pot is also a String of Buttons and a Pachyveria Powder Puff ("Exotica"), as well as a rock.

Tuesday, February 1, 2011

Turkey-shaped butter

Why does this exist?

I Love Blue Sea

A while back, we got a Groupon for i love blue sea, a San Francisco (they also ship nationwide) seafood distributor that provides incredibly fresh (sushi quality) sustainable seafood at good prices (definitely cheaper than the local supermarket for comparable items).

Over the weekend, we placed an order and drove up to the city to pick it up (their warehouse is open for pickups from 12-1pm, Monday - Saturday). They filled our little cooler and with ice and seafood. With the pickup discount, we got:
  • 1 dozen Hood Canal Bay oysters ($16)
  • 1.5 lb Hawaiian pole-and-line albacore tuna ($20)
  • 1 lb Prince Edward Island mussels ($6)
The oysters were amazing. Difficult to open (we both ended up stabbing ourselves with a 3" paring knife), but delicious.
It turns out we were storing them a bit colder than optimal (ideal is 35-40 °F, with adequate oxygen supply), but we ate them over the course of 36 hours without ill effect.

At only $6, I think the mussels were best deal of all. We ate a few raw (I don't recommend it - they're kinda bitter) and boiled the rest to make a sauce for linguine (olive oil, white wine, mussels, bell pepper, tomato). All the mussels were alive, and there was enough for 2 plates like this:
That's lightly seared tuna on top, because we had a ton of it. Per pound, it's a great price, but the 1.5 lb minimum order puts us into a region of diminishing returns.
It's not actually green; that's unfortunately how fluorescent light comes out on film. Anyways, we made a lot of tuna-and-avocado rolls with the winter-ripening bacon avocado we'd gotten from the farmer's market by Moss Landing. It was awesome.
We then had seared tuna for lunch the next day. The searing adds a welcome complexity of taste to the surface, while the bulk maintains the texture of the raw fish. We want the surface temperature to reach 150°C for the Maillard reaction, but want to minimize the region that exceeds 60°C (turns opaque and flaky). So if raw albacore tuna has a thermal diffusivity of 0.15 mm2/s and we start at an initial condition of 0°C, this is starting to sound like a parabolic PDE...

The boundary condition is problematic. Making it isothermal with the pan defeats the purpose of our modeling; perhaps constant heat flux is more appropriate. Furthermore, the meat's heat capacity becomes ∞ for a while when it reaches 100°C, but we can approximate this effect by adding fMΔHvap/CP to the goal temperature, where fM is the tuna's moisture content (63%), ΔHvap is water's heat of vaporization (2257 J/g), and CP is the specific heat of tuna (3.1 J/g K). This gives us a target surface temp of 610°C...

Okay, looks like ΔHvap is a bigger player than I initially thought. Within the fish, conduction would be best modeled with an isothermal boundary condition at 100°C. Using the semi-infinite slab solutions (which is actually just an ODE after nondimensionalization), we get T(x,t) = Tsurfaceerfc(x/√4αt). We're interested in when/where T = 60°C, i.e. x/√4αt = erfc-1(60/100) = 0.37. For x in mm and t in s, this comes out to x = 0.29√t. So that ~1 mm "cooked" layer in the picture would have taken 12 sec.

The next question is to find how long it takes for the fish surface to reach 150°C. Unfortunately this requires more information, including the heat flux into the surface and some sort of diffusion length for the movement of moisture from the bulk into the rapidly-dehydrating surface. These are the primary factors in determining how long it will take to brown the surface.

As a side note, I have got to figure out how to put LaTeX into blog posts; formatting formulae in HTML is terribly unwieldy.

Anyways, we still had leftover fish after the seared tuna lunch, so we've salted the rest in much the same way as we did before.