GP launched 013: Update your RegExp!

Grameenphone quietly rolled out its 013 series of numbers and it wrecked everything. No web service, including Google is working with this 013 series of numbers. Its time for developers to fix this mess and update every validation logic you may have for validating mobile numbers or MSISDNs.

I enlisted a few RegExps for de-terrorizing you, even if a bit.

Enough reading, update your RegExps now!

Flask-like “global” request context in Sanic (asyncio)

Although something like Flask’s globally accessible request object is considered a terrible way of writing code (explicit is better than implicit), sometimes it makes sense to use it. For example, while passing a Correlation-ID to track a request’s life cycle through your micro-services.

You can memorize the Correlation-ID throughout the lifecycle of a request without explicitly passing it around like juggling balls. This is actually a good approach as the Correlation ID is not a core business logic – just a distraction. We’ll see how we can implement such a request-bound “global” context in Sanic, and how to setup a simple Correlation ID implementation.

aiotask-context

This nifty Python module can maintain a distinct context against each asyncio Task. Which means, each request can have an associated context we can use to store and pass around passive details.

Now we have a simple Sanic app with the context hooked up.

Implementing Correlation ID Generation and Passing

Now, let’s grab the correlation ID if it comes with the request, or generate our own otherwise. Afterwards, we need to save that value to the context for future use in other parts of the code (i.e. logging, requests to other microservices and so on).

And throughout the code, if you need the cid or any context value you have set, simply use context.get(key).

And the last step is definitely all about responding with the Correlation ID. We’ll be sticking to the middleware for this too. We just need to update the response object from the context.

Great! Now we don’t have to write spaghetti code and get lost in passing CIDs from functions to functions. Cheers!

Erlang and Elixir: Managing Multiple versions with asdf

Often keeping multiple versions of Erlang or Elixir on the same machine might become necessary; also it helps to have the latest versions on your machine as soon as they are released. An amazing tool asdf is capable of doing just that. It makes things as easy as,

Continue reading Erlang and Elixir: Managing Multiple versions with asdf

3 Tools To Help With Writing Scientific Papers

You are finally ready to start writing your first scientific paper, maybe for a journal or conference. But you don’t know where to start. You have heard of LaTeX, BibTex, Citations and nothing is really adding up. You just need easy and uncomplicated tools to work with. Learning about the new tools should not be more difficult than writing the paper itself! I am discussing a few tools and websites here, for beginners.

What is LaTeX and why does it matter?

Wikipedia prescribes LaTeX as a document preparation system; the official website states it as a typesetting system. I would describe LaTeX as a system for preparing documents where fine-grained pixel-by-pixel perfection is a reality. The leading conferences or journals provide their template in LaTeX, and often in word-processor formats. Personally, I have found word processor behavior to be quite unreliable and prefer LaTeX for it’s ease and simplicity. A quick search on your favorite search engine might (and probably will) more reasons to use LaTeX.

BibTex is a markup format for bibliography generation. It is used a lot in par with LaTeX for generating citations according to the required styling.

ShareLaTeX

ShareLaTeX is a website similar to Google Docs, for LaTeX. It allows collaborative editing, history tracking and free hosting online. It also helps out by providing a plethora of templates to choose from; including templates from well-reputed journals or conferences. You will not need to install anything other than a modern web browser on your computer for using ShareLaTex, everything is done online. As per expectation, it can preview and export as PDF.

CiteThisForMe

CiteThisForMe is a great website for managing your bibliography. You can generate citations for books, websites, journal articles and more. By the way, citations are the references you make to content your paper “borrows ideas from”. A variety of export styles are supported, including Harvard, MLA, Vancoover et cetera or the generic BibTex.

Google Scholar Extension for Chrome

This extension lets you search for any piece of text on Google Scholar. Also lets you discover papers, generate citations all without leaving your current tabs. I find it extremely handy for generating quick citations and searching for referenced papers while reading.

I am planning to write down a very basic tutorial on LaTeX syntax sometimes in the near future. Please let me know in the comments if you are interested.