Posts

Courage to Fail

I like phones and tablets. I just love the form factor. Not only are they cute and powerful, but they are also personal too. They have evolved so much to the point of being a reflection, a mirror, of our culture. That is why I love personalizing them with third-party launchers and widgets. So, when I first heard the news about a keynote from Alejandro Flores who, of course, is an important engineer at Amazon’s Web Services division, my very first thoughts were: “is he going to talk about the Amazon FirePhone?” Turns out he did. But this was no mention, sidenote, or a joke regarding something dumb akin to that we surely did once in our lives. The Amazon FirePhone was mentioned in pride and acknowledgment. Surprising—not many confess their own failures. Of course, my intentions are not mockery. My guess is, given its ultimate failure to catch up, workers were fired, and with that, efforts, hopes, and dreams too; laughing at that would be the upmost expression of pretention. My intentio

I Speak the Social Tissue: Or Collaboration May Not Be Enough

Of course I am referencing Walt Whitman’s masterful I Speak the Body Electric , both in praise and in warning. To begin with, yes, a modern and contextual appropriation of the Six Blind Men tale, and its software engineering-esque iteration, Booch’s The Elephant and the Blind Programmers , is all about the practical dangers and futility of looking at the world through just one’s lenses. Simply put, and this is a conclusion from the Philosophy of Science course I took last year (don’t mind me flexing my hippie muscles), our mind is not photographic ; i.e., we are uncapable of, firstly, reminding, let alone retain, every single detail about an observable object. Not in the least less important, we are also unable to see the world through clear unbiased lenses. We are social animals who need language, after all. And as I have written (and many others too) before, our language shapes the way we see the world. For that reason, Wittgenstein would advise us to think and speak not in our term

The SOLID Commandments

Let us do something kind of sacrilegious, but of the fun kind. The SOLID principles might as well be rewritten as follows:   A.      Single Responsibility Principle Thy classes should have exactly one responsibility: a reason to change.   B.      Open/Closed Principle Thy classes ought to be open for extension, but closed for modification.   C.      Liskov Substitution Principles You shall not modify class behavior through the mechanism of inheritance. If type S inherits from type T, then both T and S should be interchangeable in functions that expect T.   D.     Interface Segregation Principle You shall avoid writing monstrous interfaces that burden classes with responsabilities they don’t need or want. Instead, you ought to create a collection of smaller, discrete interfaces, partitioning interface members according to what they concern. Thy classes then shall pick and choose what they implement.   E.      Dependency Inversion Principle You shall depend upo

On Organic Software Architecture (and 5G Networks)

Microservices are here, and I bet they are here to stay longer. First and foremost, as our so-everyday-and-common-they-are-a-given computer devices become more and more powerful, it was only a matter of time they get more and more responsibilities too. And as they get more responsabilities, they will get more individualized until we get a technological fabric that grows and evolves somewhat by itself and mirrors its users. Perhaps a more recent metaphorical trend is 5G networks. Quite rightly, they offer greater speeds and capabilities. But given the bandwidth they must sustain, they are more granular as they must be placed closer to each other to make the whole new network feasible to work. Where the metaphor may begin to fall apart is industry and consumer interest. Of course the industry is interested in both technologies. However, as has been shown in recent surveys, consumers don’t really care about 5G; this is more of an industry push to make consumers fund this network technolo

Software Artisans

Certainly, the idea of software as craftsmanship is revolutionary and right . It is not just another paradigm, for this idea feels like the natural evolution of the historical and cultural flows (or waves, as Bob Martin would say as an analogy) of what computer science has achieved so far, and the mindsets of those who develop code, and those to come. Almost two years ago I read Bob Martin’s Clean Code . I found this book quite delightful, and now I understand it even more. Such work is truly a reflection of the author’s ideas expressed in this podcast since it truly forwards knowledge and wisdom unto the next generation. Yet, this knowledge, sometimes, is told in terms of heuristics and platitudes, much akin to the advice gifted by the old and experienced to the young, almost like revelation. Based on this observation, if I am not ignorant in history, all these movements, status quos , revolutions, and counterrevolutions do look symmetric to historical processes. It feels that way bec

On Growth: Revisiting Hidden Figures

Growth… is a hell of a thing. I watched this movie way back in 2016. My impressions back then were: “it was okay.” I mean, of course, I recognized its plot importance. However, there is a difference between recognizing and feeling . What I did not understand back then is that this movie sort of wasn’t made for me. This film was produced to inspire the Black community: to shed a light in an otherwise oppressed community in America, to demonstrate that dreams could be possible, and, in this case, some are . Reflecting back on the undergraduate career I have taken, of which, with an ever-rising melancholy, is about to end, I believe the greatest lesson I have learnt is empathy. College is, indeed, a transforming experience. Yes, we get to study what we would like to work on. Nonetheless, the college experience is not just about the academics; the humanities are important too. Here, I am using the term humanities in the broadest sense, meaning, mainly, in how purely human communities c

Towards an Aesthetics of Coding

There goes another great article from Fowler… I do have to say, I admire his way of thinking. As I have perceived him, he is not dogmatic. Rather, he is pragmatic, but not of the boring kind. He is pragmatic-passionate; that is, he believes what he believes through introspection, experience, and intuition. He seems able to change his views, but whatever he defends, he defends well, not out of pretension, instead, out of perceiving what he believes is right. Clearly, though, since his view is subjective, and so is mine, we may not agree on some things. But I would like to focus on what we agree with, and from that derive what I believe might be the ideal shape and attitude of coding. First, I totally agree with him regarding the use of diagrams. Thanks, and finally! Diagrams should be used more as a tool, much akin a ruler or a throwable sketch, to understand instead of dictating how our code should look like. I believe this attitude towards diagrams is derived from its frustrations. S