Edinburgh: (1) The capital city of Scotland , and (2) The name of the latest release of an open-source, microservices-based software project that sprang into life on someone’s kitchen island.
The greatest obstacle to discovery is not ignorance; it is the illusion of knowledge.
~ Daniel J. Boorstin
Before we get ahead of ourselves, let me spill the beans right here…. Here’s the deal. We’ll be making a bunch of pit stops in this essay—a part of which will be to check what’s up with each one of the following cool books—as we wend our merry way through the landscape of microservices at large:
- Microservices in Action, by Morgan Bruce and Paulo Pereira (Manning Publications) 📣
- Microservices Patterns, by Chris Richardson (Manning Publications) 📣
- The Tao of Microservices, by Richard Rodger (Manning Publications) 📣
- Building Microservices with Go, by Nic Jackson (Pakt Publications) 📣
- Building Microservices: Designing Fine-Grained Systems, by Sam Newman (O’Reilly Media) 📣
- SOA Patterns, by Arnon Rotem-Gal-Oz (Manning Publications) 📣
- The Model Thinker: What You Need to Know to Make Data Work for You, by Scott E. Page (Basic Books) 📣
- System Design, Modeling, and Simulation using Ptolemy II, by Claudius Ptolemaeus, Editor (Dept. of EECS at UC Berkeley) 📣
(Relax, links to all eight featured books above appear later in this essay, in their respective entry each.)
Plus another handful of pit stops—they will actually appear before the book reviews I mention above—are as follows:
- Yo, Marco Polo! ⛵
- What’s Up With Edinburgh? 🏴
- Less Is More 🐝
- So Is More Less? 🐘
- Perhaps A (Game Of Thrones) Coffee Mug Instead? 👑
- Take Two. A Decent Definition of…. Microservices! 🎬
- But Growth Is Inevitable 🌿
- We Stood At The Edge, And Wondered… 👦
If you felt a bit faint on taking in the (motley!) list above, please know—and this point is primarily going to be for our new readers—that we don’t (and won’t) do boring stuff around here. Keeping things light, yet substantive and worth your precious time, remains priority el numero uno. My formula is simple: I write what I myself would like to read. Anything less simply doesn’t cut it around here 🍩
Yep, that right there is my litmus test. So if (the process of) writing ever begins to feel labored and painful, I know right away that that’s how it is going to read: laborious and pained. On exactly this point, if you ask me, this guy sure knew what he was talking about:
If it sounds like writing, I rewrite it.
~ Elmore Leonard (in Elmore Leonard’s 10 Rules of Writing)
And yes, also appearing in the pic above is my very own sweatshirt, which I bought last year from a delightful little store (The Pride of Scots) on Princes Street in Edinburgh—I recall a wad of British pounds being exchanged in the transaction—just down from my hotel on Lothian Street where I was staying while attending an EdgeX conference in Edinburgh.
Finally, not to be outdone by the stylists, both of hair and prose—you know the ones who keep yammering about how every essay should have a beginning, a muddle, and an end?—we’ve spun up an uber-stylish closing section (and no, not that kind of Uber) which will end (possibly upend) this erudite essay, sporting sub-sections such as these:
- Read My Lips: No Moh’ Selfies! 🎭
- What If We Got Fearful Symmetry? 🐯
- What If Raindrops Kept Falling On Your Head? ⛈
- What If The World Suddenly Turned Bokeh, Eh? 🎡
- Void This Polaroid. Right Now 📷
- Doggone It: Daguerreotype Denouement?! 🎥
- Cookie-cutters, Anyone? 🎁
- Back-breaking Load Or Something? 🐫
- Dedication, Plus a Thank You! 💝
But wait a sec, is that a life-sized statue of famed explorer Marco Polo I see down the street from us? Oh my! ⛱
Yo, Marco Polo! ⛵
“Hey, what’s with that Marco Polo statue?“, you ask. And glad you did: For one thing, the statue is placed squarely in Ulaanbaatar (Mongolia), which is a hike from Edinburgh (Scotland). For another—and speaking of the renowned traveler Marco Polo—I got a kick out of how one reader recently dubbed me as “the Marco Polo of the programming world”.
Well, there sure was no crowning ceremony where you could have seen me kneeling and hearing: “I hereby dub thee, Sir (Yeah, right!) Akram, as the Marco Polo of the programming world.” Nope, nothing half as fancy as that, which is just as well—you see, I had skinned both my knees from all the traveling I’ve been doing lately, especially from scuttling around on my knees after lost luggage at airports—because going down on bruised knees can be mighty painful 😭
But I digress: New(er) readers catching—and latching—on to this “digressions” thing, eh?
What’s Up With Edinburgh? 🏴
And now I get to tell you what’s up with Edinburgh, in case its enigmatic mention up atop had made you curious: It simply happens that Edinburgh—in addition of course to being the name of Scotland’s lovely capital city—is also the name of the upcoming release of an open-source, microservices-based software project that began life on someone’s kitchen island (Emphasis on kitchen is all the more appropriate since we engineers and computer scientists have been known to cook algorithmic recipes, and brew up algorithms and stuff like that.)
Oh, as we get ready to put our understanding of microservices on a solid footing, plus check out some fantastic resources—remember that handful of worthy books on microservices I introduced up atop?—I want you to look out for a South Korean mascot to make a guest appearance (or two) further down 😎
Just saying, because, should you ever grow wistful for all things Scottish, I’ve got you covered there, too! Yep, just check what happened when we decided to mix—after all, we were chatting about cooking up (algorithmic) recipes just a sec ago—yer Edinburgh ode with microservices (Read at your own digestive risk.)
Less Is More 🐝
Any intelligent fool can make things bigger, more complex, and more violent. It takes a touch of genius—and a lot of courage—to move in the opposite direction.
~ Ernst Friedrich Schumacher (in Small Is Beautiful)
Less is more, in prose as in architecture.
~ Donald Hall
See that cluster of cutie mushrooms above, each one pliantly trained in one direction like synchronized radar disks? Does it remind you of organic growth? Well, if ever there were a counterpart to organic growth in the world of software development, it sure would resemble what we know and love today as microservices. Fair enough, or are you tempted to relegate this to the bin of Harley Davidson motorcycles-inspired wisdom such as
If I tried to explain, you wouldn’t understand 🐢
Now ain’t that right? Well, for one thing, there is no shame whatsoever in meagerness of size or footprint. Take it from legendary programmer Rob Pike who—in running ever farther than most with the quote above that Less is more, in prose as in architecture—transplanted some (bricks-and-mortar) architectural wisdom into some equally wise (bits-and-bytes) architectural wisdom by noting that
Less is exponentially more
If ever you’ve done a decent bit of programming in the Go programming language as I have—hey, check out my adventures in the land of Go—you’ll appreciate what Pike is yammering about 😆
So Is More Less? 🐘
That is to say, if we agreed earlier that less is more… Hey, let’s call it off, and never mind such highfalutin (tautological) skirmishes—let’s delegate those to the land of UNIX where we have tools called less and more; no, really, there are tools with exactly those names, and which could only have from the minds of sandal-wearing, bearded, UNIX wizards 👓
OK, so this is what (really) happened: I decided that I wanted to give you all a break from scaling yet another wall of text, lest you tune out; can’t have that happen. Hence the bright yellow-bordered postage stamp pic below, yay! (I’m telling you, the attention span of our generation is getting smaller and smaller, even as we speak….)
And what happened next—honest—was that the Flikr site was down. See, um, my proof of purchase above about the service outage; I’m tell you, it did happen!
Perhaps A (Game Of Thrones) Coffee Mug Instead? 👑
Well, given the Flikr site outage, I couldn’t really grab a nice pic or two to stick above in order to give you all a break from scaling yet another wall of text. In turn, what you do get today is the bright yellow-bordered postage stamp that was actually meant for a future blog post—essay, really (You’ve probably gathered by now that an essay is what I like to call one of these critters-that-one-posts-to-blogsites….)
Well, since the cat is now (officially) out of the bag—my having divulged the theme of the next blog post—I invite you to check the analogical reasoning going on in the pic above: A piquant parallelism or two, perhaps related to wizened wizardry, yeah? Most of all, check the 12-pack chewing gum box I found on our set—man, if only the cleaning crew would be a bit more diligent when they sweep through our staging area!—and which I immediately, and every-so-slyly, quarantined to the confines of the yellow oval, which I trust you also see in the pic above 🐞
Hmm… Maybe everything in that jaundiced yellow does need to be quarantined away, which is just as well. Anyhow, you probably heard (by now) that the infamous coffee cup in that Game of Thrones episode has now vanished. And a good thing it did; it was getting on my nerves.
For the whole nine yards on the analogical reasoning and blending of paradigms—including of course our very own 12-pack chewing gum box found smack in the middle of our stage—you’ll just have to wait until the next essay. Fair enough? 🐞
Take Two. A Decent Definition of…. Microservices! 🎬
No more spoilers, please; paradigm-blending coolness and parallelism-prettiness will simply have to wait till next time…. For crying out loud, I’m the lone imprimatur around here who toils away at designing, writing, and in general the lovely work of ideation; according to a competing theory, though, all I do around here is “glue and staple” lol 📩
Regardless, do take some comfort in knowing that all this mishmash will become eventually consistent; as in, try singing Brewer’s CAP Theorem to The Rolling Stones’ memorable song You Can’t Always Get What You Want. (More details here, if you want to get what you need, amirite?)
Closer at hand, meanwhile, and carrying on with trying to put our understanding of microservices on a stolid—yes, not solid, stolid—footing, check out this sparkling observation by an esteemed friend in the industry:
Microservices-based architecture is a simple concept: it advocates creating a system from a collection of small, isolated services, each of which owns their data, and is independently isolated, scalable and resilient to failure. Services integrate with other services in order to form a cohesive system that’s far more flexible than the typical enterprise systems we build today.
~Jonas Bonér (in Reactive Microservices Architecture)
Goodness, even more mushrooms coming up? Darn.
But Growth Is Inevitable 🌿
A really perfect poem has an infinitely small vocabulary.
~ Jack Spicer (in After Lorca)
That’s right, remember those itty-bitty mushrooms we ran into earlier? Well, they grew and grew, all the while remaining faithfully trained in one direction—sunflower-like, though I really have no idea why!—until they became behemoths. And they multiplied. Then we got ourselves even more mushrooms!
But words are things, and a small drop of ink, falling, like dew, upon a thought;
Produces that which makes thousands, perhaps millions think.
For the final word on (those once-itty-bitty!) mushrooms, I invite you to check this marvelously erudite conversation thread that took place in the Comments section of our very own blog-site, some moons ago, though 🍄 🍄 🍄 … 🍄
So it is with the organic growth—pardon the anthropomorphism—that we witness daily in the world of software development. But who is forcing whose hand? (Yo, is that you, Adam Smith, with the invisible hand. Hmm… Now there’s a connection!) Dunno, really. Sigh. Why don’t we let The Bard have a try?
Your gentleness shall force,
More than your force move us to gentleness.
~ William Shakespeare (in As You Like It)
That’s just a fancy way of saying (every word The Bard uttered was fancy, after all) that we want not to force growth; rather, relentless growth forces itself on us. It’s inevitable. We’re dealing with the most malleable stuff to be found in the industrial world—nope, not talking about mushrooms any more—and which, of course, we all know and love as software. Watch out, software is eating the world, after all, in pieces small and big 📦
So close—the Infinitesimal and the Infinite. But suddenly I knew they were really the two ends of the same concept. The unbelievably small and the unbelievably vast eventually meet, like the closing of a gigantic circle.
~ Richard Matheson (in The Incredible Shrinking Man)
So what do we do? Throw our hands up in despair in an angst-ridden fit? 🙄
Oh no, we don’t! We have our ways; we know how to tackle, repair, and reverse the rot (and in fact prevent that rot from taking root in the first place!) 😎
Yes, there is a way: it’s called the tao of microservices. Read on to find out how and why, plus take heart from this fine quote:
There are very few human beings who receive the truth, complete and staggering, by instant illumination. Most of them acquire it fragment by fragment, on a small scale, by successive developments, cellularly, like a laborious mosaic.
~ Anais Nin (in Diary 3, pg. 294) The Quotable Anais Nin: 365 Quotations with Citations (Sky Blue Press)
You feeling better already? Yeah? Cool 😎
We Stood At The Edge, And Wondered… 👦
Wind back the tape of life to the early days of the Burgess Shale; let it play again from an identical starting point, and the chance becomes vanishingly small that anything like human intelligence would grace the replay.
~ Stephen Jay Gould (in Wonderful Life: The Burgess Shale and the Nature of History)
Why, check out the diaper-clad toddler in the pic above, squarely facing that algae-clad thingamajig ahead in deep meditation: Isn’t that a flashback to our own childhood, strolling and playing, with a PeePal or two, on the shores of pBay. But then we came across this Big Ball of Mud or something? Darn, someone should have warned us back then, us then-toddlers with a simpler, more-direct message such as: Here be dragons, or something 😛
I ain’t going in there for sure, no more! (Who knows how many millions of penicillin molds fester in that grotesque ball of mud?!) Got enough troubles on my hand as is, without inviting a boatload of germs from that infernal infestation on the sandy shore, you know 😉
But a fine pasture for scientific investigation that sure would’ve made for Pasteur (the French chemist and microbiologist of yesteryear) who made a name for himself by, among other things, noting that “Chance only favors the prepared mind.” 🔬
So his colleagues aver,
Lived on excellent terms
With most of his germs.
~ W H Auden
But I digress, and grow weary, as in
I’m so tired but I can’t sleep
Standin’ on the edge of something much too deep 🌊
~ Sarah McLachlan (Lyrics from I Will Remember You)
But, hey, I got good news for all of us: Yay, it’s finally time to dive headlong into our survey of the tools—it’s books all the way down, I’m telling you—and which we need to slice our way through a Ball of Mud, or two, or three… 😀
Yep, the time has come for us to make a bunch of pit stops—checking out some microservices wisdom and tools by way of a handful of worthy books—as wend our merry way through the landscape of microservices at large ➡
#1 Microservices in Action, by Morgan Bruce and Paulo Pereira (Manning Publications) 📣
- Overall excellent book, with a pragmatic outlook (all stuff, no fluff, high SNR)
- Just don’t expect—if you judged so from the elegant cover—any sort of Elizabethan finery over teacups, with gentle piano-playing in the background.) Nope, it’s all about what goes on (or at least, what should go on!) in the trenches of developing microservices in the wild 🐍
- Profusely illustrated with helpful diagrams (The folks at Manning sure got their formula right!)
#2 Microservices Patterns, by Chris Richardson (Manning Publications) 📣
- You’re going to find a tonne of distilled industry wisdom between the covers of this fine book 📕
- Yes, the examples are all in Java, but many (if not all!) ideas are eminently portable to other programming languages. So even if you develop microservices in another language—I’ve been doing exactly that for a year now in the Go programming language—you’ll gain quite a bit from this book.
- Wait a second, what’s that Korean doll doing in the pic above? The people in Korea are so nice and gracious; I was there recently and can attest to that! The Korean language remains foreign to me…
- …but judging from the grunts coming from the Korean doll (in the stuffy box in which it finds itself encased), it appears to be intoning: “Hey, it’s stuffy in here. I can barely breathe… Somebody get me out! That 12 hour (non-stop) flight from Seoul to San Francisco was long enough, what with having to be stuck in a cardboard box, for crying out loud!“) 🚁
- Whoah! Help is on the way (see the pic coming up next), both for our Korean doll and for all of us looking for even more generous servings of microservices wisdom.
#3 The Tao of Microservices, by Richard Rodger (Manning Publications) 📣
- Should you decide—trust me, we all have budgets!—to get yourself only one book from this list, make it this one. You won’t go wrong.
- This book is incredible: While you won’t find much code in its pages, the book is replete with rock-solid advice on getting a grip on harnessing microservices 🏄
- Many books have a tendency to gloss over the hard stuff; hey, as an author, I’ll unabashedly fess up and profess that I’ve done (more than) my own share of handwaving.
- But not this one; the author has a remarkably subtle—and endearingly charming—sense of humor, which shines through the pages.
- Be sure to not miss the plethora of footnotes (Frankly, there’s more wisdom in some of them than can be found in whole chapters of other books!)
- Whoah! “Finally,” says our Korean doll, “somebody came to my rescue, and not a moment too soon!” ✊
- So there you have it, our Korean pal is finally unfettered and free, breathing the fresh Austin air (after the near-suffocating trauma of traveling in a cardboard box for multiple hours.)
- Hey, good things take a long time, don’t they say? Meanwhile, check out our pal’s fancy clothes—Oh my! It’s getting ready to do some fancy footwork… It can do karate. Chop, chop, ninja! Take that, now…
- Things getting dangerous in this neighborhood… Getting out of here. Quick!
#4 Building Microservices with Go, by Nic Jackson (Pakt Publications) 📣
- Like Winston Churchill said—and I’m quoting from memory as I don’t particularly feel like looking up references at the moment—on one gloomy day, many moons ago, “Give us the tools, man, and we’ll get the job done.“
- OK, OK, I get it; different times, different settings. Sheesh, some people got no sense of humor! Anyhow, and come to think of it, we software types work in the trenches, too, don’t we?
- Ah yes, and to get our job done—and remember what I said earlier about the polyglot nature of our industry?—we need hands-on stuff. And this book delivers in spades 🚧
- See all those tape flags sticking out from my well-worn copy of this book (in the pic above)? This one is a keeper.
- But first, please send in Detective Tintin, will you please? (Watch out, Tintin, please don’t trip on those jagged tape flags sticking out from the book, especially now that you’ve made it safely back with me all the way from Edinburgh!) We have a stormy mystery brewing on our hands… 🌂
- Keep reading to find what’s up with that.
#5 Building Microservices: Designing Fine-Grained Systems, by Sam Newman (O’Reilly Media) 📣
- So who is going to solve the baffling mystery—no, not the birds and the bees—of how bees manage to distill honey?
- But Akram, what’s this beekeeping thing got to do with microservices, for crying out loud?
- “Patience, and you’ll learn a lot!“, I reply sanguinely. OK, so while you won’t find any beekeeping advice in this book, it has generous servings of distilled—see, right there is our running metaphor of distillation—wisdom on wherewithal of microservices, served up honeycomb-style.
- Seriously, though, this one is another keeper: all stuff, no fluff 🐥 🐥 🐥
- It also happens to be the very first book through which I taught myself the ins and outs of what’s so special about microservices.
- Wow, did anyone even notice that curvy, S-shaped, pliable ruler in the pic above, striking an elegant pose as if it were born for showtime? My late father (a chemical engineer by profession) got that blue ruler for when I was in high school so I could draw curved graphs.
- Life moves on. Don’t move on before checking this book out…
#6 SOA Patterns, by Arnon Rotem-Gal-Oz (Manning Publications) 📣
- Our trusty friend (Detective Tintin) is not to be found anymore! What’s up with that? Just when we needed him to solve some fishy stuff… 🐠 🐡 🐟
- …such as: “What is a book on SOA—for crying out loud!—doing here, appearing on a list of books about microservices?“
- Well, to put your mind at ease, we’re talking about SOA as in Service-Oriented Architecture, and not as in the famed Society of Actuaries. Cool?
- Relax. All I’m saying is that our industry—fond as it is of rebranding stuff ever so often—decided that SOA needed a cooler moniker. Yep, SOA got rebranded (while nobody was watching) as microservices 👀 👀 👀
- On exactly this subject, check this rather nice observation by the esteemed Martin Kleppmann, as he spills the beans in his book called Designing Data-Intensive Applications:
Moreover, a server can itself be a client to another service (for example, a typical web app server acts as client to a database). This approach is often used to decompose a large application into smaller services by area of functionality, such that one service makes a request to another when it requires some functionality or data from that other service. This way of building applications has traditionally been called a service-oriented architecture (SOA), more recently refined and rebranded as microservices architecture.
- So there you have. Even if you didn’t take my word for it earlier—I’m merely the messenger, you know—I hope the excerpt above helps you understand the lineage of what we nowadays know and love as microservices.
- Oh, speaking of designing data-intensive applications, should you wish to delve into Kafkaesque stuff—as in Apache Kafka plus a hefty dollop of Franz Kafka-style metaphysics thrown in for good measure—we got you covered there, too: Check what happened when some of us got Krazy About Kafka!
- This is a richly-illustrated and well-done book—as in neither under-done nor over-done!—that’s going to be well worth your time 💰 💰 💰
- Wouldn’t you agree at this time that the only thing fishy thing remaining is that marine aquarium screensaver box—yes folks, there was a time when CDs roamed the earth!—which you see in the pic above? 🐙
- OK, good. So let’s call off our emergency page to Detective Tintin; my brother is a cardiologist, so I know (second-hand anyway) a thing or two about getting paged.
#7 The Model Thinker: What You Need to Know to Make Data Work for You, by Scott E. Page (Basic Books) 📣
- What, for crying out loud, we had finished calling off our emergency page to Detective Tintin. Yet he swaggers in now, feigning bluster, and his mouth agape in amazed disbelief? C’mon, know it off, Tintin; we see through your act, latecomer! Wow, with (so-called!) trusty friends like that, we’re going to need Scotland Yard’s number programmed on speed-dial ☎
- Speaking of which… Hmm… I wonder if that bright-red, quintessentially-British telephone booth in the pic still works; if it does, that’s what we use for programming our speed-dial! Yay, we got it.
- Meanwhile, why don’t you take in the happenings in the pic above? Now is that the beatific scene of the paragon of modeling or what?
- “Yo, what’s modeling got to do with microservices?,” you ask blithely.
- Hmm… Might need to page the book’s author, Scott E. Page—or should it be Scotty from the esteemed USS Enterprise of Star Trek fame?—to beam us up, if you know what I’m saying? 🚀
- Odd, I see someone’s (eminently non-business-looking!) business card tucked into the top of Scott E. Page’s fine book. “Like, what’s up with that?” Whoah, wait, one thing at a time, dude!
- But first, a word on modeling… “Uh oh, here Akram goes digressing.”
- But seriously, check this brilliant formulation by Stuart Russell in his Foreword to the fine book Practical Probabilistic Programming by Avi Pfeffer (Manning Publications) as he goes down memory lane, talking about how,
In 1814, Pierre-Simon Laplace wrote, “Life’s most important questions are, for the most part, nothing but probability problems…. The analysis of a probability problem requires the formulation of a probability model that lays out the space of possibilities and, in some fashion, assigns a numerical probability to each of them. In the past, probability models were written down using a combination of natural language text and semi-formal mathematical notation. From the model, a formula or algorithm for calculating answers was derived by further mathematical manipulation. Each of these stages was laborious, error-prone, and problem-specific, placing severe practical limits on the applicability of probability theory. Despite Laplace, life’s most important questions remained unanswered.
- So there you have it. And even if you didn’t take my word for it earlier—do you, ever?—I hope the excerpt above helps you get a sense for the noble lineage of modeling. It’s totally slick. Plus it’s trending, and in style, I’m telling you; math never goes out of style 🐬
- Yeah, but why should you listen to moi? Well, for starters, I invite you to check out my thoughts on modeling as done in the context of deep learning.
- When you visit the aforesaid link, be sure to check out the evergreen quote by George Box (“Essentially, all models are wrong, but some are useful“.) Gotta appreciate that guy’s sense of clarity, amirite? 🎯
- Model first, then design, and then—and only then—develop your software; you’ll sleep better at night. Just sayin’.
- Moving on to our final (book) entrant in the field….
#8 System Design, Modeling, and Simulation using Ptolemy II, by Claudius Ptolemaeus, Editor (Dept. of EECS at UC Berkeley) 📣
- You’re no doubt muttering with hushed words, “Goodness, Akram is serious about this modeling business, darn!” Well, just when when thought it was safe to continue reading—after all, I had dispensed with some metaphysics such as how math never goes out of style—here I am again, eager to pick up even more finer points of modeling.
Explaining Metaphysics to the nation–
I wish he would explain his Explanation 😉
~ Lord Byron (from Don Juan: Dedication)
- Seriously, though, this is an idea-dense book; pretty high SNR, if you ask me.
- And if you dig system thinking, you’re going to love this thick, juicy book—it weighs in at just over 700 pages (Hey, I just confirmed that number—for all you doubters out there, lol—only after reaching into the bookshelf and pulling out my copy, given to me as a gift by Edward Ashford Lee while on the UC Berkeley campus a couple of years ago when he pulled his personal copy out of his bookshelf (he’s the Robert S. Pepper Distinguished Professor Emeritus in the EECS Department at Berkeley.) 🎓
- The demo he gave me (of the reference implementation, Ptolemy II) was pretty cool, too. But I digress.
- The point is is this: The essential engineer not only chisels with a mind informed by mathematical precision, he also draws with the hands imbued by the passion of an artist (And here I invite you to check the Escher-style, framed drawing in the pic above, also courtesy of Edward.)
- Speaking of this blending of engineering and art, I can scarcely do better than point you in the direction of a handful of resources:
1. Plato And The Nerd 👓
2. Return of Plato And The Nerd 🚂
3. Plato And The Nerd Strikes Back 🚀
- Enough reading material (for now, anyway)?
- Should you wish to delve deeper still into modeling goodness (with Ptolemy II), though, I invite you to check out a reasonably in-depth write-up under the guise of: Software Actors, Rare Benefactors 🎭 🎬 🎥
Read My Lips: No Moh’ Selfies! 🎭
Wait, wait, wait… Honest, this time. Or has your traumatized memory—well, I confess it hasn’t been that long since we peered into the soul of edge computing, refracted as it was through a dozen selfies—ushered in a cavalry of ghosts? Yo, Casper 😉
Look at it this way: The work of design invariably involves peering deep into abstract stuff, amirite or what? So what’s wrong with some self-reflection, eh? And frankly, all I’m doing (in the pic above, anyway) is emerging from a daylong planning and design session not so long ago…
And since we happened to be talking compassion—I mean selfie—fatigue, let’s put things in perspective. Trust me, and this is especially for those moaning and groaning about my pics, you’ll be counting your blessings in five seconds flat! Check this…
What If We Got Fearful Symmetry? 🐯
Tyger Tyger, burning bright,
In the forests of the night;
What immortal hand or eye,
Could frame thy fearful symmetry?
~ William Blake (in The Tyger)
Man, those poets need to get their spellings right (“Tyger“, for example: Sheesh, for crying out loud!) I mean, I feel like wielding some poetic license and refactoring—um, I mean, rewording—the poem by, for starters, renaming it The “Tigger” right now 💠
(Hint: Count your blessings, because I could have regaled you with… The Tigger)
What If Raindrops Kept Falling On Your Head? ⛈
I was stunned by Mary Karr’s memoir, The Liars’ Club. Not just by its ferocity, its beauty, and by her delightful grasp of the vernacular—but by its totality…
~ Stephen King’s (in On Writing: A Memoir of the Craft)
I’m soaking wet! Such bountiful rain… “Hey,” asks this bedraggled blogger, “are we in Seattle or something?”
(Reminder: Count your blessings, because we could have been. You know what I’m saying?)
What If The World Suddenly Turned Bokeh, Eh? 🎡
Atomic: In the context of concurrent operations, it describes an operation which appears to take effect at a single point in time so that another concurrent process can’t encounter the operation in a “half-finished” state.
Ah, atoms, atoms, everywhere? Especially those bokeh atoms adorning our hapless, symmetry-defying microservices book in the pic above: My bad, and a rookie mistake to smudge the pic with a smidgen of bokeh. Darn. But look, it’ll all eventually become consistent… in the cosmic reality of things, in the grand scheme of things.
(Subtle hint: Please, I implore you, count your blessings, because, solar flares notwithstanding, we could be bombarded with a barrage of bokeh atoms, willy nilly, as in that Indiana Jones movie where he goes tumbling down the street in a fridge!)
Void This Polaroid. Right Now 📷
A popular alternative to traditional snapshot-only persistence is event sourcing. Instead of storing the state of an entity in a database, you store the series of events that lead up to the state. Storing all of the events increases the analytical capabilities of a business. Instead of just asking what the current state of an entity is, a business can ask what the state was at any time in the past…
~Scott Millett and Nick Tune (in Patterns, Principles, and Practices of Domain-Driven Design).
Wait, what kind of snapshot are we talking about anyway, the Polaroid kind or the DDD one?!
(Gentle reminder: Count your blessings, please, because, instead of the primrose-pretty and popular alternative to traditional snapshot-only persistence that is event sourcing, we could instead have been talking about grungy old snapshot isolation and repeatable reads! And yes, you could be forgiven for thinking that it does everything that a transaction needs to do. But let’s eject from purgatory and similar contemplations, such as our ill-starred hero Peyton Farquhar in Ambrose Bierce’s An Occurrence at Owl Creek Bridge. Brr… Shiver-me-timbers, as our spunky, spinach-munching Popeye would say.)
Doggone It: Daguerreotype Denouement?! 🎥
Jack London wrote this book called Martin Eden—and which I had to study as an undergrad—from which we learned about this thing called a denouement! It’s like the unraveling of a ritornello or something.
(Penultimate hint: Do count your blessings, won’t you? Or would you rather try to unravel the complex layers of an autodidact’s unrequited love writ large across the pages of Jack London’s aforementioned book? Just sayin’.)
Cookie-cutters, Anyone? 🎁
We could slice and dice—cookie-cutter-style—every which way around the software design landscape! And all we get out of that was the neon-bordered postage stamp (above) with yet another facet of fearful symmetry writ upon it? Darn.
(Final squabble: But hey, this may be something we technology types can dig. You know, stuff such as carving design out of nothing at all as we go about realizing designs in code. And symmetry has shone the brightest (in the land of code anyway) with the light of Lisp—with its uniquely unmatched notion of homo-iconicity, where code is data and data is code—specifically the Lisp dialect with which I’m familiar: Clojure.)
Back-breaking Load Or Something? 🐫
So heavy was the load that we had to call in the troops (above) from the martial arts academy! As in corporeal matters, so in matters of bits and bytes. But I’m sure you—and I certainly do—want to keep things lean when it comes to software.
Yep, best to keep software lean. Let microservices be your allies in this endeavor. Cool? Until next time, then? No? You want more?! 🙉
Ah, you see—sharp reader that you are—I realize that I owe you a Dedication. Do this: Walk the primrose path (right around the chocolate red rose), and you’ll find what you’re looking for. Promise.
Dedication, Plus a Thank You! 💝
Ohh, I got a love—I got somebody
This love—got a hold on me
Yeah, I got a love—I got somebody
This love—got a hold on me
~ Christine McVie (Lyrics from Got A Hold On Me)
Last, but certainly not least, here is the Dedication I had hinted at: That gorgeous rose is for my sweetheart—my wife—who helps me stay grounded (on earth) so that, with both feet firmly planted on the ground, I can keep reaching for the stars 🌟 🌟 🌟 🌟
And a big thank you to my dear readers (just like you!) who keep me motivated with comments such as these:
- I wonder, “Where in the world did he get the time, energy, and brain power to construct such an essay?” 📫
- You definitely put a brand new spin on… 💰
- Welcome back, Marco Polo of the programming world! 📬
- You are so cool! 📫
- Rarely do I come across a blog that’s… 👕
- You make blogging look easy. 🏀
- It’s always nice to see your wonderful brain at work, Sir Akram!
- You ought to take part in a contest for one of the best sites on the web! 🏄
- Hi! I like your writing so so much! 📩
- Great post Akram. 📪
- Build things with care. 📩
- Another excellent post Akram. 📫
- Hey Akram. Great essay as usual… 💰
- Your passion and dedication towards writing clearly shows… 📪
- Fascinating essay! 📩
- Great essay Akram, the new formatting is much better now 📬
- Goodness Akram! You’ve actually managed to out do yourself by a factor of 41! 👕
- Hi Akram, I think a lot of us were introduced to the wave/particle-like duality of OO/FP by Scala… 💰
- Well done, Sir Akram! 📫
- Truly enlightening for a budding (wannabe) Computer Scientist like me.
- It’s Amazing! Am exceptionally glad to peruse your blog. 🏀
- This blog awesome and i learn a lot about programming from here 📬
(Life Vest-style Warning: Some of the links above will take you to our old blog site—which I no longer maintain and where the visitor count was 111,208 last time I checked and which has tonnes of comments—so do be sure to navigate right back to this, our new blog site. Please don’t be left stranded in the twilight zone; I promise to set up a redirect to automate that, but don’t hold your breath for that.)
And with that, we draw this essay to a close—for real this time. Until next time, then.
As for anyone so bold as to operate along the dictums of a certain Rolling Stones song (I Can’t Get No Satisfaction), and you really, really must know where the inspiration for the title of this essay—Microservices In Small Pieces—came from, we’ve got you covered, too: So I was inspired by the acrostic title of Christian Queinnec’s hard-hitting tome on LISP named Lisp In Small Pieces (Cambridge University Press, 2003). Ah, Lisp; so sweet, so tantalizing. For more of my thoughts on that language, which is the LISP dialect (Clojure) that runs flawlessly on the JVM, and one in which, sadly, I hardly do any programming any more, you can find the whole stash here.