SPROUTING ON UP

Draft

Ask: Strong legs, arms, abs, 30 push ups, plank for 5 mins, undetermined amount of single leg squats,  as proxy measure for strength and fitness.

Note: Isometric exercises are not necessarily good measures of strength. Correlation between plank time and ab hypertrophy is low. However, strong abs+fitness–> probably strong plank. Additionally, for balance, adding 12 pull ups  as goal (typical is pull up qty = 0.5x pushups).

Convention would advise 3×10 or 4×8 type set structuring,  but I think we can optimize over convention slightly.

Let’s start with set formats. Current knowledge puts 5-8 sets per movement as the optimal range of efficacy, while strong body of evidence for Daily Undulating (reverse, linear!) Periodization has empirically been shown to be one of the more effective schemes, especially for generalized strength, with the simplest implementation being alternating strength (~5 rep)and volume (~12 ) rep days. My theory behind the point of alternating days is to focus on different areas of neuromuscular and physiological adaptions afforded by high per-rep intensity lower volume strength workouts (neuromuscular adaptation) and lower per-rep intensity but higher metabolic intensity high volume workouts (hypertrophy, proper technique reinforcement). In general, the effort should be the same between workouts, but placed in different areas.

Writing a microcycle is a bit hard without knowing how many days per week are  involved, but a simple format would just be alternate every workout and ascend volume through the week. My personal favorite format for a workout is:

Main Sets, compound lifts

Accessory Sets, isolation movements

Burnout Sets, circuits and intervals

Imagine the workout them for the day is Squats and Bench. Early on, one is fresh and rested for the large compound lifts, i.e. a 5×5 (strength) squat / bench superset. The accessories build on that — 5×6-8 weighted single leg squats + 5×6-8 leg extensions to work the legs further but isolate the quads, and 5×6-8 weighted dips and 5×6-8 heavy tricep pulldowns to work the chest further but isolate the  triceps. While accessories/isolation tends to fatigue the muscles specifically, the body gets some rest before BURNOUT time. To finish out, a fun set would be as fast as possible: 20 squat jumps, 10 pushups, 18 squat jumps, 9 pushups, etc to 2 sqj 1 psu.

The next day, assuming enough recovery time from the squats, could be Deadlifts and Pullups, which would follow a similar Main Set / Accessory / Burnout structure, but this time with an emphasis on volume (e.g. 6 x 10 main), and so on. Days 3 and 4, to get fancy, could be Volume SQ + PLU, Strength DL + B, and so on. Alternatively, while beginning routine, time allowing, or just in expectation of advanced leg soreness, one could do a 3-day PPL bro-split, which would would add space per day for Arms! e.g. D1: B + Triceps,  D2: PLU + Bi, D3: SQ+DL.

Perhaps the point of this post more to expose nomenclature as a jumping-off point for subsequent googles.

surprise

(draft – without her)

I didn’t expect That at all, that I would slip then
They were terrible people who made beautiful things
And I would be happy to go by that name
 aspire to, even
That was the surprise. I didn’t realize
that they represented hope to me
that there was hope
that I could be beautiful too
They‘re all dead now.
Him too

TESSELATION

There are far more than five senses available in the bleak sensorium of human existence, and one of them is the sense that you could’ve done better. This is an exploration of that sensual experience.

Obligatory finished product first:

IMG_3752.JPG

I think the journey began confidently over beers, but the tolerances involved in interpreting what someone means by “portable and loud but doesn’t have to be too loud but also make it look really cool” can allow for a lot of design doubt (by no fault of their own–it’s just hard to gauge what reference points people have for “small” and “loud”), and so by the time I packed the Tesselator out, I had built 6 separate designs, each one but the last dusted in a fine sheen of “not-quite-good-enough.” This is their story (dim the lights).

ROUND 1: TOO BIG

Try 1 was actually pretty awesome. Basically, I wanted to see what the hype was about with the HiVi B4N’s. Ports in small boxes often of chuff me the wrong way and the client wanted “big circles on the front,” which I interpreted to mean speakers. Plus, I go for passive radiators when I can…and so I went for a passive radiator design. I had been having luck with asymmetry, and I wanted to carry a “T” motif through the design.

IMG_2487.JPG

The problem with the B4N’s that all the fanboys won’t admit is there’s an insanely high Q 15 dB break up mode right at 3kHz, and it likes to jump around depending on boundary conditions, air temperature, zodiac sign, etc. [For the uninitiated, basically the B4N is the classic DIY beginner speaker design because it sounds and looks good, is cheap to make, and because so many other people have built it. However, the all metal cone it’s based around tends to “ring” like a bell at annoying frequencies]. So I wanted to be at least 15 dB down by 3kHz which meant a tweeter that could hit 1.5 kHz, and for directivity reasons, I decided on a 500 Hz crossover, which obviously meant I was going to use the Aurasound NS1s.

Then I found a sweet spot of plywood that I could waterfall from top to front face to edge, cut with confidence, laid out some paper circles for test fit, and very poorly lock-mitered the shit out of the wood.

Lock miters as promised:IMG_2498.JPGThe separated volume is for the electronics–lesson learned from previous projects is when trying to attain a good seal, either get better at electrical engineering, or compartmentalize your bad work.

Of course, I still overestimated my abilities and placed the batteries in the acoustic chamber for space reasons. The white boxes are the enclosures for the NS1s.IMG_2522.JPG

I also had the idiotic notion that using banana plugs as pass-throughs would be simplest, but not only did I get the polarities wrong, it turns out banana plugs are super expensive and take up tons of space:IMG_2503.JPG

I didn’t manage to fuck up the miters too much and the face is perhaps lovable by more than it’s mother:IMG_2947.JPG

I cut out some purple heart and embedded some glow in the dark for the volume knob:

IMG_2690.JPG

With all that shit sorted, it was time to make an absolute mess of the ASP. The signal chain starts with a power-source isolated bluetooth chip, which is split by an op-amp active crossover, the low frequencies going to a china-market bought TDA7492 class D amp and then to the B4N’s while the high frequencies are padded down by potentiometer and sent to a similarly procured TPA3118D2 amp. The TDA7492 is rated for 40W into 8 ohms @ 25V @10% THD, which works reasonably with the B4N’s 25W RMS rating. Typically it’s better to spec an amp with more headroom (@ less THD) over the continuous power rating of a woofer in order to match the crest factor of music, but I didn’t think of that at the time.

IMG_2530.JPG

This is the last build I used analog signal processing on, partially because of the above mess of wires. Here’s the terrible wire management in context:

IMG_3299.JPG

I opted for a glow in the dark,  3D printed, inset handle to preserve the form factor, and then slapped some spar varnish all over that bad boy and called it a day.

IMG_3346.jpg

ROUND 2: TOO QUIET

Sometimes things come together, and sometimes they come together perfectly. This was not either of those scenarios; the “Tesselator” it’s actually just a decent name pun. Honestly, I was pretty happy with Round 1, but it was just not quite there. It was a little too big, and the lock miter bit I used for the edging was one of those cheap amazon finds that reflect their pricing in their quality. So, I started completely anew…by taking an old project that had been called into half-hearted existence with 3 other siblings in a similarly iterative process that finally yielded the Krump Kanon and cutting it in half. In general, this approach is poor.

It sucked for multiple reasons, some of which were that it was ugly and sounded bad and was still too big. Essentially, it failed to meet any of the criteria laid forth.

IMG_8529.jpg

ROUND 3: TOO LITTLE BASS

I then tried a new design that was basically Round 1 but with half the stuff in half the space. It also sucked. I was convinced that it wouldn’t because of my experiential lesson on KK Round 2–“efficiency is king”–but it turns out that only works if you have a pleasing natural response or some good DSP.

It was doubly a shame because the wood that went into the box was beautiful, but for some misguided reason, I used the cheap lock miter bit from Round 1 and, completely to my surprise, it didn’t work well the second time either.

IMG_8530.jpg

ROUND 4: TOO HAMMERED

I then decided that everything I had decided was wrong, that efficiency wasn’t king, and it was all about extension. I went back to some of my “super-compact design” notes and decided to drag some micro-subwoofer Tang Bands into wretched existence. The only problem is that tuning a small box to subwoofer frequencies requires a long-ass tube (because the air spring in a small box is relatively stiff, you need a lot of acoustic mass in the resonating port to get a low resonance frequency), and long-ass ports are very inconvenient to fit into small boxes (not a problem encountered in my daily life). I had a minor stroke of brilliance stroke and decided to make a port that was both a long-ass tube AND a handle, therefore circumnavigating this issue.  Here is the relatively tiny box, which looks shitty because I had also come up with the terrible idea that I’d wrap the whole thing in carbon fiber once assembled:

IMG_2774

And the incredibly sleek and not at all awkwardly protruding port/handle design. IMG_2794

I set the thing up, hit play and was, for the first time in a long time, pleasantly surprised. Here’s a casual video of it in a living room (turn ya sound up and throw on some head phones to appreciate the FIDELITY that’s SPEWING out of this BOOMBOX).

For such a tiny little thing, it was really moving air. It had real potential until I hit it with a hammer.

ROUND 5: TOO UGLY

Not really much to go on about here. It was ugly. I underestimated how weird it would look to have the speakers sticking out of the face instead of flush mounted, and the thing looks like a damn bug-eyed pug.

ROUND 6: NOT BAD

In a surprisingly reflective and narratively satisfying moment, I decided to combine the lessons of the last 5 iterations. I drew up a plan for a small, relatively efficient boombox with precise waterfall miters, inset speakers, DSP, and a port handle. And no fucking carbon fiber.

IMG_3748.JPG

THE DESIGN

On to the even more boring stuff. Yes, yes, I know the stereo image is going to be ruined by placing the “tweeters”  on top of each other. But it looks cool, and there’s no point in attempting to get stereo width out of a box narrower than one’s head.

Anyway, it’s got 2x TB W3-1876 in a mono “sub” configuration, sitting in a 3.7L box stuffed with light polyfill, tuned to 48 Hz with a 12″ long by 1.2″ diameter port. This theoretically gives an f3 of 42 Hz. The port is a 3D printed 3-section design that was epoxied together for surface finish and adhesion. It’s flared on both sides equally for symmetry. The “tweeters” are 1″ W1-1070SH, which are sitting in a 0.1L box and crossed over in a 48 dB/oct LW DSP crossover at 500 Hz. The outer dimensions are approx 4.5″Hx4.5″Dx14″ and the 80Wh battery supplies 24V (nominal) to a China Black Market TDA7492 (to run the woofers) and a CBM TPA3118D2 (for the tweeters) for about 8h of quite listening and 4 hours of TURNT listening  MiniDSP 2×4 runs the tuning, and the bluetooth is run by an APT-X Bluetooth 4.0 chip. The advantages of this chip are high quality transmission with surprisingly low radio noise, but by some trick of China-blackmarket circuitry, it manages to clip it’s output stage at maximum source volumes. I suspect they added a NE5532 output buffer but didn’t manage the gain properly. The numbers on the edge display battery voltage, which is my lazy solution for a battery gauge.

The wood itself is is 1/4″ maple ply, reinforced on the interior with another 1/8″ of ultra-stiff epoxy and some bracing. I finished the wood Water-Lox high gloss finish, which I enjoyed for the simplicity of use and quality of finish. It brings out the grain and luster of the wood beautifully, and it dries quickly into a reasonably durable exterior finish.

THE SUMMARY

Subjectively, the thing is awesome. It sounds far bigger than it looks, and with DSP trickery, there are little concerns of over-excursion despite a relatively low tuning for such small woofers and such a small box. It’s a good feather in the cap for extension over general sensitivity, though it seems that the “high-moving mass, giant coil, really strong magnet” combination that Tang Band is throwing into their designs does a decent job of balancing sensitivity with extension, and this design ends up being a good compromise of the two. The stereo image is shit for previously mentioned issues, but it manages to have pretty laid-back directivity, which is all you could hope for from a small source.

Final assessment: can fill a living room with danceably loud music, yet it is small enough to hand carry to a barbecue. Ship it.

AN INCOHERENT DREAM

1

A multi-dimensional object that is, in shape and movement, part digital glitch and part sea urchin. It’s a shade of deep, massive gloss black. Darker than black, darker than death. It’s the color black that makes a noise like a planet collapsing. Its shape is eating itself and exploding outwards, broiling tumultuously.  You’re a mile above a massive city, sky scrapers reaching to the sky like hope, you’re looking down with no body, watching it roll, seethe, swarm, sky-scraper tall, into the center of the neon night, shanghai future. It’s here-but-not-here, it’s in a layer superimposed over reality, a layer extra to everyone else’s run-of-the-mill 3-dimensions, visible to you, real to you, real to it, but not yet manifested as real to everyone else. This is good because otherwise everyone would be dead.

 

2

An underground environment lit by fluorescent lighting, Parisian subway tiles on the wall. It’s here, with you, bus sized. This time, manifested, real to everyone. Everyone is not dead yet. That’s because you and your team, team spelled family—you’ve been through it all together, like that one time you barely pulled it off at the last minute, with a plan just crazy enough to work, to stop that one end-of-the-world scenario, that was, what? last month or something?—are here to stop it. All of you, and it, are sharing in the same realities now, so you all have bodies and their associated delicacies. It’s a liquid-obsidian black, the same color that greed is, a deep, lustrous, beautiful black, like ballpoint pen ink, but for the pen that wrote the end of universe.

 

The reason for the sudden partialness to the more standard reality currently expressed by all parties is that it came here to fight you: loser dies, winner continues on their merry way—it’s merry way being to consume the city and world and everything you love in a maelstrom of hatred and violations of fundamental laws of physics. Luckily, you’re a goddamn weapon, and you’re carrying one too. Something very futuristic and Japanese, with a sleek dark look, the kind of look that a fancy knife has that indicates that it is definitely for killing. You softly un-sheath the weapon, which, to clarify, is technologically as much like a knife-definitely-for-killing as silicon is like silicone, with enough style that it’s clear you’re here to fuck shit up, but not so much style so as to be unprofessional. It’s unclear how exactly you got here and why the confrontation is in the format of a duel, but what is important is that you’re gonna fucking win, because this is what you’re made for. You’re something like the son of a fallen god, and you’re here to get after it.

You’re sorta going through all this in your head as the moment of confrontation draws out, with your teammates ready to lay down their lives and this creature ready to do whatever the fuck it is that it does, and you realize you’re not really sure how to get started. For lack of a better catch phrase as you raise your weapon, you say Okey-dokey.

It pops into a million spikes and then inhales itself into a smooth wave and then breaks into a cubic digital mass and then it freezes as a voluminous scream, a dark-matter Rorschach. Before you have time to move, it booms, deeper than the oceans, deeper than the crushing loneliness of the abyss space, deeper than the tomb of God closing shut

 

YOU CONTINUE TO JUSTIFY YOUR OWN FLAWS AND POOR CHOICES THROUGH A DESIRE TO BE YOUR OWN ANTIHERO DESPITE KNOWING THAT IT HURTS THOSE WHO CARE FOR YOU

 

you yell a battle cry and attack with the smooth ease of an athlete

 

WHAT MEANINGFUL AND POSITIVE IMPACT THAT’S UNIQUE TO YOUR EXISTENCE DO YOU HAVE ON THE WORLD AT LARGE? HOW ARE YOU NOT REPLACEABLE OR EXPENDABLE?

 

in shock, the world blurring, screams echoing, blood

 

YOU SAY NEXT TIME EVERY TIME AND WHEN YOU GO NOWHERE YOU LASH OUT AGAINST OTHER FOR YOUR OWN MEDIOCRITY

 

your teammates die and/or kill themselves

 

HOW DO YOU EXPLAIN THE DISPARITY BETWEEN YOUR AMBITION AND YOUR INADEQUACY

 

you alone stand determined

 

YOU COULD HAVE BEEN SOMEBODY

 

you sit down

 

 

It is a color of black that is the opposite of glowing in absolute darkness. It is the color of black of a bad goodbye. It is the color of black of hope when there is no hope.

 

3

A moment later, it’s silent. There floats jet-black sphere oscillating slightly, radiating smugness in a way that only a floating jet-black sphere that is oscillating slightly can. You look at your lethally-Japanese-but-also-futuristic-looking-ass weapon, it’s important end, on your temple, and realize that it was useless. This is gonna be different than before. You pull the trigger and you fucking kill yourself; it is you and you are it.

FUCK YEAH RECURSION

A Function to Un-Nest Nested Structures in MATLAB

So I’m flying back from Shanghai right now, (youalreadyknow it’s business class) and I decided to business-expense-splurge for the in-flight wifi, which is about as fast as a snail in the process of peacefully passing away. This means the only scrap of entertainment I can garner from my laptop is writing code in MATLAB. Writing fuckaround code in a pretend programming language in a rickety IDE has a provided surprising source of succor; if you were here you’d know it too because you’d notice I have been sitting FOR HOURS WITHOUT MY SEATBELT ON because I was simply too enraptured by the alternating tides of hate and happiness that MATLAB so easily exerts on the user.

Basically, I’m working on a GUI that allows a user to programmatically  create test limits for test data, while also allowing the user to efficiently adjust the limits where our absurd test data manages to invalidate centuries of statistical knowledge. This requires allowing the user to load a specific test from within an absurdly packaged data file which comes from a test system written by someone who clearly much prefers obfuscating and hiding things over effective data collection WHICH in turn means deeply and variably nested structures. Like 400-megabyte-CSV, stuck-in-limbo-with-Leonardio-DiCaprio, booger-that-you-can-feel-but-after-several-embarrassing-red-lights-you-cannot-remove levels deep.

Therefore, after careful perusal of mathworks, I wrote the following code. It uses recursion to return an array of strings describing each and every branch of a struct, down to the twig. It is surely my greatest accomplishment thus far.

function allfields=fieldnamesr(struct);
% FIELDNAMESR recursively explores the depths of nested structs To find all
% possible branches
%      fuck yeah recursion
fields=fieldnames(struct); %are there any field names?
idx=1; %increment variable
for i=1:1:size(fields,1) %for all field names
    if isstruct(struct.(fields{i})) %see if that field name itself is a structure 
        temp=structRecurrr(struct.(fields{i})); %if also structure, then we must go deeper!
        for j=1:1:length(temp) %for all returned values 
        allfields{idx,1}=sprintf('%s.%s',fields{i},temp{j}); %return a string containing returned values
        idx=idx+1; %increment
        end
    else
        allfields{idx}=fields{i}; %if field name not struct, then we are at bottom level
        idx=idx+1; %increment
    end
end