IT Manifesto

Instead of talking about microservices, just say push-based services. Instead of talking about RPC, just say pull-based services. Instead of talking about Agile, just say “anything goes”. Instead of talking about thought leaders, just say diversity of perspectives. Instead of talking about scalable, just say awesome. Instead of talking about DevOps, just say Dev/Ops. Instead…

Exploring Docker

Reposted from https://github.com/ibmendoza/go-examples/tree/master/docker Tested using Docker v1.12.0-rc4 (curl -fsSL https://test.docker.com/ | sh) Example code: https://github.com/ibmendoza/go-examples/blob/master/docker/helloworld.go Run on bare metal http://localhost:8080/sdf Output: Hi there, I love sdf! From: 192.168.0.121 fe80::4c99:7e59:9085:6f87 fe80::989d:fb29:9977:774c fe80::b4ed:4d9b:91e4:d9cd 192.168.56.1 192.168.99.1 192.168.0.121 With docker run First, build the Docker image using the Dockerfile below FROM scratch COPY helloworld /helloworld EXPOSE 8080 CMD [“/helloworld”]…

Golang 101

Do you want to be a developer, and sustain a fun and meaningful IT Marketplace? Just click HERE. Download Go Installation Download the latest version of Go at https://golang.org/dl. Choose the appropriate file depending on your operating system For Windows 32-bit – download the file ending with windows-386.msi For Windows 64-bit – download the file…

Untangle the Bad Parts

TL;DR. This is a subjective view and must be put in context of how things in IT should work that are simpler, better, faster and more importantly, keep you sane. In the pages of history, you will see technologies that rise, thrive and still survive in spite of the emergence of more nimble and much…

A Tale of Two Distributed Systems

TL;DR. In any distributed system, it is all about coordination and data consistency. Distributed system = distributed computing + distributed data When studying distributed systems, you will eventually stumble into the debate of whether consistency needs consensus or not. But as a distributed system is basically a collective unit of two distinct parts (distributed computing…

Physical/Virtual Machine vs Application Machine

TL;DR. With a physical/virtual machine, you program for an operating system. With an application machine, you program for a container runtime. With all the confusion as to the real nature of containers, let me set the record straight. A container, like the physical phenomenon called light, exhibits dual nature. That of an application and that…

Dev/Ops, not DevOps

TL;DR. A full-stack developer is a myth, let alone a DevOps. Devs build software for humans. Ops build software for machines. Dev (short for Developer) Devs think of push (messaging) or pull (API, RPC, REST) Devs deal with programming languages Devs do socket programming (see 12-Factor App) Devs think of services, not servers Devs deal…

Why Use Go for Microservices

TL;DR. Microservices are small. Containers should be small. Go binary is small. Small is beautiful. Microservices comprise the business logic if you are used to the Three-Tier Architecture. From the development perspective, Go is fast and relatively easy to learn. The standard library is small. The syntax is easy for anyone who is used to…

You Don’t Need Continuous Integration

TL;DR. You don’t need continuous integration (CI) if you are just a solo developer or just developing a trivial Go package. In other words, you don’t need CI if you are not developing large-scale team-based software. Continuous integration is for the following: If you have a distributed version control system (like GitHub) If you are…

Program vs Software

TL;DR. No matter how hard you try to keep the best talents in the world, you win some, you lose some. Instead of falling into the “talent shortage” trap, out-teach the competition as DHH advised. Find the best software that suits the job. Software is for machines, programs are for humans. More software means we…

Why DevOps is Idealism

In my earlier post “Why DevOps is an Illusion”, I sum it up as: DevOps is a euphemism for cost-cutting. It is mind conditioning at the expense of a poor soul who does what two persons are supposed to do. The TL;DR version: DevOps expect so much from people when the bulk of functionality must…

The Problem with Frameworks

  The price you pay with frameworks is abject dependency with its author(s). Not to mention the following: Leaky abstraction Frameworks like Chef, Puppet, Ansible, SaltStack and others all define a specific language (DSL or API) for a particular functionality. Of course, some are extensible but when you hit a dead end, it’s game over….

Why DevOps is an Illusion

TL;DR. DevOps is a euphemism for cost-cutting. It is mind conditioning at the expense of a poor soul who does what two persons are supposed to do. Cloud Opinion has an interesting take on what DevOps is not (see here). Update: Adrian Colyer in his blog mentions “Dev and Ops is a combined role” as…

Thoughts on Programming

TL;DR. Why programming business apps is all about messaging. I have been programming since the early days of Delphi. The event-driven nature of building Windows apps is rather intuitive and Delphi makes it easy and very usable. Except that it is about developing Windows, and not open source. In a world of information explosion where…

Bring your own methodology

I am a firm advocate of Paul Feyerabend regarding his philosophy of science and I think it also applies in IT. To illustrate, individuals are like atoms. You are free to do what you want, when, where, how and why. It is anything goes. You are free to tinker, learn, play, work and teach anywhere,…

NSQ Tutorial

I am looking for NSQ tutorial beyond what Traun Leyden and Guillaume Charmes have provided in their respective posts. In particular, I am looking for a way to decouple nsqd, nsqlookupd, nsq producer, nsq consumer. After a few days wrestling with the documentation and a few Turnkey Linux virtual machines (using only VirtualBox, no Vagrant…

The Myth of the Full Stack Developer

I don’t need to rehash what Andy Shora had already posted in his blog. What I am about to discuss here is that, a full-stack developer is a unicorn. Instead, we must accept the reality that in IT, it is either you are a developer or in operations. Further down the line, a developer can…

Web Services vs Microservices

Microservices start where Web services where end. Web services Web services are meant to be exposed to the public interactive request/reply (pull-based). However, it can be also push-based (e.g. Web sockets) synchronous long-lived process (HTTP-based) transactional user-facing aka user response loop transactions are meant to be processed by an RDBMS (think of ATM transaction) Microservices…