MicroCule, A Love Story

Often I find myself in a situation that requires a quick and dirty custom micro-service to support one Proof-Of-Concept or another, with a wide array of NPM available module I usually resort to nodejs and in few minutes I’d have a nodejs script that does exactly what I wanted until just few weeks ago the only option I had for hosting that service would have been hook.io, a free micro-services hosting service that provides decent yet none stellar performance QoS such as with any cloud based free service often things didn’t work at the required performance level and sometimes the nodejs module I wanted wasn’t available on the server, however other than starting my own app engine and installing all the containers and all the associated hassle I had to make do with whatever was generously offered by hook.io.

In comes Micro-Cule,  Micro-cule is a Software Development Kit and Command Line Interface for spawning streaming stateless HTTP microservices for any programming language or arbitrary binary.

Installed on my amazon micro instance it doesn’t take more than one, yes ONE command to spawn a fully qualified micro-service to do my bidding, and here is the fun part it supports 20 different languages, so basically its like self hosting a very lean easy to manage middleware that can turn any of your hacked scripts into webservices. Micro-Cule is part of hook.io project but it offers the core service without the whole hook.io array of bells and whistles which I think is a very smart move from hook.io people, given that most of the potential users would just want to run their own webservices rather than offer a webservices hosting service.

I’m in love with microcule given how it has liberated me from heroku, google apps, amazon lambda and the even more cumbersome self hosted solutions and For all means and purposes i think microcule is the perfect webservices hosting solution for prototyping, testing and development, perhaps even production with some careful configuration.

node js script to send email over SMTP

I’ve had this challenge for which the only solution was building an nodejs webhook adapter for my smtp server. Using webhooks and the following script I was able to enable API access for my email server (which it lacked).

 

 

const SMTPConnection = require(‘smtp-connection’);
var options = {
host: ‘smtp.gmail.com’,

port: 465,
secure: true,
// requireTLS: true,
ignoreTLS: true,
debug: true
};
var envelope = {
from: ‘<user>@gmail.com’,
to: ‘badr42@gmail.com’,

};

var auth = {
user: ‘<user>@gmail.com’,
pass: ‘<pass>’,

};
var message=”hello world”

let connection = new SMTPConnection(options);
connection.connect(function(err, connect){
if(err){
console.log(“error connecting”);
console.log(err);
}else{
console.log(“attempting to login”);
console.log(connect);

connection.login(auth, function(err, connect){
if(err){
console.log(“error logging in”);
console.log(err);
}else{
console.log(“logged in”);
console.log(connect);
connection.send(envelope, message, function(err, result){
if(err){
console.log(err);
}else{
console.log(“email sent”);
console.log(result);
connection.quit();
}
});

}
});

}
});

Toxic Technology Behavior

Over my career I observed this behavior in more than one company; the only difference between one company to another is how prevalent this behavior is. Its a cancer that slowly spreads in the company kicking out all the none toxic behavior until the entire organization seizes and productivity drops to zero.

 

  1. Always create a dependency on someone else.
  2. Always leave an open action item pending on someone else.
  3. Make sure to include as many people into the project as possible. i.e. Generally speaking if a project includes more than 10 people it comes to a stand still.
  4. Raise open ended questions to external parties with little or no background on the project on hand. ex: looping in security team/compliance.
  5. Make sure that the last email in the chain is not addressed to you.

The main directive here is to make sure that the project is always late, because of other people of course, and is not delivered. The product of an undelivered project can not be assessed and the more critical it becomes with delay the importance of the people handling it increases.

The worst thing about this toxic behavior is how the number of people practicing it seems to increase exponentially, with the good employees either turning or simply leaving the organization.

Digital Telecoms Explained

Digital is the new frontier in the telecom industry with digital transformation projects becoming a commonality among telcos, but what exactly is a digital telecom ?

A good starting would be defining what is NOT a digital telecom, A telecom that requires direct interaction between customers and its employees can not be classified as a digital telecom.

A telecom that requires direct interaction between the user and its employees can not be classified as a digital telecom.

A digital telco is a telco that allows customers to enjoy the service without having to think or deal with the telco itself. In the digital world a service provider biggest differentiator is being invisible. Digital telcos don’t try to improve the quality of their call centers they eliminate them all together.

Call centers have no place in the digital services era. The services offered to the customer should be built from the ground up to cater for self-service, customers shouldn’t need anybody to help them complete certain tasks, CallCenters were created in a time when the technology fell short from achieving true customer autonomy certain tasks were simply too hard to automate and thus required that human touch.

creativeadvertisements10

Too hard to automate? have someone do it

Technology has gone a long way since these days and digital experiences are now possible and accessible. A good example of a digital experience is gmail, it requires little effort from the user with minimal friction with the service provider, gmail users rarely if ever require any support from Google, there is little a user can’t do online using few clicks.

Digital telcos are typically cheaper to run and operate as most of the operational expenses are minimized or even eliminated, this allows for cheaper rates and affording a higher customer acquisition cost (as in pampering potential customers). Digitizing the user end experience can be conducted by focusing on the following fronts:

  1. Online :
    • No interaction with employees should be required, Everything should be available online.
    • The sale process should be offered online with most of the sales happening through the online channel.
  2. Mobile :
    • Customers should be able to fulfill all of their needs using their devices, no task should be too hard or too complicated to be conducted using the customer’s mobile device. This requires building everything from the ground up with that in mind, customer’s should be able to see his account information, buy services, even terminate his line using his device.
    • The entire experience should be contained within a single application, even when the customer transitions to a web-shop this should be done transparently and offering a consistent look and feel.
  3. Digital Store :
    • Since most of the sales is targeted to be conducted online the digital store should be in the center of the customer experience.
    • Drawing from the accumulated knowledge by eCommerce sites such as amazon and ebay to offer the customer a truly tailed experience based on his usage history and segmentation.
  4. Social:
    • Social networks can be seen as a platform rather than websites, value can be derived by building on top of them.
    • Social promos can be created (such as Member Get Member promos) to motivate users to organically share their experience with the product.

A good example of a digital telco is the company I’m currently engaged with, feel free to check out the experience we are offering http://www.Jawwy.sa

Using FizzBuzz to Find Developers who Grok Coding

Imran On Tech

On occasion you meet a developer who seems like a solid programmer. They know their theory, they know their language. They can have a reasonable conversation about programming. But once it comes down to actually producing code they just don’t seem to be able to do it well.

You would probably think they’re a good developer if you’ld never seen them code. This is why you have to ask people to write code for you if you really want to see how good they are. It doesn’t matter if their CV looks great or they talk a great talk. If they can’t write code well you probably don’t want them on your team.

After a fair bit of trial and error I’ve come to discover that people who struggle to code don’t just struggle on big problems, or even smallish problems (i.e. write a implementation of a linked list). They…

View original post 261 more words