<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Yusuf Motiwala - Medium]]></title>
        <description><![CDATA[A few random thoughts… - Medium]]></description>
        <link>https://blog.motiwala.com?source=rss----d19dd9d469d---4</link>
        <image>
            <url>https://cdn-images-1.medium.com/proxy/1*TGH72Nnw24QL3iV9IOm4VA.png</url>
            <title>Yusuf Motiwala - Medium</title>
            <link>https://blog.motiwala.com?source=rss----d19dd9d469d---4</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Sun, 17 Sep 2023 17:26:18 GMT</lastBuildDate>
        <atom:link href="https://blog.motiwala.com/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com" rel="hub"/>
        <item>
            <title><![CDATA[The Case for Disappearing Emails]]></title>
            <link>https://blog.motiwala.com/the-case-for-disappearing-emails-fb3cf3089a3?source=rss----d19dd9d469d---4</link>
            <guid isPermaLink="false">https://medium.com/p/fb3cf3089a3</guid>
            <category><![CDATA[gmail]]></category>
            <category><![CDATA[outlook]]></category>
            <category><![CDATA[email-productivity]]></category>
            <category><![CDATA[spam]]></category>
            <category><![CDATA[email]]></category>
            <dc:creator><![CDATA[Yusuf Motiwala]]></dc:creator>
            <pubDate>Mon, 05 Jun 2023 03:16:51 GMT</pubDate>
            <atom:updated>2023-06-05T03:32:50.487Z</atom:updated>
            <content:encoded><![CDATA[<h4>Numerous articles propose “effective” methods to handle bloated email inboxes. However, managing such inboxes is not a one-time task, but an ongoing process. With over 67,000 unread emails in my inbox, no email management strategy is as efficient as the implementation of Disappearing Emails. Astonishingly, this simple yet effective feature is absent from all email services.</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*3XUsdAb2Y_lcODNtgFF97g.png" /></figure><p>My email cleaning habit lasts only as long as my New Year’s resolution :) Every few days, I try to slim down my bloated inbox by deleting emails in bulk and then I make a promise to myself to keep doing it regularly which never happens :) If you can relate to my predicament, chances are I’m not alone.</p><p>Approximately 90% of the emails I receive are subscriptions, mailing lists, and updates. Most of them lose their relevance within 2–3 days, and if I don’t catch them during that time, chances are I never will. So what if I could set up a filter to automatically delete emails from specific senders after, let’s say, 72 hours unless I explicitly mark them not to be deleted? This simple feature would streamline email management, transforming it into a one-time task.</p><p>While services like Gmail and Outlook do offer date-based filters, they, surprisingly, cannot execute these filters automatically (like a cron job). Instead, users are required to manually run each filter. I once suggested this feature to Gmail, but it was never implemented for reasons best known to them.</p><p>What are your thoughts?</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=fb3cf3089a3" width="1" height="1" alt=""><hr><p><a href="https://blog.motiwala.com/the-case-for-disappearing-emails-fb3cf3089a3">The Case for Disappearing Emails</a> was originally published in <a href="https://blog.motiwala.com">Yusuf Motiwala</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[ChatGPT: Beautiful Liar!]]></title>
            <link>https://blog.motiwala.com/chatgpt-beautiful-liar-519ef598ef03?source=rss----d19dd9d469d---4</link>
            <guid isPermaLink="false">https://medium.com/p/519ef598ef03</guid>
            <category><![CDATA[python]]></category>
            <category><![CDATA[chatgpt]]></category>
            <category><![CDATA[chatbots]]></category>
            <category><![CDATA[mesibo]]></category>
            <category><![CDATA[large-language-models]]></category>
            <dc:creator><![CDATA[Yusuf Motiwala]]></dc:creator>
            <pubDate>Tue, 02 May 2023 04:13:32 GMT</pubDate>
            <atom:updated>2023-05-02T16:14:23.429Z</atom:updated>
            <content:encoded><![CDATA[<h4>I promise this article has nothing to do with <a href="https://www.youtube.com/watch?v=QrOe2h9RtWI">Beyoncé &amp; Shakira</a>! Rather, it’s about how ChatGPT fabricates wrong information and describes it so beautifully that it appears more authentic than the truth. It appears that ChatGPT LLM (large language model) algorithm incorrectly overrides the learning with its interpretation and does it so repetitively that ChatGPT responses look far more erratic than Russian Roulette.</h4><p>A Python developer emailed us:</p><blockquote>Your Python APIs not working as expected …</blockquote><p>This email was especially concerning since it came from one of our biggest corporate customers in Europe. They already deployed plenty of projects using <a href="https://mesibo.com/">mesibo</a>, although using the <a href="https://pypi.org/project/mesibo/">mesibo Python APIs</a> for the first time.</p><p>The strange part of this email was the code they shared — a piece of code having a mix of mesibo APIs that we <strong>don’t even recognize</strong>, depreciated APIs, and the latest APIs. We were puzzled by this code fusion, especially since we have very <a href="https://mesibo.com/documentation/api/">well-documented APIs</a> and <a href="https://mesibo.com/documentation/tutorials/get-started/">tutorials</a>, and nowhere have we documented such a fusion code sample.</p><p>So we asked him, where he got this sample code from, and he replied,</p><blockquote>I got it from ChatGPT</blockquote><p>Ouch!! Didn’t expect customers to ask ChatGPT for mesibo help rather than referring to documents. But with the exploded popularity of CultGPT, this is just the beginning (there was a talk @ Stanford the last week — <strong>“</strong>Can ChatGPT diagnose me?)”</p><p>Frankly, we would have loved it if ChatGPT did the job, or even did it fairly, or would have declined to answer. However, the real problem was not the wrong answer, but <strong>rather how meticulously it composed the wrong answer that it feels more authentic than the correct answer, </strong>to the extent that the customer complained about mesibo API not working rather than doubting ChatGPT responses.</p><p>It wasn’t difficult to reproduce what our customer experienced. We learned that ChatGPT LLM (large language model) algorithm incorrectly overrides the learning with its interpretation. For example, mesibo Javascript API is documented to be hosted on <strong>api.mesibo.com</strong>. However, lots of websites host their APIs on the CDN subdomain such as <strong>cdn.example.com</strong>. The ChatGPT combined two learnings and created a fictitious domain <strong>cdn.mesibo.com</strong> which is incorrect. The answer would have been correct if the ChatGPT used its interpretation only if there was missing information in its learning dataset.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*_0DUAHmS8KP0RmAzevTqCA.png" /></figure><p>In another example, instead of using its learning from the mesibo website, it synthesized a new API and even described it — the <a href="https://www.imdb.com/title/tt0181689/?ref_=ttfc_fc_tt">Minority Report</a> has some influence here :)</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*bxSP1Jh4yp6BZ8MFAbWV8A.png" /></figure><p><a href="https://minorityreport.fandom.com/wiki/Precogs">Precogs</a></p><p>On a lighter note, since the ChatGPT performed quite badly in producing correct responses, those meticulously written steps sounded a bit political — <strong>nice to read but totally incorrect</strong> :))</p><p>ChatGPT is amazing but it needs to fix the <a href="https://en.wikipedia.org/wiki/Illusory_truth_effect">Illusionary Truth effect</a> it exhibits right now — some cautions till then.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=519ef598ef03" width="1" height="1" alt=""><hr><p><a href="https://blog.motiwala.com/chatgpt-beautiful-liar-519ef598ef03">ChatGPT: Beautiful Liar!</a> was originally published in <a href="https://blog.motiwala.com">Yusuf Motiwala</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[VoiceXML — Good, Bad & the Ugly]]></title>
            <link>https://blog.motiwala.com/voicexml-good-bad-the-ugly-79aa793eff99?source=rss----d19dd9d469d---4</link>
            <guid isPermaLink="false">https://medium.com/p/79aa793eff99</guid>
            <category><![CDATA[ivr]]></category>
            <category><![CDATA[voicexml]]></category>
            <category><![CDATA[gigaom]]></category>
            <category><![CDATA[php]]></category>
            <category><![CDATA[xml]]></category>
            <dc:creator><![CDATA[Yusuf Motiwala]]></dc:creator>
            <pubDate>Thu, 16 Mar 2023 07:04:44 GMT</pubDate>
            <atom:updated>2021-12-04T05:03:54.224Z</atom:updated>
            <content:encoded><![CDATA[<h3>VoiceXML — Good, Bad &amp; the Ugly</h3><p><em>I came across this post while checking </em><a href="https://web.archive.org/web/20150524164034/http://blog.motiwala.com/2009/02/15/voicexml-good-bad-the-ugly"><em>my inactive blog on archive.org</em></a><em>. Although the </em>article is dated (2009) and some of the technologies, specs, and links may not be relevant today<em>, the VoiceXML part is still relevant as much as it was in 2009 and hence thought it is worth sharing — please read keeping in mind that it was written in 2009 and posted here ASIS.</em></p><p><strong>History</strong><br>The original article was an attempt to identify some of the key deficiencies of VoiceXML as a programming language for voice, and why we created <a href="http://web.archive.org/web/20090220121248/http://voicephp.com/">VoicePHP</a> in 2008 as a viable replacement of VoiceXML On its release, VoicePHP was praised by many, a notable quote from none other than GigaOM, Om Malik — “<a href="https://gigaom.com/2009/01/05/voicephp-indian-startup-marries-voice-with-php/">The idea of VoicePHP is Disruptive in its Simplicity</a>”. This article follows why we did. You can view the original blog post and comments <a href="https://web.archive.org/web/20150524164034/http://blog.motiwala.com/2009/02/15/voicexml-good-bad-the-ugly">here</a>.</p><h3>VoiceXML — Good, Bad &amp; the Ugly</h3><p>While XML (and in general any marking language) has been great for representing the data, using it for programming is like using a wrench to hit a nail. All you need is a hammer to nail! Although a wrench can do a manageable job of hitting a nail, it’s not elegant, creates a mess, and cannot address the problem with precision. The same is the case with XML It is best suited for and was designed for data representation, data-transfer and has repeatedly proven its worth for the same. Trying to use that for programming is adapting it for something that it inherently wasn’t meant to do. Let me try and explain this in detail:</p><p>Consider a typical “hello world” application in VoiceXML (courtesy, <a href="https://web.archive.org/web/20150524164034/http://www.vxml.org/t_1.htm">vxml.org</a>).</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/e129928848bb7c655b950145df8d7f05/href">https://medium.com/media/e129928848bb7c655b950145df8d7f05/href</a></iframe><p>It took 10 lines of code to write something as simple as that. On top of it, for a simple hello world application, one may be tempted to seek more information about &lt;form&gt; and &lt;block&gt; tags which seem like overkill.</p><p>Shocked? You are not alone. As Dominique Boucher states on <a href="https://web.archive.org/web/20150524164034/http://theschemeway.blogspot.com/2007/04/problem-with-voicexml-development-tools_13.html">his blog</a></p><blockquote><em>from a developer’s perspective, it’s (VoiceXML) like having to program in Cobol! And I only slightly exaggerate</em></blockquote><p>The same application in PHP is reduced to barely 2–3 lines of code which is more readable and intuitive.</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/8ac91f6cd1a05f7b9b3002f296bce4a5/href">https://medium.com/media/8ac91f6cd1a05f7b9b3002f296bce4a5/href</a></iframe><p>See the difference? Don’t take my word for it, here is what veterans and users say about VoiceXML. We will soon dwell on why do they say so.</p><h3><strong>From the Industry Veterans</strong></h3><p>In early 2007, Brian OConnor commented on <a href="https://web.archive.org/web/20150524164034/http://voiceapps.blogspot.com/2007/04/circumventing-standards.html">annoyance in VXML standards</a>. As he states, he was unable to use <em>&lt;if&gt;</em> within a <em>&lt;prompt&gt;</em> tag. It’s an arbitrary limitation and requires a nasty workaround.</p><p>In the article “ <a href="https://web.archive.org/web/20150524164034/http://www.developer.com/voice/article.php/11062_1573371">Is VoiceXML the Right Tool for Your Voice Application?</a>”, Brian Brown identifies very precise weaknesses of VoiceXML. For example, when even basic voice controls (pause, resume, etc) are not available in VoiceXML, how it can be even considered the language to program voice? He nailed the problem very well. Look at how VoicePHP addresses it beautifully in a sample application <a href="https://web.archive.org/web/20150524164034/http://code.voicephp.com/getting-past-the-voicexml-limitations-voicephp-audio-player/">here</a>.</p><p>Dannis in his interesting email and unique style <a href="https://web.archive.org/web/20150524164034/http://markmail.org/message/7mxhabq6g7733xb7">shares</a> the pain of VoiceXML,</p><p>“<em>TCL was the most ugly languge of the 90-ies. VXML has now taken over. The language appears not to have iteration (while, for) and no recursion. But it DOES have the goto primitive, which was banned by Dijkstra 30 years ago. There is no function abstraction and neither object-oriented constructs.</em> “</p><p>He further adds which I will elaborate on later in this post</p><p><em>“ VXML is an interpreted language using Javascript. Why not using only Javascript with a bundle of speech specific predefined functions? Hacking java-servlet code already entails generating HTML and Javascript. I don’t see why we have to follow the same painful route with VXML”</em></p><p>Even VoiceXML vendors are aware of the limitations and they have tried to create specific &amp; proprietary enhancements to get around VoiceXML limitations, for example, CallXML by Voxeo. In fact, Voxeo CEO commented on <a href="https://web.archive.org/web/20150524164034/http://gigaom.com/2009/01/05/voicephp-indian-startup-marries-voice-with-php/#comment-920531">VoicePHP coverage by Gigaom</a> that</p><p>“ <em>As a developer, I do not like VoiceXML. Personally, I find it to be too complicated, painful, and a barrier to entry for new developers as others have said. This is why Voxeo offers many other ways to create voice applications, including CallXML — a very powerful yet simple XML based telephony markup;</em> “.</p><p>Do I need to say anything more?</p><p>The big question — Why do veterans say so?</p><h3><strong>Unorganized jungle of XML, JavaScript, CDATA, etc.</strong></h3><p>In my opinion, <strong>VoiceXML looks like a creation out of obsession</strong>. XML was the new kid on the block and perhaps impressed or obsessed by it, somehow fitting it to the Voice programming needs became the name of the game. Basic TTS &amp; ASR was made to work — wow! So far so good!</p><p>Then someone realized that even simple/common programming requirements cannot be done in XML. There wasn’t a simple solution to address this in XML and that’s how Javascript (ECMAScript) became a part of the VoiceXML standard. In my vocabulary, this is nothing more than a “<strong>workaround</strong>”. If Javascript was being considered then why not do everything in Javascript? When Javascript can completely replace XML (exactly like VoicePHP), is there any logical reason to keep XML around and more importantly continue it as a “standard”? To be honest, this workaround has only made the life of programmers complex. To illustrate, consider the following sample code that reads out a caller-id ( <a href="https://web.archive.org/web/20150524164034/http://www.vxml.org/t_9.htm">courtesy</a>):</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/064026d21e5f022a7f92c1f3e3e1e83b/href">https://medium.com/media/064026d21e5f022a7f92c1f3e3e1e83b/href</a></iframe><p>Now compare this code with the VoicePHP equivalent (demo <a href="https://web.archive.org/web/20150524164034/http://code.voicephp.com/get-your-caller-id/">here</a>):</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/8b191f41f126c4e170ce5cbcbf6b1027/href">https://medium.com/media/8b191f41f126c4e170ce5cbcbf6b1027/href</a></iframe><p>What a mind-blowing difference between both the solutions. Maybe the above example demonstrates the point we all are trying to make. A <strong>workaround v/s a natural programming language</strong>. As one can see from the above example, VoiceXML has to fall back upon Javascript since XML cannot even have the basic capabilities to manipulate the numbers or strings, how can it be even considered for programming.</p><p>As you explore more, you will realize that VoiceXML is handicapped enough even not to be able to offer simple loops on its own. Can you imagine an application without such a basic control statement &amp; despite that, such basic structures were not addressed in VoiceXML. VoiceXML simply falls back to Javascript for doing such basic stuff in a messy way.</p><p>In contrast, take a look at just about any application at <a href="https://web.archive.org/web/20150524164034/http://code.voicephp.com/">http://code.voicephp.com</a> to see how easily one can take an existing application and move over to VoicePHP with all the programming constructs usually available in most programming languages.</p><h3><strong>CDATA — Add it to the mess</strong></h3><p>Well, it keeps getting better. To bring in Javascript, VoiceXML uses the CDATA directive. What is going on? Isn’t it messy already? Why do I have to care about all the subtleties? For curious minds, the CDATA directive is used so that our script can contain characters that are normally reserved for XML syntax usage.</p><p>It’s truly getting messy — XML, Javascript, CDATA, and off-course unreadable code. Keep in mind all that we have done so far is really just “read out a phone number”. It begs to me ask this question: Why is it so damn complicated?</p><p>Consider the code for the first tutorial on Voice Recognition from <a href="https://web.archive.org/web/20150524164034/http://www.vxml.org/t_2.htm">vxml.org</a>.</p><iframe src="" width="0" height="0" frameborder="0" scrolling="no"><a href="https://medium.com/media/5e751d98ffd58bddcca78b8d556b45f1/href">https://medium.com/media/5e751d98ffd58bddcca78b8d556b45f1/href</a></iframe><p>I am sure you need a coffee break after reading the above code; the code looks verbose, repetitive, and unmanageable. This same application when written in a commonly used ‘real’ programming language will have a lot less code and will read much better. Again refer to any code snippet at <a href="https://web.archive.org/web/20150524164034/http://code.voicephp.com/">http://code.voicephp.com</a></p><h3><strong>Server-side programming</strong></h3><p>One cannot use VoiceXML by itself to write a complete application. For even simple client-side processing you need Javascript. Moving on, if you need to integrate some back-end logic (a.k.a Server-side programming), you need to take the help of one of the commonly used back-end technologies (e.g. PHP, ASP, .NET, etc.).</p><p>This is not me saying but <a href="https://web.archive.org/web/20150524164034/http://www.vxml.org/intro_serverside.htm">vxml.org</a> —</p><p>“ <em>Coding an application with just straight VoiceXML is just fine and dandy, thankyouverymuch, but the *real* potential of VoiceXML is harnessed when we add some ASP or JSP into the mix</em> “</p><p>Look at the emphasis on “real”. I sincerely appreciate their candid confession and applaud them for succinctly putting the limitation of VoiceXML across so distinctly. So as you can see, in addition to learning VoiceXML tags and attributes, Javascript, and a different programming style, one now has also to learn a server-side language. Think about it — you need a chilled beer to relax but you are being given a cocktail — like it or not!</p><h3><strong>In Closing</strong></h3><p>Any way you slice it; VoiceXML doesn’t come close to meeting the requirements of real-world applications. Voice applications would do really well if there was an easy way to bring them to life. Developers do not want to use complicated technology to achieve something simple, intuitive, and obvious — I know I won’t.</p><p><strong>We are not against VoiceXML</strong>. In fact, VoiceXML spearheaded the way for voice programming and took away the complexity that one had to deal with in the early days (remember hardware card and proprietary drivers nightmare?). When it launched, VoiceXML was the “new” way to program voice and we were completely supportive of it too. We released the world’s first “ <a href="https://web.archive.org/web/20150524164034/http://blog.tringme.com/announcing-flash-based-voicexml-platform/">Adobe Flash-based VoiceXML Platform</a> “.</p><p>But it’s about time that VoiceXML realizes its inadequacies and makes way for better alternatives. Alternatives like VoicePHP (or maybe even VoicePERL or VoicePYTHON) could do a better job. The web is evolving and solutions that can tightly integrate with it will become more and more important. Dedicated solutions to tackle a specific problem are a thing of the past. Some technologies (e.g. PHP for web programming, Flash for UI and widgets, Mobile applications using a data network, etc.) have proven themselves and it’s about time that we re-use them and not bind ourselves to technologies that began with the right attitude to solve a problem but couldn’t really establish themselves due to technical limitations.</p><p><em>Originally published at </em><a href="https://web.archive.org/web/20150524164034/http://blog.motiwala.com/2009/02/15/voicexml-good-bad-the-ugly"><em>https://web.archive.org</em></a><em>.</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=79aa793eff99" width="1" height="1" alt=""><hr><p><a href="https://blog.motiwala.com/voicexml-good-bad-the-ugly-79aa793eff99">VoiceXML — Good, Bad &amp; the Ugly</a> was originally published in <a href="https://blog.motiwala.com">Yusuf Motiwala</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Did I make the Internet faster? Perhaps I did! The first prototype of HTTP compression]]></title>
            <link>https://blog.motiwala.com/did-i-make-the-internet-faster-perhaps-i-did-the-first-prototype-of-http-compression-a6955a5836c5?source=rss----d19dd9d469d---4</link>
            <guid isPermaLink="false">https://medium.com/p/a6955a5836c5</guid>
            <category><![CDATA[compression]]></category>
            <category><![CDATA[inventions]]></category>
            <category><![CDATA[twitter]]></category>
            <category><![CDATA[disruption]]></category>
            <category><![CDATA[https]]></category>
            <dc:creator><![CDATA[Yusuf Motiwala]]></dc:creator>
            <pubDate>Thu, 16 Mar 2023 07:03:44 GMT</pubDate>
            <atom:updated>2023-02-12T14:49:44.518Z</atom:updated>
            <content:encoded><![CDATA[<h4>Today, I came across an <a href="https://www.yahoo.com/now/inventor-email-asks-elon-musk-165114509.html">article</a> about the ‘Inventor of email’ expressing his interest in becoming Twitter CEO to Elon Musk. I have no such intentions, but it prompted me to write this short article about the ‘Inventor (or co-inventor) of Internet compression’, so thank you, Mr. ‘<a href="https://www.inventorofemail.com/">Inventor of email</a>’, and here is a piece of history about my contribution to your faster browsing experience!</h4><p>Well, Elon is no longer a piece of news anymore, I rather call him a daily feature :). However, the ‘Inventor of email` piqued my curiosity, because it reminded me of those early internet days when we all were inventors (just like <a href="https://www.emailonacid.com/blog/article/industry-news/who-really-invented-email/">multiple claims on who invented email</a>) :) The internet speed was slow, browsers didn’t support compression, and my need to have faster browsing gave birth to first prototype of HTTP compression in the browser, although mostly met with mixed reactions (like any other new idea), soon it became the standard.</p><p>I wasn’t savvy enough to write about it then, nor would I have ever written about it unless this news prompted me. So here is a short article from my memory of those days and how it happened. It may sound like a tall claim, but the internet never forgets and thankfully, my post about this prototype in 1996 on Linux net archive is still live, making it easy to compare dates with compression support release dates in browsers.</p><h3>Those Days…</h3><p>1996, I was a student at the <a href="https://www.iitb.ac.in/">Indian Institute of Technology, Bombay</a>. Not many of us could afford internet then, but we were lucky to have access to a 64kbps internet line (ernet.in). It might feel painfully slow by the current standards but it felt like an expressway in those days. This is true compared to the 9.6kbps connection offered by VSNL (for a whopping Rs. 25,000 for 250 hours).</p><p>It did feel slow sometimes though, downloading Slackware took over a day. However, browsing was more painful, especially webpages with images that could take a few minutes, we could even go and pick up tea and it was still loading which made me a tea addict :). This was especially true during peak hours, unfortunately, there were no off-peak hours, should I be reminding you of IRC during those days? :)</p><h3>Need is the mother of Invention — Creation of the first HTTP compression prototype</h3><p>In our quest for faster browsing and sending free emails (IIT would charge us Rs. 4 per email back than, pre-Hotmail), some of us would use an alternative — free US-based telnet servers. We would log into those servers, send emails (elm, pine), and also browse using Lynx instead of using overloaded and bandwidth-limited port 80 on the campus.</p><p>However, text browsing inside a console on state-of-the-art DEC Alpha and Silicon Graphics IRIX was no fun. I had more addictions as you can see, so I soon worked out a solution — running proxy servers on those telnet servers and setting proxy in Netscape.</p><p>Life was much better now — the browsing speed had definitely improved but it was still not good enough. However, seems like some forces wanted me to work on this, soon there was a tipping point, bzip2, which was released in 1996 and created a good buzz. Suddenly I started connecting browsing and the compression — what if all HTML files were compressed on the server and then decompressed by browsers — the browsing would be multifold faster. Wow, I praised myself and started working on a quick prototype!</p><p>Note that internet speed was not the only reason for slow browsing, there was also no compression or content negotiation used in HTTP/1.0 at that time. The entire traffic was uncompressed. No browser was supporting “<em>Accept-Encoding:</em>” (required to request compressed content from the server) including the most popular browser then, Netscape. The first Netscape version to support “<em>Accept-Encoding:</em>” was 4.06, released in Aug 1998 (<a href="https://en.wikipedia.org/wiki/Netscape_(web_browser)#Netscape_Navigator_(versions_1.0%E2%80%933.0)">history</a>). Interestingly IE 4 did implement earlier in Sep 1997 and much later by Opera 4 (around the year 2000). Lynx was earliest in 2.6 which was released around Sep 1996 but then working compression support came later, along with the first HTTP/1.1 standard in early 1997.</p><p>I started working on combining HTTP and compression, and soon created a prototype where the contents were compressed on the fly on the server and then decompressed upon receiving it. I had to write a separate daemon process since browsers were not supporting compression then. The results were indescribable now, it took the browsing experience to the whole next level.</p><p>I made a <a href="https://marc.info/?l=linux-net&amp;m=90997139027227&amp;w=2">post</a> on the Linux-net mailing list in 1996 which is still live and undoubtedly proves that it was the first (or one of the first) prototype of HTTP compression even before HTTP/1.1 specification in 1997 and browser support much later. I wrote an email to Netscape but didn’t get any reply.</p><p>I did not get any recognition for it but the same holds true for many unsung heroes for their inventions — so it’s cool :) But, it feels nice and makes me proud seeing it being used by millions of people (or billions maybe).</p><p>Back to work and tea now :)</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=a6955a5836c5" width="1" height="1" alt=""><hr><p><a href="https://blog.motiwala.com/did-i-make-the-internet-faster-perhaps-i-did-the-first-prototype-of-http-compression-a6955a5836c5">Did I make the Internet faster? Perhaps I did! The first prototype of HTTP compression</a> was originally published in <a href="https://blog.motiwala.com">Yusuf Motiwala</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
    </channel>
</rss>