tag:blogger.com,1999:blog-52746026095989471612024-03-05T01:47:48.795-08:00CalrocPostcards from the Post-Singularity World.spfhttp://www.blogger.com/profile/04562282204061029861noreply@blogger.comBlogger48125tag:blogger.com,1999:blog-5274602609598947161.post-41682312202149627402014-01-24T10:41:00.000-08:002014-01-24T10:43:02.841-08:00That Time I "Met" John CleeseI am a huge Monty Python fan and, as for many fans, the cast are like unto gods to me. Without meaning any disrespect to the others Mr. John Cleese is my favorite. He is also something of a hero to me due to that time he hurt his knee while <a href="http://www.pbs.org/wnet/nature/inthewild/cleese.html">helping lemurs</a> by going to where they live and looking at them. My mom was so impressed with him that she donated to the wildlife fund associated with the <a href="http://www.pbs.org/wnet/nature/inthewild/cleese.html">Lemur Viewing</a>.<br />
<br />
In any event, this is the story of how I "met" John Cleese.<br />
<br />
I was working at a movie theatre in Santa Barbara. There was a movie playing about some Irish guys who were wrongfully accused of setting a bomb and put in prison. The movie was called <a href="http://www.imdb.com/title/tt0107207/">"In the Name of the Father"</a>. Bono wrote a song for it.<br />
<br />
So there I am behind the concession counter. It was a slow night and the lobby was deserted except for me and a co-worker, a girl named Tali, who was also behind the counter.<br />
<br />
A couple walked in and approached to get some goodies for the movie. The man was quite tall. They arrived at the counter and I was stepping forward to help them when my eyes reported an astounding sight: <i>The man was JOHN CLEESE!!!</i><br />
<br />
At that point my brain exploded. BOOM!<br />
<br />
The "conversation" that ensued is etched indelibly in my mind:<br />
<br />
Me: "You're John Cleese!" (Ooo Captain Obvious!)<br />
<br />
Cleese: Stoic silence.<br />
<br />
Me: "You're the funniest guy I know!" (Oh no! I don't "know" him!)<br />
<br />
Cleese: Stoic silence.<br />
<br />
Me, stammering now: "N-n-not that I <i>know</i> you.. I mean.." (Trainwreck!)<br />
<br />
Cleese: Stoic silence.<br />
<br />
At this point I gave up trying to use words, and my sole mission was to see that Mr. Cleese and his date got their popcorn or whatever in a timely fashion. Since I was totally unable to talk and barely able to stand, I just sort of staggered back and waved Tali forward to help them.<br />
<br />
She stepped into the breach and Mr. Cleese and Tali, who had no idea who he was, proceeded to have a brief and pleasant little conversation as she served them some popcorn and drinks, while I leaned up against the popcorn machine trying not to hyperventilate and basking, just basking, in the Presence.<br />
<br />
After that Cleese and the lady with him went into the theatre, and time started up again, passing along in its customary way as if nothing extraordinary had happened.<br />
<br />
I'm pretty sure that after the movie they left through a side door.<br />
<br />
<br />
The coolest thing was the very British and unprepossessing way that Mr. Cleese ignored my antics.<br />
<br />
It's hard to explain, but it a was very polite way to acknowledge my worshipful attitude without pretense or conceit, by way of totally ignoring this kid having a near-breakdown just from being near him. He sort of looked straight ahead with an air of "Yes, well, these things happen. It's not a bother." I'm sure the lady with him was very impressed by his effect on me (she did smile a bit) but he managed to act like he was waiting for a train or something. It was totally cool.<br />
<br />
He was very gentlemanly and, as soon as I had retired from the field, he had, as I said, a very normal and pleasant conversation with Tali, undisturbed by me gaping and gasping like a fish out of water just a few feet away. A class act.<br />
<br />
So that's my story of how I "met" John Cleese. I only hope I get to meet him again someday and ask him if he remembers that incident. How cool it would be to be part of a memory in the mind of John Cleese!spfhttp://www.blogger.com/profile/04562282204061029861noreply@blogger.com0tag:blogger.com,1999:blog-5274602609598947161.post-8235694442343580422014-01-18T13:04:00.000-08:002014-01-18T13:04:15.960-08:00Love is a PowerRe: <a href="http://www.slate.com/articles/technology/technology/2014/01/do_what_you_love_love_what_you_do_an_omnipresent_mantra_that_s_bad_for_work.single.html">"In the Name of Love"</a><br /><br />Oooo! That got under my skin!<br /><br />The author is picking on a tenet that I hold dear so that accounts for my emotional reaction.<br /><br />But I find the thinking here fundamentally flawed, and, ironically, it seems flawed precisely because it displays just the same privilege-bias that the author decries!<br /><br />The author seems to be saying that only privileged people get to choose their work, that if you are poor or otherwise unprivileged you are doomed to work at unlovable jobs and never have freedom or dignity.<br /><br />That is just wrong and it's an example of the very bias the author is complaining about.<br /><br />Now I am not saying that there are no exploitive jobs. Obviously, there are people who will exploit you and your labor if they can. Some of them are that way because they are jerks, others are simply misguided.<br /><br />What I am saying is much deeper and more "radical" than that. I'm telling you that even a prisoner on a chain gang, or the people of N. Korea, can have dignity and work with love and enjoyment. It's not always easy, but to deny this plain and universal fact is to head down a path denigrating to the inherent humanity of the very workers that this article is (sort of) championing.<br /><br />Dignity and freedom are not external "things" that can be granted or taken away by someone else. They are intrinsic Universals that are always available to every human being regardless of their external circumstances.<br /><br />Dignity and freedom come from inside you. You cannot be separated from them because they are aspects of your own deeper nature.<br /><br />It is possible to forget this, to put your power outside of yourself, to give it to your "boss" or "the machine", and to succumb to the illusion that you are exploited and mistreated by powers beyond your control.<br /><br />But this is not a real thing, and always in the end dignity and freedom re-assert themselves. No physical condition can trump the very real inner power of dignity and freedom.<br /><br />To insist that "the unprivileged" are not able to "do what they love and love what they do" is to deny their own humanity and power. Every human has the ability to choose freedom and dignity. (In a sense that is what it means to be human.)<br /><br />Certainly external circumstances can ease or hinder your ability to reach the inner wellspring, and <i>that</i> is the motivation to improve working conditions (globally, for everyone.)<br /><br />There is very real need for improvements in working conditions in many many places all over the world. But the idea that it is important to find love, happiness, dignity and freedom in your labor is NOT in conflict with this, in fact it is a primary reason for insisting on good working conditions!<br /><br />We <i>must</i> work. As Krishna told Arjuna we cannot help but act. Living is action (<i>karma</i>) and we must take care that our actions are guided by wisdom and done well.<br /><br />The idea that you can and should "do what you love and love what you do" arose as a counter to the misguided idea that work is something you hate that you do just to get the money to pay your bills and keep the lights on and the pantry stocked. To confuse the basic concept with a sort of bromide for the blind egos of a privileged elite is a terrible mistake.<br /><br />Let me wrap up by dissecting a specific passage from the article:<br />
<blockquote class="tr_bq">
Superficially, DWYL is an uplifting piece of advice, urging us to ponder what it is we most enjoy doing and then turn that activity into a wage-generating enterprise. But why should our pleasure be for profit? And who is the audience for this dictum?</blockquote>
Where to begin? So worng. Wow.<br /><br />I'll take it in reverse order:<br />
<blockquote class="tr_bq">
And who is the audience for this dictum?</blockquote>
Everybody. The intended audience is all of humanity everywhere. The great promise of technology is not in enriching Zuckerbergs and Jobses but in getting out from under the burdens of our past and creating a world where everyone has the best opportunity to express their inner dignity and freedom and <i>love</i> daily, all the time, not excluding their working hours.<br />
<br />
<blockquote class="tr_bq">
But why should our pleasure be for profit?</blockquote>
The premise is wrong. "Monetizing" your leisure is not what "do what you love, love what you do" means.<br /><br />Love and labor are much deeper things than pleasure and profit.<br /><br />We must work. Society has benefited us and we are obliged by love and duty to give back, to contribute from ourselves to our fellow humans, to carry out our responsibilities and keep things going and getting better and better for the next generations (our posterity.)<br /><br />To call the satisfaction and gratitude that is engendered by performing your work well and with love and dignity merely "pleasure" is to cheapen it.<br /><br />And to work merely for profit is to fall into a kind of hell. "He who desires the fruits of his labor is a miser." (Krishna again.) Loving work done well is its own reward. That it grants the means to live is one of the aspects of working for love that makes it so miraculous and wonderful.<br /><br />Sweeping up, washing dishes, picking fruit, collecting garbage, none of these are inherently undignified, none of them are beyond the possibility of being done with love and enjoyment, done for the benefit of the people around us whom we love and care about. I know from experience that this is true.<br /><br />It is terribly prejudiced to insist that someone working a "menial" job cannot experience love and deep satisfaction from their work.<br /><br />Again, I am not denying that there are exploitive jobs in the world. Obviously there are. But I insist that this is counter to the spirit of DWYL/LWYD. It is vitally important to mold our technology and economy so that working conditions allow for and even foster wholesome labor, done freely with dignity and love.<br />
<blockquote class="tr_bq">
Superficially, DWYL is an uplifting piece of advice, urging us to ponder what it is we most enjoy doing and then turn that activity into a wage-generating enterprise.</blockquote>
No. it is not a "piece of advice". It is a <i>rallying cry</i> in the face of all injustice and suffering and exploitation in the world and it challenges us to remember, to never forget, that life <i>is</i> labor <i>is</i> love.<br /><br />Search yourself: find not what you "most enjoy" (superficial sensory gratification), but what gives you the deepest and most moving and important work (<i>karma</i>, action) that you can do to improve the world and express your own deep inner being.<br /><br />This is something that anyone can do, at any time, in any circumstance. It is a privilege that everyone has and it can never be taken away.<br /><br />Love is a power.spfhttp://www.blogger.com/profile/04562282204061029861noreply@blogger.com0tag:blogger.com,1999:blog-5274602609598947161.post-90487980327970922132013-12-12T14:16:00.001-08:002013-12-12T14:16:49.466-08:00Getting your Workers to Subsidize the Hiring ProcessThe thing about programs like HackReactor is that they are methods for the big tech companies to gain access to a kind of super-technician programmer. There is a huge problem in finding and hiring competent programmers. I've seen it myself. There is typically no good way for a company to really know if a given candidate is really a capable programmer or not. There's also a huge downside to hiring someone who then turns out to be not very good. In fact people speak of "negative productivity" and it's a real phenomenon.<br /><br />In order to combat this issue, and to take advantage of the folks who want to want to try to catch the brass ring (of a well-paying career in the software industry), they've come up with this idea of a programming "boot camp". They basically get people to pay for their own probationary term and then filter them for those people who are likely to do well as junior "technician" developers. The students are, in effect, subsidizing the hiring process.<br /><br />In this case, the reason why HackReactor can boast of such high rates of their "post-grad" hiring is that they are very very careful up front about who they let in. That "interview" process they talk about is designed to vet people based on how well they can pick up tech and software stuff. It's openly acknowledged that there are people who "just get" computers and people who really struggle. HackReactor are very careful about only accepting people who are already strongly biased toward being able to "hack it" (no pun intended) and then teaching exactly what they want them to know, so that they come out of the program already proven (to some degree) and trained. Of course they get hired. :-) That's what the program is really for: finding and supplying a work force.<br /><br />I would recommend attempting the "interview" because you will learn a lot just from that, however, unless you are just wanting a job as a mid-level software technician the actual program would probably be a waste of your time and effort.<br /><br />As a counter-example you could learn everything they are teaching from a community resource such as the <a href="https://developer.mozilla.org/en-US/">Mozilla Developer Network</a>.spfhttp://www.blogger.com/profile/04562282204061029861noreply@blogger.com1tag:blogger.com,1999:blog-5274602609598947161.post-4719836695244663132013-11-26T11:15:00.001-08:002013-11-26T11:15:53.637-08:00Fostering Good CharacterGiven the advent of ultra-powerful technology (<a href="http://www.transatomicpower.com/">fusion power</a> with <a href="http://en.wikipedia.org/wiki/Nanotechnology">nanotechnology</a>) the crucial problem before us today is the fostering of <i>good character</i>.<br /><br />Religious folk (the ones who are doing it right in my estimation) understand this as the continual obligation and joy of remembering God and living in a goodly fashion. Atheists, agnostics, and non-religious but spiritual folk can understand that only wise and good people can be trusted with such tremendous physical power.<br /><br />We must discover and use whatever means we can to foster good character and wisdom.spfhttp://www.blogger.com/profile/04562282204061029861noreply@blogger.com0tag:blogger.com,1999:blog-5274602609598947161.post-19949320213364346902013-07-22T15:23:00.000-07:002013-07-22T15:23:41.848-07:00Oh SailingOooooOOOOOOooOOoOOAAAaaaah! NOW I get it. <i>Sailing.</i><br /><br />The first passage I made on the <i>Adios</i> was from South Beach Harbor just south of the Bay Bridge in San Francisco to the Berkeley Marina in, you guessed it, Berkeley.<br /><br />I wasn't sure of my sailing chops so I figured I would just motor over and I left the sail under wraps. At first I tried to go around the west side of Treasure Island but as I got closer to what they call "The Slot" (the way between Angel Island and Treasure Island which faces the Golden Gate directly and catches all the wind and current) the waves became just high enough to give me pause and I went back around the east side of the island.<br /><br />After that it was fairly smooth sailing (I should say motoring) until I got out towards the Berkeley Marina and was approaching the ruins of the old Municipal Pier, which stretch west through the water off of the marina for a surprisingly long way. I came out from the lee of Treasure Island and the waves picked up again. They were not a danger to the boat but they kept raising the stern high enough to bring the prop out of the water and cause the engine to rev uncomfortably.<br /><br />I got in to the protection of the breakwater and things calmed down, but it left me with the jarring feeling that I might also have gotten into more than I could handle.<br /><br /><br /><br />It turns out I was doing it wrong.<br /><br /><br />In fact, the trick to travelling in a sail boat is to <i>sail</i> it. Who knew?<br /><br />The next passage I made was from Berkeley to the Emeryville Marina, just next door and within sight of each other. Kids go sailing there in tiny little sailboats for fun and practice, so I figured it would be safe enough to try to actually sail there myself.<br /><br />I readied the mainsail but left it furled because the wind was astern (coming from behind) and making it difficult to raise it in the berth. I left the headsail down. One thing at a time. (You don't have to have the headsail up to sail, it just helps you go faster.)<br /><br />I cast off and used the motor to get out into the main open part of the marina then hoisted the sail, letting the motor push us very slowly into the wind and towards the main opening from the harbor into the bay. With the sail up and ready I motored out from behind the breakwater and into the bay. I went south through the gap at the end of the still-accessible part of the Berkeley Municipal Marina, which process they call "threading the needle", and switched off the motor.<br /><br />Now I was sailing, and it all made sense.<br /><br />You pay attention, then you think, then you set the sail and the maybe the tiller, and then... then the very forces of Nature herself carry you and your boat gently along. It's quiet, it's peaceful, it's transcendent.<br /><br />It's sailing.spfhttp://www.blogger.com/profile/04562282204061029861noreply@blogger.com0tag:blogger.com,1999:blog-5274602609598947161.post-23063707904601554302013-07-14T18:36:00.000-07:002013-07-14T18:36:52.629-07:00Everything's Okay: DON'T PANIC!As if living(-ish) on a sailboat and getting paid to work on robotics isn't cool enough, I am now learning Blender (the cool open-sourced 3D system) as part of my job. (I'm going to do mock ups of the robots using it!)<br />
<br />
Now there's an interesting thing that my screwed up nervous system will do. All afternoon I have been on the edge of panic. Weird, right? I should be stoked. I'm getting paid to learn Blender which is awesome and will enable me to do more awesome stuff, and this is totally okay.<br />
<br />
Except my nervous system keeps trying to freak out and tell me that there's something <i>really important</i> that I'm forgetting that I need to do <i>and I can't just sit here lighting up metaballs and rendering them all day! Dude, you have to get a job!</i><br />
<br />
Whoa there neurotransmitters! Steady on, little glands! I've checked and re-checked and we're all okay. There is, in fact, nothing I can think of that I should do today (it's Sunday afternoon) that I've left undone. Maybe call my mom. But it really is the order of the day to sit here and mess with Blender, and that will pay my bills.<br />
<br />
Wow. Just breath deeply. Everything's okay.spfhttp://www.blogger.com/profile/04562282204061029861noreply@blogger.com0tag:blogger.com,1999:blog-5274602609598947161.post-82646970192690150002013-05-01T13:41:00.001-07:002013-05-01T13:41:06.282-07:00If you don't know what you're doing, stop doing it...I just wrote this to a friend and it resonated with me enough to want to post it here:<br />
<blockquote class="tr_bq">
Really the issue is not so much coding as "policy", i.e. figuring out<br />
exactly what the client wants and typically educating them as<br />
to how they can actually achieve it with computers.<br />
<br />
I'm reluctant to work with people these days because no one seems to<br />
want to know how things work, they just want to have you (me) "make<br />
things go". I just don't respect that anymore.<br />
<br />
Despite being in a fairly desperate situation here I have been turning<br />
down work rather than committing...</blockquote>
People are not <i>getting it</i>...spfhttp://www.blogger.com/profile/04562282204061029861noreply@blogger.com2tag:blogger.com,1999:blog-5274602609598947161.post-58461054101374317732013-04-18T08:06:00.001-07:002013-04-18T08:06:06.264-07:00There is a Universal LanguageOver the last century a small group of researchers, working largely independently and in isolation, have discovered and refined an Universal Language.<br /><br />This is a logic-symbolic notation, not a spoken language (i.e. not like Esperanto), that captures and expresses the essence of logical reasoning in a direct and unmistakable way.<br /><br />The rules of logical reasoning (and Set Theory, etc.) expressed in the Universal Language admit of a decision procedure that is of unprecedented simplicity and power.<br /><br />It is the alphabet of thought.<br /><br />I'm still gathering threads and learning but I've compiled a few links and a bit of history:<br />
<ul>
<li>C. S. Pierce, Existential Graphs, circa 1890</li>
<li>Spencer-Brown, "Laws of Form"</li>
<li>Bricken, http://iconicmath.com/</li>
<li>Shroup, http://www.lawsofform.org/</li>
<li>Burnett-Stuart, http://www.markability.net/</li>
</ul>
For your sake and the sake of the children, go read this, and tell the people.spfhttp://www.blogger.com/profile/04562282204061029861noreply@blogger.com0tag:blogger.com,1999:blog-5274602609598947161.post-19604313794194478362013-04-12T10:51:00.000-07:002013-04-12T10:51:12.149-07:00Everybody KnowsSo it turns out everybody knows. So why doesn't everybody know?<br /><br /><br />I was reading <a href="http://hdl.handle.net/10092/2491">"Boundary Algebra: A Simple Notation for Boolean Algebra and the Truth Functors" Meguire 2007</a> last night and he lays it all out, better than I ever could. He mentions the NOR-gate thing in a footnote. Everybody knows.<br /><br /><br />So why doesn't everybody know?<br /><br /><br />If there is only one utterly simple and direct notation interpreted in a few straightforward ways that opens the door to Logic (all kinds including circuits) Set Theory, mathematics, every kind of structured thought that we've been separately developing, doesn't it make sense to say that there "is only one" notation?<br /><br /><br />Aren't the others historical artefacts of the journey, the life, of ideas that led us to the place where we could articulate the Laws of Form?<br />
<br />
<br />
Why not rebuild the edifice on such a foundation? I double-dog dare you. spfhttp://www.blogger.com/profile/04562282204061029861noreply@blogger.com0tag:blogger.com,1999:blog-5274602609598947161.post-75052524355886982722013-04-09T15:40:00.000-07:002013-04-09T15:40:05.982-07:00The Egg of Ouroboros - TOCI should be working, but...<br />
<br />
<span style="font-family: "Courier New",Courier,monospace;">The Egg of Ouroboros<br />A Notation for Tractable Reasoning<br /><br />Table of Contents<br /><br />0. Nonsensical Formalities<br /><br />I. "Formal Nonsense"<br /><br /> In the Land of Nomy<br /><br /> The Guardians<br /><br /> The Guardians Again<br /><br /> In the Land of Nor<br /><br /> Circuits<br /><br /> More Circuits<br /><br /> More Names<br /><br /> Meaning<br /><br /> Programming<br /><br /> Cybernetics [is Category Theory]<br /><br /> Gödel Machines<br /><br /> Intention<br /><br />Conclusion<br /><br />Appendix A: A Universal Circuit?<br />Appendix B: Curious Musicians<br /><br />References & Recommended Reading</span><br />spfhttp://www.blogger.com/profile/04562282204061029861noreply@blogger.com0tag:blogger.com,1999:blog-5274602609598947161.post-19929002401535768422013-04-06T16:19:00.001-07:002013-04-06T16:19:57.768-07:00What is left to be done?Really, what is left to be done?<br /><br />For the prepared mind the LoF formalism is the last thought one needs to have. It becomes evident that you could regenerate the Universe from any least part of it ("in a grain of sand" and all that.) And it also becomes obvious that one has access to the entire structure and knowledge of all the Universe, and that this exact moment is itself encoded and necessitated by the structure of structure, one has only to "grok", there is nothing else.<br /><br />For the unprepared mind all the mystic stuff is just so much annoying woolly-headed crack-pottery.<br /><br />The only thing in this for such a one is the (secular, temporal) advantages for building computing machinery. This is fun, but hardly useful. (I am speaking from the point-of-view of the Mystic now, where all Human experience is always and only for the purpose of transcendence and our temporal motivations are all revealed as mistaken attempts to achieve transcendence. From this point-of-view all our fancy toys are just more "maya", distracting illusion.)<br /><br />There are tremendous powers and abilities that we can "unlock" with our machines, but a sort of safety-net seems to operate naturally where people who are emotionally and rationally unprepared for the implications of the work are simply unable to approach it.<br /><br />How many minds could stare at a page of equations and recognize "the Destroyer of Worlds"? If the atom bomb were a secret and somebody tried to tell you about it you'd think he was mad, no? Even with the equations in hand it would be extremely challenging to realistically imagine the in-some-sense-obvious consequences.<br /><br />I have access to a well-stocked electronics lab and I am sorely tempted to develop some new physical machines with unexpected properties to "force" the issue, but at the same time, my real interest is in helping people transcend, not in developing more distracting technology.<br /><br />Honestly, I should go find a cave on the top of a mountain somewhere and just consider myself lucky that no-one is trying to nail me to anything.spfhttp://www.blogger.com/profile/04562282204061029861noreply@blogger.com0tag:blogger.com,1999:blog-5274602609598947161.post-44728192668744185812013-03-31T12:57:00.000-07:002013-03-31T13:03:16.399-07:00The Circle ComputerI was investigating G. Spencer-Brown's <a href="http://en.wikipedia.org/wiki/Laws_of_Form">Laws of Form</a> by implementing it
in Python, and I found a very interesting <a href="http://www.lawsofform.org/interpretations.html">interpretation</a> in terms of the <a href="http://en.wikipedia.org/wiki/SKI_combinator_calculus">SK combinator calculus</a>.<br />
<br />
You can represent the "marks" of LoF as data-structures in Python composed entirely of tuples. For example:<br />
<ul>
<li>A mark: ()</li>
<li>A mark next to a mark: (), ()</li>
<li>A mark within a mark: ((),)</li>
<li>and so on...</li>
</ul>
<br />
<br />
It is known that the propositional calculus can be represented by the "arithmetic of the mark". The two rules suffice:<br />
<br />
<span style="font-family: "Courier New",Courier,monospace;">((),) == nothing</span><br />
<span style="font-family: "Courier New",Courier,monospace;">() == (), ()</span><br />
<br />
There are <a href="http://www.lawsofform.org/logic.html">details</a>, but essentially math and logic can be derived from the behaviour of "the mark".<br />
<br />
<br />
After reading "<a href="http://research.microsoft.com/en-us/people/dimitris/every-bit-counts.pdf">Every Bit Counts</a>" I spent some time trying to come up with an EBC coding for the circle language (Laws of Form expressed as tuples, See Burnett-Stuart's "<a href="http://www.markability.net/">The Markable Mark</a>")<br />
<br />
With a little skull-sweat I found the following encoding:<br />
<br />
<ol>
<li>For the empty state (no mark) write '0'.</li>
<li>Start at the left, if you encounter a boundary (one "side" of a mark, or the left, opening, parenthesis) write a '1'.</li>
<li>Repeat for the contents of the mark, then the neighbors.</li>
</ol>
<br />
<span style="font-family: "Courier New",Courier,monospace;"> _ = 0</span><br />
<span style="font-family: "Courier New",Courier,monospace;"> () = 100</span><br />
<span style="font-family: "Courier New",Courier,monospace;">(), () = 10100</span><br />
<span style="font-family: "Courier New",Courier,monospace;"> ((),) = 11000</span><br />
and so on...<br />
<br />
<br />
I recognized these numbers as the patterns of <a href="http://semarch.linguistics.fas.nyu.edu/barker/Iota/">the language called 'Iota'</a>.<br />
<br />
Briefly, the SK combinators:<br />
<br />
S = λx.λy.λz.xz(yz)<br />
K = λx.λy.x<br />
<br />
Or, in Python:<br />
<br />
<span style="font-family: "Courier New",Courier,monospace;">S = lambda x: lambda y: lambda z: x(z)(y(z))</span><br />
<span style="font-family: "Courier New",Courier,monospace;">K = lambda x: lambda y: x</span><br />
<br />
can be used to define the combinator used to implement Iota:<br />
<br />
i = λc.cSK<br />
<br />
or,<br />
<br />
<span style="font-family: "Courier New",Courier,monospace;">i = lambda c: c(S)(K)</span><br />
<br />
<br />
And the bitstrings are decoded like so: if you encounter '0' return i, otherwise decode two terms and apply the first to the second.<br />
<br />
In other words, the empty space, or '0', corresponds to i:<br />
<br />
_ = 0 = i<br />
<br />
and the mark () corresponds to i applied to itself:<br />
<br />
() = 100 = i(i)<br />
<br />
which is an Identity function I.<br />
<br />
The S and K combinators can be "recovered" by application of i to itself like so (this is Python code, note that I am able to use 'is' instead of the weaker '==' operator. The i combinator is actually recovering the very same lambda functions used to create it. Neat, eh?):<br />
<br />
<span style="font-family: "Courier New",Courier,monospace;">K is i(i(i(i))) is decode('1010100')</span><br />
<span style="font-family: "Courier New",Courier,monospace;">S is i(i(i(i(i)))) is decode('101010100')</span><br />
<br />
Where decode is defined (in Python) as:<br />
<br />
<span style="font-family: "Courier New",Courier,monospace;">decode = lambda path: _decode(path)[0]</span><br />
<span style="font-family: "Courier New",Courier,monospace;"><br /></span>
<span style="font-family: "Courier New",Courier,monospace;">def _decode(path):</span><br />
<span style="font-family: "Courier New",Courier,monospace;"> bit, path = path[0], path[1:]</span><br />
<span style="font-family: "Courier New",Courier,monospace;"> if bit == '0':</span><br />
<span style="font-family: "Courier New",Courier,monospace;"> return i, path</span><br />
<span style="font-family: "Courier New",Courier,monospace;"> A, path = _decode(path)</span><br />
<span style="font-family: "Courier New",Courier,monospace;"> B, path = _decode(path)</span><br />
<span style="font-family: "Courier New",Courier,monospace;"> return A(B), path</span><br />
<br />
<br />
(I should note that there is an interesting possibility of encoding the tuples two ways: contents before neighbors (depth-first) or neighbors before content (breadth-first). Here we look at the former.)<br />
<br />
So, in "Laws of Form" K is ()()() and S is ()()()() and, amusingly, the identity function I is ().<br />
<br />
The term '(())foo' applies the identity function to foo, which matches the behaviour of the (()) form in the Circle Arithmetic (()) == _ ("nothing".)<br />
<br />
(())A = i(i)(A) = I(A) = A<br />
<br />
<br />
I just discovered this (that the Laws of Form have a direct mapping to the combinator calculus by means of λc.cSK) and I haven't found anyone else mentioning yet (although <a href="http://memristors.memristics.com/Combinatory%20Logic%20and%20LoF/Combinatory%20Logic%20and%20the%20Laws%20of%20Form.html">this article</a> might, I haven't worked my way all the way through it yet.)<br />
<br />
There are many interesting avenues to explore from here, and I personally am just beginning, but this seems like something worth reporting.spfhttp://www.blogger.com/profile/04562282204061029861noreply@blogger.com1tag:blogger.com,1999:blog-5274602609598947161.post-80866438575200500412013-03-16T13:47:00.001-07:002013-03-16T13:47:03.874-07:00Lord Kelvin's ThunderstormOne of my very favorite mechanisms is the wonderful device of Lord Kelvin for separating electric charge. It is the second simplest electric generator (<span style="font-size: x-small;">the simplest electric generator is the hydroelectrostatic generator described by Gurdjieff in "All and Everything" constructed in a cave in the middle of nowhere and otherwise unknown to science</span>) and a cybernetic system to boot.<br />
<br />
Lord Kelvin's Thunderstorm consist of a means for splitting a flow of water into two stream of droplets and arranging each stream so as to fall each into a separate bucket.<br />
<br />
Conductors are lead from each bucket to the vicinity of the emitting nozzle of the opposite stream of droplets.<br />
<br />
That is all.<br />
<br />
Operation is simple:<br />
<ol>
<li>As the droplets flow they carry electric charge from the upper water to the separate buckets.</li>
<li>There will be a tiny imbalance in the electrical charge of the two buckets.</li>
<li>The conductor from one bucket will conduct the charge from that bucket to the nozzle feeding the opposite bucket, and vice-versa.</li>
<li>This charge near the nozzle will attract the opposite charge in the nozzle, and thus in the droplets carrying charge to the bucket below it, and vice-versa.</li>
<li>When these charged drops fall into the buckets they increase the charge in the buckets and the strength of the charge near the nozzles and thus the charge on the droplets that they then carry to the buckets.</li>
</ol>
A feedback loop is established that rapidly divides the charge on the water into positive and negative, uh, charge.<br />
<br />
There are lots of videos on the Internet if you want to see this in action. It's pretty dramatic. <br />
<br />
I wonder what would happen if you hooked up <i>three</i> dropper-and-bucket arrangements? Wouldn't that be neat if there was some undiscovered "triune force"?spfhttp://www.blogger.com/profile/04562282204061029861noreply@blogger.com0tag:blogger.com,1999:blog-5274602609598947161.post-47186920669079144802013-03-14T23:23:00.002-07:002013-03-14T23:23:55.275-07:00The General Program, Part ()A fellow named <a href="http://en.wikipedia.org/wiki/G._Spencer-Brown">G. Spencer-Brown</a> wrote a book called "<a href="http://en.wikipedia.org/wiki/Laws_of_Form">The Laws of Form</a>". In it he begins with the most fundamental, indeed metaphysical,
logical "step" or "unit": the act of distinguishing ...<br />
<br />
(Quite literally the first page of "Laws of Form" and the first verse of the "Tao Te Ching" are expressing the same thing.)<br />
<br />
From there he goes on to derive all of logic and mathematics. He uses a simple formalism of "marks" that captures the behaviour of logic and equations.<br />
<br />
Then, in "<a href="http://www.markability.net/">The Markable Mark</a>", a fellow named G. Burnett-Stuart has created an interactive circle-based rendering of the "Logic of the "Mark" and illustrated the build up of higher-order systems of reasoning rigorously from that basis.<br />
<br />
Check them out, they're very cool. (I'm working on a system that uses them as <a href="https://github.com/PhoenixBureau/TheGeneralProgram/blob/master/lof.py">a basis for reasoning programs</a>.) spfhttp://www.blogger.com/profile/04562282204061029861noreply@blogger.com0tag:blogger.com,1999:blog-5274602609598947161.post-18026164993229830772013-02-21T10:34:00.002-08:002013-02-21T10:44:08.080-08:00No Computers, No Money, No Cars<blockquote class="tr_bq">
<a href="https://plus.google.com/u/0/112892643650286015668/posts/VHGamMWgbKx">In "the future" there are no computers, no money, and no cars.</a></blockquote>
<br />
I wrote that to stimulate ideas about what "post-Singularity" life might be like. We have some ideas about "Singularity" life, here's one example: an "Open Source Film Project"called "<a href="http://www.heartofthesun.net/">Heart of the Sun</a>". The essential silliness of so much of this sort of techno-fetish fantasy stems from the lack of examination and comprehension of what one's "self" is.<br />
<div class="subtitle">
<br /></div>
<div class="subtitle">
Without going too far into it our "self" is that awareness of being at the core of us. We are that awareness, and everything else are only contents of our awareness.</div>
<div class="subtitle">
<br /></div>
<div class="subtitle">
It is typical to <a href="http://www.opensourcereligion.net/profiles/blogs/psychological-levels">identify with our bodies, our emotions, our beliefs, our values, etc.</a>, and say, "I am..." to these contents. But it can be easily shown that all of these contents, while having a temporary contingent existence, are impermanent and subject to eventual change and destruction.</div>
<div class="subtitle">
<br /></div>
<div class="subtitle">
(To get ahead of myself for a moment, this gives us the ultimate counter to trans-humanist fantasies: "And then what?")</div>
<div class="subtitle">
<br /></div>
<div class="subtitle">
We are awareness. All other phenomenon are <i>contents</i> of our awareness, including the entire physical Universe.</div>
<div class="subtitle">
<br /></div>
<div class="subtitle">
Now it doesn't matter <i>what</i> the contents are. You can be a starving homeless wastrel or a transhuman superbeing frolicking in the corona of the Sun, but if you haven't pierced the essential blindness of your condition you are just as trapped no matter what.</div>
<div class="subtitle">
<br /></div>
<div class="subtitle">
There is a direction which no one can point to, that leads to the place beyond places.</div>
<div class="subtitle">
<br /></div>
<div class="subtitle">
To arrive there is to pass beyond death and life, to remember yourself and return home.</div>
<div class="subtitle">
<br /></div>
<div class="subtitle">
(And there ain't any damn computers, nor money, nor cars there!)</div>
spfhttp://www.blogger.com/profile/04562282204061029861noreply@blogger.com0tag:blogger.com,1999:blog-5274602609598947161.post-67093529167166312762013-02-19T23:07:00.003-08:002013-02-19T23:07:46.037-08:00TransrationalityWhat do I mean by the term <i>"trans-rational"</i>?<br />
<br />
<br />We all know what "rationality" is, or think we do, but for concreteness here is the (current as of this writing) first paragraph from <a href="https://en.wikipedia.org/wiki/Rationality">the Wikipedia article</a>:<br />
<blockquote class="tr_bq">
In philosophy, rationality is the characteristic of any action, belief, or desire, that makes their choice optimal under a set of constraints. It is a normative concept of reasoning in the sense that rational people should derive conclusions in a consistent way given the information at disposal. It refers to the conformity of one's beliefs with one's reasons to believe, or with one's actions with one's reasons for action. However, the term "rationality" tends to be used differently in different disciplines, including specialized discussions of economics, sociology, psychology, evolutionary biology and political science. A rational decision is one that is not just reasoned, but is also optimal for achieving a goal or solving a problem.</blockquote>
<br />A little further on it mentions that the "<i>idealized form of rationality is best exemplified by computers</i>".<br /><br />But what if your goal or problem is already solved? What is the rational course of action in the absence of unsolved problems?spfhttp://www.blogger.com/profile/04562282204061029861noreply@blogger.com0tag:blogger.com,1999:blog-5274602609598947161.post-38373241250954163282013-02-15T18:43:00.000-08:002013-02-15T18:43:31.716-08:00Post-Singularity? Really?Yes, post-Singularity. Let me explain. Look at the following graphs (from the Wikipedia.)<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmzBpn7EgMzqfCLEQKGs3Vi9BRLwts9FMNJDxcxwekrhmY0ko22ZVgho_B1OIpRae5DrT8dCo1RT4VZutDdrmuca2ROZ_EW6e4xHj7JQkRr-h3lYhmioOJhwLv8-LaW1QntXbkhnVqhe42/s1600/Normal_Distribution_PDF.svg.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="204" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmzBpn7EgMzqfCLEQKGs3Vi9BRLwts9FMNJDxcxwekrhmY0ko22ZVgho_B1OIpRae5DrT8dCo1RT4VZutDdrmuca2ROZ_EW6e4xHj7JQkRr-h3lYhmioOJhwLv8-LaW1QntXbkhnVqhe42/s320/Normal_Distribution_PDF.svg.png" width="320" /></a></div>
Look at these graphs. They are "bell curves". Many kinds of properties of things occur in distributions that look like this when they are graphed like this.<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCx81bHmf1xNbx9lde1YjbtD1ZWFw99MJ_SJ-NVVFUkDahyphenhyphenEQQjFyi1e4aU_Y2cwTjVFutDCIJO_Oy-2l8C9p1WXeCMlCzoDr2lYewy54cfwPy8MH_uowLRdRPKDS8QD-f_IZVXEuBXGHo/s1600/Exponential.svg.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="265" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCx81bHmf1xNbx9lde1YjbtD1ZWFw99MJ_SJ-NVVFUkDahyphenhyphenEQQjFyi1e4aU_Y2cwTjVFutDCIJO_Oy-2l8C9p1WXeCMlCzoDr2lYewy54cfwPy8MH_uowLRdRPKDS8QD-f_IZVXEuBXGHo/s320/Exponential.svg.png" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
The green line is an exponential curve. (Ignore the red and blue lines, they are just hanging out, they're not part of this story.)<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjp5Im1UqJqg85V5uf1YSFBp8Tw2Y40pyTyMTejaCfwYtcnUpyLjfIdSADEa8W9z7NyRzYeH6mtylbBMKpFKZwzMcZu8c30JGYM3Me8XOU2QKyHY6rFu5SXW6RXUPGOFSf2Q2YnDyzE7WAr/s1600/1000px-Normal_Distribution_CDF.svg.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="204" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjp5Im1UqJqg85V5uf1YSFBp8Tw2Y40pyTyMTejaCfwYtcnUpyLjfIdSADEa8W9z7NyRzYeH6mtylbBMKpFKZwzMcZu8c30JGYM3Me8XOU2QKyHY6rFu5SXW6RXUPGOFSf2Q2YnDyzE7WAr/s320/1000px-Normal_Distribution_CDF.svg.png" width="320" /></a></div>
Now look at these graphs. They are called (sometimes) "S-curves" because they look a little bit like the letter "S".<br />
<br />
So what is the point? Why am I showing these to you?<br />
<br />
Okay, first the "<a href="http://en.wikipedia.org/wiki/Technological_singularity">Singularity</a>", as it's called, is the idea that our technology will exponentially accelerate and result in super-intelligent beings and radical technological "powers" (like living forever with super-medicine, etc.)<br />
<br />
Most people who think or talk about this act like it's following the green line in the middle graph: accelerating ever faster towards infinity.<br />
<br />
The more intelligent or thoughtful realize that we are actually in an "S-Curve" sort of a situation. Right now we are moving from one flat bit to the next flat bit, and we're in the exciting and scary up-and-down bit just at the moment.<br />
<br />
Now the interesting thing that I'm trying to bring to your attention is that not everyone is going through the up-and-down bit at the same rate nor at exactly the same time.<br />
<br />
Some are going faster than others. And some have started earlier than others.<br />
<br />
And some have started earlier and gone faster and arrived in the new flat bit ahead of the crowd.<br />
<br />
Look at the "bell curves" in the first graph. Imagine that a curve represented whatever quality it is, brains or smarts or whatever you like, that causes a person to begin to accelerate up that steep bit of the other curve, the "S-curve".<br />
<br />
It only makes sense that some lucky bastards would arrive before everybody else, right?spfhttp://www.blogger.com/profile/04562282204061029861noreply@blogger.com0tag:blogger.com,1999:blog-5274602609598947161.post-68438332387935290602013-02-15T04:00:00.001-08:002013-02-15T04:00:17.287-08:00Worth Knowing<ul>
<li><a href="http://en.wikipedia.org/wiki/Bucky_Fuller">Bucky Fuller</a></li>
<li><a href="http://en.wikipedia.org/wiki/Alan_Kay">Alan Kay</a></li>
<li><a href="http://en.wikipedia.org/wiki/Jef_Raskin">Jef Raskin</a></li>
<li>"<a href="http://pespmc1.vub.ac.be/ASHBBOOK">Introduction to Cybernetics</a>" <a href="http://en.wikipedia.org/wiki/W._Ross_Ashby">W. R. Ashby</a></li>
<li><a href="http://en.wikipedia.org/wiki/Gregory_Bateson">Gregory Bateson</a> </li>
<li><a href="http://en.wikipedia.org/wiki/Christopher_Alexander">Christopher Alexander</a></li>
<li><a href="http://en.wikipedia.org/wiki/Ted_Nelson">Ted Nelson</a></li>
<li><a href="http://en.wikipedia.org/wiki/Richard_Bandler">Bandler</a> and <a href="http://en.wikipedia.org/wiki/John_Grinder">Grinder</a>, et. al.</li>
</ul>
spfhttp://www.blogger.com/profile/04562282204061029861noreply@blogger.com0tag:blogger.com,1999:blog-5274602609598947161.post-38966842317691603782013-02-14T19:36:00.000-08:002013-02-14T19:36:12.945-08:00Cybernetics is a ThingThere is a basic fundamental result in Cybernetics that holds that any self-regulating system must contain a model of itself. We can examine this in the operation of so simple a self-regulating system as the common household thermostat.<br /><br />A common design for thermostats is to have a mercury switch attached to a bi-metal ribbon coil. The two different metals expand and contract with temperature changes to close and open the switch, which then activates or deactivates the heating system. The coil is adjusted by turning the dial to set the desired temperature.<br /><br />Now it should be obvious that the coil "measures" the ambient temperature, and can thus be considered an "internal" analog model of the "external" temperature. (I put "external" in quotes because the entire thermostat is always at that temperature so it is not exactly external, is it?)<br /><br />It should also be obvious that the angle of adjustment of the dial and the way that that affects the "set point" of the mercury switch is an analog model of the user's desired temperature.<br /><br />So where is the internal model that Cybernetic theory predicts <i>must</i> exist? The thermostat must contain a model of itself in order to operate, so where is it?<br /><br />There's a model of the current temperature, that's the current expansion/contraction ratio of the coil.<br /><br />There's a model of the desired output temperature, that's the angle that the user sets on the dial. That modifies the relationship between the current temperature and the mercury switch which controls the heating system.<br /><br />Where's the model of the thermostat itself? Switch plus dial plus coil, so simple, how can this system be modelling itself?<br />
<br />I'll give you a hint: I left out the heating system in the above. The system is properly:<br />
<blockquote class="tr_bq">
Room + Air + Heater + Thermostat</blockquote>
Here's another hint: Other than the temperature, the only aspect of the system that the thermostat really needs to model to model itself properly is how long it takes to heat up the room.<br /><br />Figure it out yet? Once the temperature of the room reaches the desired temperature the thermostat does not cut off <i>immediately</i>. The heater runs a little while longer and heats the room a little bit <i>past</i> the desired temperature. You can easily adjust the amount of the delay (and in fact there is a little screw in there just for that purpose) but if it's set correctly you generally don't have to.<br /><br />But how do you know what the "correct" setting for that delay is? Well, it depends on how long it takes to heat up the room.<br /><br />That delay is the self-model in the self-regulating system of "Room + Air + Heater + Thermostat"!<br />
<br />
That delay prevents the heater from switching on and off too often, which prevents wasting energy and keeps the room at the desired temperature more efficiently. If the system changes, say between summer and winter, you can adjust that delay (internal model) to re-optimize the efficiency of the heating system.<br />
<br />
Isn't Cybernetics cool?spfhttp://www.blogger.com/profile/04562282204061029861noreply@blogger.com0tag:blogger.com,1999:blog-5274602609598947161.post-62354466915804731232013-02-14T14:07:00.002-08:002013-02-14T14:07:43.402-08:00I surrender.Well, that's it. I surrender. I've had enough and I'm throwing in the towel.<br />
<br />
To be specific, I've been "working" freelance since quitting my job a few months ago, and it hasn't worked out.<br />
<br />
I don't want a job. I've tried that and it's not for me. (In fact I was contacted by a recruiter a few weeks back who had my dream job if there was one and I realized I didn't want it.) I also don't want to try to manage a freelance practice, I lack the social and organizational skills. I thought about hiring a manager, like a musician or other performer, and that seemed like a good idea. Unfortunately it is unlikely that such a person exists or that I could find them if they did.<br />
<br />
I do still want to help people with programming, both by teaching it and, to a limited extent, writing software. I just don't think I'm in a position to make anything happen. I'm not <i>apathetic</i> just <i>content</i>.<br />
<br />
I don't need anything. I have no children, and no wife or girlfriend. I'm capable of living in any major city with a clement climate without using money. <span style="font-size: x-small;">(Go on and ask me how, I dare you. Warning: the answer is "I'm fucking <i>magic</i>.")</span><br />
<br />
Really I can't tell you how tempted I am to go sit by the CalTrain Philz Coffee with a sign that says something like, "<i>Any computer question answered, FREE!</i>" and see what happens.<br />
<br />
Sadly, I expect <i>nothing</i> would happen. Mostly I'd be ignored, some people might venture quizzical or bewildered looks, and eventually the police would politely ask me to knock it off, or not. The officers I see frequenting that café seem pretty chill.<br />
<br />
If you have a question about computers, post-Singularity life, or "Spiritual Matters" ("WhoooOOOOooooOO!") go ahead and ask me.<br />
<br />
Other than that, live long and prosper!<br />
<br />
Eternal Life is Living Love.<br />
~Simon Peter Forman<br />
<br />
<a href="https://twitter.com/SimonForman">@SimonForman on Twitter</a><br />
<a href="https://plus.google.com/u/0/112892643650286015668/posts">Google+ Profile</a><br />
spfhttp://www.blogger.com/profile/04562282204061029861noreply@blogger.com0tag:blogger.com,1999:blog-5274602609598947161.post-41655085791212729932013-02-02T02:15:00.001-08:002013-02-02T02:15:07.836-08:00How to teach anyone to program using XerblinI have long maintained that anybody who can solve a sudoku puzzle is more than capable of learning to program. <a href="https://github.com/PhoenixBureau/Xerblin">The Xerblin system</a> provides a programmable metaphor for normal people to enable them to use their computers to greatest effect.<br /><br />If you go step-by-step, in the right order, it is very easy to teach the Xerblin metaphor to anyone in about a half an hour. This gives them the ability to program the various versions (firmware, server, web page) as well as a solid foundation to learn more.<br />
<br />
<h4>
Stack of Plates</h4>
Everyone already knows what a stack is: you put down a plate, and then put another one on top of it, then another, and so on. When you need a plate you take one off the top of the stack ("TOS").<br />
<br />
<h4>
Dictionary of Words</h4>
Again, everybody knows what a dictionary is: it's a bunch of words and their definitions. In Xerblin the words are all commands that work on the stack at first, but the user can "<i>inscribe</i>" anything they like in the dictionary.<br />
<br />
<h4>
Put Numbers on the Stack, Be a Calculator</h4>
So put some numbers onto the stack and use the four math commands to do some simple math. Everybody knows how a calculator works, so you explain this as "just another kind of calculator." If you're doing it right they'll be getting impatient with you for explaining such obvious stuff.<br />
<br />
<h4>
Put "Strings" of Text on the Stack</h4>
Most people won't have encountered the term "<i>string</i>" for a sequence of characters yet, so be careful to explain that before you use it. I've hit that whirlpool a couple of times.<br />
<blockquote class="tr_bq">
"What's a string?"<br />
<br />
"You know what a turtle is?"<br />
<br />
"Yeah?"<br />
<br />
"Same thing."</blockquote>
<br />
I'm not the best and most highly focused teacher sometimes. <br />
<br />
Anyhow, put some strings on the stack. Show how they are just data like the numbers. Add a couple of strings together. Multiply a string by an integer. Go nuts.<br />
<br />
Now that you have established that you can have a string on the stack...<br />
<br />
<h4>
Lookup & Inscribe</h4>
Show how the strings-as-data become strings-as-names. This is the power of names and is the single fundamental phenomenon underlying all computation and, indeed, all thought. The fact that one piece of the universe can serve as a "name" for another piece of the universe is completely incontrovertible and yet totally inexplicable.<br />
<br />
<blockquote class="tr_bq">
This sentence does not describe itself.</blockquote>
<br />
Naming enables programming. When the folks can put named things into the dictionary and get them back out again the key is in the lock.<br />
<br />
<h4>
Put a Command on the Stack</h4>
Turn the key, unlock the door. By putting a command word (function) onto the stack using a string as the name, it becomes data and can be subjected to manipulation just like numbers and strings.<br />
<br />
This is the very essence of programming: verb becomes noun, action becomes recipe, and we can reason about the static pattern we see.<br />
<br />
Programming is the alphabet of thought.<br />
<br />
<blockquote class="tr_bq">
<a href="http://calroc.github.com/aum-gravity/Henry.html">sqr() = (dup(), mul())</a></blockquote>
<br />
There is no one-true-computer-language (except Lisp, heh) in the same way that there is no one-true-circle, or one-true-triangle. But this metaphor is both useful and as simple as I could make it, and I have already taught several people how it works.<br />
<br />
Now that I have <a href="https://github.com/PhoenixBureau/Xerblin">a proper format</a> I am teaching people how to use it in earnest. I have a client who is producing SVG animations using it. (I'll add links when he's ready to publicly show it off.)<br />
<br />
I see a great potential for programmability to become commonplace. It would make developers' lives easier and free users from the tyranny of crappy interface design.spfhttp://www.blogger.com/profile/04562282204061029861noreply@blogger.com1tag:blogger.com,1999:blog-5274602609598947161.post-30258996333152440752013-01-31T20:37:00.000-08:002013-01-31T20:37:01.231-08:00Legos are my PoisonLegos are my poison of choice. That LEGO Deathstar? Yeah, they've got my number.<br /><br />For some it's model trains.<br /><br />We tend to discount these activities because they are economically non-viable. "<i>Grown men playing with toys</i>."<br /><br />Well, are you in the manufacturing sector and not doing <a href="http://www.pandarobotics.com/index.html">3D printing</a> and/or nanotech? Go home, you are playing with toys. How about energy? Are you building a <a href="http://transatomicpower.com/">molten salt nuclear reactor</a>? If not, you're just playing with toys. Are you in the health sector? Paying attention to Reiki? If you are not doing far out "energy healing" then you are just playing with toys. Whatever those (as my mom calls them) "woo-woo" folks are doing there is something there. <i>Let us do Science to It!</i><br /><br />We are in that part of the S-curve that goes pretty much straight up and down and if you are not on the way up, brother you're going down.<br /><br />If you are not preparing for a world of infinite energy and infinite malleability then you are, in effect, like a child playing with toys and refusing to deal with reality. <i>You should be feeling giddy or you're not doing it right.</i><br />
spfhttp://www.blogger.com/profile/04562282204061029861noreply@blogger.com0tag:blogger.com,1999:blog-5274602609598947161.post-17327967542931823032013-01-16T00:40:00.000-08:002013-01-16T15:20:18.323-08:00new_group 2500 300 45 "x" make_effect transEvery once in a while I write some code that is so cool it makes me ecstatic.<br />
<blockquote class="tr_bq">
new_group 2500 300 45 "x" make_effect trans</blockquote>
I'm working on a single-page HTML document that implements a kind of <i>theatrical stage</i> using SVG and D3.js with my Xerblin user interface metaphor.<br />
<br />
Last night I got it to a stable point where my task shifted from creating the internal structure to "sculpting" a set of commands that will make it easy to create animations.<br />
<br />
I started with a simple command word <b>new_group</b> that creates a new SVG "group" element (this is a kind of invisible container, like a HTML div element) inside a D3 selection and puts it on the stack. In order to see it I made it also automatically create a green rectangle in the group.<br />
<br />
The idea is that you create a new group and add visible SVG elements to it to create "characters" or "props" for animation.<br />
<br />
I'll write some words to do that later, but for now I have created a command word <b>set_attr</b> that takes three things from the stack: a D3 selection, an attribute name, and a value, and it sets the attribute on the selection.<br />
<br />
This lets you directly and immediately modify <i>all</i> the SVG attributes of an element (or set of elements) including position and transforms!<br />
<br />
I also created a <b>make_effect</b> command word that takes just an attribute name and value from the stack and returns a function that can be used to modify attributes as part of a D3 transition.<br />
<br />
To provide D3 transitions (awesome animations!) I made a <b>trans</b> command word that takes a D3 selection, a delay value, duration value, and an effect function (as created by the <b>make_effect</b> command word) and applies the effect to the selection with the given delay and duration.<br />
<br />
So, breaking it down:<br />
<br />
<blockquote class="tr_bq">
new_group</blockquote>
This creates a new group with a green rectangle in it to make it visible. It will be put on the stack.<br />
<br />
<blockquote class="tr_bq">
2500 300</blockquote>
This puts two integers onto the stack. These will be our duration and delay values in milliseconds.<br />
<br />
<blockquote class="tr_bq">
45 "x" make_effect</blockquote>
These three commands first put 45 and the string "x" onto the stack, and then the <b>make_effect</b> word turns them into an "effect function". At this point the stack has the group/selection on it, followed by the duration and delay, then the effect function.<br />
<br />
<blockquote class="tr_bq">
trans</blockquote>
Then the call to <b>trans</b> applies the effect to the group with the given duration and delay.<br />
<br />
If you go to the demo page and put that command into the text entry and press "run" you should see a green rectangle appear and move to the left. Wow, right? I know!<br />
<br />
<h3>
update</h3>
I forgot to include information on the command system "Xerblin" itself.<br />
<br />
This is an old project of mine that defines a really simple but
complete programmable command system.<br />
<br />
The original project page has some basic description:
<a href="https://code.google.com/p/xerblin/" target="_blank">https://code.google.com/p/<wbr></wbr>xerblin/</a><br />
<br />
I've merged the Xerblin user interface into my educational Pigeon
Computer project, and the manual for that has more info:<br />
<a href="http://phoenixbureau.github.com/PigeonComputer/user_interface.html" target="_blank">http://phoenixbureau.github.<wbr></wbr>com/PigeonComputer/user_<wbr></wbr>interface.html</a><br />
<br />
On the live page <a href="http://calroc.github.com/aum-gravity/xerblin-stand-alone.html" target="_blank">http://calroc.github.com/aum-<wbr></wbr>gravity/xerblin-stand-alone.<wbr></wbr>html</a> you'll see:<br />
<br />
<ul>
<li>"Hi There!"</li>
<li>The SVG window, about 3X wider than high.</li>
<li>
Buttons for each of the command words in the dictionary. (If you "inscribe" new words in the dictionary they automatically get a button
here.)</li>
<li>
A long text entry for "command line" interaction. (Don't hit enter,
there's a bug that I'm about to fix that makes the page reload! D'oh!)</li>
<li>
Two sets of three buttons that provide "meta" commands, interface
commands that aren't in the dictionary.</li>
</ul>
<br />
I should write up the meta-controls but for now just put this in the
text entry and click "run" button:<br />
<br />
<blockquote>
<b>
new_group 2500 300 45 "x" make_effect trans</b></blockquote>
<br />
You should see a green rectangle appear and immediately animate moving
to the left.<br />
<br />
Yay!<br />
<br />
<br />
Just as a hint: already with this interface and these controls you
can create as many of these "groups" (visually represented by the
green rectangle outlines) and animate them (including scale and
rotation!!) and attach the animations to new buttons/words in the
dictionary.<br />
<br />
Not bad, eh? spfhttp://www.blogger.com/profile/04562282204061029861noreply@blogger.com0tag:blogger.com,1999:blog-5274602609598947161.post-17008219248129665032013-01-15T01:14:00.000-08:002013-01-15T01:14:48.891-08:00Single-page Xerblin with D3.jsI spent a few hours today <a href="https://github.com/calroc/aum-gravity/blob/mk/static/xerblin.js">porting my "xerblin" user interface metaphor to Javascript</a>.<br /><br />I've been developing <a href="https://github.com/calroc/aum-gravity">a d3.js-powered page to experiment with dynamic visualizations</a>. Once I had <a href="http://calroc.github.com/aum-gravity/">a fun demo going</a> it seemed obvious to use it to wrap the xerblin system (I'd been planning to do something like this for years and years. I created a 3D system in Tkinter to support it but never got enough traction with it until now.)<br /><br />At first I had a simple Flask server that responded to commands, updated a xerblin interpreter, and sent back a representation which was then rendered client-side with SVG.<br /><br />I spent a bunch of time playing with different ideas for permitting the server-side xerblin interpreter to specify client-side dynamic visualizations. At some point it just seemed like it would be simpler and much cooler to port the xerblin core to JS and just have <a href="http://calroc.github.com/aum-gravity/xerblin-stand-alone.html">a self-contained page</a>.<br /><br />This means that you can go to <a href="http://calroc.github.com/aum-gravity/xerblin-stand-alone.html">the demo</a> and "save page as..." to your desktop and play with it locally! You don't even have to check out a copy from github or anything.<br /><br />This is inspired by <a href="http://tiddlywiki.com/">the TiddlyWiki project</a> which is a self-contained single-page HTML and JS wiki document. I love it.<br /><br />TiddlyWiki has the ability to save copies of itself to your file system (if you permit it) and it will automatically save backup copies. It should be fairly easy to let the stand-alone D3+Xerblin demo save itself (with your current state aptly serialized!) It might also be interesting to save state in a cookie.<br /><br />
<h3>
Does it Do Anything?</h3>
<br />So really you should read the source (and modify it!) but I'll write up a simple tour soon!<br /><br />Keep in mind that there aren't really any commands for anything other than the xerblin "not-quite-language" itself yet, as this is very much a work in progress and fresh out of the oven.spfhttp://www.blogger.com/profile/04562282204061029861noreply@blogger.com0tag:blogger.com,1999:blog-5274602609598947161.post-29230599836576498462013-01-14T13:56:00.000-08:002013-01-14T13:56:43.186-08:00Riches and RosesI'm at the point now with the user interface I'm working on (playing with!) where I am confronted with an embarrassment of riches in terms of wonderful design choices.<br />
<br />
I'm finding the separation of (graphical, dynamic) user interface from the underlying virtual machine (the xerblin not-quite-language runtime) to be extremely useful and gratifying.<br />
<br />
Because the Flask server does not reload the Python interpreter state when I change a <i>template file</i> I can adjust the SVG rendering code and refresh the browser to see <i>the same state rendered</i> with the new code!<br />
<br />
Right now I have come to the point where I am creating dictionaries (in xerblin these are sorted binary trees made of tuples, too much to get into here, persistent data structures) to represent SVG elements, as one possibility for "internal" authoring.<br />
<br />
Because the dictionaries arrive from the server as JSON arrays, and because the display code is already written to recursively display array contents, the contents of the dictionaries are already automatically rendered.<br />
<br />
Only it doesn't look great.<br />
<br />
The array code was written (last night, at 2am) to display linear stacks, but the dictionaries are binary trees, so they sort of pile onto themselves when rendered.<br />
<br />
It makes for lovely fractal patterns that are really beautiful to look at, but they could be more useful...<br />
<br />
Now I can leave a dictionary on the stack and edit the rendering code to try out different tweaks for displaying arrays, and when I refresh the page I'll see the same dictionary rendered with the new code I just tweaked.<br />
<br />
<blockquote class="tr_bq">
"Roses, just roses..."</blockquote>
spfhttp://www.blogger.com/profile/04562282204061029861noreply@blogger.com0