Sunday, December 30, 2012

"Blue Collar Coders"?

A guy wrote a blog post about "Blue Collar Coders" and I read it and broke out in hives.

I'm writing this article to articulate, mostly to myself but maybe you'll be interested too, just exactly what it is that raises my hackles in what he was saying and just how I see the world in a way that differs from what I was reading.

I like the guy. He fights malaria for goodness' sake. I just feel some dim and bizarre disconnect between what he's saying and how I see the world and I'm trying to nail it down.

Let me first lay out some concepts I like to work with:
  • Work: I mean dignified work that engages mind, body, and soul to create beauty and value for our human society while preserving or even enhancing that natural creation in which we find ourselves. Each person should be so fortunate as to find that expression of self in their work, and we as a society should strive to arrange the economy to generate and promote such work.
  • Drudgery: labor that does not fit the above description of work. Anything that degrades you, that uses you up and wastes you, that prevents your flowering and engagement in that calling to which your inner nature bends you, should be despised and shunned. This has nothing to do with ideologies or creeds. Especially men and women should not be made to do the work of machines (I'll return to this point, it's central.)
  • Bucky: I am a pure, unapologetic, Bucky Fuller fanboy. I consider him an enlightened being (check his origin story, he died on the shore that day, mark my word) and I am disappointed that his insights are not taken more seriously by, well, pretty much everybody.
Let me point out that Bucky's training and vocation was engineering. He was one of those who take math and make things that work: buildings and bridges that don't fall down, machines that go up and reach to the actual Moon and then come back-- with people in them! That sort of thing. He was used to using math and he was used to dealing with reality in very concrete ways.

As an engineer he realized that his work benefited more people more efficiently the larger the scale at which he worked. This is an incredibly obvious point that goes completely over the heads of so many people. I took it for a metaphysical statement for years before I realized he was being literal. The greater the scale of your design, the greater the possible efficiency.

He realized that, to be of the greatest use (to the world, society, his family, himself) he should work at and for the largest (available) scale, i.e. all of humanity, "world-around", which he promptly began to do.

It was from this consideration that the famous geodesic structures eventually "fell out", this was his starting point:

"If I work for ALL Humanity the world over, I will maximize my utility."

(And, as a side effect, he noted that the world would reciprocate without him having to "earn a living" and this turned out to be exactly the case.)

As an engineer, working for global humanity, he calculated that we would be able to supply our needs with approximately two years of labor per lifetime by sometime in the seventies.

Let me unpack that statement a little.

He calculated that, with the technology available and reasonably projected to be created (which it has been) by the mid-70's, if we were to align our technological means with our actual needs for food and shelter and what-not, we could create an economy where you would work for about two years and then retire, having paid in full for the rest of your, uh, maintenance for the rest of your life during that "career".

Two years and then retire. Take the rest of your life off and do something meaningful with it. Write a novel or something.

And this is not some Utopian pie-in-the-sky claptrap. This is the reality that we are already past living in, we just have to notice and make it happen.

Which, at last, brings me to my point.

WTF is a "Blue Collar Coder"?

I think my fundamental disagreement with what Anil is saying is that it seems to me to be such a linear extrapolation in a time that is so obviously proceeding with ever-accelerating abandon.

Let me quote some specific bits to explain what I see as symptoms of this narrow viewpoint (and I'm only picking on Anil here because he's here, lots of people seem to be operating with similar blinders on.)

"...our industry can grow in a very meaningful way by giving lots of young people at a high school level the knowledge they need to learn jQuery straight out of high school, or teaching maintenance on a MySQL database at a trade school without having to get a graduate degree in computer science."
Good Lord! Shall we teach just enough literacy to let people read maintenance manuals?

Our "industry" is the revolution (of replacing a history of endless drudgery with a "Star Trek"-like utopic present) not some idol to which we sacrifice the creative intelligence of our ignorant masses!

I agree whole-heartedly that the normal person doesn't need to know all the intricate ground covered by a graduate degree in CS, but the fundamentals of Turing Machines and their use to solve human problems are not so esoteric and elaborate as to be beyond the understanding of mere mortals, relegating them to only ever approaching once safely wrapped in the (simple!?) abstractions of jQuery or MySQL.

I firmly believe that the basic concepts of the Turing Machine et. al. form a sort of alphabet of thought, and that widespread learning of this shared medium for complex structured thought will transform society (and the economy, and our industry) in unimaginable ways, next week.  (And I've put my money where my mouth is.)

Maybe that's what he means and I'm mis-reading it.
"...someone has to run that intranet app at an insurance company, and somebody has to maintain the internal iOS app at a law firm, and those are solid, respectable jobs..."
If the infrastructure of the future requires an army of half-smart technicians to operate it then it is badly designed and it simply provides convenient cubbyholes to stash those humans too stupid to be more useful than some algorithm (a machine).

Basically, and this was understood decades ago, in the limit of automation and ubiquitous computation the question becomes, "What are people for?"

Yes, we need to bring the normals with us into the bright and shiny new future (I calculated long ago that one couldn't just exterminate them, and it is considered extremely bad form) but there's no reason to trick them into drudgery just to have an excuse for not letting them starve.

Let them sit on the couches and play the video games if that's what they like, who are you, their dad?

I think we'll find, if we stop hitting them with stupid-sticks in childhood (I'm looking at you organized educational systems) that most people are in fact interesting, intelligent, curious, and driven to express themselves in glorious self-directed vibrant creative constructive expression.  (And if some of them turn out not to be, well then, we can exterminate just those.)

But vocational training to operate systems and pull levers that could be automated but deliberately are not...?  You are looking through the telescope from the wrong end. "Let the robots do the work and we'll take their pay." It's sort of the inverse problem of the dancing robots Sony keeps making. (Wtf Sony, I like to dance! Make a robot to do the dishes.)

Automation is a good thing.  From the point of view of the machines Moore's Law means that humans are becoming exponentially more valuable! (Thanks to Mark Miller for that gem.  It's actually "expensive" rather than "valuable" which isn't quite the same thing, and the difference is what this post is about really.)

Unless you can do something that a machine can't be programmed to do you have a serious problem, and I really don't think your optimal solution is to be a digital factory worker.  What will your children be? And their children? We are deciding today what your distant descendants will be doing.  Plan wisely.  Take your time and give it all you've got.

"I am proud of, and impressed by, Craigslist's ability to serve hundreds of millions of users with a few dozen employees. But I want the next Craigslist to optimize for providing dozens of jobs in each of the towns it serves, and I want educators in those cities to prepare young people to step into those jobs."

That's insane. Sir, you have dranken the wrong kool-aid. Spit it out and go have your stomach pumped.

You're not talking about creating a platform for normal people to become life-coaches and facilitators and share their inner abilities and talents with each other, you seem to be literally describing deliberately making craigslist work less efficiently to generate unnecessary make-work for innocent normals just so they can "have jobs". Stop it.

I don't understand at all.  A "job" is not something you need. You need to contribute to society and you need support from society as well, and we currently structure that relationship primarily through jobs and "the economy" but that structure is what's going away.

The question is what to replace it with, not how to create a living museum for it out of our technological infrastructure.  In your lifetime the current economic paradigm will become as quaint and bizarre as a Renaissance Faire.

This is the reality that our high schools would be preparing us for in a perfect world, not how to learn jQuery.

The handwriting is on the wall, plain to see for all. With the rapid sweep and accelerating scope of technological development, most people will be left behind.  Just sitting there you are becoming relatively more ignorant as a sort of inflation of the mind occurs all around you.  There is no way you can keep up with it all, so how is a normal person going to do it?

These are the options for normal people:
  1. Exterminate them.
  2. Enslave them.
  3. Pay them to stay home and play video games.
  4. Trick them into make-work and drudgery.
  5. Something else...
To be clear, I am in favor of #5.

"...our current investment infrastructure for tech companies optimizes for a distribution of opportunity and wealth that looks almost feudal. As I mentioned broadly in To Less Efficient Startups, venture capital today generally strives to make a handful of early founders and employees of a company enormously wealthy (alongside the investors, of course), and then to have a subset of employees profit when there's a liquidity event."
I totally agree with this. I live in San Francisco and work in the tech sector as a senior developer and I can attest first-hand that this is exactly what's going on down here.  Everybody is high-as-hell on a sort of gold rush mentality and a ton of capital and talent are burning, burning and very little is actually getting done.  And only a few people are getting rich no matter how many twenty-dollar bills I give to homeless people.

This is utter bullshit and a serious distraction from the real news in technology which is the massive non-linear "singularity" we're navigating right now, not the (lottery-grade) chance to hatch the next Instagram and cash out.

I still don't think the way to share the wealth is to deliberately design computer systems to require manual baby-sitting. This is not the "Small is Beautiful" production of the masses, it's just abuse.

"...there's a broad and noble history of blue collar workers organize to strengthen workers' rights and improve working conditions for their peers; It's a tradition we'll do well to maintain in the tech world."

As for needing trade unions, coders, the real ones not script-children, rule the fucking world. Why would we need a union?  That makes no sense.

As an über-techno-elite myself, I don't negotiate: not only do I have everything I want already, but if you try to mess with me I will invent a thing that goes back in time and makes you never have existed. See how that works? You can't compete with that (but I will teach you how to do it too if you'll just stop being stupid.)

Seriously though, my working conditions are already so great it's embarrassing.  What do I need, a guy waving a palm frond over me?

You could have what I have too if you were born as smart as I was and had dedicated the whole of your life to your craft like I have.

I skip meals and work 100-hour weeks not because some jerk convinced me it's "how start ups are", I do it because that's how I am.

I've always done this, I would do this even without being paid.  (In fact I did for years until I got sick of being broke and went and got a real job.)

You cannot teach normal people to do what I do. And it would be wrong to try.  (I've seen it, it is wrong.)

For whatever reason, I'll never have to worry about my job the way factory workers and others have had to worry about theirs.  The means of production are in my head and come with me if the boss tries to lock the office door.  There are no scabs available.  I do not need a union.

If he means unions to protect pointless "jobs" of make-work to keep the unruly masses in line under the illusion that they must "earn" the wealth that our machines are pouring ever-faster into our collective hands, well, I think you can guess that I am not in favor of that.

Now, do I deserve to have all the money while you and your family starve in the street?

I don't think so. Who knows, and, really, who cares!?  No one sane and worth considering is interested in that sort of future.

The machines are generating the wealth.  Someone like me might be needed to build them but once they exist the wealth they generate is not essentially mine (and never mind the ideological wrangling over ownership and property, just concentrate for a moment on the physical aspects.  Pretend I drop dead after creating the machine and leave no descendants and no will...  now who owns the output of the cornucopia machine?)

So, the machine is generating the wealth. How do we allocate it?  Really this is the opposite of a problem, yes?

I have my own ideas, but I think what I'm really trying to say with this post is please, please, can we talk about option #5 above, and not concern ourselves with how to trick the normals into busy-work with our clever computer programs?

I'll end this post with an A.I. koan:

Q: What can you do that a machine cannot?
A: Could a machine answer that question?

Friday, December 14, 2012

Yet Another Mathematical Proof of God

Gödel Machines give us a mathematical way to define the ineffable but fundamental rightness that maximizes one's benefit while maximally serving and supporting the entire Universe.
It seems like He's everywhere these days.

From a post on the VPRI mailing list I learned of the Gödel Machine, a Turing machine loaded with an axiom solver and an axiomatized description of itself, hardware + software (including the solver software) that can make "provably optimal self-improvements".

Given a utility function that can let the solver solve for whether a course of action (self-modification) will improve some utility metric (shorter runtime, lighter memory usage, whatever) the machine can decide to rewrite itself to optimize that metric.

It's a general self-optimizing problem-solver. Go look, it's amazing

Once the alternating waves of terror and elation subsided a little I had a curious idea.

How to decide what utility function to give to the machine? What is the utility of the utility?  What is the most useful way to become more useful?

How to optimize the optimization of optimizing?

Obviously this is one of those self-referential functions that becomes totally abstract when detached from a specific “self” with specific “goals” that can admit of optimization. Or does it?

If, as seems unavoidable, the entire Universe is a great quantum computer, then it must be just such a GM, and, since there's no place outside the Universe for the fitness function to reside, it must also be part of the GM's (self-optimizable) program.

So what is the Universe optimizing?

The only property that makes sense, across all known phenomenon, is time. The Universe is optimizing its own duration, it's optimizing Eternity.

The Universe can be said to be that program which, when run across all possible universes, results in itself (and this includes all physical and quantum variables or what-have-you what-so-ever, including time.)

Obviously the Universe must compute your optimal “path” too just like the spiritual folk have been saying all along.

In fact, there's an old Sanskrit word for this Universal (and deeply personal) self-optimizing function: Dharma

Mathematically, in the context of the GM machine you could say:
= ()

Biological organisms exhibit this property vividly: Life is a chemical tautology, there's no meaning to the geometric perambulations of the molecules and therefore no purpose. In the absence of purpose there can be no measurement of efficiency. The only thing governing the chemical process is therefore endurance. Those systems which continue will tend to continue over time because they continue, they optimize the optimizing of continuing, they are the Dharma function.

Keep in mind that the chemical Dharma function has, apparently, made you, whatever you are, and now you are on the hot seat as far as carrying on the game.

Tag! You're it!

Friday, October 19, 2012

Fun with IPython

Recently I had to git-rename (move) a few files according to a simple pattern (prepend "test_" to the name if it ends in ".py") and my shell fu had become rusty.  I wanted to do it in Python.

Enter IPython and its wonderful facility for mixing a little bit of shell goodness into your Python code.  Look what worked:

In [3]: fs = !ls

In [4]: fs
Out[4]: ['', 'cache', '', '', '']

In [5]: for fn in fs:
   ...:     if fn.endswith('.py'):
   ...:         dest = 'test_' + fn
   ...:         !git mv $fn $dest

In [6]: !ls
Neat, huh?

Monday, September 17, 2012

Stallman is Correct

  • Confusion around the GPL and its purpose
    • Many folk writing fine FOSS software are condemning GPL et. al. for being what it is designed to be.
    • Indicates misunderstanding of fundamental purpose.
  • The GPL is a weapon.
    • Meant to curb anti-social behavior on the part of people who will not do it voluntarily.
  • Fools vs. Genius
    • Making money is not the same thing as creating value.
    • Non-physical restrictions on copying bit-patterns attempt to create an artificial scarcity.
      • As foolish as attempts to legislate the value of Pi.
    • People are foolishly introducing want and lack where none previously existed.
    • They're not creating value but rather interfering with it, restricting it.
  •  But what about the starving artists!?
    • Bucky calculated that we would be able to work two years and retire, having paid for our living for the rest of our lives in those two years, by sometime in the 1970's.
    • The trick is we have to align our technology with our needs efficiently.
    • If we align our technology with our actual needs we should expect a nearly Utopian system to happen automatically.
  • We make a system where nobody starves, artist or otherwise.
    • The solution to the starving artist problem is global. Nobody starves.
    • It doesn't solve the human condition, but it does alter the set of daily problems with which we all must cope.
  • Do we want to be miserable and venal, or joyful and abundant?
    • Understanding the GPL and its purpose in light of the larger context and sweep of history is essential to the "Open Source" movement and to the very spirit of being a hacker.
    • Hackers are very much warriors against fear and lack and sorrow and the myriad miseries of human history.
    • The GPL is a weapon to prevent ignorant or anti-social people from using the value you create as a "hook" to ensnare people into artificial dependence.
  •  The only obstacles are in our minds.
    • The technology exists to create an abundant Utopian physical environment for everyone.
    • Emotional problems- tons of solutions EFT, Kindness, Prayer, etc. We have that "technology" too.
    • Ignorance
      • Not enough people simply know that this is possible. Now YOU are one of the ones who do.
      • The GPL is a part of this, that's why it is designed the way it is, and that's why it's ludicrous to criticize it in ignorance of its purpose.
    • Will. Choose life, love, abundance, joy, happiness and well-being. Choose GPL.

Monday, September 10, 2012

NoSQL (which should be NoRM, but that's silly) is actually NoACID

ACID-compliance and the Relational Model are orthogonal and it would be unfortunate to throw out the baby of a mature and well-known data modeling ecosystem with the bathwater of unscalable constraints on data access.

Scaling your database becomes crucial as number of simultaneous clients you're attempting to serve begins to ramp up exponentially. A modern web app can make ridiculous demands on the software even with powerful servers running it.

As a reaction to the limits of ACID-compliance in scalable data storage people have begun to use new tools collectively referred to as "NoSQL".

The "NoSQL movement" is a name for the general recognition that RMDB solutions were beginning to seem overwhelmed by the task.  Lots of interesting and useful software has grown up to fill the perceived gap. But as this has happened, many folk who maybe should know better but are blissfully unaware that SQL (a Query Language) is not and has never been the same thing as RM, the Relational Model, have, in the push for scalable data storage, largely overlooked the benefits of RM.

Mapping real-world phenomenon into digital representation is still a very open field. It's not really possible to capture reality in digital form. Our best efforts to come should not be expected to involve disregard for the best efforts of the brilliant people who have come before us.

Building a data storage system in ignorance of Cobb is like building a theory of physics in ignorance of Newton.

You might be able to do it, but why?