The Smell of Molten Projects in the Morning

Ed Nisley's Blog: Shop notes, electronics, firmware, machinery, 3D printing, laser cuttery, and curiosities. Contents: 100% human thinking, 0% AI slop.

Category: Science

If you measure something often enough, it becomes science

  • Maximum-Strength Homeopathic Medicine

    This ought to cure what ails me:

    Empty Size 4 Gelatin Capsules
    Empty Size 4 Gelatin Capsules

    Actually, with the advice & consent of my health-care provider (back in the day, we called them “doctors”), I’m titrating melatonin doses to see whether it has any effect on my wake-up-and-toss-and-turn. The pharmacology seems dubious, at best, but the stuff doesn’t appear to have any amusing side effects.

    We’re both well aware that you can’t run a blinded experiment on yourself and that the placebo effect confounds null results.

    I picked up some 10 mg melatonin in donkey-choking Size 00 capsules, then (lacking a balance with sub-0.1 mg resolution) cut it down using the drug-addict razor-blade-on-glass trick. I can easily do power-of-two divisions, cross-check by eyeballing the capsule fill, and assume the resulting accuracy will be Good Enough.

    Useful ratios to get 8 cut-down capsules, starting with the indicated number of 10 mg capsules:

    • 1.25 mg = 1 x 10 mg/8
    • 2.5 mg = 2 x 10 mg/8
    • 3.75 mg = 3 x 10 mg/8
    • 5.0 mg = 4 x 10 mg/8
    • 6.25 mg = 5 x 10 mg/8
    • 7.5 mg = 6 x 10 mg/8
    • 8.75 mg = 7 x 10 mg/8

    In principle, those capsules are US-made, kosher, halal, and blah blah blah. They’re a third the price of the local health-food store’s offerings: Size 00, Size 0, and Size 2 (out of stock) capsules. I hope that a bag of 500 isn’t a lifetime supply…

    A capsule size chart, swiped directly from one of the eBay suppliers, so I can find it again:

    Gelatin Capsule Sizes
    Gelatin Capsule Sizes

    Cutting 10 mg retail capsules down to 5 mg shows there’s about 320 mg of powder inside: 5 mg requires 1 + 1/8 Size 4 capsules.

    If you’re interested in debating homeopathy, do it somewhere else; it has no physical or clinical basis.

  • Monthly Science: Minimum Groundwater Temperatures, 2006-2014

    The picture says it all:

    Basement Air Groundwater Minimum Temperatures - 2006-2014
    Basement Air Groundwater Minimum Temperatures – 2006-2014

    Much as we thought, this past winter was really cold.

    The data consists of all 3/4 million data logger records concatenated into one huge CSV file, fed through a Sed pipe to normalize all the dates & suchlike, then passed into a Python script that produces one record for each day (all 2561 of ’em) containing the date, minimum air & water temperatures, and the minimum relative humidity.

    This needs (a lot) more work to be pretty, but at least the pieces hang together.

    The Python source code:

    #!/usr/bin/python3
    ''' Extract minimum groundwater / air temperatures & humidity from CSV files
    '''
    
    import sys
    import csv
    import datetime
    import string
    
    # Columns in Hobo datalogger CSV file
    
    SEQNUM = 0
    DATETIME = 1
    AIRTEMP = 2
    RELHUM = 3
    WATERTEMP = 4
    
    datapoints = {}
    
    with open('AllClean.csv',encoding='iso-8859-15') as dbi:
        for row in csv.reader(dbi):
            if (not row[SEQNUM].startswith("#")):            # discard comments
                logdt = datetime.datetime.strptime(row[DATETIME],'%m/%d/%Y %H:%M:%S')
                logdate = datetime.datetime.date(logdt)
                if (logdate in datapoints):             # accumulate minimum temps & RH
                    datapoints[logdate][0] = min(datapoints[logdate][0],row[AIRTEMP]) 
                    datapoints[logdate][1] = min(datapoints[logdate][1],row[RELHUM]) 
                    datapoints[logdate][2] = min(datapoints[logdate][2],row[WATERTEMP]) 
                else:
                    datapoints[logdate] = [row[AIRTEMP], row[RELHUM], row[WATERTEMP]]
    
    with open('AllMinData.csv','w',newline='') as csvf:
        dbo = csv.writer(csvf)
        dbo.writerow(('#Date','Min Air T','Min RH','Min Water T'))
        for key,value in sorted(datapoints.items()):
            dbo.writerow([key,value[0],value[1],value[2]])
    

    The encoding='iso-8859-15' for the input file turns out to be absolutely essential, as the Hoboware program generating the CSV files uses a 0xb0 character for the usual degree symbol. Alas, that chokes the default utf-8, ascii, and even cp437 codecs. Took a while to figure that out, it did, indeed.

    There remain random anomalies in the data, in addition to the glitches produced by unplugging the remote temperature sensor cable. I may simply discard the last few records of each CSV file; right now, the Gnuplot code simply ignores temperatures under 30 °F and over 80 °F.

    The Gnuplot script that produced the graph consisted of some hand-fed tweakery based on the guts of the routine that plotted the original records, with the output image bank-shotting off the clipboard into GIMP on its way to becoming a PNG file. Phew!

  • Water Heater Anode Rod Status

    The Whirlpool water heater anode rod is corroding nicely:

    Whirlpool anode rod - 2014-04
    Whirlpool anode rod – 2014-04

    The new GE water heater anode rod seems to be passivating:

    GE anode rod - coated - 2014-04
    GE anode rod – coated – 2014-04

    There’s some corrosion up near the bolt head, so it’s not entirely asleep:

    GE anode rod - bolt - 2014-04
    GE anode rod – bolt – 2014-04

    I hammered the coating off the rod, scuffed the shiny parts with coarse sandpaper, wiped off the dust, and stuck it back in its socket. We’ll see what it looks like next year.

    Both tanks flushed nicely without too much sediment.

    Searching for “water heater” will turn up other posts…

  • Incandescent Bulb Lifetime

    Two 40 W incandescent bulbs in the front bathroom burned out within a few days of each other. Being that type of guy, I know that I installed this bulb nine years ago:

    Bulb base - install date
    Bulb base – install date

    The date is easier to read with the bulb in hand: 13 Feb 05. The (5 yrs) indicates the previous bulb in that socket lasted five years.

    The other bulb date went in during March 09, so it survived only five years; the previous bulb lasted 6 years.

    Even though 40 W incandescent bulbs are history, maybe I have enough spares on the shelf that the next owner can replace ’em with cheap LEDs.

    This may not be science, but it does have numbers…
  • Eyeglass Bridge Repair

    The nose bridge of my “computer glasses” snapped in the exact center, thus confirming my dislike of the springy head-clamping design. These never leave my desk, so I filled a small brass tube with epoxy, shimmed the lenses on a surface plate, tweaked the bridge into alignment with a surface gauge scribe, and let it cure overnight:

    Crude nose bridge repair
    Crude nose bridge repair

    That layout deliberately reduces the springiness by aligning the lenses to be parallel across the bridge, rather than being a bit side-eyed. They’re an un-bendable alloy that provides no way to tweak the alignment; they emerged just about perfect, but it’s time for a new pair later this year.

    FWIW, they’re DIY “computer glasses”: +1 diopter to the far (“infinity”) correction and -1 diopter from the reading adder, producing a pair of glasses with the far point at about 1 meter and an unchanged reading-distance correction. That worked well, but next time I’ll use +0.75 diopter so I can sit back a bit further from those big monitors.

    Also: the rust on that lovely surface gauge scribe base came from the previous owner and looks much worse in the picture than in real life. I should run it through an Evaporust bath the next time I have some out. It’s probably a Starrett Model 257, but with absolutely no maker marks whatsoever.

  • Chocolate Molds: Tempering and Pouring

    Having experimentally determined that tempering molten chocolate is not optional (i.e., chocolate doesn’t behave just like butter), I tried a cheat discussed in the comments following that helpful post. Basically, because all retail chocolate is already tempered, you can get good results by carefully heating it to the proper temperature, then pouring it into the molds… the proper crystals remain in their places, the cooled chocolate has good snap, and you avoid a huge amount of fuffing and fawing.

    Not having a sous vide setup, but also not working with giant chocolate blocks, I simply filled a big ceramic pot with tepid water:

    Chocolate tempering - water bath
    Chocolate tempering – water bath

    Note that the gas burner under the pot is off: the pot’s on the stove because it fit nicely next to the countertop.

    A small metal pot sits out of sight on the burner to the left. Goosed with low heat as needed, that pot provided warm water: I moved a cup of tepid water to the metal pot, moved a cup of slightly warmer water back to the ceramic pot, and repeated as needed. As it turned out, the big pot held its heat quite well and the whole process went swimmingly, with the water temperature at 90±1°F, tops.

    The Official Tempering Numbers seem to be:

    • Dark chocolate: 88 – 90°F
    • Milk chocolate: 86 – 88°F

    I suppose I should have used slightly cooler water for the milk chocolate shown in the picture, but it came out Just Fine.

    I used Nestlé Toll House Chocolate Morsels for lack of anything better. As nearly as I can tell, cheaper chocolate isn’t really chocolate and fancier chocolate seemed like a Bad Idea until I’ve made a few more mistakes. One bag each of Milk, Dark, and Semi-Sweet sufficed for my simple needs.

    The ziplock baggie holds 50 g of chocolate chunks / morsels / whatever, which turned out to be exactly the right amount to fill 16 Tux mold cavities with a 5 mm maximum depth, plus a little bit for the inevitable mess. Sometimes, I just get lucky…

    Put chocolate chunks into bag, squeeze out as much air as possible, seal, drop in the pot. Wait a few minutes until it’s not quite completely melted, remove, dry the bag, squeeze out the rest of the air, then knead until it’s all mooshy.

    Then cut off one corner of the bag, squeeze chocolate into mold cavities, and flatten the back. I started by easing it into the beak and eyes, filling the tummy, then piling enough to cover everything else. This worked surprisingly well, although the ziplock can unlock if you squeeze hard enough; cut the corner a little bit larger than seems necessary.

    Memo to Self: tape the ziplock part of the bag closed to prevent bloopers.

    I used a plastic scraper (well, an unused credit card, if you must know) to moosh the chocolate into the cavity and level the back. There doesn’t seem to be much to choose between doing one cavity at a time or a whole row in one pass, although filling more than one row lets the first lump get too cool.

    I worried about the chocolate in the bag getting too cool, until I realized that my fingers are hotter than the tempering bath, so, if anything, it would get too hot.

    The result came out surprisingly tidy:

    Tux Gradient 4x4 - milk chocolate in mold
    Tux Gradient 4×4 – milk chocolate in mold

    The silicone block sits atop an aluminum pizza pan, which I transported to the basement for cooling while filling and melting the next bag; the chocolate popped right out of the cavities at about 70°F.

    The result looked pretty good to me:

    Tux Gradient 4x4 - milk chocolate detail
    Tux Gradient 4×4 – milk chocolate detail

    The detail come out fine and if anybody kvetches about a few bubbles, they don’t get any more.

    From left to right, Tux in milk, semi-sweet, and dark chocolate:

    Tux Gradient - milk semi-sweet dark lineup
    Tux Gradient – milk semi-sweet dark lineup

    The semi-sweet Tuxes began to bloom almost instantly. I had heated the silicone mold to about 90°F in an attempt to keep the chocolate melty enough to fill 16 cavities before leveling them all at once, but I think it was too hot on the bottom; the four center pieces bloomed right out of the mold and a few others bloomed shortly thereafter.

    The bloom highlights the mold detail, though:

    Tux Gradient - semi-sweet chocolate bloom
    Tux Gradient – semi-sweet chocolate bloom

    I quickly destroyed all the evidence…

    Each Tux weighs 2.5 to 3 g. You do the calorie count yourself, OK?

  • Chocolate Molds: Improved Tux Height Map

    This is the simple height-map Tux image I’d been using for the chocolate molds:

    Tux_Hi_Profile
    Tux_Hi_Profile

    But the poor critter looks a bit flattened:

    Tux_Hi_Profile - solid model
    Tux_Hi_Profile – solid model

    The final result is tastier, but gives off a roadkill vibe:

    Tux chocolates - detail
    Tux chocolates – detail

    After a few tweaks to the image, now he has a radial gradient on his tummy, his right flipper extends forward, his feet have webs, and his smile looks radiant. The gray levels now extend over a larger range with a bit more separation, with the intent that he’ll now be 5 mm thick:

    Tux-Gradient
    Tux-Gradient

    Converted to a solid model in OpenSCAD:

    Tux-Gradient - Solid Model
    Tux-Gradient – Solid Model

    In his STL file garb, he’s lookin’ pretty good:

    Tux-Gradient - Solid Model - STL
    Tux-Gradient – Solid Model – STL

    Next step: plastic!