CH

June 30, 2017

The End of Emissions Control

Filed under: Uncategorized — Benjamin Vulpes @ 4:01 p.m.

"Diesels: reliable startup and operation, high power, and low emissions: pick two".

Every single step along the road to the software-controlled car made perfect sense in its own context, and nobody could have predicted that baking what were once called "general purpose computers" into the automobile would result in the megastate's complete and humiliatinng defeat on the battleground of emissions control. The cascading failure started very small, with (for example) replacing the mechanical fuel injection systems with electro-mechanical ones; moved through a phase where every electromechanical subsystem (such as the motor controllers for the window actuators) was designed and emplaced separately; into the current phase where more or less every system in the vehicle is driven by its own tiny computer, and both dumps data to and reads instructions from the CAN bus.

Automotive computerization is actually a subinitiative of the USG fiefdoms commonly known as "corporations" push to replace real things in the market with erzatz imitations; a race-to-the-bottom that harmonizes gloriously with the symphony of fiat-currency issuing organizations: as exchange rates fluctuate not strictly as a function of how much currency a given country is issuing on an ongoing basis but more accurately as a function of how much more or less currency they issue relative to everyone else playing the same tune, so too do the reputations of once-glorious automotive brands fluctuate not as a function of the quality of goods they produce but as a function of how much more quickly or slowly their product lines' useful lifespan and quality shortens and degrades relative to their competitors; a vastly more difficult analysis for the consumer to make.

Simple products, for example carbonated and fermented corn syrups, achieved uniformity under the hood decades and decades ago in the States. With nothing material to differentiate the product lines, the marketers differentiated on brand: am I a Coke guy or Pepsi guy? Coors Light or Hamms? Trick question; once you incorporate corporate brands into your identity you're just another transmission vector for the mind-rape. Cars, while rapidly approaching the limit of uniformity between brands, are of markedly greater complexity under the hood than sodas and (what passes for) beer, and so demanded rather a lot more work on many more axes in order to give the marketers the hooks they needed to properly differentiate products for the American identity-politics market without costing undue piles to the actual engineering and fabrication processes.

Take engine noise as an example: the relentless market demand for constant improvement in both fuel economy and power output put such constraints on the design of power plants that the once-characteristic engine noise has been flattened out into the same low-waste white noise no matter the manufacturer brand. American marketers didn't mind this in the slightest, as where the drink manufacturers differentiated with various dyes, the car manufacturers differentiated by building speakers into the car so that they could tune both the noise broadcast to the world and that experienced inside the cockpit of the cars to more precisely curate "the brand experience of a Chevy".

German diesel marketers took a mildly divergent approach: instead of trading engine noise for power completely, and fabricating the "driving experience" wholesale with speakers, they worked with engine control unit manufacturers to tune the actual noise produced by the engine on startup. Why not? The startup routine takes no more than thirty seconds at the beginning of every petrol-burning run, has epsilon impact on emissions in the steady state, and so does not affect test-stand behavior sensibly.

With the innocuous ECU-profile-for-emotionally-tuning-the-consumer in hand, is it any surprise someone else in the organization repurposed the underlying routines to bypass witless regulators? Steering wheel position is constantly recorded to the CAN bus, as is that of every other system on the vehicle, all effectors read from the same rail, so why is it so implausible and disturbing that someone should have evaded the States' testing regime by applying a modicum of intelligence?

The notion that one can evade the state bothers millenial Pantsuit acolytes by demonstrating how blind and stupid the US megastate has grown. The laughs don't stop there, though, as the enforcement team only actually managed to track down the test-stand evasion systems by going to the ECU-modifying enthusiasts and asking nicely for dumps of the original software! Enthusiasts who'd already reverse-engineered, modified, and installed the modified control systems back onto their cars for performance reasons and to bypass the selfsame emissions compliance systems.

And so we find a sharp blade each for the jugular and femoral arteries of statal intervention in automotive emissions: a) the individuals and organizations responsible for writing and enforcing the regulations are utterly incapable of doing their jobs without volunteer labor from people who bypass emissions control in their spare time; and b) with the advent of flashable automotive ECU systems there is absolutely nothing preventing manufacturers from dropping cars on lots crippled by easily-removed software in a sarcastic bow to the regulatory apparatus, and nothing the state can do about their "leaking" high-performance engine maps in tandem. In regards to the first shiv, for as long as it is fashionable to be seen talking to cops, and right up until the moment Americans wake up to the notion that the entire control apparatus hinders self-determination and benefits only the criminal organization the once-modest United States Government has metastasized into, the bureaucracy may continue to find support among the people most well-equipped to castrate it and not a day past that point. In regards to the second, absolutely anyone can kick their engine controller into high-performance, high-emission mode as soon as they drive the vehicle off the lot, and with zero damage to the system replace the original software in the blink of an eye for inspections, switching back as soon as the inspector passes out of sight.

Expect to see a mandate that all cars with computers run Windows on chips with "trusted computing modules". Expect it also to never work.

June 12, 2017

blooming beasts!

Filed under: gardening — Benjamin Vulpes @ 3:59 a.m.

Dude you have to get a load of these bushes my plantwitch ensorcelled:

the box

To the left and at the bottom, what will probably turn out a solid brick of carrots (I kid, the patch is meticulously thinned), enough to get us through the winter and into spring completely sick of the root. Up from the carrots are various peppers, thriving happily in the miserably gray temperate rainforest. Counterclockwise from the carrot patch are some bolting basil and holy fucking shit look at these tomato bushes.

the bloom

Yes, they really got that large before pushing a single flower bud out.

June 10, 2017

The best thing you can do for your career is to take a stay-at-home wife

Filed under: intersectional gender studies, sovereignty games — Benjamin Vulpes @ 9:58 p.m.

My dear Americans, aspiring to manhood, be not misled by useless twits like Adriana Salerno into believing that keeping women at home, in the kitchen, in heels or barefoot as your mood and her task suit, ranks anywhere but in the best of ways to invest your time and money. Does the notion that there is a better life than the two-income-and-no-time-for-love model the American debt peonage state and its vassals in the agitprop department of faux-feminism and genderblind equalitarianism would have you believe to be the only option? Then come with me, friend, let us consider Taking A Wife.

Salerno writes:

It takes more than being good, reasonable feminists to make sure the stay-at-home parent’s needs get the same weight as the working parent’s needs. It takes more than being good, reasonable feminists to make sure that the marginalized parent doesn’t have undue burdens that they “agree” to because they feel more pressure to be reasonable by mainstream standards. My husband and I are committed to figuring out how to not just best divide family labor (which seems to be everyone’s benchmark for equality), but how to make sure each of us is actually equally free. It’s hard work, and we’re making it up as we go.
Get Out The Way -- Adriana Salerno

Allow me to clarify "feminism"
, lest we unforcedly accept the enemy's definition: "a woman" (a state subject to criteria as strict as those of "a man", eg at the very least a thinking individual, not a drifing mote of the undifferentiated herd), may comport herself in any way she choses. She may walk the streets at night rape-baiting if she so desires; she may engage in rampant sluttery if that appeals; she may even decide to abstain entirely from the hetero sexual market in disgust at the paucity of bids. She may even, after much deliberation, and fighting the angst engendered by the American labor market's demand that all bipedal life hand itself over for reshaping into cogs, succumb to the siren call of procreation. And you may speak nary a word.

A "good, reasonable feminist" couldn't, in a million years, conceive that a woman, who, of her own accord, bartered with a man for feed, seed, and a greenhouse in which to germinate it, could ever be considered marginalized. In my America (not the plaintive "our America!"), this woman is far more empowered than the herd descended from the suffragettes who strive yet to balance the scales of slavery to the megastate. Being bound to show up somewhere at eight in the morning, review insurance claims for eight hours with two fifteen and a thirty-minute break somehow a desirable state of affairs for the empowered individual. Ask some who bore and are so bound if they feel empowered, and wonder at the prevarication.

It'll hinge upon recent revelations from the Church of the Woke that all people are exactly equal and so fungible replacements for each other; demonstrate an unquestioning loyalty to the Modern Paradigm that every man Jack and babe Jill indenture themselves to the labor market by taking on epic quantities of undischargable debt to pay for degrees that signify no education actually took place. Stamps of scammability, if you will1. Previous generations (the kind who attended actual schools that flunked students who failed to keep up, in strict contrast to the statal daycares that substitute for "elementary school", "high school", and "college" just as hamburger substitutes for steak in official US inflation indices) would recognize this economic system as the time-honored debt peonage structure. The herd so indentured will never actually snap out of the dream: the machine of lifetime-debt-slavery-for-"degrees" is the only thing lending even a veneer of intellectual credibility to the typical cube-farm drone's only "achievement" in life. Are they to throw the baby of climate modeling out with the bathwater of a system that enslaved a generation? Fat chance; it's "Bachelor's of Art in Science" all the way down, and we all know how the incompetent shroud themselves in whatever caftan of respectability they can find and how ever more tightly they clutch to it as the value it signifies evaporates.

With every boy and girl now servicing tens of thousands of dollars in debt, Economy takes over from Politics and demands that each and every one of them enter and remain in the workforce until they've a) paid it off, and then b) accrue enough 401-K tokens to feel comfortable gambling that they can pay themselves out of the accrued capital for the rest of their days while the currency debases. This puts the woman driven to mature into a mother2 in a rather sticky position: her womb cries out to be filled with seed and child; and her soul to spend the first decade or so of their lives feeding and teaching the juveniles. But! Shylock demands his promissory note be serviced, and the labor markets' bid for her time only included two weeks of paid vacation so by the time she's healed and walking (optimistically) she must gingerly tread back out into the world just to make good on the debt.

Sin excepción, this is life for the doubly-incomed3 family: pop out some larvae, hire a caretaker if you're so typically unlucky as to be without the support network that traditionally fosters the growth of the next generation, and hie both of thyselves back to the workplace to pay for it all. At first blush, why even bother? Go through all of trouble of brewing it within you for however many weeks (sciatica, fetal hiccups, limited mobility, annoyingly complicated sex just to pull a few out of the air) just to walk away and not even nurse it all day? The mind boggles, and the parents fail to impose a bedtime a) not really having thought things through since their teens; and b) so desperate they are for time with their offspring (the US male's inability to set and enforce boundaries with women in his life amplifies this sad dynamic, but I cannot treat the whole world in every essay).

And so of course I have to go yell at people about dumb shit like this shrill fuckin' screed from someone justifying the brain damage from deep within it. I can't even take offense at the characterization of "dads" in the piece because omfg you're talking about people so stupid as to have embarked on the travaille of parenting without a) one of the parents at home with the children or b) enough resources to hire someone to run the house in your absence or to cover for your inability. Notably missing from the piece is any mention of taxes or oil changes (or transmission flushes, honey do you even?), but I digress.

You are a young male in the States; possibly burdened by some amount of college debt. You know in your bones the degree to which you're fucked; perhaps you staunched the bleeding by finishing college at a far cheaper state school, or opting out of the nonsense entirely, who knows, but you're not actually a lost cause and might yet drag yourself out of the pit and claw some respect for yourself from your peers. Possibly you're one of those lucky fucks endowed with the familial money and sense to send their children to affordable schools in pursuit of sensible degrees! You intend to build a career into a not-insignificant domain of personal sovereignty. And, in parallel with the themes of this piece, you plan to have children.

The best possible thing that you could do for your career is to find a young, perfectly-to-your-tastes feminine, filled with the nurturing spirit, lady from a cultural background that doesn't harp upon the canon of wokeness to serve as the first mate upon the ship of your domicile. Take a stay-at-home-wife! Far better to have someone on staff and off the books responsible for feeding and clothing the children, ensuring that diaper bags are packed and activities planned than to hire that work out or god forbid try to split the duties "equitably", however that's supposed to be negotiated. If you both work outside of the home, and then try to share the work of the home fairly, you have lost just by playing. She will care more about the feeding and keeping, work harder, and then turn around and blame you for it. It is a sad thing to see happen. Even should you hire all of the work out, and pay for it from your two incomes, you'll be living in a state of sin, voluntarily donating to the US state and its concomittant machinery of unemployment taxes, Medicare, Medicaid, the utterly useless FDA, and the waste-of-life military welfare programs, just to name a few things to which no thinking man should give an uncoerced penny.

Provided that you can find and reel one in before she's had the opportunity to rack up too much of ye olde American "college debt", you can start staffing your household for barely a song in comparison to the price of hiring a cleaning service, chef, and childcare. If she has, talk her out of any sort of formal marriage that might land the liability on your books, allow her to lean on the "income based repayment plan", which should be trivial to pull off as her income will be zero (and excellent financial policy anyways as the dollar continues to erode)! Room and board will happen off any books the taxman will ever see, naturally. Besides, she'll be paying for it all in blowjobs, good company, and becoming a better cook of your favorite dishes, which is not just immoral but actually illegal in the eyes of the US state and its departments of propaganda.

Now, if you're any kind of man worth the mention, the odds are good (but not certain) that your lifting the shade from her eyes and educating her on the idiocy breeding on all sides, in conjunction with the basic female drive to reproduce will result in her really really wanting to bring more of you into the world. Progressivism is, after all, built on the foundation of woman wanting to make the world better for herself and her offspring (benefits to other folks' simply a side effect of democracy: "if we all wail together, we might get more from the voters!"), and what better way to effect that than to make a hardworking man with a career happy and build some children that might come visit her in her old age?

Voila, you're neatly set up to sidestep the whole idiotic, self-created problem of "fairly splitting the domestic labor!". What split?! You make all of the money, she performs all of the labor. Perhaps, you also put in time on the house and family when you come home or emerge from your quiet den of solitary labor, be it for reasons of "there is rather a lot to do to keep things humming along nicely", the joy of working on large projects with good friends, or merely that of "hey honey, let's further troll the Joneses about how miserable and unfulfilling their lives are!".

Should the labor of managing all those children, the garden, their play dates, cooking and dishes grow truly terribly burdensome for everyone involved, and heaven forfend your career begin to suffer as a result, simply take a second wife! Marginal costs of each additional mouth are low, after all.

  1. Remember how ten years ago the joke was about "I ain't payin' for no underwater basketweaving degree!"? The Cathedral has since realized that it's vastly easier to bamboozle the American lower classes with degrees in "post structuralist intersectional gender studies", which in all fairness is just as parseable to the average graduate of the public American "high school" as "solid state electromagnetic waveguide design and analysis." The social sciences are just as rigorous as solid state mechanics, otherwise it wouldn't have its own department at the University, see? []
  2. The empowered and biologically adult woman (which is to say, capable of reproducing), doing this of her own accord and in a politico-economical environment properly supportive of the incubation and fruition of its next generation, matures into motherhood in precisely the same way that the biologically adult male who only allows the educable near him and educates them that he might not die in the filth of humanity matures into a man. Not to imply that women can't educate and men can't nurture but to insist that however many million years of evolution and fifty thousand of hierarchy engineering do not simply disappear because nobody taught you about them in your intersectional oppression classes. I do not mean to imply that motherhood is some sort of butterfly-from-the-chrysalis fantasy (despite what people think going into it); executed properly it is a messy, transformative affair, rooted in practicalities and engineering tradeoffs. []
  3. We have "salaried", why not "incomed", eh? []

June 8, 2017

An implementation of Mircea Popescu's Fabulous Hash Function

Filed under: common lisp, tmsr — Benjamin Vulpes @ 5:40 p.m.

At the beginning of March (you're stuck believing me, I keep detailed logs of this sort of thing), I wrote an implementation of Mircea Popescu's Fabulous Hash Function, in the process finding a few mistakes in his documentation.

I left off before publishing at the time, as while the individual operations worked, the assemblage together didn't return the same values I saw on Trilema. I got distracted, life moved on, and the proggy sat on my drive, further unexamined. Today, the hash function's author pointed out that he'd published results from an implementation of an older spec, Stan exhorted me to publish and reconcile, and here we are.

Updated: June 9, 2017: 4:03

'twas only my just deserts for sitting on a piece of code for months and then releasing it abruptly without loading it into my head fully: asciilifeform found the most glaringest flaw in the whole thing, that while the rest of the program operates in a destructive fashion, the invert operation returned the array that should have been emplaced into its input argument. More beatings is the only remedy...

Patch to fix follows:
In the interest of preserving my sanity, I'll not be hosting patches for this thing.


Updated: June 9, 2017: 7:24

Turns out, it doesn't work at all.


Updated: June 10, 2017: 01:05

I'm excising the old code below, and commit to maintaining an up-to-date version below. To paraphrase Mircea Popescu, it does something, although whether it does the right thing is hard to tell. Hash functions, amirite?

Please join us in #trilema on the Freenode IRC network to play with the bot. Demo session here:

http://btcbase.org/log/2017-06-10#1667948


Updated: Jun 10, 2017 01:24

Bug in the spec. Code updated. Combatants licking their wounds.


Updated: June 10, 2017 06:02
Reordered updates first to last, like a sane person.

Astonishment and awe, as the element expected to bring chaos brought instead entirely predictable order.Ambiguity in the spec this time!

And ultimately, sweet sweet synchrony.

With candidate canonical implementations in the field, it's time for another round of tests. I'll list some results here and hopefully enterprising souls will come up with some new mismatches to run down.

(mpfhf:mpfhf #*1111 4)
#*1010

(mpfhf:mpfhf #*11111111111111111111111111111111 64)
#*0110100011001111010010001111100000000001110001111000001001000001

(mpfhf:mpfhf #*1111111111111111111111111111111111111111111111111111111111111111 64)
#*0010111010001000101011101000100000110011110111011111001001110010

 (mpfhf:mpfhf #*1111111111111111111111111111111111111111111111111111111111111111 128)
#*01101000010111101000010110001100001011110000110000101110110101111010010101000000011011111010011011110001001100010111101010011100

(mpfhf:mpfhf #*11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 256)
#*1111111010101111011001101011011111101000101011111101011110010111010011100111000011000101000010111000111011110100100101010011011111010111001011011101010011011101011000100010001000111110000010010011001100011111100000100001010111101111010110000111010101011100

And, the final torture test: a 64-bit MPFHF of the text document found here: http://thebitcoin.foundation/declaration.txt

#*0000000011110000101000010101001010110110111001110111100101111000

Updated: June 30, 2017 06:02

I've squeezed the obvious gains out of the thing, but it's still clocking in at some ~4X the runtime of sina's golang implementation. I can squeeze another 25% out of it by constraining hash output sizes, but that's not actually a useful optimization.

I find myself woefully underequipped to profile this code for the hot spots. More research on benchmarking and profiling CL to follow...

Currently operational implementation:

(defpackage :mpfhf
  (:use :cl :bit-smasher)
  (:export :flip :invert :screw :expand :mpfhf :hash-string :main))
(in-package :mpfhf)

(defparameter *log-out* nil)

(declaim (inline expand flip invert underlying-screw screw half-screw rewind))

(defun flip (element target)
  (declare ((array bit 1) element)
           (fixnum target))
  (let* ((original (bit element target))
         (new (if (= 0 original) 1 0)))
    (setf (bit element target) new)
    element))

(defun invert (element)
  (declare ((array bit 1) element))
  (adjust-array
   element (array-dimensions element)
   :initial-contents (bit-not element)))

(defun underlying-screw (b m-position count)
  (declare ((array bit 1) b)
           (fixnum m-position count))
  (loop for i integer below count do
       (let* ((product (* i m-position))
              (target (rem product (length b))))
         (flip b target))))

(defun half-screw (a b m-position)
  (declare ((array bit 1) a b)
           (fixnum m-position))
  (underlying-screw b m-position (floor (/ (length a) 2))))

(defun screw (a b m-position)
  "screw a in b"
  (declare ((array bit 1) a b)
       (fixnum m-position))
  (underlying-screw b m-position (length a)))

(defun expand (element)
  (declare ((array bit 1) element))
  (let ((original-size (array-total-size element)))
    (adjust-array element (+ 1 original-size) :initial-element 0)
    element))

(defun rewind (place)
  (declare (fixnum place))
  (if (= 0 place)
      nil
      (decf place)))

(defun mpfhf (m hash-length)
  (declare ((array bit 1) m)
           (fixnum hash-length))
  (let ((s (make-array 1 :element-type 'bit :initial-element 0 :adjustable t))
        (r (make-array hash-length :element-type 'bit :initial-element 0 :adjustable t))
        (message-length (length m)))
    (loop
       for message-position fixnum = 0 then (+ 1 message-position)
       for steps fixnum = 0 then (+ 1 steps)
       until
         (>= message-position message-length)
       do
         (progn
           (case (elt m message-position)
             (0
              (expand s)
              (screw s r message-position)
              (case (elt r (rem message-position hash-length))
                (0 (flip r (rem message-position hash-length))
                   (if (= 0 message-position) nil (decf message-position)))
                (t (flip r (rem message-position hash-length))
                   (invert s))))
             (1
              (half-screw s r message-position)
              (let ((idx-a (rem message-position hash-length))
                    (idx-b (rem message-position (array-total-size s))))
                (cond
                  ((= (the bit (elt r idx-a))
                      (the bit (elt s idx-b)))
                   (expand s)
                   (screw r s message-position))
                  (t
                   (flip r (rem message-position hash-length)))))))))
    (values r *log-out*)))

(defun hash-string (message length)
  (declare (simple-string message)
           (fixnum length))
  (let* ((bits (loop for c character across message appending
                    (coerce (bit-smasher:bits<- (char-code c)) 'list)))
         (bit-message (make-array (* 8 (length message))
                                  :element-type 'bit
                                  :initial-contents bits)))
    (mpfhf bit-message length)))

(defun main ()
  (let ((message (second sb-ext:*posix-argv*))
        (length (parse-integer (third sb-ext:*posix-argv*))))
    (format t "~A~%" (hash-string message length))))

Not shown above, the MPFHF returning a log stream (and the log lines, for sanity's sake) so that the bot can slam it into my pastulator. As of this update, the logs are so verbose that the pastulator won't eat them for larger hashes, and my MPFHF implementation consumes absurd amounts of memory when logging.

The test cases are from the Trilema article linked above, and as they are notionally from runs of an implementation of a different spec, none match.

Reconciliation notes, bug reports, portability mistake reports, and any other sort of suggestions welcome.

---