Thursday, June 25, 2015

Toolchains and the Trees -- Personal Anecdotes and a Thesis of Applying Common Lisp with CMake

Personally, one of the greatest sources of confusion I've found about software development, it's a matter of the toolchains. In some of candor, it has been a long-standing issue to me as a computer user, extending at least to so far ago a time as when I was in high school, reading catalogues about the newest compilers then from Borland and others -- circa mid 1990's. By that time, I had learned some very little about Linux -- it seemed to have something of an "Underground" style, to my best recollection of my own youthful views at the time. Certainly, Linux and the GNU Tollchain GCC have much matured, over the years. Personally, I'm still trying to figure out toolchains, though -- not presently worried about marketing.

My own first endeavors in computer software programming began as early as the Tandy Color Computer 3, a gift from an uncle to my economically lower-middle class family and  myself. I was a student of a decent school district, then, but BASIC wasn't the greatest thing to program with. I struggled with BASIC, on through to those years in high school, aside so many far more personal concerns that I was met with, in my life's time then, and then my own small endeavors in performing in the theatrical arts, for a short time albeit, and keeping up with school and extracurricular activities, including Academic Decathlon and -- before theatre took all my time after school -- hurdling, in track and field. I also stutter stepped, then. It was pre-online-social-networking. I already had a lot on my shoulders already, as a young person. That's of life as I knew it then.

Ironically, in my life as an adult, I'm not pressed with nearly so many of personal difficulties. Some of the issues I was pressed to deal with, during those years in high school, it was literally more than I could handle. I would not wish to make a mere sidebar about teen pregnancy, it's an issue I am too familiar with already. Personally, I'm familiar with concepts of diasporas and institutions, and -- by now -- I've studied some of a formal anthropology. To my mature thinking, I try to limit my thoughts of diaspora to any works akin to Aesop's fables. There's more to life, surely, and there's always, always a broader sky.

As being now of the age and perhaps the maturity of an adult -- my being furthermore familiar with some concepts of some proprietary systems, moreover -- I go out of my way to try to limit my comments about information theory to only any sort of abstract, rudimentary kinds of concepts as I can think of.  As such, I've become much more a fan of mathematics, in my adult life -- my many regrets aside, personally, if I had not understood so much of mathematics during high school, as might be due to some, well, some cognitive dissonance as I've learned to live with, in my life. There's a sense of resilience in things, surely, and mountains too, even in the darkest of times.

So, nearly in the fourth decade of my life, by now, I'm still trying to understand toolchains. It's not to be just pointlessly stubborn, I'm simply not a fan of brand names aside of actual tooling and other concrete concepts of software and things. Personally, I consider that if there was a Linux kernel for the 8086, in the 1990's, I could've been learning a great deal more about computing, but that's a thought in hindisght. I've yet to look into the question of whether I could put FreeBSD on my newer Tandy 1000RL. I would imagine that I might have an easier time porting FreeBSD for that old machine's architecture -- it would be quite a novel thing, certainly emphasizing of some rudimentary concepts in microprocessor design, in this era of mass production of systems applying semiconducdtors. What could be next, in the great curve? Perhaps more of thermodynamics, if not some of a quantum and optical computing. Presently, I'm more interested about toolchains, and human computer interface (HCI) design. There might be, perhaps, some cognitive dissonance that I  might find today between, those two concepts -- a sort of, perhaps, an immaturish tendency as has  lingered with me, to my adult years, together with a persistent knack for "playing dumb" about whatI truly do not know. HCI design being. no doubt, one of the great pinnacles of software development, why do I find it so truly difficult? Is it all technical, my sense of concern at that?

There are toolchains, and there are architectures. There's even a platform-agnostic, abstract visual syntax developed among all things under the sun, namely as a part of UML MOF, and the Object Management Group's broader concepts of Object Management Architecture (OMA) and Model Driven Architecture (MDA) such that one might denote in a logical sense, OMA * MDA -- albeit, in no immediate study of trademarks and terms, but simply noting a sort of a logical conjunction of those two respective concepts. One concept that I am not well to be cheerful about: As if anyone could voluntarily present a price tag for a thousand dollar compiler to a mechanic's son, and there's something in many ways "Free" right beside it. I understand, that was not an intentional coincidence, though it was to much of an untimely observation, in my own youthful experiences. Consequently, I pursued a lot of time-wasting in the arts, but not ever completely forgetting the sciences, until a few years going nowhere, the a few years enlisted as an Engineer. That time in my life, I talk far around it, not to inspire any radical sentiments about institutions and singularly, the US military. To my thinking, it was a belated enlistment. I'd have done well to look closer to the earth, sooner, but I was  much inspired by the work of NASA, and so much of a positive, English language science fiction of the Cold War. Sure, it was more than science fiction, all the events of those years in the political histotries of the world. If there was ever a place not affected by the Cold War, I'd not go out of my way to illustrate.

Presently, this is not a thesis about proprietary philosophy, nationalism, or intelligence services. I can write more clearly and more succinctly about those concepts, perhaps, if those are concepts I may wish to consider as though I am in any ways familiar with, as a grown up son of the Cold War, so to speak. Oh certainly, I've heard some liberal jokes of it -- I was a cadet in the Civil Air Patrol not to be mocked by staff of an aircraft maintenance facility, though I well remember receiving a remark as such -- somewhere at where there was a US Air Force base in Sacramento, before it was closed, sometime before the Cold War had made any of a sense to me. What was it, then, except a gross theater of nuclear deterrence? and I had thought that was all wrapped up by now, but there are still silos being trenched out in the world. So, apparently that much is not "All over." I doubt it'll ever be resolved with any of a WWI style of conflict, though I'm pretty well familiar with some events of Ukraine, in these years. It would seem as if anyone had thought as if that crisis would ever get better with more artillery fire? and then the missives launched out across social networking, needless to say of what's actually gone on on the ground in East Ukraine, the suffering, the horror, all the things that people would surely not want to read about, or see in any graphic detail. Who's to help it, and is the news only pitched to smear the reputation of all of Russia? What kind of a coordination would it require, if that was actually intentional, in any regards? I refer to it, now, as "The Vortex," it's beyond my ability to estimate how it ends, though I consider I've learned some of how it began.

To my best estimate, the political state of the world is in all of an odd place, these days, and the global intelligence community no less so. Personally, I'm no more a fan of politics than ever.  I'm not an intel spook, myself, though I consider I understand some of the process of intelligence. It's been to all of an unhappy knowledge, as soon as I so much look into "A hunch," an unhappy knowledge but a knowledge of actual events in a part of the world scarcely ever reported of in any news I see on the TV. Like the cognitive dissonance I lived with as a child, I now must live with more of morally awful knowledge as an adult. I try to keep my own backpack light, at that -- there's enough of personal weight already riding in my own backpack.

Would it be easy to explain how communications pertains?

And here I'd begun this article, thinking as though CMake was any of a ponderous thing to understand. Perhaps there's something of a sense of perspective, in something of a sense of gravity.

Personally, I've already reached the decade-era "High water mark" for receiving news of atrocious crises. Perhaps I'll have not ever read the last of such, in all the world -- nothing to say for how crisis shapes discourse, and not in always well so, though it's said to be "Only words?"

Certainly, there's nothing of a sense of nuance in an application of a software tool, not any of a great sense of metaphysics in how a machine coded object runs on a micrprocessor, an no great vaguery to the calculus of finite differentials, not a whole lot to personally say of simple algebra, and though geometry would seem ever like a novel topic, it's devolves to mathematics and a discrete logic, if not moreover a sense of scientific philosophy -- referencing, in the last point, Haskell Curry's thesis about logic. Nothing to a metaphysics of discrete microprocessors, or the science fiction of the cyperbunk genres of the 1980's, no great bonfires to stoke about the old AI Winter -- simply, there is a computer screen right in front of me, it's displaying a web browser developed by Google, within a desktop environment developed by Microsoft Windows, on a personal computer developed by the Hewlett-Packard company, and there's a taskbar on my desktop.

Not pictured, in this literal landscape: The Common Lisp Interface Manager (CLIM), the Common Object Request Broker (CORBA), or the FreeBSD Netgraph architecture, and internet sockets. There could be a number of thesis concepts in that, somewhere, perhaps some thesis concepts also addressing, so to speak, a sense about I2C in "bare metal" microcontroller architectures.

Presently, I would like to begin a thesis to illustrate how CMake can be applied -- ideally -- for compiling the Enlightenent EFL toolkit along with a WebKit adapter for the same, as available in the EFL WebKit distribution, but compiling the lot for Microsoft Windows, Linux, and FreeBSD desktop platforms. I'm not immediately certain if it's all "Instantly" possible, though.

So, to try to develop a place to anchor my thinking to, personally, I've considered that it would be useful to denote a concept of toolchains -- but not to limit the concept only to the GNU Compiler Collection (GCC), not even to limit the discussion only to LLVM.

CMake, in itself, would not be exclusive to LLVM -- observing that, and writing the observation down, I might understand if it might not jar against applications of LLVM tools in FreeBSD.

Aside to that, the developers of Clozure Common Lisp (CCL) have developed a fork of FFIGEN. Perhaps CCL's FFIGEN it could be applied as for an integrated builld platform with CMake and Common Lisp -- in Common Lisp development, focusing on CFFI or anything similarly supporting of an application binary interface (ABI) for accessing C libraries in Common Lisp.

So there's the thesis concept I had not set out to write, originally: CMake can be used for build automation in a toolchain including a Common Lisp implementation, or CMake can be applied for automation by a Common Lisp implementation.  In either regards, certainly Common Lisp and C can be integrated into a broader toolchain, through any number of discrete methodologies.Personally, I think I'd wish to favor the approach, "CMake calls the CLtL implementation," at least initially. For a project using C and Common Lisp, in which the C code, once compiled, would be linked from within the Common Lisp implementation, certainly the C code would need to be compiled first, then Common Lisp could be run to load/link and test an application's integration with the same C code. The whole build tool -- for instance, CMake -- it could be run external to the Common Lisp process, of course. Barring any resurgence of the original Lisp operating systems, moreover with regards to contemporary microcontroller architectures, certainly a Lisp process would be run by an operating system, usually not running as the operating system, in most operating systems.

So, if CMake can be applied as to build the EFL WebKit integration from source code, and could later apply Common Lisp to objects compiled from the same, but to a tantamount question then: Would it not build the Common Lisp implementation from source code, too? Whether or not, how would CMake select which Common Lisp implementation to run, in any manner of functional testing?

At that, I think I've found the first challenging thought of the thing -- and, again, it's a trivial concept of toolchains.