Sunday, March 4, 2018

Software Actors, Rare Benefactors

0 f
So excuse me forgetting, but these things I do
You see I've forgotten if they're green or they're blue
Anyway the thing is, what I really mean
Yours are the sweetest eyes I've ever seen
๐Ÿ’
~ Elton John (Lyrics from 
Your Song)

Preamble ๐Ÿ˜™


Disclaimer

If you're new to this blog, presumably having found this essay and perhaps expecting celebrity gossip—about movie actors and actresses in Hollywood and stuff like that as might have been suggested by the picture above showing theatrical drama unfolding before the eyes of a mesmerized audience—then I suggest that you stop right here and move on… ๐Ÿ’”

Look, I'm an in-the-trenches software practitioner and this is yet another contrarian take—heavily peppered as always with abundant servings of culture and fun—on a topic that remains near and dear to my heart: the rip-roaring wherewithal of software actors and what makes them tick! ⏰

The Hollywood Principle

(By the way, should anyone be interested, we can, in a future essay, chat some about the glamorous Hollywood Principle: “Don’t call us, we’ll call you!”) ๐ŸŽง
— Reader: Akram, are you feeling all right? Or is this another one of your excursions into a stormy night of bedeviling recursion?
— Blogger: I feel mighty fine, thank you. In fact, never felt better!
— Reader: So are you going to tell us, like, what this new essay is about?
— Blogger: Ah, yes.
(The Reader is getting perceptibly agitated now, having waited for a good two minutes…)
— Reader: I’m still waiting for your answer, and so are 
a million other readers, for crying out loud!
— Blogger: Oh, you wanted the answer right now, you don’t say… Do you?
— Reader: I do.
— Blogger: Aha, don’t despair, here’s what I got going for you—dear Reader who hails from the legions of my beloved readers—and I ask you to turn your lovely eyes to the snapshot below…
— Reader: OK.
— Blogger: Cool. So here’s my story… ๐ŸŽฌ
28 f

What's Been Missing?

Much ink and paper—a bit too much if you ask me—has been expended in the service of bringing the excitement of the programming and engineering communities to the general public, and with mixed results, too; it seems, and tiresomely so, as if something has been missing all along. And I think it’s high time to fix it ⏰

This essay in particular—frankly this whole blog in general—is (and has been for a while) geared very much toward fixing all that ๐Ÿ”จ ๐Ÿ”ฉ ๐Ÿ”ง

Who says that engaging in the crafts of computer programming and engineering can’t be fun? Should there be someone who disagrees, then I can only ask you to bring them to me (so I can have a word with them in private!) ๐Ÿ‘ป

Highlights Of The Fun Ahead ๐ŸŽช

 

Meanwhile, and as is the wont of us geek types around here in the land of Programming Digressions, we’re going to have fun—I strongly believe that fun should go with learning as much as learning should go with fun. So here goes, a peek at the undertones of this essay:
  1. A glance at how the introduction of software actors into the mix—as spearheaded by the visionary work of Jonas Boner and others—has revolutionized our industry ๐Ÿ„
  2. An introduction—in the briefest of ways—to an amazing software project (Ptolemy) based in the esteemed EECS department of the University of California at Berkeley and which makes remarkable use of software actors ๐Ÿ“ฌ
  3. A fugue which can perhaps be traced back to Douglas Hofstadter’s endearing, Pulitzer prize-winning work that we know as Gรถdel, Escher, Bach: An Eternal Golden Braid ๐Ÿ™ˆ ๐Ÿ™‰ ๐Ÿ™Š 
  4. A stream-of-consciousness collage inspired by the likes of Pink Floyd’s timeless rock opera that we fondly call The Wall ๐ŸŽฅ
  5. This essay will be far more experimental (in nature) than its predecessors (A word to "the wise," a community to which I’m ceaselessly trying to ascend, Sisyphus-style). See the next point—an  final and strongly-present undercurrent of this essay—for a bit more detail… ๐Ÿšง
  6. The notion—one that is ever-present in the mind of yours truly—that real artists ship: in tirelessly searching and carefully curating the images you find soon (in the collage of sorts), I might have bitten off more than I could chew. Woohoo (!) ๐Ÿถ
  7. And as I said above, "real artists ship", of which I often remind myself—otherwise, this blog just wouldn't happen! The upshot of all this, of course, is that, in lockstep with the previous point (about how this essay will be decidedly experimental), you find this essay incrementally evolve before your eyes as the days go by…
  8. Finally, I will add some real-time updates—to go hand-in-hand with the previous announcement—as I go along: Look for those updates in the "Comments" section toward the end! ๐Ÿ
Collage, collage, wherefore art thou? ๐Ÿ‘€


The Collage Fun Begins Right Here (Admit One)

 ๐ŸŽซ ๐ŸŽซ ๐ŸŽซ ๐ŸŽซ … ๐ŸŽซ 


 — "Hey, just one, I said!" I mean, what are those ton of admission tickets above doing here?!) Okay, let we worry about that later (our accounting system has gone bad or something, spewing out fake admission tickets!)…

Meanwhile, let's start our tour of the gallery of actors, shall we? ๐ŸŽญ ๐ŸŽฌ ๐ŸŽช ๐ŸŽจ

29 f

It All Began With An Idea…

So what’s all this about software actors and amazing benefactors? Well, read on to find out!

You can tell that you're onto something incredible when one of the clearest-eyed thinkers in our software industry—Jonas Boner, a programming visionary extraordinaire who happens to be one of my mentors—has devoted a large chunk of his life to bringing an idea to life (and indeed to its fruition), and has this to say about the idea that started it all:
When Carl Hewitt invented the Actor model in the early 1970s he was way ahead of his time. Through the idea of actors he defined a computational model embracing nondeterminism (assuming all communication being asynchronous), which enabled concurrency and, together with the concept of stable addresses to stateful isolated processes, allowed actors to be decoupled in both time and space, supporting distribution and mobility.
~ Jonas Boner (In the Foreword to Vaughn Vernon’s awesome book called 
Reactive Messaging Patterns with the Actor Model: Applications and Integration in Scala and Akka — Addison-Wesley Professional)
Read on to find the concluding thought…
6 f

What The Actor Model Brings To The Table

To bring closure to the aforementioned introduction of the power of an idea, here’s what Jonas adds to it in the same breath:
Today the world has caught up with Hewitt’s visionary thinking; multicore processors, cloud computing, mobile devices, and the Internet of Things are the norm. This has fundamentally changed our industry, and the need for a solid foundation to model concurrent and distributed processes is greater than ever. I believe that the Actor model can provide the firm ground we so desperately need in order to build complex distributed systems that are up for the job of addressing today’s challenge of adhering to the reactive principles of being responsive, resilient, and elastic. This is the reason I created Akka: to put the power of the Actor model into the hands of the regular developer.
~ Jonas Boner (continuing, in the Foreword to Vaughn Vernon’s Reactive Messaging Patterns with the Actor Model: Applications and Integration in Scala and Akka — Addison-Wesley Professional)
Wow! Talk about realizing the power latent in Hewitt’s visionary thinking, and then dedicating oneself to make that dream come true, as you may well have noted in Jonas's concluding words above (i.e. “This is the reason I created Akka: to put the power of the Actor model into the hands of the regular developer.”)

I invite you to re-read the message above… ๐ŸŽฏ

I invite you to re-imagine the message above… ๐Ÿ˜ด

3 f

The Movies, Akram, The Movies!

Again, to disabuse you of any lingering notion that the potion we're smacking about is that of software actors; it’s not movie actors—such as the melodramatic pair in the picture above—that we are hankering for today. (Wait up a bit, and all will be clear, I promise!)

Here’s the deal: If you’re like me—relentlessly searching for better ways of doing things—you will sense, even know almost immediately that you don’t want to miss this…

Indeed, software actors are amazing benefactors, and we are going to find out exactly why and how!

That actors have become our benevolent benefactors is mainstream and a commonplace now: How this came to be is in many way a tribute to a number of people who have doggedly pursued their vision of making this a reality (I sincerely believe that the success of actors is a singularly spectacular example of academia and industry joining hands to achieve more than they ever could have on their own!)
4 f

Hey, What You Got Up Your Sleeves?

 — Hey Akram, wait a second… You got yet another actor in the picture above to throw us off-balance?!

 — Um, not really; all I'm trying to do is drive home the point that it’s software that we be talking about today. (Again, wait up just a tad, and all will be clear!) ๐ŸŒž
In fact, let’s dive right into it! ๐ŸŠ

And we'll do so with a marvelous introduction of sorts by Stephen Blackheath and Anthony Jones in their delightful book called Functional Reactive Programming—the amazing folks at Manning Publications sure consistently produce stellar books on all things software—where the authors start out by posing a simple question to the reader, innocently asking

 

What is the actor model?

Actors often marry models, as you can see in the figure, but we’ll leave our analysis of the entertainment industry for another time.
Actors are a model of concurrency first developed in the 1970s. The programming language Erlang and, more recently, reactive frameworks like Akka make extensive use of it. It’s especially suited for distributed computing because of its ability to tolerate runtime failures and to hot-swap components. It’s been proven in large-scale commercial applications. 
The actor model: An actor is a process whose job is to handle incoming messages from a single asynchronous input queue. Each actor has a public address, and other actors that know the address can send the actor messages. Actors commonly use a reply mechanism that sends a message to the originator of an input message. Actors can spawn new actors, and they can send the address of an actor to another actor over a message. Actors as they’re commonly implemented have a thread-like flow of control. We think there’s a lot of potential for FRP and actors to work together. You could, for example, implement the logic of an actor within an established actor-based framework using FRP.
~ Stephen Blackheath and Anthony Jones (in 
Functional Reactive Programming — Manning Publications)
It’s been said that no two snowflakes are alike. Can the same be said of water drops, of actors (both of the human and software type)?

63 f
No man is an island entire of itself; every man 
is a piece of the continent, a part of the main;
if a clod be washed away by the sea, Europe
is the less, as well as if a promontory were, as
well as any manner of thy friends or of thine
own were; any man's death diminishes me,
because I am involved in mankind.
And therefore never send to know for whom
the bell tolls; it tolls for thee.

~ John Donne (MEDITATION XVII in Devotions upon Emergent Occasions)
A few water drops by themselves admittedly don’t have much momentum going for them. But what happens when a bunch of those drops start assembling; anyone remember what John Steinbeck got rolling for common workers in the United States—his underlying message for workers to unite for their cause as couched in the context of the heart-rending saga of the Joad family's travails—with the publication of his novel The Grapes of Wrath?

63 5 f

No Man Is An Island Entire Of Itself

Much like John Donne’s emphatic reminder (that "No man is an island entire of itself; every man is a piece of the continent, a part of the main;”) that we came across just a breath ago, a software actor—in and of itself—really can’t do much. (By the way, his reference to being “…a part of the main”, I’m sure is not, at least I hope not, an impious suggestion to bulk up the entire logic of any given computer program into the fateful method we all love, hate, and otherwise know by the name public static void main(String[] args){ ... }) or at least  that's what we've got going for us in the Java programming language) ๐Ÿข

But I digress.

Anyhow, start adding more and more actors (like water drops assembled in a grid, making ever-denser super-connections between one another) and there is no limit to what you can accomplish… We’ve got something rolling here, we got mojo! ๐Ÿƒ

64 f

Ashes To Ashes, Dust To Dust

And it all leads up to—water-drop unto water-drop unto trickle unto stream unto river unto sea unto ocean—the tides crashing on the seashore. Yep, soon enough, you can have at your fingertips the power of software—fueled of course by the collective agency of networked actors—with at least as much force as the waves that crash on the shores of civilization as we know it… ๐ŸŒŠ

7 f

Let It Crash!

It is in the interaction of thousands and millions of software actors that promise of decoupled software comes into its own. The interconnectivity can bend and twist through all kinds of contortions and yet—through powerful software libraries like Apache Akka—we remain confident in the knowledge that the software system will remain supple, intact, and resilient. For one thing, Akka is deeply inspired by the Erlang philosophy of “Let it crash!”. Apache Storm comes to mind as another prominent example of a software framework that fully embraces the fail-fast philosophy (aka resilience)…

1 f

One More Time (And This Time With Emotion!)

— One more time—all together now—is it theater actors that we’re talking about? ๐ŸŽญ
— Of course not, you yell back! ๐Ÿ‘ป
— Darn, you didn’t have to be that loud either!! ๐Ÿ™‰
8 f

E Pluribus Unum (Out Of Many, One)

As you looked at the picture above of the endodermis of tightly packed cells, were you thinking what I was thinking? Put simply, one cell by itself can’t do much; put a bunch of them together and you’re off to the races ๐ŸŒ

Same goes for software actors (Probably less so for movie actors, thought who am I to speak for their guild?) Remember, too, how the very roots of object-orientation were gleaned by Alan Kay in his pioneering work? Yep, there you go ๐Ÿ“ฆ
9 f

Nature: The Ultimate Engineer

Soon enough—thinking here to our previous example involving the trace which lead us from puny water drops all the way up to roaring tides—this kind of growth (and taking the example now of a coral reef as in the picture above) eventually led to structures of towering magnificence. See how the harried fish take shelter under one such coral structure?

10 f

Humans: The Runners-Up

So that was Nature at work. Man, on the other hand—hey relax cuz’ I ain’t got no jeremiad coming your way—with his propensity for synthesizing things more mundane, goes about synthesizing burgundy footwear, ultimately dangling his synthesized product as in the picture above. And guess what he does? He foists them atop a fake, white coral-like memento! Sheesh… ๐Ÿ‘ 

Oh well, what can I say? There ain’t no harried fish I know of that is going to take shelter under such a structure anytime soon… ๐ŸŸ ๐Ÿ  ๐Ÿก ๐ŸŸ ๐Ÿ  ๐Ÿก ๐ŸŸ

11 f

To Nature We Look (One More Time)

Not to worry though: Man's got his act together in a ton of other areas, chiefly in the arena of engineering. But to take one more example of Nature at work… Ah, good old cellular mechanisms have got their act together; they’ve had their act together for millions of years and counting.

Nature is the ultimate engineer. We software types ever turn to Nature for inspiration. Forevermore will be continue to do so, amirite? ๐Ÿš ๐Ÿš ๐Ÿš ๐Ÿš … ๐Ÿš

12 f

Networks Of Pulsating Objects

Symmetry—fearful or otherwise—as in the picture above is but an example of man’s take on his selfsame attempts to attack (technological) problems as he deems fit ๐Ÿ…

The drive to uncover the fitness of things is a powerful driving indeed. But what you get in the end is a pulsating network made up of loosely coupled constellations of objects—the bits and bytes of the underlying substrate doing the bidding of these abstract constructs—that we have at our disposal. And as always, the limits of the human imagination are the limits of what can be achieved with this power.
Enter functional programming. But I digress: I’ll leave you with merely a (dangling(!)) pointer here

77 f

Prime Territory For The Actor Model

Enter Reactive Programming. And here I decidedly do not digress; reactive programming is prime territory for the actor model. What you'll see in the picture above—and in the handful follow—is a snapshot in time that captures the brilliance of some luminaries in the firmament of software design and development…

76 f

Tell All The Truth (But Tell It Slant)

Another view, albeit told slant, told to mold the fold of the underlying origami that will perhaps elude you at this time, but which is fully present all the same ๐Ÿ’

(Hint: Did anyone notice the Towers of Hanoi in their, somewhere? Recursive bootstrapping anyone?)

75 f

Composition: All The Way Down!

This view is being told even more slant, cold and rolled, but never sold; a writer worth her salt never sold herself. Never. Ever. Did anyone notice the hefty UNIX tome? If so, does it remind you—now that I’ve let the cat out of the bag by alluding to the UNIX philosophy of composing with pipes and filters and stuff—of what gets you excited every single day as you wake up and imagine assembling ever more powerful compositions of software wizardry as enshrined in our objects (of desire)? Yep, it is objects and functions—and actors—all the way down! (Take it from someone who has worked in the trenches for over two decades).

Hey, I Got My T-Shirt!

  • Yes, I’ve been there, done that, and got the T-shirt ๐Ÿ‘•
  • Yes, I’ve been there, done that, and I'm immensely proud of it ๐Ÿ’™
  • And yes, I "believe" in software actors in part because I’ve known the sincerity and genuine awesomeness of rare benefactors ๐ŸŽฏ

Actors Even Up There?!

See the Lockheed C-130 Hercules dropping flares as in the picture above? Yep, Lockheed Martin sure keeps on making powerful flying machines. I wonder how much of the software that powers, in turn, such flying machines is itself powered by software actors… ๐Ÿš€

Have you thought about it? ๐Ÿ˜œ

13 f

Hey, What'You Doing, Cellular Automata Thingamajig?

One more time, to reinforce the idea—nobody heard me use the word didactic ever, now did they?—would you be willing to suspend your judgment and blurt out whether the cellular automata-like sprawling (and semi-spiraling) thingamajig above reminds you of something? (Hint: The core idea of that thingamajig in action is a five-lettered word—it starts with the letter “a” and ends with the letter “r”—and that word is commonly used to describe movie stars. OK, no more hints. It’s all on you from here!) ๐Ÿ€

14 f

Actors In A Parallel Realm

For those of you not yet familiar with my fondness for the prose written by Philip M. Bromberg, I invite you to check out what he's been up to, at least what he was up to the last time I checked…

Meanwhile, let's you and I take in Bromberg's take on actors and such:
To underscore his argument, Whyte quoted Hippolyte Taine, the 19th-century French philosopher and literary historian who also questioned the idea of separating conscious and unconscious into different realms. In imagery that I find breathtakingly comparable to current thinking about the structure of the mind, Taine wrote, 
"One can... compare the mind of a man to a theatre of indefinite depth whose apron is very narrow but whose stage becomes larger away from the apron. On this lighted apron there is room for one actor only. He enters, gestures for a moment, and leaves; another arrives, then another, and so on.... Among the scenery and on the far-off backstage there are multitudes of obscure forms whom a summons can bring onto the stage ... and unknown evolutions take place incessantly among this crowd of actors" [Taine, 1871, cited in Whyte, 1960, pp. 166-167] ๐ŸŽฌ ๐ŸŽญ ๐ŸŽฌ
~ Philip M. Bromberg (
Awakening the Dreamer: Clinical Journeys — Taylor and Francis)
Now is that mind-bendingly cool or what?
15 f

Oops, We Have A Maalox Moment Here!

Nemo: Hey Dory, Nemo here. Is it… safe to come out?! ๐ŸŸ
Dory: Well, it depends. Look, the bottom line is that, as Vaughn Vernon said swimmingly well in the fishy Preface to his cool book (Reactive Messaging Patterns with the Actor Model: Applications and Integration in Scala and Akka) when he hastened to comfort us that... "if Functor and Monad sound like viruses you caught as a child, steer clear of scalaz for a while." ๐Ÿ 
Nemo: Methinks I'll stay put in my comfort blanket (the corals) a bit more!
๐ŸŸ
    16 f

     So We Pause To Regain Our Composure…

    • Rhythmically swaying in the ocean currents, how far have the tentacles spread?
    • What are the outer reaches of actors?
    • Deterministic or nondeterministic, evolutionary or revolutionary?
    • Anything else going on?
    …and move right along ๐Ÿšด

    17 f

    Actors Revel In The Perfect Storm

    Do clouds make you think of fractals? It’s quite all right if you answered no; I used to have the same response before I read the marvelous book Chaos: Making a New Science by James Gleick.
    What else? What do clouds make you think of? How about cloud computing? Now we are getting warmer: Cloud computing is one of the crucial ingredients that make up the perfect storm—along with of course the Internet of Things (IoT), multicore processors, and mobile devices—which directly led the software industry to embrace software actors (Other kind of actors may follow suit, although I’m not holding my breath for that to happen anytime soon!)

    18 f

    Are There Actors Even In There?!

    Hey, that person kneeling on the floor, hands intently on his keyboard—he seems to be peering into the guts of an actuator arm even as he is surrounded by all kinds of gadgets which include an overhead display—and he sure seems to be having a lot of fun! I’m willing to bet that the software in action involves actors in some way, shape, or form…

    19 f

    Multicores Streak, Scream, And Screech!

    Now is that one slick time-lapse photograph of a nighttime, cosmopolitan street or what? So why did I include it here? Simply because the red-light streaks left suspended in midair by the tail-lights of vehicles whizzing by—much like the thousands of smiles one can imagine being left behind in suspended animation by an equal number of Cheshire Cats that disappeared a priori on the spot—remind me a lot of the circuitry inside multicore processors cranking away in mechanistic unison. And guess where all those multicores lead to: software actors but of course!

    20 f

    Akram, How Did You Get Away With This Now?!

    I’ll fess straight up that the only reason the high-speed train above made it here is that it vividly reminds me of JCIP (JC… what?! Oh, you meant JC Penney, right?) Okay, so for the 10 people on this planet who are not familiar with the classic book called Java Concurrency in Practice (known fondly by its initials JCIP) by Brian Goetz et al, if you want to understand actors, you have to start here; this is concurrency done right especially if you happen to professionally inhabit—as I do—a world run (predominantly) by Java programs.

    21 f

    It Starts Innocently Enough…

    It all starts—as all traffic congestion fiascos do—with tiny contributions such as made by the arrival on the scene of a pair of bicyclists above (Hey, you two, didn’t someone tell you that it’s smart and cool to wear helmets? It’s your own noggin that you be protecting, for crying out loud!)

    22 f

    A Juggernaut-In-The-Making!

    The tiny contributions to the traffic juggernaut-in-the-making keep adding until it’s not a trickle anymore; we have a stream of traffic on our hands…

    23 f

    Actors To The Rescue Of (Traffic) Gridlock

    Soon enough—sooner than most city planners would care to admit the frequency with which it happens—the stream of traffic transforms into a veritable river (Proof of purchase appears by way of the picture above in which you'll spy an about-to-be-clogged roundabout).

    24 f

    Akram Needs To Dig Out His Queuing Theory Text!

    Is this an M/M/1 queue or something or just my single-track mind at work? ๐Ÿšฅ

    25 f

    Mesurier Marcel Proust, I Introduce You To Actors

    Remembrance of Things Past… So I was saying?

    26 f

    Preparing For A Berkeley Touchdown

    Imagining a remembrance of things future… (I almost cringed at using the word "adumbration" here even though it fit the bill perfectly; somehow that word doesn’t sound like part of "normal" speech, whatever, I guess, that might be… But then again, a bunch of words I had memorized eons ago when studying for my GRE, coming on the heels as it did of an analogous venture for my SAT—right around the Paleozoic period it was as I recall—also didn’t quite sound like the word which would have a place in "normal" speech!) ๐Ÿ‰

    Digressions aside, with you in mind of course, I got to thinking: So ya thought ya might like to go to the show? ๐ŸŽญ

    Strap on your seatbelts for the ride ahead as we get on the autobahn otherwise known as Ptolemy which, as I said at the outset, is an amazing software project based in the esteemed EECS department of the University of California at Berkeley. It makes some really cool use of software actors ๐Ÿ˜Ž

    66 f

    Hey, I Got Actors Prancing Around In My Eclipse Work-space!

    As you'll spy (in the picture above), I’ve got the Ptolemy II code-base all loaded up (and running in debug mode actually) in my Eclipse work-space. There is admittedly far too much going on in the picture above of my Ptolemy II code-base, so feel free to spend a few minutes digging into the nooks and crannies of what I’ve got captured just for you ๐Ÿ”ฆ ๐Ÿ”ง ๐Ÿ”จ ๐Ÿ”ฉ ๐Ÿ”Ž ๐Ÿ”ฌ ๐Ÿ”ญ ๐Ÿ”— ๐Ÿ”ฆ

    (I spent a fair amount of time—all the while remaining mindful of the adage that a picture is worth a 1,000 words—packing as much information as I could, as densely as I could, into these handful of snapshots: I hope this works for you!)

    Pretty much the same goes for the next set of images in our collage: I’ve tried to capture as best as I could a mere handful of aspects to (hopefully) give you a flavor of the goodies that await you in the Ptolemy II code-base… ๐ŸŽ ๐ŸŽ ๐ŸŽ ๐ŸŽ … ๐ŸŽ

    67 f

    Stellar Coding Style On Display!

    As for the image above, I’ve drilled down into the guts of a neat little method—the fully qualified name  for those who want to go to the details is ptolemy.domains.ddf.lib.DDFSingleTokenCommutator.connectionsChanged(Port)—which, according to the accompanying Javadoc, essentially goes about doing the following:
    Pre-calculate the rates to be set in the rate parameter of the input port. Initialize the private variable _rateArray, each element of which indicates the input port needs to consume one token from a corresponding channel and no token from the rest of the channels.
    So I didn't choose this point—drawing your attention to the documentation aspects of the Ptolemy II code-base—randomly either: I wanted to, as best as I could, illustrate a mere smidgen out of the copiously and thoroughly documented code, which makes reading the code a pleasure! ๐Ÿ‘
    68 f

    Interacting With Code Visualizations, Oh My!

    Uh oh, yours truly clearly hasn’t figured out the ins and outs of playing with the DDFSingleTokenCommutator as you can clearly tell from the helpful (Stack trace) pop-up staring me in the face, telling me that something’s up with an (XML) element in the DE Director. Dude, it’s time to hit the Javadoc to bail myself of this lovely mess I’ve got myself into. Hey, it’s all good: this is my idea of fun—untangling delightful puzzlements such as this one—and I’m going to get to the bottom of it! ๐Ÿšง

    See the helpful visualization pop-up—one of the many helpful pop-ups that have mushroomed to help me out in my Eclipse work-space—right behind the (Stack trace) pop-up? Yep, the one with the delightfully color-coded visualization of the workflow (And best of all, the Ptolemy II environment lets you interact with the visualization in an intriguing variety of ways. I'm loving it!)

    Time to dig in… ⛏

    And hey, I haven’t forgotten about delving into the Javadoc like the one below, amirite? ๐Ÿ“•
        /** Construct an actor in the specified container with the
         *   specified name
         *  @param name This is the name of this distributor within
         *   the container.
         @param container The container.
         *  @exception NameDuplicationException If an actor
         *   with an identical name already exists in the container.
         *  @exception IllegalActionException If the actor cannot be contained
         *   by the proposed container.
         */
        public DDFSingleTokenCommutator(CompositeEntity container, String name)
                throws NameDuplicationException,IllegalActionException {
            super(container,name);

            input_tokenConsumptionRate=new Parameter(input,
                    "tokenConsumptionRate");
            input_tokenConsumptionRate.setVisibility(Settable.NOT_EDITABLE);
            input_tokenConsumptionRate.setTypeEquals (new ArrayT...  }

    69 f

    Not All Who Wander Are Lost…

    …just as all that is gold does not glitter. And from the looks of it—check out the gazillion results returned in the “Search" tab docked to the southwest region of my Eclipse work-space—I’ve been searching high and low. Where, oh where will my searches lead me to? Fair question there!

    For one thing, I’m going to have some fun looking into a tonne (we Americans would of course spell it "tons", but hey, that’s my early, British education poking out unbidden!) of actor libraries, and of course the domain polymorphic components. Cool and righteous stuff (Whoa, did I spy even something about data polymorphism in there?! Dude, my Clojure senses—code is data and data is code—are tingling like gangbusters this second! ๐Ÿž

    70 f

    The Actors (In Ptolemy II) Are Alive And Kicking!

    Having loaded the same (Ptolemy II) code-base into good old IntelliJ IDEA—my IDE of choice—I couldn’t help but notice just how active the code-base is ๐Ÿš€

    Dude, this project is alive and kicking and moving right along: I couldn't help but notice code commits to the SVN repository right up to the present day! (I invite you to "check out"—using that phrase and its overloaded sense—the “Version Control” tab toward the bottom of the picture above and you can't miss the steady stream of ongoing commits to the development branch of Ptolemy II in the SVN repository…) ⛳

    71 f

    Scala, Wherefore Art Thou, Scala?

    And hey, the fun I’m having with porting the (Java) code-base to the Scala programming language is in its infant stages so it’s probably best that you not look at my preliminary results ๐Ÿ‘€

    (Since we are on the subject of Scala, I'll mention in passing that the Ptolemy II environment has some REPL-like capabilities: instantaneous feedback during interactions with the JavaScript portions of the code-base that you can update and have reflected real-time in the view-rendering of the updated model. Hot-swaps of code are supported—this is one of the many areas in Ptolemy II that I look forward to tinkering with—for the Java portions of the code-base!)

    I mean, you could, but then you would likely find yourself reaching into your medicine closet for a healthy serving of Maalox (Just sayin’) ๐Ÿ˜‰

     YMMV ๐Ÿš— ๐Ÿš• ๐Ÿš™ ๐Ÿšš ๐Ÿš› ๐Ÿšœ ๐ŸšŒ ๐Ÿš‚ ๐Ÿšƒ ๐Ÿš… ๐ŸšŸ ๐Ÿšฃ ๐Ÿšค ๐ŸšŽ ๐Ÿšฒ ๐Ÿšด Again, just sayin'

    72 f

    Hey Akram, RTFM* (And The Javadoc While You're At It!)

    Hey, hey, hey… I was going to add something to go along with the image above—showing yet another “slice” of the (Ptolemy II) code-base as viewed from my IntelliJ IDEA work-space—but something happened along the way… ๐Ÿ‘’

    I broke into a song sung by (you don’t want to hear me singing!) the one and only Chris Cross. It went like this ๐ŸŽธ
    Well, it's not far down to paradise, at least it's not for me
    And if the wind is right you can sail away and find tranquility
    Oh, the canvas can do miracles, just you wait and see
    Believe me
     
    It's not far to never-never land, no reason to pretend
    And if the wind is right you can find the joy of innocence again
    Oh, the canvas can do miracles, just you wait and see
    Believe me
     
    Sailing takes me away to where I've always heard it could be
    Just a dream and the wind to carry me
    And soon I will be free
     
    Fantasy, it gets the best of me
    When I'm sailing
    All caught up in the reverie, every word is a symphony
    Won't you believe me?
     
    Sailing takes me away to where I've always heard it could be
    Just a dream and the wind to carry me
    And soon I will be free
     
    Well it's not far back to sanity, at least it's not for me
    And if the wind is right you can sail away and find serenity
    Oh, the canvas can do miracles, just you wait and see
    Believe me
     
    Sailing takes me away to where I've always heard it could be
    Just a dream and the wind to carry me
    And soon I will be free
    ~ Christopher Cross (Lyrics from 
    Sailing)
    RTFM* (i.e. Read The Farming Manual) ๐ŸŒพ ๐ŸŒพ ๐ŸŒพ ๐ŸŒพ
    73 f

    System Design And Modeling Using Actors (Part One)

    Notice the hefty volume standing upright, perched atop a stack of ragtag books that periodically float around in orbit—not in outer-space I hasten to add—inside the confines of my house? Yep, that's the final word (aka the collected wisdom) on the subject of doing things right with actors using Ptolemy II. It's available online freely…

    74 f

    System Design And Modeling Using Actors (Part Two)

    And what you see above is basically another view of the book—the back of the Ptolemy II book to be precise—on understanding the wherewithal of of Ptolemy II (i.e. the ins and outs of what makes it tick and cool stuff like that). Hey, you may have notice the wizened philosopher on the cover… ⏳

    So that's good old Claudius Ptolemaeus, the fine chap who came out of retirement just to (ghost) write this amazing volume and thereby enlighten the engineering and programming worlds on the coolest of actors ๐Ÿ˜Ž

    61 f

    E Pluribus Unum (One More Time!)

      Quick now, what is...
      • An ant by itself? ๐Ÿœ
      • A drop of water by itself?๐Ÿ’ง
      • A grain of sand by itself? ๐Ÿ”ฌ
      "Not much!," you yell back with great enthusiasm, which is nice, yay! See, this whole "didactic" business—oops, I didn't use that word now or did I?—is there for a good reason: to drill the goodness of an idea deep into the recesses of your cranium ๐Ÿ’€

      (But then again, what do I know?) ๐Ÿ’ค

      62 f

      Strength In Numbers (One More Time!)

      Quick now, can a...
      • Colony of ants (actors) not overcome disproportionately larger foes? ๐Ÿœ๐Ÿœ๐Ÿœ๐Ÿœ๐Ÿœ
      • Sea of water-drops (actors) not overrun the most formidable problems?๐Ÿ’ง๐Ÿ’ง๐Ÿ’ง๐Ÿ’ง๐Ÿ’ง
      • Vista of sandy tracts (actors) not overtake the most intractable messes? ๐Ÿ”ฌ๐Ÿ”ฌ๐Ÿ”ฌ๐Ÿ”ฌ๐Ÿ”ฌ
      "You got it!," I, in turn, bellow with enthusiasm equal to that of my audience, as I bask in the satisfaction of having got the point across that there is indeed strength in numbers: a handful of actors won't get you very far, but stitch together a network of these amazing software objects and you're off to the races ๐Ÿƒ

      (But then again, what do I know?) ๐ŸŽ“

      27 f

      Micro-Faust (A Tiny Smidgen Of A Bargain)*

      Try stopwatch: Hey you, timing-reactor!
      Yo, actor
      You I intend to refactor
      This time I be your benefactor
      Amirite, will you then be a sniveling malefactor?
      Should you desist, then redact away, you redactor
      Meanwhile, I'll contract the way for you, my contractor

      Catch stopwatch: You again, timing-reactor!
      Throw: Should I be remiss, please forward me to 
      Shacter
      Finally: Calculate the factor
      * So this was chiefly an exercise to calculate the time-factor—complete with a Faustian interlude of course— for which Akram can be kept away from breaking into verses of poetry, from waxing wee lyrical… ๐ŸŽป

      60 f

      Hey, We've Seen This Before!

      I know you have… (And yes, you're correct, the picture above has indeed shown up earlier in this essay; I put it here a second time just to see if you are still awake—don't you now be accusing me of being devious or something, okay?) ๐Ÿ˜ด

      Anyhow, it appears that you are…  sound asleep! ๐Ÿ˜ณ

      Look, even if you're fast asleep—hey I welcome people of all stripes to our blog here including card-carrying members of any extant somnambulists' associations—I encourage you to continue reading (Lots more fun stuff ahead for you!) ๐Ÿšถ

      83 f

      Enacting Figaro

      And—just to be perfectly clear—it's not redacting that we are talking about here: it's enacting, and Figaro at that… ("Okay Akram, you're busted real good this time 'cuz there ain't no connection between software actors and Figaro and acting or, for that matter, enacting!", you scold me).

      Here's what I got to say in my defense: "Ooh, but there's more of a—for sure far more than a tenuous—connection than meets the eye when it comes to establishing a nexus between those seemingly disparate items (software actors, Figaro, and acting), yoohoo". Check this:
      Enacting Figaro…
      29 f


      30 f

      81 f
      31 f

      32 f


      33 f

      84 f

      34 f

      35 f

      36 f


      85 f

      What Is This Thing That Builds Our Dreams…

      yet slips away from us?

      What could the books in the picture above (the three atop that ragtag bookshelf now), and in the order that they're decked out, have possibly to do with software actors? Nothing ๐ŸŒ‹

      And everything ๐ŸŒˆ

      So however tenuous a connection there might now be floating around and congealing in your imagination, I can assure you of the presence of a strong connection between the material of those books and the subject matter of this essay (all things actors). It would take (at least) a whole another essay to do justice to establishing that very nexus and will have to wait for its time ⏳

      37 f

      [Empty space]

      39 f


      40 f


      [Empty space]
      84 f

      41 f

      42 f

      82 f

      43 f

      44 f

      [Empty space]

      45 f

      46 f

      47
      [Empty space]

      53 f


      44 f


      45 f
      [Empty space]

      49 f



      48 f


      46 f

      [Empty space]

      36 f



      37 f
      [Empty space]

      58 f

      55 f


      59 f

      [Empty space]
      58 f


      50 f


      51 f

      [Empty space]
      54 f

      56 f
      [Empty space]
      52 f

      57 f

      Experimental Afterword ๐Ÿ”ฎ

       

      Experimenters Ahoy!

      Much as I said at the outset, this essay was going to be—dare I say that's how it turned out?—far more experimental (in nature) than its predecessors… ๐Ÿšง

      As you took in the collage above—we had fun and we went places but we still have empty spaces of which some were even annotated with the "[empty spaces]" moniker in fits of literal-mindedness—did your mind to turn to (I'll 'fess up: Mine did!) to these hauntingly memorable lyrics
      What shall we use
      To fill the empty spaces
      Where we used to talk?
      How shall I fill
      The final places?
      How should I complete the wall

      ~ Pink Floyd (Lyrics from
      Empty Spaces)
      Any ideas? (And you don't have to answer all at once now!)


      2 comments:

      1. Wow Akram...Thanks for a great post!

        ReplyDelete
        Replies
        1. - Thanks a ton, Nadia, for your endorsement of this essay! I'm glad you enjoyed the post :)

          - As I've noted elsewhere, much ink and paper (a bit too much if you ask me) has been spent in the service of trying to bring the excitement of the programming and engineering communities to the general public, and with mixed results, too; it seems, and tiresomely so, as if something has been missing all along. And I think it's high time to fix it.

          - So this essay, in the (same) spirit as all the other essays that appear on this blog, is hopefully a nudge in that direction: Far from being something akin to the onset of rigor mortis, the pursuit and practice of software engineering should really be about having fun!

          Delete