<!DOCTYPE html><html lang="en-US"><head><meta name="viewport" content="width=device-width, user-scalable=yes, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="IE=edge" /><meta charset="UTF-8"><script src="https://ajax.cloudflare.com/cdn-cgi/scripts/7089c43e/cloudflare-static/rocket-loader.min.js" data-cf-settings="1bef34db274d5032774e2ead-|49"></script><link rel="stylesheet" media="print" onload="this.onload=null;this.media='all';" id="ao_optimized_gfonts" href="https://fonts.googleapis.com/css?family=Droid+Sans%7COswald%7CDroid+Sans%3A100%2C200%2C300%2C400%2C500%2C600%2C700%2C800%2C900%7COswald%3A300%7COswald%3A700%7CDroid+Sans%3A300&amp;display=swap" /><link rel="profile" href="https://gmpg.org/xfn/11"><link rel="pingback" href="https://abhinavsingh.com/xmlrpc.php"><link media="all" href="https://abhinavsingh.com/wp-content/cache/autoptimize/css/autoptimize_ac91a16603e22d96320a6f8eafd29735.css" rel="stylesheet" /><title>Abhinav Singh | Engineering, Music, Photography</title><meta name="description" content="Engineering, Music, Photography |" /><meta name="robots" content="index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1" /><link rel="canonical" href="https://abhinavsingh.com/" /><link rel="next" href="https://abhinavsingh.com/page/2/" /><meta property="og:locale" content="en_US" /><meta property="og:type" content="website" /><meta property="og:title" content="Abhinav Singh | Engineering, Music, Photography" /><meta property="og:description" content="Engineering, Music, Photography |" /><meta property="og:url" content="https://abhinavsingh.com/" /><meta property="og:site_name" content="Abhinav Singh" /><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:site" content="@imoracle" /> <script type="application/ld+json" class="yoast-schema-graph">{"@context":"https://schema.org","@graph":[{"@type":["Person","Organization"],"@id":"https://abhinavsingh.com/#/schema/person/736bb9a0b07ccf9d2e74d06434dc7993","name":"Abhinav Singh","image":{"@type":"ImageObject","@id":"https://abhinavsingh.com/#personlogo","inLanguage":"en-US","url":"https://secure.gravatar.com/avatar/ac7e54c246b6c2a44e8851b92aa700fb?s=96&d=mm&r=g","caption":"Abhinav Singh"},"logo":{"@id":"https://abhinavsingh.com/#personlogo"},"sameAs":["https://abhinavsingh.com/","https://fb.com/abhinavsingh","https://instagram.com/imoracle","https://linkedin.com/in/singhabhinav","https://twitter.com/imoracle","https://youtube.com/fellmyway"]},{"@type":"WebSite","@id":"https://abhinavsingh.com/#website","url":"https://abhinavsingh.com/","name":"Abhinav Singh","description":"Engineering, Music, Photography","publisher":{"@id":"https://abhinavsingh.com/#/schema/person/736bb9a0b07ccf9d2e74d06434dc7993"},"potentialAction":[{"@type":"SearchAction","target":"https://abhinavsingh.com/?s={search_term_string}","query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"CollectionPage","@id":"https://abhinavsingh.com/#webpage","url":"https://abhinavsingh.com/","name":"Abhinav Singh | Engineering, Music, Photography","isPartOf":{"@id":"https://abhinavsingh.com/#website"},"about":{"@id":"https://abhinavsingh.com/#/schema/person/736bb9a0b07ccf9d2e74d06434dc7993"},"description":"Engineering, Music, Photography |","inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https://abhinavsingh.com/"]}]}]}</script> <meta name="google-site-verification" content="QFN9rxaNSnXdjnDv0cp8RBAMQHKSzIKsp-9WsPselcY" /><link rel='dns-prefetch' href='//abhinavsingh.com' /><link rel='dns-prefetch' href='//secure.gravatar.com' /><link rel='dns-prefetch' href='//v0.wordpress.com' /><link rel='dns-prefetch' href='//i0.wp.com' /><link rel='dns-prefetch' href='//i1.wp.com' /><link rel='dns-prefetch' href='//i2.wp.com' /><link rel='dns-prefetch' href='//c0.wp.com' /><link rel='dns-prefetch' href='//jetpack.wordpress.com' /><link rel='dns-prefetch' href='//s0.wp.com' /><link rel='dns-prefetch' href='//s1.wp.com' /><link rel='dns-prefetch' href='//s2.wp.com' /><link rel='dns-prefetch' href='//public-api.wordpress.com' /><link rel='dns-prefetch' href='//0.gravatar.com' /><link rel='dns-prefetch' href='//1.gravatar.com' /><link rel='dns-prefetch' href='//2.gravatar.com' /><link href='https://fonts.gstatic.com' crossorigin='anonymous' rel='preconnect' /><link rel="alternate" type="application/rss+xml" title="Abhinav Singh &raquo; Feed" href="https://abhinavsingh.com/feed/" /><link rel="alternate" type="application/rss+xml" title="Abhinav Singh &raquo; Comments Feed" href="https://abhinavsingh.com/comments/feed/" /> <!--[if lt IE 9]> <script type='text/javascript' src='https://abhinavsingh.com/wp-content/themes/fluida/resources/js/html5shiv.min.js?ver=1.8.5' id='fluida-html5shiv-js'></script> <![endif]--><link rel="https://api.w.org/" href="https://abhinavsingh.com/wp-json/" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://abhinavsingh.com/xmlrpc.php?rsd" /><link rel="wlwmanifest" type="application/wlwmanifest+xml" href="https://abhinavsingh.com/wp-includes/wlwmanifest.xml" /><meta name="generator" content="WordPress 5.5.1" /><link rel='shortlink' href='https://wp.me/5GXWU' /><meta name="generator" content="Site Kit by Google 1.18.0" /> <script type="1bef34db274d5032774e2ead-text/javascript">document.documentElement.classList.add(
					'jetpack-lazy-images-js-enabled'
				);</script> </head><body class="home blog wp-embed-responsive fluida-image-one fluida-caption-two fluida-totop-normal fluida-stripped-table fluida-fixed-menu fluida-menu-center fluida-responsive-headerimage fluida-responsive-featured fluida-magazine-two fluida-magazine-layout fluida-comment-placeholder fluida-elementborder fluida-elementshadow fluida-elementradius fluida-normalizedtags fluida-article-animation-slide fluida-menu-animation liquido-child" itemscope itemtype="http://schema.org/WebPage"> <a class="skip-link screen-reader-text" href="#main" title="Skip to content"> Skip to content </a><div id="site-wrapper"><header id="masthead" class="cryout" itemscope itemtype="http://schema.org/WPHeader" role="banner"><div id="site-header-main"><div id="site-header-main-inside"><nav id="mobile-menu"><div><ul id="mobile-nav" class=""><li id="menu-item-1682" class="menu-item menu-item-type-custom menu-item-object-custom current-menu-item current_page_item menu-item-1682"><a title="						" href="/" aria-current="page"><span>Engineering</span></a></li><li id="menu-item-1667" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-1667"><a title="Infinite Focus Pictures		" href="https://infinitefocuspictures.com"><span>Photography</span></a></li><li id="menu-item-1668" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-1668"><a title="				AB Band Official		" href="https://youtube.com/fellmyway"><span>Music</span></a></li><li id="menu-item-1666" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-1666"><a title="				About Abhinav		" href="https://abhinavsingh.com/about"><span>About</span></a></li><li class='menu-main-search menu-search-animated'> <a role='link' href><i class='search-icon'></i><span class='screen-reader-text'>Search</span></a><form role="search" method="get" class="searchform" action="https://abhinavsingh.com/"> <label> <span class="screen-reader-text">Search for:</span> <input type="search" class="s" placeholder="Search" value="" name="s" /> </label> <button type="submit" class="searchsubmit"><span class="screen-reader-text">Search</span><i class="blicon-magnifier"></i></button></form></li></ul></div> <button id="nav-cancel"><i class="blicon-cross3"></i></button></nav><div id="branding"><div id="site-text"><h1 itemprop="headline" id="site-title"><span> <a href="https://abhinavsingh.com/" title="Engineering, Music, Photography" rel="home">Abhinav Singh</a> </span></h1><span id="site-description" itemprop="description">Engineering, Music, Photography</span></div></div><nav id="sheader" class="socials"><a target="_blank" href="https://www.linkedin.com/in/singhabhinav" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-1906"><span>LinkedIn</span></a><a target="_blank" href="https://www.twitter.com/imoracle" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-1905"><span>Twitter</span></a><a href="https://www.youtube.com/fellmyway" class="custom menu-item menu-item-type-custom menu-item-object-custom menu-item-1907"><span>YouTube</span></a><a target="_blank" href="https://www.facebook.com/abhinavsingh" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-1904"><span>Facebook</span></a></nav> <a id="nav-toggle" href="#"><span>&nbsp;</span></a><nav id="access" role="navigation" aria-label="Primary Menu" itemscope itemtype="http://schema.org/SiteNavigationElement"><div><ul id="prime_nav" class=""><li class="menu-item menu-item-type-custom menu-item-object-custom current-menu-item current_page_item menu-item-1682"><a title="						" href="/" aria-current="page"><span>Engineering</span></a></li><li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-1667"><a title="Infinite Focus Pictures		" href="https://infinitefocuspictures.com"><span>Photography</span></a></li><li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-1668"><a title="				AB Band Official		" href="https://youtube.com/fellmyway"><span>Music</span></a></li><li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-1666"><a title="				About Abhinav		" href="https://abhinavsingh.com/about"><span>About</span></a></li><li class='menu-main-search menu-search-animated'> <a role='link' href><i class='search-icon'></i><span class='screen-reader-text'>Search</span></a><form role="search" method="get" class="searchform" action="https://abhinavsingh.com/"> <label> <span class="screen-reader-text">Search for:</span> <input type="search" class="s" placeholder="Search" value="" name="s" /> </label> <button type="submit" class="searchsubmit"><span class="screen-reader-text">Search</span><i class="blicon-magnifier"></i></button></form></li></ul></div></nav></div></div><div id="header-image-main"><div id="header-image-main-inside"><div class="header-image" style="background-image: url(https://abhinavsingh.com/wp-content/themes/fluida/resources/images/headers/window.jpg)"></div> <img class="header-image" alt="Abhinav Singh" src="https://abhinavsingh.com/wp-content/themes/fluida/resources/images/headers/window.jpg" /></div></div></header><div id="content" class="cryout"><div id="container" class="one-column"><main id="main" role="main" class="main"><div id="content-masonry" class="content-masonry" itemscope itemtype="http://schema.org/Blog"><article id="post-1680" class="hentry post-1680 post type-post status-publish format-standard category-open-source category-python tag-appurify tag-http tag-proxy tag-python" itemscope itemtype="http://schema.org/BlogPosting" itemprop="blogPost"><div class="article-inner"><header class="entry-header"><div class="entry-meta"> <span class="bl_categ"> <i class="icon-folder-open icon-metas" title="Categories"></i><a href="https://abhinavsingh.com/category/engineering/open-source/" rel="category tag">Open Source</a>, <a href="https://abhinavsingh.com/category/engineering/python/" rel="category tag">Python</a></span></div><h2 class="entry-title" itemprop="headline"><a href="https://abhinavsingh.com/proxy-py-a-lightweight-single-file-http-proxy-server-in-python/" itemprop="mainEntityOfPage" rel="bookmark">Proxy.py &#8211; A lightweight, single file HTTP proxy server in Python</a></h2><div class="entry-meta"> <span class="author vcard" itemscope itemtype="http://schema.org/Person" itemprop="author"> <em>By</em> <a class="url fn n" rel="author" href="https://abhinavsingh.com/author/abhinav/" title="View all posts by Abhinav Singh" itemprop="url"> <em itemprop="name">Abhinav Singh</em> </a> </span> <span class="onDate date"> <i class="icon-time icon-metas" title="Date"></i> <time class="published" datetime="2018-10-12T02:23:07-07:00" itemprop="datePublished">October 12, 2018</time> <time class="updated" datetime="2019-10-24T18:48:24-07:00" itemprop="dateModified">October 24, 2019</time> </span> <span class="footer-tags" itemprop="keywords"> <i class="icon-tag icon-metas" title="Tagged"></i>&nbsp;<a href="https://abhinavsingh.com/tag/appurify/" rel="tag">appurify</a>, <a href="https://abhinavsingh.com/tag/http/" rel="tag">HTTP</a>, <a href="https://abhinavsingh.com/tag/proxy/" rel="tag">proxy</a>, <a href="https://abhinavsingh.com/tag/python/" rel="tag">python</a> </span> <span class="comments-link"><i class="icon-comments icon-metas"></i><a href="https://abhinavsingh.com/proxy-py-a-lightweight-single-file-http-proxy-server-in-python/#comments" itemprop="discussionURL"><strong title="2 Comments">2</strong></a></span></div></header><div class="entry-summary" itemprop="description"><p>In several cases, developers wanted their uploaded (unreleased) mobile apps to communicate with under-development server-side modules running within company intranet. In absence of a communication channel between Appurify devices and company intranet, developers were forced to either disable such features in their mobile apps or simply ignore testing such features. To facilitate end-to-end testing for such scenarios, I architected a proxy infrastructure; A stripped down version of which was a lightweight HTTP proxy server in Python.</p></div><footer class="post-continue-container"> <a class="continue-reading-link" href="https://abhinavsingh.com/proxy-py-a-lightweight-single-file-http-proxy-server-in-python/"><span>Read more</span><em class="screen-reader-text">"Proxy.py &#8211; A lightweight, single file HTTP proxy server in Python"</em><i class="icon-angle-right"></i></a></footer> <span class="schema-publisher" itemprop="publisher" itemscope itemtype="https://schema.org/Organization"> <span itemprop="logo" itemscope itemtype="https://schema.org/ImageObject"><meta itemprop="url" content="https://abhinavsingh.com"> </span><meta itemprop="name" content="Abhinav Singh"> </span><link itemprop="mainEntityOfPage" href="https://abhinavsingh.com/proxy-py-a-lightweight-single-file-http-proxy-server-in-python/" /></div></article><article id="post-1574" class="hentry post-1574 post type-post status-publish format-standard category-open-source category-scalability tag-pubsub tag-redis" itemscope itemtype="http://schema.org/BlogPosting" itemprop="blogPost"><div class="article-inner"><header class="entry-header"><div class="entry-meta"> <span class="bl_categ"> <i class="icon-folder-open icon-metas" title="Categories"></i><a href="https://abhinavsingh.com/category/engineering/open-source/" rel="category tag">Open Source</a>, <a href="https://abhinavsingh.com/category/engineering/scalability/" rel="category tag">Scalability</a></span></div><h2 class="entry-title" itemprop="headline"><a href="https://abhinavsingh.com/customizing-redis-pubsub-for-message-persistence-part-2/" itemprop="mainEntityOfPage" rel="bookmark">Customizing Redis pubsub for message persistence &#8211; Part 2</a></h2><div class="entry-meta"> <span class="author vcard" itemscope itemtype="http://schema.org/Person" itemprop="author"> <em>By</em> <a class="url fn n" rel="author" href="https://abhinavsingh.com/author/abhinav/" title="View all posts by Abhinav Singh" itemprop="url"> <em itemprop="name">Abhinav Singh</em> </a> </span> <span class="onDate date"> <i class="icon-time icon-metas" title="Date"></i> <time class="published" datetime="2015-04-03T20:08:30-07:00" itemprop="datePublished">April 3, 2015</time> <time class="updated" datetime="2019-10-24T18:49:21-07:00" itemprop="dateModified">October 24, 2019</time> </span> <span class="footer-tags" itemprop="keywords"> <i class="icon-tag icon-metas" title="Tagged"></i>&nbsp;<a href="https://abhinavsingh.com/tag/pubsub/" rel="tag">PubSub</a>, <a href="https://abhinavsingh.com/tag/redis/" rel="tag">Redis</a> </span> <span class="comments-link"><i class="icon-comments icon-metas"></i><a href="https://abhinavsingh.com/customizing-redis-pubsub-for-message-persistence-part-2/#comments" itemprop="discussionURL"><strong title="3 Comments">3</strong></a></span></div></header><div class="entry-summary" itemprop="description"><p>In the last post we saw how Redis can easily be modified to persist the last published message on PubSub channels. Without subscribing to the PubSub channel we were able to get the last published message from Redis db. In this post, I will take that idea one step ahead and add native capabilities within Redis to persist all the unprocessed messages published on PubSub channel in channel specific lists. We&#8217;ll also preserve our capability to send the last published message to clients upon subscription.</p></div><footer class="post-continue-container"> <a class="continue-reading-link" href="https://abhinavsingh.com/customizing-redis-pubsub-for-message-persistence-part-2/"><span>Read more</span><em class="screen-reader-text">"Customizing Redis pubsub for message persistence &#8211; Part 2"</em><i class="icon-angle-right"></i></a></footer> <span class="schema-publisher" itemprop="publisher" itemscope itemtype="https://schema.org/Organization"> <span itemprop="logo" itemscope itemtype="https://schema.org/ImageObject"><meta itemprop="url" content="https://abhinavsingh.com"> </span><meta itemprop="name" content="Abhinav Singh"> </span><link itemprop="mainEntityOfPage" href="https://abhinavsingh.com/customizing-redis-pubsub-for-message-persistence-part-2/" /></div></article><article id="post-1537" class="hentry post-1537 post type-post status-publish format-standard category-open-source tag-open-source tag-redis" itemscope itemtype="http://schema.org/BlogPosting" itemprop="blogPost"><div class="article-inner"><header class="entry-header"><div class="entry-meta"> <span class="bl_categ"> <i class="icon-folder-open icon-metas" title="Categories"></i><a href="https://abhinavsingh.com/category/engineering/open-source/" rel="category tag">Open Source</a></span></div><h2 class="entry-title" itemprop="headline"><a href="https://abhinavsingh.com/customizing-redis-pubsub-for-message-persistence/" itemprop="mainEntityOfPage" rel="bookmark">Customizing Redis pubsub for message persistence</a></h2><div class="entry-meta"> <span class="author vcard" itemscope itemtype="http://schema.org/Person" itemprop="author"> <em>By</em> <a class="url fn n" rel="author" href="https://abhinavsingh.com/author/abhinav/" title="View all posts by Abhinav Singh" itemprop="url"> <em itemprop="name">Abhinav Singh</em> </a> </span> <span class="onDate date"> <i class="icon-time icon-metas" title="Date"></i> <time class="published" datetime="2015-03-30T00:01:49-07:00" itemprop="datePublished">March 30, 2015</time> <time class="updated" datetime="2019-10-24T18:49:48-07:00" itemprop="dateModified">October 24, 2019</time> </span> <span class="footer-tags" itemprop="keywords"> <i class="icon-tag icon-metas" title="Tagged"></i>&nbsp;<a href="https://abhinavsingh.com/tag/open-source/" rel="tag">Open Source</a>, <a href="https://abhinavsingh.com/tag/redis/" rel="tag">Redis</a> </span> <span class="comments-link"><i class="icon-comments icon-metas"></i><a href="https://abhinavsingh.com/customizing-redis-pubsub-for-message-persistence/#comments" itemprop="discussionURL"><strong title="8 Comments">8</strong></a></span></div></header><div class="entry-summary" itemprop="description"><p>Redis comes packed with a simple yet powerful PubSub API.  It provides low latency and scales well.  A message published on a channel is received by subscriber(s) at the other end.  However, if no active subscriber is found the message is simply lost.  This drawback puts Redis out of the probables list for several use cases where message persistence of unprocessed published messages is desired.  It&#8217;s also probably a reason why several open source projects that support Redis as a broker are based upon it&#8217;s list push / pop API.  In this post I will demonstrate how to modify Redis PubSub API to support message persistence, opening possibilities for several interesting use cases.</p></div><footer class="post-continue-container"> <a class="continue-reading-link" href="https://abhinavsingh.com/customizing-redis-pubsub-for-message-persistence/"><span>Read more</span><em class="screen-reader-text">"Customizing Redis pubsub for message persistence"</em><i class="icon-angle-right"></i></a></footer> <span class="schema-publisher" itemprop="publisher" itemscope itemtype="https://schema.org/Organization"> <span itemprop="logo" itemscope itemtype="https://schema.org/ImageObject"><meta itemprop="url" content="https://abhinavsingh.com"> </span><meta itemprop="name" content="Abhinav Singh"> </span><link itemprop="mainEntityOfPage" href="https://abhinavsingh.com/customizing-redis-pubsub-for-message-persistence/" /></div></article><article id="post-1443" class="hentry post-1443 post type-post status-publish format-standard category-open-source category-scalability tag-android tag-docker tag-erlang-2 tag-golang tag-java tag-jaxl tag-php tag-python" itemscope itemtype="http://schema.org/BlogPosting" itemprop="blogPost"><div class="article-inner"><header class="entry-header"><div class="entry-meta"> <span class="bl_categ"> <i class="icon-folder-open icon-metas" title="Categories"></i><a href="https://abhinavsingh.com/category/engineering/open-source/" rel="category tag">Open Source</a>, <a href="https://abhinavsingh.com/category/engineering/scalability/" rel="category tag">Scalability</a></span></div><h2 class="entry-title" itemprop="headline"><a href="https://abhinavsingh.com/back-to-blogging-what-to-expect/" itemprop="mainEntityOfPage" rel="bookmark">Back to blogging: What to expect</a></h2><div class="entry-meta"> <span class="author vcard" itemscope itemtype="http://schema.org/Person" itemprop="author"> <em>By</em> <a class="url fn n" rel="author" href="https://abhinavsingh.com/author/abhinav/" title="View all posts by Abhinav Singh" itemprop="url"> <em itemprop="name">Abhinav Singh</em> </a> </span> <span class="onDate date"> <i class="icon-time icon-metas" title="Date"></i> <time class="published" datetime="2014-10-25T22:04:24-07:00" itemprop="datePublished">October 25, 2014</time> <time class="updated" datetime="2019-10-24T18:50:13-07:00" itemprop="dateModified">October 24, 2019</time> </span> <span class="footer-tags" itemprop="keywords"> <i class="icon-tag icon-metas" title="Tagged"></i>&nbsp;<a href="https://abhinavsingh.com/tag/android/" rel="tag">Android</a>, <a href="https://abhinavsingh.com/tag/docker/" rel="tag">Docker</a>, <a href="https://abhinavsingh.com/tag/erlang-2/" rel="tag">erlang</a>, <a href="https://abhinavsingh.com/tag/golang/" rel="tag">Golang</a>, <a href="https://abhinavsingh.com/tag/java/" rel="tag">Java</a>, <a href="https://abhinavsingh.com/tag/jaxl/" rel="tag">JAXL</a>, <a href="https://abhinavsingh.com/tag/php/" rel="tag">PHP</a>, <a href="https://abhinavsingh.com/tag/python/" rel="tag">python</a> </span> <span class="comments-link"><i class="icon-comments icon-metas"></i><a href="https://abhinavsingh.com/back-to-blogging-what-to-expect/#comments" itemprop="discussionURL"><strong title="9 Comments">9</strong></a></span></div></header><div class="entry-summary" itemprop="description"><p>I started this blog as a way to share my experiments and experiences while learning web development and computer science in general. In the first 2 years (between Apr&#8217;08 and Aug&#8217;10) I wrote as many as 100 blog posts. Quite a frenzy. Ever since, I only managed to write 5-6 posts in the following 4 years, about nearly 45 drafts which may now never get published. Good thing is that, I am back to blogging, which means a lot to share.</p></div><footer class="post-continue-container"> <a class="continue-reading-link" href="https://abhinavsingh.com/back-to-blogging-what-to-expect/"><span>Read more</span><em class="screen-reader-text">"Back to blogging: What to expect"</em><i class="icon-angle-right"></i></a></footer> <span class="schema-publisher" itemprop="publisher" itemscope itemtype="https://schema.org/Organization"> <span itemprop="logo" itemscope itemtype="https://schema.org/ImageObject"><meta itemprop="url" content="https://abhinavsingh.com"> </span><meta itemprop="name" content="Abhinav Singh"> </span><link itemprop="mainEntityOfPage" href="https://abhinavsingh.com/back-to-blogging-what-to-expect/" /></div></article><article id="post-1355" class="hentry post-1355 post type-post status-publish format-standard category-open-source category-php category-xmpp tag-facebook tag-gtalk tag-x-facebook-platform tag-x-oauth2 tag-xmpp" itemscope itemtype="http://schema.org/BlogPosting" itemprop="blogPost"><div class="article-inner"><header class="entry-header"><div class="entry-meta"> <span class="bl_categ"> <i class="icon-folder-open icon-metas" title="Categories"></i><a href="https://abhinavsingh.com/category/engineering/open-source/" rel="category tag">Open Source</a>, <a href="https://abhinavsingh.com/category/engineering/php/" rel="category tag">PHP</a>, <a href="https://abhinavsingh.com/category/engineering/xmpp/" rel="category tag">XMPP</a></span></div><h2 class="entry-title" itemprop="headline"><a href="https://abhinavsingh.com/how-to-perform-x-facebook-platform-and-google-talk-x-oauth2-xmpp-authentication-with-php-jaxl-library/" itemprop="mainEntityOfPage" rel="bookmark">How to perform X-FACEBOOK-PLATFORM and Google Talk X-OAUTH2 XMPP authentication with PHP Jaxl library</a></h2><div class="entry-meta"> <span class="author vcard" itemscope itemtype="http://schema.org/Person" itemprop="author"> <em>By</em> <a class="url fn n" rel="author" href="https://abhinavsingh.com/author/abhinav/" title="View all posts by Abhinav Singh" itemprop="url"> <em itemprop="name">Abhinav Singh</em> </a> </span> <span class="onDate date"> <i class="icon-time icon-metas" title="Date"></i> <time class="published" datetime="2012-09-17T22:12:18-07:00" itemprop="datePublished">September 17, 2012</time> <time class="updated" datetime="2019-10-24T18:50:38-07:00" itemprop="dateModified">October 24, 2019</time> </span> <span class="footer-tags" itemprop="keywords"> <i class="icon-tag icon-metas" title="Tagged"></i>&nbsp;<a href="https://abhinavsingh.com/tag/facebook/" rel="tag">Facebook</a>, <a href="https://abhinavsingh.com/tag/gtalk/" rel="tag">Gtalk</a>, <a href="https://abhinavsingh.com/tag/x-facebook-platform/" rel="tag">X-FACEBOOK-PLATFORM</a>, <a href="https://abhinavsingh.com/tag/x-oauth2/" rel="tag">X-OAUTH2</a>, <a href="https://abhinavsingh.com/tag/xmpp/" rel="tag">XMPP</a> </span> <span class="comments-link"><i class="icon-comments icon-metas"></i><a href="https://abhinavsingh.com/how-to-perform-x-facebook-platform-and-google-talk-x-oauth2-xmpp-authentication-with-php-jaxl-library/#comments" itemprop="discussionURL"><strong title="21 Comments">21</strong></a></span></div></header><div class="entry-summary" itemprop="description"><p>Ever since Jaxl library first introduced support for X-FACEBOOK-PLATFORM XMPP authentication mechanism, it has changed significantly. Also, Google Talk now supports OAuth 2.0 Authorization, an XMPP extension to allow users to log in using OAuth 2.0 credentials. Both these mechanisms are a big win for XMPP developers, since real-time conversation experience can now be provided to their application users without asking them for their passwords. In this blog post, I will demonstrate how to perform X-FACEBOOK-PLATFORM and X-OAUTH2 XMPP authentication mechanism using Jaxl v3.x PHP Library.</p></div><footer class="post-continue-container"> <a class="continue-reading-link" href="https://abhinavsingh.com/how-to-perform-x-facebook-platform-and-google-talk-x-oauth2-xmpp-authentication-with-php-jaxl-library/"><span>Read more</span><em class="screen-reader-text">"How to perform X-FACEBOOK-PLATFORM and Google Talk X-OAUTH2 XMPP authentication with PHP Jaxl library"</em><i class="icon-angle-right"></i></a></footer> <span class="schema-publisher" itemprop="publisher" itemscope itemtype="https://schema.org/Organization"> <span itemprop="logo" itemscope itemtype="https://schema.org/ImageObject"><meta itemprop="url" content="https://abhinavsingh.com"> </span><meta itemprop="name" content="Abhinav Singh"> </span><link itemprop="mainEntityOfPage" href="https://abhinavsingh.com/how-to-perform-x-facebook-platform-and-google-talk-x-oauth2-xmpp-authentication-with-php-jaxl-library/" /></div></article><article id="post-1294" class="hentry post-1294 post type-post status-publish format-standard category-open-source category-php category-xmpp tag-jaxl tag-xml" itemscope itemtype="http://schema.org/BlogPosting" itemprop="blogPost"><div class="article-inner"><header class="entry-header"><div class="entry-meta"> <span class="bl_categ"> <i class="icon-folder-open icon-metas" title="Categories"></i><a href="https://abhinavsingh.com/category/engineering/open-source/" rel="category tag">Open Source</a>, <a href="https://abhinavsingh.com/category/engineering/php/" rel="category tag">PHP</a>, <a href="https://abhinavsingh.com/category/engineering/xmpp/" rel="category tag">XMPP</a></span></div><h2 class="entry-title" itemprop="headline"><a href="https://abhinavsingh.com/jaxlxml-strophe-style-xml-builder-working-with-jaxl-a-networking-library-in-php-part-2/" itemprop="mainEntityOfPage" rel="bookmark">JAXLXml &#8211; Strophe style XML Builder : Working with Jaxl – A Networking Library in PHP – Part 2</a></h2><div class="entry-meta"> <span class="author vcard" itemscope itemtype="http://schema.org/Person" itemprop="author"> <em>By</em> <a class="url fn n" rel="author" href="https://abhinavsingh.com/author/abhinav/" title="View all posts by Abhinav Singh" itemprop="url"> <em itemprop="name">Abhinav Singh</em> </a> </span> <span class="onDate date"> <i class="icon-time icon-metas" title="Date"></i> <time class="published" datetime="2012-09-12T17:18:34-07:00" itemprop="datePublished">September 12, 2012</time> <time class="updated" datetime="2019-10-24T18:51:18-07:00" itemprop="dateModified">October 24, 2019</time> </span> <span class="footer-tags" itemprop="keywords"> <i class="icon-tag icon-metas" title="Tagged"></i>&nbsp;<a href="https://abhinavsingh.com/tag/jaxl/" rel="tag">JAXL</a>, <a href="https://abhinavsingh.com/tag/xml/" rel="tag">xml</a> </span> <span class="comments-link"><i class="icon-comments icon-metas"></i><a href="https://abhinavsingh.com/jaxlxml-strophe-style-xml-builder-working-with-jaxl-a-networking-library-in-php-part-2/#comments" itemprop="discussionURL"><strong title="One Comment">1</strong></a></span></div></header><div class="entry-summary" itemprop="description"><p>Prior to Jaxl v3.x, the most ugliest piece of code inside Jaxl library was handling of XML packets. If you are working with XMPP protocol which is all about sending and receiving XML packets, it can become a nightmare if you don&#8217;t have a proper XML manipulation library in your toolkit. For Jaxl v3.x, first thing I decided to write was JAXLXml class, which is a custom XML packet implementation with no external dependencies and is an extension over the ideas from Strophe.Builder class written by Jack Moffitt. JAXLXml is generic enough to find a place inside any PHP application that requires easy and elegant XML packet creation. In this blog post, I will give an exhaustive overview of how to create XML packets using JAXLXml class.</p></div><footer class="post-continue-container"> <a class="continue-reading-link" href="https://abhinavsingh.com/jaxlxml-strophe-style-xml-builder-working-with-jaxl-a-networking-library-in-php-part-2/"><span>Read more</span><em class="screen-reader-text">"JAXLXml &#8211; Strophe style XML Builder : Working with Jaxl – A Networking Library in PHP – Part 2"</em><i class="icon-angle-right"></i></a></footer> <span class="schema-publisher" itemprop="publisher" itemscope itemtype="https://schema.org/Organization"> <span itemprop="logo" itemscope itemtype="https://schema.org/ImageObject"><meta itemprop="url" content="https://abhinavsingh.com"> </span><meta itemprop="name" content="Abhinav Singh"> </span><link itemprop="mainEntityOfPage" href="https://abhinavsingh.com/jaxlxml-strophe-style-xml-builder-working-with-jaxl-a-networking-library-in-php-part-2/" /></div></article><article id="post-1264" class="hentry post-1264 post type-post status-publish format-standard category-open-source category-php category-xmpp tag-asynchronous tag-jaxl tag-non-blocking tag-php tag-xmpp" itemscope itemtype="http://schema.org/BlogPosting" itemprop="blogPost"><div class="article-inner"><header class="entry-header"><div class="entry-meta"> <span class="bl_categ"> <i class="icon-folder-open icon-metas" title="Categories"></i><a href="https://abhinavsingh.com/category/engineering/open-source/" rel="category tag">Open Source</a>, <a href="https://abhinavsingh.com/category/engineering/php/" rel="category tag">PHP</a>, <a href="https://abhinavsingh.com/category/engineering/xmpp/" rel="category tag">XMPP</a></span></div><h2 class="entry-title" itemprop="headline"><a href="https://abhinavsingh.com/working-with-jaxl-a-networking-library-in-php-part-1-an-introduction-philosophy-and-history/" itemprop="mainEntityOfPage" rel="bookmark">Working with Jaxl &#8211; A Networking Library in PHP &#8211; Part 1 &#8211; An Introduction, Philosophy and History</a></h2><div class="entry-meta"> <span class="author vcard" itemscope itemtype="http://schema.org/Person" itemprop="author"> <em>By</em> <a class="url fn n" rel="author" href="https://abhinavsingh.com/author/abhinav/" title="View all posts by Abhinav Singh" itemprop="url"> <em itemprop="name">Abhinav Singh</em> </a> </span> <span class="onDate date"> <i class="icon-time icon-metas" title="Date"></i> <time class="published" datetime="2012-09-08T09:59:26-07:00" itemprop="datePublished">September 8, 2012</time> <time class="updated" datetime="2019-10-24T18:52:14-07:00" itemprop="dateModified">October 24, 2019</time> </span> <span class="footer-tags" itemprop="keywords"> <i class="icon-tag icon-metas" title="Tagged"></i>&nbsp;<a href="https://abhinavsingh.com/tag/asynchronous/" rel="tag">Asynchronous</a>, <a href="https://abhinavsingh.com/tag/jaxl/" rel="tag">JAXL</a>, <a href="https://abhinavsingh.com/tag/non-blocking/" rel="tag">Non-Blocking</a>, <a href="https://abhinavsingh.com/tag/php/" rel="tag">PHP</a>, <a href="https://abhinavsingh.com/tag/xmpp/" rel="tag">XMPP</a> </span> <span class="comments-link"><i class="icon-comments icon-metas"></i><a href="https://abhinavsingh.com/working-with-jaxl-a-networking-library-in-php-part-1-an-introduction-philosophy-and-history/#comments" itemprop="discussionURL"><strong title="3 Comments">3</strong></a></span></div></header><div class="entry-summary" itemprop="description"><p>Development of Jaxl library started way back in December&#8217;07 while I was working on a self-initiated project called Gtalkbots. The project is now dead, if you are interested in knowing more about it go through Gtalkbots BlogSpot. Jaxl v1.x was first released in Jan&#8217;09 and about a year later in Aug&#8217;10 Jaxl v2.x was released. First two versions were released as JAbber XMPP Library for writing clients and external server components.</p></div><footer class="post-continue-container"> <a class="continue-reading-link" href="https://abhinavsingh.com/working-with-jaxl-a-networking-library-in-php-part-1-an-introduction-philosophy-and-history/"><span>Read more</span><em class="screen-reader-text">"Working with Jaxl &#8211; A Networking Library in PHP &#8211; Part 1 &#8211; An Introduction, Philosophy and History"</em><i class="icon-angle-right"></i></a></footer> <span class="schema-publisher" itemprop="publisher" itemscope itemtype="https://schema.org/Organization"> <span itemprop="logo" itemscope itemtype="https://schema.org/ImageObject"><meta itemprop="url" content="https://abhinavsingh.com"> </span><meta itemprop="name" content="Abhinav Singh"> </span><link itemprop="mainEntityOfPage" href="https://abhinavsingh.com/working-with-jaxl-a-networking-library-in-php-part-1-an-introduction-philosophy-and-history/" /></div></article><article id="post-1233" class="hentry post-1233 post type-post status-publish format-standard category-open-source category-php category-xmpp tag-http tag-jaxl tag-open-source tag-php tag-xmpp" itemscope itemtype="http://schema.org/BlogPosting" itemprop="blogPost"><div class="article-inner"><header class="entry-header"><div class="entry-meta"> <span class="bl_categ"> <i class="icon-folder-open icon-metas" title="Categories"></i><a href="https://abhinavsingh.com/category/engineering/open-source/" rel="category tag">Open Source</a>, <a href="https://abhinavsingh.com/category/engineering/php/" rel="category tag">PHP</a>, <a href="https://abhinavsingh.com/category/engineering/xmpp/" rel="category tag">XMPP</a></span></div><h2 class="entry-title" itemprop="headline"><a href="https://abhinavsingh.com/announcing-jaxl-v3-x-asynchronous-non-blocking-io-event-based-php-clientserver-library/" itemprop="mainEntityOfPage" rel="bookmark">Announcing Jaxl v3.x &#8211; asynchronous, non-blocking I/O, event based PHP client/server library</a></h2><div class="entry-meta"> <span class="author vcard" itemscope itemtype="http://schema.org/Person" itemprop="author"> <em>By</em> <a class="url fn n" rel="author" href="https://abhinavsingh.com/author/abhinav/" title="View all posts by Abhinav Singh" itemprop="url"> <em itemprop="name">Abhinav Singh</em> </a> </span> <span class="onDate date"> <i class="icon-time icon-metas" title="Date"></i> <time class="published" datetime="2012-07-27T06:09:10-07:00" itemprop="datePublished">July 27, 2012</time> <time class="updated" datetime="2019-10-24T18:52:34-07:00" itemprop="dateModified">October 24, 2019</time> </span> <span class="footer-tags" itemprop="keywords"> <i class="icon-tag icon-metas" title="Tagged"></i>&nbsp;<a href="https://abhinavsingh.com/tag/http/" rel="tag">HTTP</a>, <a href="https://abhinavsingh.com/tag/jaxl/" rel="tag">JAXL</a>, <a href="https://abhinavsingh.com/tag/open-source/" rel="tag">Open Source</a>, <a href="https://abhinavsingh.com/tag/php/" rel="tag">PHP</a>, <a href="https://abhinavsingh.com/tag/xmpp/" rel="tag">XMPP</a> </span> <span class="comments-link"><i class="icon-comments icon-metas"></i><a href="https://abhinavsingh.com/announcing-jaxl-v3-x-asynchronous-non-blocking-io-event-based-php-clientserver-library/#comments" itemprop="discussionURL"><strong title="22 Comments">22</strong></a></span></div></header><div class="entry-summary" itemprop="description"><p>Jaxl v3.x is a successor of v2.x (and is NOT backward compatible), carrying a lot of code from v2.x while throwing away the ugly parts. A lot of components have been re-written keeping in mind the feedback from the developer community over the last 4 years. Also Jaxl shares a few philosophies from my experience with erlang and python languages. Jaxl is an asynchronous, non-blocking I/O, event based PHP library for writing custom TCP/IP client and server implementations. From it&#8217;s previous versions, library inherits a full blown stable support for XMPP protocol stack. In v3.0, support for HTTP protocol stack was also added.</p></div><footer class="post-continue-container"> <a class="continue-reading-link" href="https://abhinavsingh.com/announcing-jaxl-v3-x-asynchronous-non-blocking-io-event-based-php-clientserver-library/"><span>Read more</span><em class="screen-reader-text">"Announcing Jaxl v3.x &#8211; asynchronous, non-blocking I/O, event based PHP client/server library"</em><i class="icon-angle-right"></i></a></footer> <span class="schema-publisher" itemprop="publisher" itemscope itemtype="https://schema.org/Organization"> <span itemprop="logo" itemscope itemtype="https://schema.org/ImageObject"><meta itemprop="url" content="https://abhinavsingh.com"> </span><meta itemprop="name" content="Abhinav Singh"> </span><link itemprop="mainEntityOfPage" href="https://abhinavsingh.com/announcing-jaxl-v3-x-asynchronous-non-blocking-io-event-based-php-clientserver-library/" /></div></article><article id="post-1193" class="hentry post-1193 post type-post status-publish format-standard category-erlang tag-erlang-2 tag-listcomprehensions tag-spellcorrector" itemscope itemtype="http://schema.org/BlogPosting" itemprop="blogPost"><div class="article-inner"><header class="entry-header"><div class="entry-meta"> <span class="bl_categ"> <i class="icon-folder-open icon-metas" title="Categories"></i><a href="https://abhinavsingh.com/category/engineering/erlang/" rel="category tag">Erlang</a></span></div><h2 class="entry-title" itemprop="headline"><a href="https://abhinavsingh.com/how-to-write-a-spelling-corrector-in-erlang/" itemprop="mainEntityOfPage" rel="bookmark">How to Write a Spelling Corrector in Erlang (ESpell)</a></h2><div class="entry-meta"> <span class="author vcard" itemscope itemtype="http://schema.org/Person" itemprop="author"> <em>By</em> <a class="url fn n" rel="author" href="https://abhinavsingh.com/author/abhinav/" title="View all posts by Abhinav Singh" itemprop="url"> <em itemprop="name">Abhinav Singh</em> </a> </span> <span class="onDate date"> <i class="icon-time icon-metas" title="Date"></i> <time class="published" datetime="2012-02-27T09:12:57-07:00" itemprop="datePublished">February 27, 2012</time> <time class="updated" datetime="2019-10-24T18:52:58-07:00" itemprop="dateModified">October 24, 2019</time> </span> <span class="footer-tags" itemprop="keywords"> <i class="icon-tag icon-metas" title="Tagged"></i>&nbsp;<a href="https://abhinavsingh.com/tag/erlang-2/" rel="tag">erlang</a>, <a href="https://abhinavsingh.com/tag/listcomprehensions/" rel="tag">listcomprehensions</a>, <a href="https://abhinavsingh.com/tag/spellcorrector/" rel="tag">spellcorrector</a> </span> <span class="comments-link"><i class="icon-comments icon-metas"></i><a href="https://abhinavsingh.com/how-to-write-a-spelling-corrector-in-erlang/#comments" itemprop="discussionURL"><strong title="2 Comments">2</strong></a></span></div></header><div class="entry-summary" itemprop="description"><p>Erlang is a beautiful programming language from Ericsson which i first came across while cutomizing authentication flow of ejabberd about 2 years back. Ever since then I have been using erlang for all my application backend needs including custom http server, custom bosh conn. manager, xmpp components and clients, &#8230; Recently i have even started churning my application html pages via erlang using erlydtl (an Erlang implementation of the Django Template Language). Years ago, i gave a successful shot at implementing Peter Norvig&#8217;s Spell Corrector in PHP. Last weekend i attempted the same &#8220;Spell Corrector&#8221; algorithm in about 45 lines of Erlang code.</p></div><footer class="post-continue-container"> <a class="continue-reading-link" href="https://abhinavsingh.com/how-to-write-a-spelling-corrector-in-erlang/"><span>Read more</span><em class="screen-reader-text">"How to Write a Spelling Corrector in Erlang (ESpell)"</em><i class="icon-angle-right"></i></a></footer> <span class="schema-publisher" itemprop="publisher" itemscope itemtype="https://schema.org/Organization"> <span itemprop="logo" itemscope itemtype="https://schema.org/ImageObject"><meta itemprop="url" content="https://abhinavsingh.com"> </span><meta itemprop="name" content="Abhinav Singh"> </span><link itemprop="mainEntityOfPage" href="https://abhinavsingh.com/how-to-write-a-spelling-corrector-in-erlang/" /></div></article><article id="post-680" class="hentry post-680 post type-post status-publish format-standard category-xmpp tag-documentation tag-jaxl tag-xmpp" itemscope itemtype="http://schema.org/BlogPosting" itemprop="blogPost"><div class="article-inner"><header class="entry-header"><div class="entry-meta"> <span class="bl_categ"> <i class="icon-folder-open icon-metas" title="Categories"></i><a href="https://abhinavsingh.com/category/engineering/xmpp/" rel="category tag">XMPP</a></span></div><h2 class="entry-title" itemprop="headline"><a href="https://abhinavsingh.com/jaxl-library-list-of-available-hooks-for-various-xmpp-events/" itemprop="mainEntityOfPage" rel="bookmark">JAXL library &#8211; List of available hooks for various XMPP events</a></h2><div class="entry-meta"> <span class="author vcard" itemscope itemtype="http://schema.org/Person" itemprop="author"> <em>By</em> <a class="url fn n" rel="author" href="https://abhinavsingh.com/author/abhinav/" title="View all posts by Abhinav Singh" itemprop="url"> <em itemprop="name">Abhinav Singh</em> </a> </span> <span class="onDate date"> <i class="icon-time icon-metas" title="Date"></i> <time class="published" datetime="2011-04-06T22:16:57-07:00" itemprop="datePublished">April 6, 2011</time> <time class="updated" datetime="2019-10-24T18:53:15-07:00" itemprop="dateModified">October 24, 2019</time> </span> <span class="footer-tags" itemprop="keywords"> <i class="icon-tag icon-metas" title="Tagged"></i>&nbsp;<a href="https://abhinavsingh.com/tag/documentation/" rel="tag">Documentation</a>, <a href="https://abhinavsingh.com/tag/jaxl/" rel="tag">JAXL</a>, <a href="https://abhinavsingh.com/tag/xmpp/" rel="tag">XMPP</a> </span> <span class="comments-link"><i class="icon-comments icon-metas"></i><a href="https://abhinavsingh.com/jaxl-library-list-of-available-hooks-for-various-xmpp-events/#comments" itemprop="discussionURL"><strong title="12 Comments">12</strong></a></span></div></header><div class="entry-summary" itemprop="description"><p>Jaxl 2.x provides an event mechanism using which developers can register callbacks for various xmpp events inside their application code. This blog post will demonstrate how to register callbacks for required xmpp events and go through a list of all available hooks. Finally, we will discuss parameters that are passed to called back methods by Jaxl core.</p></div><footer class="post-continue-container"> <a class="continue-reading-link" href="https://abhinavsingh.com/jaxl-library-list-of-available-hooks-for-various-xmpp-events/"><span>Read more</span><em class="screen-reader-text">"JAXL library &#8211; List of available hooks for various XMPP events"</em><i class="icon-angle-right"></i></a></footer> <span class="schema-publisher" itemprop="publisher" itemscope itemtype="https://schema.org/Organization"> <span itemprop="logo" itemscope itemtype="https://schema.org/ImageObject"><meta itemprop="url" content="https://abhinavsingh.com"> </span><meta itemprop="name" content="Abhinav Singh"> </span><link itemprop="mainEntityOfPage" href="https://abhinavsingh.com/jaxl-library-list-of-available-hooks-for-various-xmpp-events/" /></div></article></div><nav class="navigation pagination" role="navigation" aria-label="Posts"><h2 class="screen-reader-text">Posts navigation</h2><div class="nav-links"><span aria-current="page" class="page-numbers current">1</span> <a class="page-numbers" href="https://abhinavsingh.com/page/2/">2</a> <a class="page-numbers" href="https://abhinavsingh.com/page/3/">3</a> <span class="page-numbers dots">&hellip;</span> <a class="page-numbers" href="https://abhinavsingh.com/page/13/">13</a> <a class="next page-numbers" href="https://abhinavsingh.com/page/2/"><i class="icon-angle-right"></i></a></div></nav></main></div><aside id="colophon" role="complementary" itemscope itemtype="http://schema.org/WPSideBar"><div id="colophon-inside" class="footer-three "><section id="categories-6" class="widget-container widget_categories"><div class="footer-widget-inside"><h3 class="widget-title"><span>Categories</span></h3><ul><li class="cat-item cat-item-3"><a href="https://abhinavsingh.com/category/engineering/erlang/" title="All posts about Erlang programming language.">Erlang</a></li><li class="cat-item cat-item-4"><a href="https://abhinavsingh.com/category/life/">Life</a></li><li class="cat-item cat-item-5"><a href="https://abhinavsingh.com/category/music/">Music</a></li><li class="cat-item cat-item-6"><a href="https://abhinavsingh.com/category/engineering/open-source/" title="All posts about Open Source Projects.">Open Source</a></li><li class="cat-item cat-item-7"><a href="https://abhinavsingh.com/category/engineering/php/" title="All posts about to PHP programming language.">PHP</a></li><li class="cat-item cat-item-8"><a href="https://abhinavsingh.com/category/engineering/python/" title="All posts about to Python programming language.">Python</a></li><li class="cat-item cat-item-9"><a href="https://abhinavsingh.com/category/engineering/scalability/" title="All posts about High Scalability, Memcached, Redis, and related topics.">Scalability</a></li><li class="cat-item cat-item-10"><a href="https://abhinavsingh.com/category/engineering/tech-giants/" title="All posts about FANG (Facebook, Amazon, Netflix, Google) and other tech giants.">Tech Giants</a></li><li class="cat-item cat-item-11"><a href="https://abhinavsingh.com/category/engineering/web-development/" title="All posts about HTML, Javascript, CSS and other web development goodies.">Web Development</a></li><li class="cat-item cat-item-12"><a href="https://abhinavsingh.com/category/engineering/wordpress/" title="All posts about Wordpress.">WordPress</a></li><li class="cat-item cat-item-13"><a href="https://abhinavsingh.com/category/engineering/xmpp/" title="All posts about XMPP (Extensible Messaging and Presence Protocol).">XMPP</a></li></ul></div></section><section id="top-posts-3" class="widget-container widget_top-posts"><div class="footer-widget-inside"><h3 class="widget-title"><span>Top Posts &amp; Pages</span></h3><ul><li> <a href="https://abhinavsingh.com/proxy-py-a-lightweight-single-file-http-proxy-server-in-python/" class="bump-view" data-bump-view="tp">Proxy.py - A lightweight, single file HTTP proxy server in Python</a></li><li> <a href="https://abhinavsingh.com/customizing-redis-pubsub-for-message-persistence-part-2/" class="bump-view" data-bump-view="tp">Customizing Redis pubsub for message persistence - Part 2</a></li><li> <a href="https://abhinavsingh.com/customizing-redis-pubsub-for-message-persistence/" class="bump-view" data-bump-view="tp">Customizing Redis pubsub for message persistence</a></li><li> <a href="https://abhinavsingh.com/back-to-blogging-what-to-expect/" class="bump-view" data-bump-view="tp">Back to blogging: What to expect</a></li><li> <a href="https://abhinavsingh.com/how-to-perform-x-facebook-platform-and-google-talk-x-oauth2-xmpp-authentication-with-php-jaxl-library/" class="bump-view" data-bump-view="tp">How to perform X-FACEBOOK-PLATFORM and Google Talk X-OAUTH2 XMPP authentication with PHP Jaxl library</a></li><li> <a href="https://abhinavsingh.com/jaxlxml-strophe-style-xml-builder-working-with-jaxl-a-networking-library-in-php-part-2/" class="bump-view" data-bump-view="tp">JAXLXml - Strophe style XML Builder : Working with Jaxl – A Networking Library in PHP – Part 2</a></li><li> <a href="https://abhinavsingh.com/working-with-jaxl-a-networking-library-in-php-part-1-an-introduction-philosophy-and-history/" class="bump-view" data-bump-view="tp">Working with Jaxl - A Networking Library in PHP - Part 1 - An Introduction, Philosophy and History</a></li><li> <a href="https://abhinavsingh.com/announcing-jaxl-v3-x-asynchronous-non-blocking-io-event-based-php-clientserver-library/" class="bump-view" data-bump-view="tp">Announcing Jaxl v3.x - asynchronous, non-blocking I/O, event based PHP client/server library</a></li><li> <a href="https://abhinavsingh.com/how-to-write-a-spelling-corrector-in-erlang/" class="bump-view" data-bump-view="tp">How to Write a Spelling Corrector in Erlang (ESpell)</a></li><li> <a href="https://abhinavsingh.com/jaxl-library-list-of-available-hooks-for-various-xmpp-events/" class="bump-view" data-bump-view="tp">JAXL library - List of available hooks for various XMPP events</a></li></ul></div></section><section id="archives-4" class="widget-container widget_archive"><div class="footer-widget-inside"><h3 class="widget-title"><span>Archives</span></h3><ul><li><a href='https://abhinavsingh.com/2018/10/'>October 2018</a></li><li><a href='https://abhinavsingh.com/2015/04/'>April 2015</a></li><li><a href='https://abhinavsingh.com/2015/03/'>March 2015</a></li><li><a href='https://abhinavsingh.com/2014/10/'>October 2014</a></li><li><a href='https://abhinavsingh.com/2012/09/'>September 2012</a></li><li><a href='https://abhinavsingh.com/2012/07/'>July 2012</a></li><li><a href='https://abhinavsingh.com/2012/02/'>February 2012</a></li><li><a href='https://abhinavsingh.com/2011/04/'>April 2011</a></li><li><a href='https://abhinavsingh.com/2010/08/'>August 2010</a></li><li><a href='https://abhinavsingh.com/2010/07/'>July 2010</a></li><li><a href='https://abhinavsingh.com/2010/04/'>April 2010</a></li><li><a href='https://abhinavsingh.com/2010/03/'>March 2010</a></li><li><a href='https://abhinavsingh.com/2010/02/'>February 2010</a></li><li><a href='https://abhinavsingh.com/2010/01/'>January 2010</a></li><li><a href='https://abhinavsingh.com/2009/12/'>December 2009</a></li><li><a href='https://abhinavsingh.com/2009/11/'>November 2009</a></li><li><a href='https://abhinavsingh.com/2009/10/'>October 2009</a></li><li><a href='https://abhinavsingh.com/2009/09/'>September 2009</a></li><li><a href='https://abhinavsingh.com/2009/08/'>August 2009</a></li><li><a href='https://abhinavsingh.com/2009/07/'>July 2009</a></li><li><a href='https://abhinavsingh.com/2009/06/'>June 2009</a></li><li><a href='https://abhinavsingh.com/2009/05/'>May 2009</a></li><li><a href='https://abhinavsingh.com/2009/04/'>April 2009</a></li><li><a href='https://abhinavsingh.com/2009/03/'>March 2009</a></li><li><a href='https://abhinavsingh.com/2009/02/'>February 2009</a></li><li><a href='https://abhinavsingh.com/2009/01/'>January 2009</a></li><li><a href='https://abhinavsingh.com/2008/12/'>December 2008</a></li><li><a href='https://abhinavsingh.com/2008/11/'>November 2008</a></li><li><a href='https://abhinavsingh.com/2008/10/'>October 2008</a></li><li><a href='https://abhinavsingh.com/2008/09/'>September 2008</a></li><li><a href='https://abhinavsingh.com/2008/08/'>August 2008</a></li><li><a href='https://abhinavsingh.com/2008/07/'>July 2008</a></li><li><a href='https://abhinavsingh.com/2008/06/'>June 2008</a></li><li><a href='https://abhinavsingh.com/2008/05/'>May 2008</a></li><li><a href='https://abhinavsingh.com/2008/04/'>April 2008</a></li></ul></div></section></div></aside></div><footer id="footer" class="cryout" role="contentinfo" itemscope itemtype="http://schema.org/WPFooter"><div id="footer-inside"> <a id="toTop"><span class="screen-reader-text">Back to Top</span><i class="icon-back2top"></i> </a><div id="site-copyright">&copy;2019 Abhinav Singh</div><div style="display:block;float:right;clear: right;font-size: .9em;">Powered by<a target="_blank" href="http://www.cryoutcreations.eu/wordpress-theme/fluida" title="Fluida WordPress Theme by Cryout Creations"> Fluida</a> &amp; <a target="_blank" href="https://wordpress.org/" title="Semantic Personal Publishing Platform"> WordPress.</a></div></div></footer></div> <script async src="https://www.googletagmanager.com/gtag/js?id=UA-2687831-7" type="1bef34db274d5032774e2ead-text/javascript"></script> <script type="1bef34db274d5032774e2ead-text/javascript">window.dataLayer = window.dataLayer || [];
			function gtag(){dataLayer.push(arguments);}
			gtag('js', new Date());
			gtag('config', 'UA-2687831-7');</script> <script type="1bef34db274d5032774e2ead-text/javascript" id='fluida-frontend-js-extra'>var cryout_theme_settings = {"masonry":"1","rtl":"","magazine":"2","fitvids":"1","autoscroll":"1","articleanimation":"slide","lpboxratios":[1.28,1.6],"is_mobile":"","menustyle":"1"};</script> <script type="1bef34db274d5032774e2ead-text/javascript" src='https://stats.wp.com/e-202043.js' async='async' defer='defer'></script> <script type="1bef34db274d5032774e2ead-text/javascript">_stq = window._stq || [];
	_stq.push([ 'view', {v:'ext',j:'1:9.0.2',blog:'84121904',post:'0',tz:'-7',srv:'abhinavsingh.com'} ]);
	_stq.push([ 'clickTrackerInit', '84121904', '0' ]);</script> <script defer src="https://abhinavsingh.com/wp-content/cache/autoptimize/js/autoptimize_25201325944af76d593c5863868558e7.js" type="1bef34db274d5032774e2ead-text/javascript"></script><script src="https://ajax.cloudflare.com/cdn-cgi/scripts/7089c43e/cloudflare-static/rocket-loader.min.js" data-cf-settings="1bef34db274d5032774e2ead-|49" defer=""></script></body></html>



