<?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"><channel><title><![CDATA[Avi Aryan Blog]]></title><description><![CDATA[Personal website of Avi Aryan]]></description><link>https://aviaryan.com</link><image><url>https://aviaryan.com/favicon.png</url><title>Avi Aryan Blog</title><link>https://aviaryan.com</link></image><generator>GatsbyJS</generator><lastBuildDate>Sat, 07 Mar 2026 16:00:46 GMT</lastBuildDate><item><title><![CDATA[My Cloud-Based Obsidian Encryption Setup]]></title><description><![CDATA[I was thinking of using Obsidian for journalling but I can't really do that as it stores data in plaintext. Moreover, cloud storage providers like Dropbox have openly admitted that they read our files. I would prefer no one reads them except me. So I had to do something here. Otherwise, using Obsidian would have been out of the question. Here is the solution I came to after trying many different…]]></description><link>https://aviaryan.com/blog/obsidian-encryption</link><guid isPermaLink="false">https://aviaryan.com/blog/obsidian-encryption</guid><pubDate>Sat, 05 Dec 2020 00:00:00 GMT</pubDate></item><item><title><![CDATA[The correct way to work with Python on macOS]]></title><description><![CDATA[Yesterday, I was looking into a Python side-project after 2 years. It was using pipenv so I thought the process of getting it to build will be easy. But that wasn't the case. The pipenv installation was all broken because the Python version had changed on my system. Fixing this let me down a rabbit hole of understanding the ecosystem of Python distribution and how to avoid this problem in the…]]></description><link>https://aviaryan.com/blog/python-mac-setup</link><guid isPermaLink="false">https://aviaryan.com/blog/python-mac-setup</guid><pubDate>Mon, 02 Nov 2020 00:00:00 GMT</pubDate></item><item><title><![CDATA[How a bad GitHub Profile is holding you back]]></title><description><![CDATA[Many non-devs in tech call GitHub the new resume for developers. As a developer, you know that is not true since a lot of the work we do is behind the walls, i.e., closed source. We cannot even share snippets of that work. Many experienced developers don't even have a GitHub profile either. But recruiters don't care about that since GitHub is their best metric of vetting developers. So they check…]]></description><link>https://aviaryan.com/letters/have-good-github</link><guid isPermaLink="false">https://aviaryan.com/letters/have-good-github</guid><pubDate>Wed, 09 Sep 2020 05:20:00 GMT</pubDate></item><item><title><![CDATA[A Complete Guide to Testing React Hooks]]></title><description><![CDATA[Hooks were introduced in React 16.8 in late 2018. They are functions that hook into a functional component and allow us to use state and component features like componentDidUpdate, componentDidMount, and more. This was not possible before. Also, hooks allow us to reuse component and state logic across different components. This was tricky to do before. Therefore, hooks have been a game-changer. In…]]></description><link>https://aviaryan.com/blog/hooks-testing</link><guid isPermaLink="false">https://aviaryan.com/blog/hooks-testing</guid><pubDate>Thu, 23 Jul 2020 00:00:00 GMT</pubDate></item><item><title><![CDATA[Marketing your projects to get users and feedback]]></title><description><![CDATA[In the last email, I talked about why and how to build original products. Today I want to talk about how to share them. The thing is, if you want to have fun and go above and beyond in building side-projects, you need to have users. After all, they are the ones that will thank you for your product, give you feedback, send you cash, and finally encourage you to make it even better. How do I get…]]></description><link>https://aviaryan.com/letters/marketing-products</link><guid isPermaLink="false">https://aviaryan.com/letters/marketing-products</guid><pubDate>Wed, 22 Jul 2020 10:20:00 GMT</pubDate></item><item><title><![CDATA[Building software products for fun, learning and career (Part 1)]]></title><description><![CDATA[Recently, I posted on my LinkedIn about using projects to get experience. Now, the term "project" is a broad brush. It covers everything from - full-product clones like clones of Facebook to small bash scripts to original creations. Clones are a great way to try your hands in software development. You can use them to learn what concepts are used in a real product. Eg - Want to get an Android…]]></description><link>https://aviaryan.com/letters/making-products</link><guid isPermaLink="false">https://aviaryan.com/letters/making-products</guid><pubDate>Wed, 01 Jul 2020 10:20:00 GMT</pubDate></item><item><title><![CDATA[Rendering JSON-LD data in NextJS and ReactJS]]></title><description><![CDATA[Rendering JSON-LD data in NextJS and ReactJS is quite straight-forward. Here are the steps involved. Organize data in a plain JavaScript Object. Serialize it using JSON.stringify. Include the data in the script tag using dangerouslySetInnerHTML. Optional but recommended - Attach a key. The first step is creating the JSON Object. I used this in GoRemote which is a job-listing site. Here is the…]]></description><link>https://aviaryan.com/blog/jsonld-nextjs-react</link><guid isPermaLink="false">https://aviaryan.com/blog/jsonld-nextjs-react</guid><pubDate>Thu, 05 Mar 2020 00:00:00 GMT</pubDate></item><item><title><![CDATA[Practical Software Testing Ideas]]></title><description><![CDATA[Testing is one of the most important practices in software development. And with automated test runners like Travis, there’s no reason not to write tests. In this article, I talk about the testing ideas that have helped me in my developer life. Test external dependencies periodically External APIs can break anytime. They don’t actually "break" but the API you expect it to provide and the API it…]]></description><link>https://aviaryan.com/blog/testing-ideas</link><guid isPermaLink="false">https://aviaryan.com/blog/testing-ideas</guid><pubDate>Sat, 22 Feb 2020 00:00:00 GMT</pubDate></item><item><title><![CDATA[Why you should get a good, international domain for yourself]]></title><description><![CDATA[I see many new developers and even some senior developers going by a .in or even a .tk for their websites. But this is short-sighted. Why? Because you might move out of India. Or you might work for US and UK companies remotely. In that case, .in is not the ideal TLD you want for your domain. And .tk is not even worth a mention. It’s available for free and it doesn’t make a good impression of you…]]></description><link>https://aviaryan.com/letters/get-good-domain</link><guid isPermaLink="false">https://aviaryan.com/letters/get-good-domain</guid><pubDate>Wed, 12 Feb 2020 10:20:00 GMT</pubDate></item><item><title><![CDATA[Immutable requirements if you want a remote job]]></title><description><![CDATA[I see many people want to do remote jobs. But in my experience, there are some things that you need before you can have a great remote work career. Consider it as the smallest definite checklist. Note that these might be true for office jobs as well but there, the requirements are relaxed. For example - You can do well even if your communication skills are poor. You might get promoted as well. But…]]></description><link>https://aviaryan.com/letters/requirements-for-remote-job</link><guid isPermaLink="false">https://aviaryan.com/letters/requirements-for-remote-job</guid><pubDate>Sat, 01 Feb 2020 06:30:00 GMT</pubDate></item><item><title><![CDATA[stale-while-revalidate data fetching with React Hooks]]></title><description><![CDATA[Leveraging the stale-while-revalidate HTTP Cache-Control extension is a popular technique. It involves using cached (stale) assets if they are found in the cache, and then revalidating the cache and updating it with a newer version of the asset if needed. Hence the name stale-while-revalidate. How stale-while-revalidate Works When a request is sent for the first time, it's cached by the browser…]]></description><link>https://aviaryan.com/blog/react-stale-while-revalidate</link><guid isPermaLink="false">https://aviaryan.com/blog/react-stale-while-revalidate</guid><pubDate>Fri, 31 Jan 2020 00:00:00 GMT</pubDate></item><item><title><![CDATA[Accessing Dokku apps internally]]></title><description><![CDATA[I was working on a NextJS project recently. For those who don't know, NextJS is the most popular React framework with in-built SSR support. Now, people use SSR for many reasons but the most common ones are as follows. To render pages on the server-side and hence reduce latency on the client-side. To protect their APIs. I needed NextJS and SSR for the 2nd benefit that is, protecting my API. I had…]]></description><link>https://aviaryan.com/blog/dokku-access-app-internally</link><guid isPermaLink="false">https://aviaryan.com/blog/dokku-access-app-internally</guid><pubDate>Fri, 17 Jan 2020 00:00:00 GMT</pubDate></item><item><title><![CDATA[Optimize all the things - Using rsync instead of FTP]]></title><description><![CDATA[As programmers, we have superpowers. The superpower to do things faster than non-programmers by using the proper technology and coding skills. We should use it whenever we get the chance. I realized that after I had been doing an operation in a very slow way and I could have easily done that 100 times faster. What happened was I was working on a legacy PHP system. We deployed it to the server…]]></description><link>https://aviaryan.com/letters/optimize-all-the-things</link><guid isPermaLink="false">https://aviaryan.com/letters/optimize-all-the-things</guid><pubDate>Mon, 06 Jan 2020 06:30:00 GMT</pubDate></item><item><title><![CDATA[How to get guidance and mentorship as a Computer Science fresher]]></title><description><![CDATA[I get some requests from students asking for guidance and mentorship. But I don’t have the time. So I am writing a post which will be more valuable than any mentorship I can give, provided you follow it. It involves learning using free online resources. So there’s no reason why you can’t do this. We will be using only three websites for our learning needs. Let’s go! 0. Learn a programming language…]]></description><link>https://aviaryan.com/blog/self-mentorship-cs</link><guid isPermaLink="false">https://aviaryan.com/blog/self-mentorship-cs</guid><pubDate>Sun, 29 Dec 2019 00:00:00 GMT</pubDate></item><item><title><![CDATA[Why you should not just be a good Indian engineer]]></title><description><![CDATA[Many business owners reach out to me on LinkedIn for offering me jobs. It’s great. Except that they think of me as a good Indian engineer. Nothing is wrong with it. But Indian engineer implies that you are a good software engineer living in India. India here is a subset of the world. So, being a good Indian software engineer < being a good software engineer. Many people might be furious by the…]]></description><link>https://aviaryan.com/letters/not-just-indian-engineer</link><guid isPermaLink="false">https://aviaryan.com/letters/not-just-indian-engineer</guid><pubDate>Sat, 28 Dec 2019 11:30:00 GMT</pubDate></item><item><title><![CDATA[My most used Bash scripts including a script to sync to Dropbox]]></title><description><![CDATA[I posted a tweet about how investing time learning Bash scripting and various command-line tools is always worth it.  Every time I learn a command-line tool, I am like how did I work without this. Command-line tools are awesome. In this email, I will talk about a few bash scripts or aliases I use regularly. You should find a few of them useful in your digital life. Preventing system sleep in Mac…]]></description><link>https://aviaryan.com/letters/bash-scripts-mine</link><guid isPermaLink="false">https://aviaryan.com/letters/bash-scripts-mine</guid><pubDate>Wed, 18 Dec 2019 16:30:00 GMT</pubDate></item><item><title><![CDATA[Why we get burned out and how to fight it]]></title><description><![CDATA[Burnout. Chances are, most of you are familiar with it. But for someone new to this career, an introduction is due. Burnout is a state of mental, physical and emotional exhaustion. Often you don’t realize when it starts happening. Finding why it is happening is even harder. It is very common in our field of work. Our jobs require us to work from a computer, 8 hours a day, 5 days a week. Humans…]]></description><link>https://aviaryan.com/letters/fighting-burnout</link><guid isPermaLink="false">https://aviaryan.com/letters/fighting-burnout</guid><pubDate>Sat, 30 Nov 2019 04:20:00 GMT</pubDate></item><item><title><![CDATA[Should you keep your code dependency free?]]></title><description><![CDATA[I posted this tweet on Twitter about a trending JS library 🤷🏻‍♂️ called Immer. Immer is a small library that helps to work with immutable data in JavaScript. Its main purpose is helping create immutable objects which are a big pain point in the language. That’s because objects are copied and compared by reference. Hence it’s easy to do something wrong when working with them. Take a look below…]]></description><link>https://aviaryan.com/letters/dependency-free</link><guid isPermaLink="false">https://aviaryan.com/letters/dependency-free</guid><pubDate>Sun, 24 Nov 2019 03:30:00 GMT</pubDate></item><item><title><![CDATA[Podcasts for React developers and Indie Makers]]></title><description><![CDATA[Podcasts are great. They give you raw, unfiltered content from people. That’s because people give out their thoughts in the heat of the moment. I don’t know of any podcaster or podcast guest who prepares for the questions they are going to be asked or prepares a written speech for what they are going to speak on. They say whatever comes to their mind. In contrast, a book has filtered, restricted…]]></description><link>https://aviaryan.com/letters/podcasts-listening-to-2019</link><guid isPermaLink="false">https://aviaryan.com/letters/podcasts-listening-to-2019</guid><pubDate>Sat, 16 Nov 2019 14:30:00 GMT</pubDate></item><item><title><![CDATA[Introduction to Functional Programming in JavaScript]]></title><description><![CDATA[Functional Programming is a paradigm of building computer programs using expressions and functions without mutating state and data. By respecting these restrictions, functional programming aims to write code that is clearer to understand and bug resistant. This is achieved by avoiding using flow-control statements (for, while, break, continue, goto) which make the code harder to follow. Also…]]></description><link>https://aviaryan.com/blog/intro-functional-js</link><guid isPermaLink="false">https://aviaryan.com/blog/intro-functional-js</guid><pubDate>Fri, 25 Oct 2019 00:00:00 GMT</pubDate></item><item><title><![CDATA[Making a React drop file zone from scratch]]></title><description><![CDATA[In this article, we will talk about creating a file drop feature in React without using any libraries. The HTML spec provides us with an ondrop event handler for this. We can use the same in React by setting the onDrop attribute (notice the camelCase). But this is not enough. HTML also supports dragging events and if you try to drag & drop an element, the drag event takes precedence which opens…]]></description><link>https://aviaryan.com/blog/react-drop-file</link><guid isPermaLink="false">https://aviaryan.com/blog/react-drop-file</guid><pubDate>Wed, 11 Sep 2019 00:00:00 GMT</pubDate></item><item><title><![CDATA[Using a Country and State field with Formik]]></title><description><![CDATA[Formik is an awesome library for handling forms in React. As part of my contract work, I recently came into a problem which required me to use a country - state selector in a form handled by Formik. A quick Google search shows the react-country-region-selector package. It's very straight-forward to use. Here is a sample code. To keep this article brief, I am only showing the country component. My…]]></description><link>https://aviaryan.com/blog/formik-country-field</link><guid isPermaLink="false">https://aviaryan.com/blog/formik-country-field</guid><pubDate>Wed, 06 Feb 2019 00:00:00 GMT</pubDate></item><item><title><![CDATA[2018 Year Review]]></title><description><![CDATA[Following Pat Walls and Lenilson, I am writing this 2018 year review. I don't tweet a lot so don't expect everything to be backed by tweets. Let's see how it goes. 2018 has been a long year by all standards. In fact, many people I know are saying the same, I don't know why. It's so long I feel my whole life has been 2018. It all started with getting selected in Toptal. I remember Toptal was the…]]></description><link>https://aviaryan.com/blog/2018-year-review</link><guid isPermaLink="false">https://aviaryan.com/blog/2018-year-review</guid><pubDate>Mon, 31 Dec 2018 00:00:00 GMT</pubDate></item><item><title><![CDATA[Startup #1: YourNote - a user-first notes app]]></title><description><![CDATA[YourNote is my first attempt at becoming a developer who writes their own checks. It's a note-taking app that allows extreme user control of the data. For example, with YourNote you can be sure that no one is looking into your data, and that no one can take that data away from you. Yes, this is easily possible by just storing your data offline but if you want to access your data (here, notes) on…]]></description><link>https://aviaryan.com/blog/yournote</link><guid isPermaLink="false">https://aviaryan.com/blog/yournote</guid><pubDate>Fri, 21 Dec 2018 00:00:00 GMT</pubDate></item><item><title><![CDATA[Life update: Dead-end 🚧]]></title><description><![CDATA[I have quit the startup that I founded with my friends. It was fun while it lasted but I realized this wasn't for me so it wasn't right going forward. What's next? I am looking to explore more into life now. This means visiting new places and trying out different things. Don't get me wrong, my main domain of experimentation still remains tech and related areas but I want to do more as I did back…]]></description><link>https://aviaryan.com/blog/deadend-2018</link><guid isPermaLink="false">https://aviaryan.com/blog/deadend-2018</guid><pubDate>Thu, 06 Dec 2018 00:00:00 GMT</pubDate></item><item><title><![CDATA[The various levels of motivation]]></title><description><![CDATA[Motivation - Something that we all struggle with, and we all want to solve. Being motivated through the entirety of your life sounds like a dream goal, right? If you could only manage that, you can achieve anything in life. But motivation is tricky. You have watched all the GaryVee videos online and you are still not where you want to be. You might be wondering why that is? In that case, a better…]]></description><link>https://aviaryan.com/letters/correct-motivation</link><guid isPermaLink="false">https://aviaryan.com/letters/correct-motivation</guid><pubDate>Sun, 28 Oct 2018 02:30:00 GMT</pubDate></item><item><title><![CDATA[Career choices for programmers]]></title><description><![CDATA[In the last couple of years, I have tried different careers as a programmer. First, I tried a part-time office job for some time and then I went remote in the same company. Then, I did some freelancing and now I am trying to do freelancing + entrepreneurship. It's interesting that all this happened is less than 2 years. After going through each of the career models and trying to find my fit, I…]]></description><link>https://aviaryan.com/letters/career-choices-programmer</link><guid isPermaLink="false">https://aviaryan.com/letters/career-choices-programmer</guid><pubDate>Sun, 30 Sep 2018 14:30:00 GMT</pubDate></item><item><title><![CDATA[Lessons learned while reaching 100k+ downloads as a 17-yr old]]></title><description><![CDATA[I started developing Clipjump in March 2013, and by the same month, next year, it had 100k+ downloads. And just so you know, this was done without any marketing or outreach. I had no contacts, no industry experience and I was still in school. But the product found love and it kind of grew organically. This is Clipjump's story. How it all started? Back in 2012, I decided to learn to program and…]]></description><link>https://aviaryan.com/letters/lessons-of-clipjump</link><guid isPermaLink="false">https://aviaryan.com/letters/lessons-of-clipjump</guid><pubDate>Sat, 22 Sep 2018 14:30:00 GMT</pubDate></item><item><title><![CDATA[The N% handicap - How to startup without leaving job]]></title><description><![CDATA[Most of us have plans to do our own business at some point in our lives, right? Let's be our own boss for once! But make no mistake, starting your own thing is not easy and that's the reason most of us are stuck in our daily jobs. The only way to start a business in the current scenario seems like resigning from the job or dropping out of college and going all in. Sure, there are people have made…]]></description><link>https://aviaryan.com/letters/startup-with-job</link><guid isPermaLink="false">https://aviaryan.com/letters/startup-with-job</guid><pubDate>Tue, 18 Sep 2018 14:30:00 GMT</pubDate></item><item><title><![CDATA[GSoC is easy if you have a planned approach]]></title><description><![CDATA[Google Summer of Code - I am sure every undergrad has the dream of being selected in it one day. And the good news is that anyone can do so with some effort. By anyone, I mean any person with some appetite for coding and a strong resolve. Seriously, GSoC is not really tough. You just need to follow a good, organized strategy and you can get selected. Especially, Indians have performed…]]></description><link>https://aviaryan.com/letters/gsoc-is-easy</link><guid isPermaLink="false">https://aviaryan.com/letters/gsoc-is-easy</guid><pubDate>Wed, 12 Sep 2018 02:30:00 GMT</pubDate></item><item><title><![CDATA[Why you should make things]]></title><description><![CDATA[I don't know about other fields of study but making is of paramount importance in Computer Science. Making means creating something. That is, putting your knowledge into practice. Let's try to understand why is putting knowledge into practice important. But first, why is knowledge important? That is, why do you learn? Why do you educate yourself? To make yourself more employable, to earn more, to…]]></description><link>https://aviaryan.com/letters/making-is-important</link><guid isPermaLink="false">https://aviaryan.com/letters/making-is-important</guid><pubDate>Fri, 07 Sep 2018 14:30:00 GMT</pubDate></item><item><title><![CDATA[Interview with a NLP engineer: Navneet Nandan]]></title><description><![CDATA[This Dev Letter is a bit different. Today, we have Navneet Nandan, who is a Data Science professional and he is sharing some insights about his career. Data Science is a fantastic discipline with almost unlimited possibilities, and I am sure, like me, you are also interested in learning how it feels to be a professional in the same. What do you do? I am an NLP engineer at Mettl, a company which…]]></description><link>https://aviaryan.com/letters/interview-navneet-nlp</link><guid isPermaLink="false">https://aviaryan.com/letters/interview-navneet-nlp</guid><pubDate>Mon, 03 Sep 2018 14:30:00 GMT</pubDate></item><item><title><![CDATA[The Toptal hiring process for freelancers]]></title><description><![CDATA[I wrote this Medium post of wanting to become a digital nomad. There I discussed why the digital nomad lifestyle appealed to me and how I wanted to accomplish this dream of mine. Wannabe Digital Nomad The last step in that article was getting selected into Toptal. Mind you, I hadn't applied to Toptal back then and just thought that if I could do it, it would make my dream of becoming a nomad so…]]></description><link>https://aviaryan.com/letters/toptal-process</link><guid isPermaLink="false">https://aviaryan.com/letters/toptal-process</guid><pubDate>Wed, 29 Aug 2018 14:30:00 GMT</pubDate></item><item><title><![CDATA[How to find your best career fit]]></title><description><![CDATA[The more I go through trying to build my career, the more I realize finding your dream "career" is way simpler than it looks. I will give an example. Almost everyone wants to be startup founders, you know, running a million/billion dollar business like Elon Musk or Mark Zuckerburg. But do you really want to be like them? That is, are you ready to take the 16 hour work days their work requires…]]></description><link>https://aviaryan.com/letters/choosing-your-career</link><guid isPermaLink="false">https://aviaryan.com/letters/choosing-your-career</guid><pubDate>Sat, 25 Aug 2018 02:30:00 GMT</pubDate></item><item><title><![CDATA[Getting started with Competitive Programming and Algorithms]]></title><description><![CDATA[I started Competitive Programming as soon as I got into college, around 2014. And I seriously continued with Competitive Programming(CP) till 2015. My career was only for a year. But I learned a lot during that time since it was my #1 priority. Before we go any further, you might be thinking why I left CP. This was because I got interested in open source back then, and creating cool GitHub…]]></description><link>https://aviaryan.com/letters/getting-started-with-cp</link><guid isPermaLink="false">https://aviaryan.com/letters/getting-started-with-cp</guid><pubDate>Tue, 21 Aug 2018 02:30:00 GMT</pubDate></item><item><title><![CDATA[How to create more time for yourself (and your goals)]]></title><description><![CDATA[How do I manage time for other activities while going to college? How do I complete this side course on React when I have a full-time job and a family? After mentoring 1000s of students through the Udacity platform and spending 4 years in college, I have been asked these questions many times. When asked, I have often replied with what came first to my mind, since it was all so tiring and all…]]></description><link>https://aviaryan.com/letters/time-management</link><guid isPermaLink="false">https://aviaryan.com/letters/time-management</guid><pubDate>Sat, 18 Aug 2018 14:30:00 GMT</pubDate></item><item><title><![CDATA[Why you should do Competitive Programming, even if a little]]></title><description><![CDATA[I first started Competitive Programming(CP) in the first year of undergrad college. I should have started sooner. CP has played an important role in my career so far. In fact, it was the major reason I got the freelance contract (Toptal) that I am doing. Simply speaking, being good in Competitive or Sports Programming allowed me to outrank other programmers by a large margin. So yes, CP is…]]></description><link>https://aviaryan.com/letters/why-competitve-programming</link><guid isPermaLink="false">https://aviaryan.com/letters/why-competitve-programming</guid><pubDate>Thu, 16 Aug 2018 08:30:00 GMT</pubDate></item><item><title><![CDATA[Advice for a Computer Science college fresher]]></title><description><![CDATA[I was recently asked by a Computer Science college fresher about plans and advice for this new adventure of theirs. Here is the exact reply I sent. Hi Slim, I don't know if this will be a self-fulfilling answer. But here it goes. The truth is, you can't really plan a lot. At least, that's what I believe in. Instead, find something that you are interested in, and do it. Like, for example, at first…]]></description><link>https://aviaryan.com/letters/letter-to-a-fresher</link><guid isPermaLink="false">https://aviaryan.com/letters/letter-to-a-fresher</guid><pubDate>Tue, 14 Aug 2018 02:30:00 GMT</pubDate></item><item><title><![CDATA[Why software shouldn't be free]]></title><description><![CDATA[People have really a hard-time paying for software, online courses, digital subscriptions, and other similar online stuff. This really saddens me. We have reached this point in our civilization where software (or any code-backed product) are commonplace like any physical goods. So why the discrimination? I will tell you why. People know that software, songs, courses etc can be easily mass…]]></description><link>https://aviaryan.com/letters/software-shouldnt-be-free</link><guid isPermaLink="false">https://aviaryan.com/letters/software-shouldnt-be-free</guid><pubDate>Mon, 13 Aug 2018 02:30:00 GMT</pubDate></item><item><title><![CDATA[Freelancing - Worth the risks? And how to get started]]></title><description><![CDATA[I have been asked this many times. How do I get into freelance? Honestly, it's not that easy. Freelancing comes with downtimes where you won't get a client for a period of time which can be quite nerving if you are just starting out (and don't have any savings). But all in all, freelancing is quite a good career option in the long run. Why? Many reasons - Ability to choose your work Location…]]></description><link>https://aviaryan.com/letters/get-started-with-freelancing</link><guid isPermaLink="false">https://aviaryan.com/letters/get-started-with-freelancing</guid><pubDate>Sun, 12 Aug 2018 02:30:00 GMT</pubDate></item><item><title><![CDATA[Move Fast and Break Things - How it works]]></title><description><![CDATA[Move Fast and Break Things - such a popular saying in the startup world. Some are so in favor of it that they sing it everyday while there are others that absolutely loathe it. I, for one, used to be not much of a strong believer in this. But then, through my own life experiences, I realized how this works. There are two components to it - (1) Move Fast The first idea is pretty simple. You move…]]></description><link>https://aviaryan.com/letters/move-fast-break-things</link><guid isPermaLink="false">https://aviaryan.com/letters/move-fast-break-things</guid><pubDate>Sat, 11 Aug 2018 02:30:00 GMT</pubDate></item><item><title><![CDATA[Why you should learn new languages and frameworks]]></title><description><![CDATA[The new languages coming out these days are amazing, especially when coming from the C's and Java's. Go is super fast and a pleasure to code in, thanks to its static typing. Rust has a syntax we all know and love but in bonus, with the speed of C. Dart is nice too, and thanks to Flutter, we can make beautiful native mobile apps using it. And that too, cross-platform. But that's not what is most…]]></description><link>https://aviaryan.com/letters/modern-languages-career</link><guid isPermaLink="false">https://aviaryan.com/letters/modern-languages-career</guid><pubDate>Fri, 10 Aug 2018 02:30:00 GMT</pubDate></item><item><title><![CDATA[Insights on Chattt's excellent Product Hunt launch]]></title><description><![CDATA[chattt_logo_256 Repository aviaryan/chattt and aviaryan/chattt-backend Introduction For those who don't know, Chattt is an open source CLI based chat application that I created in my free time. I recently launched it on Product Hunt and it was able to reach the 7th position for the day, with 288 upvotes. In this article, I will share my expertise on how I got there, and how you can do it too.  PS…]]></description><link>https://aviaryan.com/blog/chattt-ph-launch</link><guid isPermaLink="false">https://aviaryan.com/blog/chattt-ph-launch</guid><pubDate>Wed, 06 Jun 2018 00:00:00 GMT</pubDate></item><item><title><![CDATA[Introducing Chattt - an open source CLI chat client]]></title><description><![CDATA[So the past 2 months I was slowly working on my hobby project called "Chattt" and I just did the v0.2 release recently. It's quite ready for public use now so I thought I should share it with everyone. So what is Chattt? Chattt is an open source terminal based chat system. Its selling point is that it is very simple to use and it doesn't require much technical knowledge. I created it because I…]]></description><link>https://aviaryan.com/blog/introducing-chattt</link><guid isPermaLink="false">https://aviaryan.com/blog/introducing-chattt</guid><pubDate>Fri, 11 May 2018 00:00:00 GMT</pubDate></item><item><title><![CDATA[Tabs v/s Spaces: An analysis on why tabs are better]]></title><description><![CDATA[Tabs v/s Spaces.
I am sure you have encountered this dilemma in your coding career time and again.
I prefer tabs. There are some people who prefer spaces instead.
Today I would like to discuss why tabs are better than spaces.
I am only going to use rational points here. Please spend 5 minutes on this article and then make a decision. First, I would like to point out the major argument why people…]]></description><link>https://aviaryan.com/blog/tabs-ftw</link><guid isPermaLink="false">https://aviaryan.com/blog/tabs-ftw</guid><pubDate>Wed, 07 Jun 2017 00:00:00 GMT</pubDate></item><item><title><![CDATA[My GSoC 2016 Story]]></title><description><![CDATA[Google Summer of Code is probably the most prestigious internship that a college undergrad can get into these days. Millions of students over the world apply and only a thousand are selected. I too wanted to give it a shot. By the end of February this year (26th to be exact), we had the organizations list for GSoC.
I was not confident in my abilities so I didn't want to send in a proposal. But I…]]></description><link>https://aviaryan.com/blog/first-gsoc-story</link><guid isPermaLink="false">https://aviaryan.com/blog/first-gsoc-story</guid><pubDate>Mon, 17 Oct 2016 00:00:00 GMT</pubDate></item><item><title><![CDATA[Getting started with Docker Compose]]></title><description><![CDATA[In this post, I will talk about running multiple containers at once using Docker Compose. The problem ? Suppose you have a complex app with Database containers, Redis and what not. How are you going to start the app ?
One way is to write a shell script that starts the containers one by one. Now suppose these containers have lots of configurations (links, volumes, ports, environment variables) that…]]></description><link>https://aviaryan.com/blog/gsoc/docker-compose-starting</link><guid isPermaLink="false">https://aviaryan.com/blog/gsoc/docker-compose-starting</guid><pubDate>Sat, 20 Aug 2016 00:00:00 GMT</pubDate></item><item><title><![CDATA[Small Docker images using Alpine Linux]]></title><description><![CDATA[Everyone likes optimization, small file sizes and such.. Won't it be great if you are able to reduce your Docker image sizes by a factor of 2 or more.
Say hello to Alpine Linux.
It is a minimal Linux distro weighing just 5 MBs. It also has basic linux tools and a nice package manager APK. APK is quite stable and has a considerable amount of
packages. In this post, my main motto is how to squeeze…]]></description><link>https://aviaryan.com/blog/gsoc/docker-using-alpine</link><guid isPermaLink="false">https://aviaryan.com/blog/gsoc/docker-using-alpine</guid><pubDate>Tue, 16 Aug 2016 00:00:00 GMT</pubDate></item><item><title><![CDATA[Writing your first Dockerfile]]></title><description><![CDATA[In this tutorial, I will show you how to write your first Dockerfile.
I got to learn Docker because I had to implement a Docker deployment for our GSoC project Open Event Server. First up, what is Docker ?
Basically saying, Docker is an open platform for people to build, ship and run applications anytime and anywhere. Using Docker, your app will be able to run on any
platform that supports Docker…]]></description><link>https://aviaryan.com/blog/gsoc/dockerfile-basic</link><guid isPermaLink="false">https://aviaryan.com/blog/gsoc/dockerfile-basic</guid><pubDate>Thu, 11 Aug 2016 00:00:00 GMT</pubDate></item><item><title><![CDATA[Dynamically marshalling output in Flask Restplus]]></title><description><![CDATA[Do you use Flask-Restplus ? Have you felt the need of dynamically modifying API output according to condition.
If yes, then this post is for you. In this post, I will show how to use decorators to restrict GET API output. So let's start. This is the basic code to create an API. Here we have created a get_speaker API to get a single item from Speaker model. Now our need is to change the returned…]]></description><link>https://aviaryan.com/blog/gsoc/dynamic-marshal-restplus</link><guid isPermaLink="false">https://aviaryan.com/blog/gsoc/dynamic-marshal-restplus</guid><pubDate>Thu, 04 Aug 2016 00:00:00 GMT</pubDate></item><item><title><![CDATA[Testing Docker Deployment using Travis]]></title><description><![CDATA[Hello. This post is about how to setup automated tests to check if your application's docker deployment is working or not. I used it extensively while working on the Docker
deployment of the Open Event Server.
In this tutorial, we will use Travis CI as the testing service. To start testing your github project for Docker deployment, first add the repo to Travis.
Then create a .travis.yml in the…]]></description><link>https://aviaryan.com/blog/gsoc/docker-test</link><guid isPermaLink="false">https://aviaryan.com/blog/gsoc/docker-test</guid><pubDate>Wed, 03 Aug 2016 00:00:00 GMT</pubDate></item><item><title><![CDATA[Downloading Files from URLs in Python]]></title><description><![CDATA[This post is about how to efficiently/correctly download files from URLs using Python.
I will be using the god-send library requests for it. I will write about methods to correctly download binaries from URLs and set their filenames. Let's start with baby steps on how to download a file using requests -- The above code will download the media at http://google.com/favicon.ico and save it as google…]]></description><link>https://aviaryan.com/blog/gsoc/downloading-files-from-urls</link><guid isPermaLink="false">https://aviaryan.com/blog/gsoc/downloading-files-from-urls</guid><pubDate>Thu, 28 Jul 2016 00:00:00 GMT</pubDate></item><item><title><![CDATA[Import/Export feature of Open Event - Challenges]]></title><description><![CDATA[We have developed a nice import/export feature as a part of our GSoC project Open Event.
It allows user to export an event and then further import it back. Event contains data like tracks, sessions, microlocations etc.
When I was developing the basic part of this feature, it was a challenge on how to export and then further import the same data.
I was in need of a format that completely stores…]]></description><link>https://aviaryan.com/blog/gsoc/open-event-import-export-algo</link><guid isPermaLink="false">https://aviaryan.com/blog/gsoc/open-event-import-export-algo</guid><pubDate>Mon, 25 Jul 2016 00:00:00 GMT</pubDate></item><item><title><![CDATA[Setting up Celery with Flask]]></title><description><![CDATA[In this article, I will explain how to use Celery with a Flask application.
Celery requires a broker to run. The most famous of the brokers is Redis.
So to start using Celery with Flask, first we will have to setup the Redis broker. Redis can be downloaded from their site http://redis.io.
I wrote a script that simplifies downloading, building and running the redis server. When the above script is…]]></description><link>https://aviaryan.com/blog/gsoc/celery-flask-using</link><guid isPermaLink="false">https://aviaryan.com/blog/gsoc/celery-flask-using</guid><pubDate>Fri, 15 Jul 2016 00:00:00 GMT</pubDate></item><item><title><![CDATA[Ideas on using Celery in Flask for background tasks]]></title><description><![CDATA[Simply put, Celery is a background task runner. It can run time-intensive tasks in the background so that your application can focus on the stuff that matters the most.
In context of a Flask application, the stuff that matters the most is listening to HTTP requests and returning response. By default, Flask runs on a single-thread.
Now if a request is executed that takes several seconds to run…]]></description><link>https://aviaryan.com/blog/gsoc/celery-flask-good-ideas</link><guid isPermaLink="false">https://aviaryan.com/blog/gsoc/celery-flask-good-ideas</guid><pubDate>Wed, 13 Jul 2016 00:00:00 GMT</pubDate></item><item><title><![CDATA[Introduction to JWT]]></title><description><![CDATA[In this post, I will try to explain what is JWT, what are its advantages and why you should be using it. JWT stands for JSON Web Tokens. Let me explain what each word means. Tokens - Token is in tech terms a piece of data (claim) which gives access to certain piece of information and allows certain actions. Web - Web here means that it was designed to be used on the web i.e. web projects. JSON…]]></description><link>https://aviaryan.com/blog/gsoc/jwt-intro</link><guid isPermaLink="false">https://aviaryan.com/blog/gsoc/jwt-intro</guid><pubDate>Sat, 02 Jul 2016 00:00:00 GMT</pubDate></item><item><title><![CDATA[Using S3 for cloud storage]]></title><description><![CDATA[In this post, I will talk about how we can use the Amazon S3 (Simple Storage Service) for cloud storage.
As you may know, S3 is a no-fuss, super easy cloud storage service based on the IaaS model.
There is no limit on the size of file or the amount of files you can keep on S3, you are only charged for the amount of bandwidth you use.
This makes S3 very popular among enterprises of all sizes and…]]></description><link>https://aviaryan.com/blog/gsoc/s3-for-storage</link><guid isPermaLink="false">https://aviaryan.com/blog/gsoc/s3-for-storage</guid><pubDate>Fri, 24 Jun 2016 00:00:00 GMT</pubDate></item><item><title><![CDATA[Paginated APIs in Flask]]></title><description><![CDATA[Week 2 of GSoC I had the task of implementing paginated APIs in Open Event project.
I was aware that DRF provided such feature in Django so I looked through the Internet to find some library for Flask.
Luckily, I didn't find any so I decided to make my own. A paginated API is page-based API. This approach is used as the API data can be very large sometimes and pagination can help to break it into…]]></description><link>https://aviaryan.com/blog/gsoc/paginated-apis-flask</link><guid isPermaLink="false">https://aviaryan.com/blog/gsoc/paginated-apis-flask</guid><pubDate>Sun, 19 Jun 2016 00:00:00 GMT</pubDate></item><item><title><![CDATA[Better fields and validation in Flask Restplus]]></title><description><![CDATA[We at Open Event Server project are using flask-restplus for API.
Apart from auto-generating of Swagger specification, another great plus point of restplus is how easily
we can set input and output models and the same is automatically shown in Swagger UI.
We can also auto-validate the input in POST/PUT requests to make sure that we get what we want. As can be seen above, the validate param for…]]></description><link>https://aviaryan.com/blog/gsoc/restplus-validation-custom-fields</link><guid isPermaLink="false">https://aviaryan.com/blog/gsoc/restplus-validation-custom-fields</guid><pubDate>Sun, 12 Jun 2016 00:00:00 GMT</pubDate></item><item><title><![CDATA[REST API Authentication in Flask]]></title><description><![CDATA[Recently I had the challenge of restricting unauthorized personnel from accessing some views in Flask.
Sure the naive way will be asking the username and password in the json itself and checking the records in the database. The request will be something like this- But I wanted to do something better. So I looked up around the Internet and found that it is possible to accept Basic authorization…]]></description><link>https://aviaryan.com/blog/gsoc/auth-flask-done-right</link><guid isPermaLink="false">https://aviaryan.com/blog/gsoc/auth-flask-done-right</guid><pubDate>Mon, 06 Jun 2016 00:00:00 GMT</pubDate></item><item><title><![CDATA[So it begins. An introduction to my GSoC project]]></title><description><![CDATA[These days are getting so worked up. For the first time in my life, I have to attend to around 40 emails a day. If you count the replies with them, it will be well over 150.
Things have got so busy. Let me tell you about the work we are doing these days. To start off, our project is called Open Event.
Open Event is a software suite to help people manage events, summits, conferences etc with…]]></description><link>https://aviaryan.com/blog/gsoc/so-it-begins</link><guid isPermaLink="false">https://aviaryan.com/blog/gsoc/so-it-begins</guid><pubDate>Fri, 27 May 2016 00:00:00 GMT</pubDate></item><item><title><![CDATA[Hello FOSSASIA, GSoC 16]]></title><description><![CDATA[How it Started I completely ignored GSoC 15 because of lack of knowledge of popular development languages like Python and Node.
By 2016 I was comfortable with Python and had working knowledge of NodeJS and other popular languages.
But still I was not much confident if I can qualify for a prestigious program that is GSoC.
Tired I was looking through the organizations list for 2016 and like most of…]]></description><link>https://aviaryan.com/blog/gsoc/gsoc-fossasia-hello</link><guid isPermaLink="false">https://aviaryan.com/blog/gsoc/gsoc-fossasia-hello</guid><pubDate>Sun, 08 May 2016 00:00:00 GMT</pubDate></item><item><title><![CDATA[Emojis offline]]></title><description><![CDATA[I am often in need of some emojis when committing on my github repos. As I don't have an always on Internet connection, I had to sacrifice them when I was not online.
I tried saving the http://emoji.muan.co/ page but that didn't work. So I wrote a simple Python script to set up a server from the emoji's directory and run the browser with the emoji selector running on localhost. Emoji Offline You…]]></description><link>https://aviaryan.com/blog/EmojiServer</link><guid isPermaLink="false">https://aviaryan.com/blog/EmojiServer</guid><pubDate>Wed, 02 Sep 2015 00:00:00 GMT</pubDate></item><item><title><![CDATA[Shortcut virus fix]]></title><description><![CDATA[In recent days, a lot of my classmates had problems with their pendrives where a virus seem to have taken over and all of the drive contents where converted to shortcuts.
I saw the hidden system files and concluded that this was a work of a windows script (.WsF). So I decided to write up a script to fix these issues. As it seems to be a Windows only virus, I chose AutoHotkey as the programming…]]></description><link>https://aviaryan.com/blog/shortcut-fix</link><guid isPermaLink="false">https://aviaryan.com/blog/shortcut-fix</guid><pubDate>Tue, 25 Aug 2015 00:00:00 GMT</pubDate></item><item><title><![CDATA[Getting back to Clipjump Development]]></title><description><![CDATA[Clipjump's last public release was in 26/08/14. And it's been 6 months now, without any significant commiting. Shit! In the meanwhile, I got admitted in college and I am a much better coder now. I learned new languages like C, C++, Python and these kept me busy and away from AutoHotkey.
Now, when my language learning spree is about to come to a pause, I want to go back to AutoHotkey and resume…]]></description><link>https://aviaryan.com/blog/clipjump/getting-back-to-clipjump</link><guid isPermaLink="false">https://aviaryan.com/blog/clipjump/getting-back-to-clipjump</guid><pubDate>Tue, 17 Feb 2015 00:00:00 GMT</pubDate></item><item><title><![CDATA[C# Sublime Build]]></title><description><![CDATA[If you want to code in C# using Sublime Text, then this post is for you. After this post you will be able to use Ctrl+B to build a .cs file and Ctrl+Shift+B to run the exe through
the terminal. The Steps Find the C-Sharp Compiler on your system. Normally it's in C:\Windows\Microsoft.NET\Framework\ folder. For me it is C:\Windows\Microsoft.NET\Framework\v3.5\csc.exe Add csc.exe's path to…]]></description><link>https://aviaryan.com/blog/csharp-sublime-build</link><guid isPermaLink="false">https://aviaryan.com/blog/csharp-sublime-build</guid><pubDate>Sun, 08 Feb 2015 00:00:00 GMT</pubDate></item><item><title><![CDATA[The new flat design]]></title><description><![CDATA[I just realized my blog was looking somewhat bloated with all the text holders floating on both the sides so I decided to redesign it. The last time I wrote about this blog, it had a centered content container with left side occupied by a boneless sidebar and some rounded containers and the right side had a couple of buttons. While browsing through the Internet and bumping into clean (bootstraped…]]></description><link>https://aviaryan.com/blog/a-major-redesign</link><guid isPermaLink="false">https://aviaryan.com/blog/a-major-redesign</guid><pubDate>Wed, 07 Jan 2015 00:00:00 GMT</pubDate></item><item><title><![CDATA[CapsLock status notifier]]></title><description><![CDATA[My new laptop didn't had a CapsLock LED so I decided to make a little tool (in AutoHotkey) which shows the caps-lock status in the system tray. 
 The Caps-lock ON and OFF icons are distributed as single icon files so you can edit them to suit your visual aesthetics.
You can download this tool from my dropbox or see the source on github If for some reason CapsLockStatus's icon is not shown in the…]]></description><link>https://aviaryan.com/blog/capslock-notifier-released</link><guid isPermaLink="false">https://aviaryan.com/blog/capslock-notifier-released</guid><pubDate>Tue, 30 Dec 2014 00:00:00 GMT</pubDate></item><item><title><![CDATA[Duplicate PureText with Clipjump]]></title><description><![CDATA[You can use the pre-distributed NoFormatting Paste plugin to paste text
without formatting. To set up the Win+V shortcut combination, you will have to use ClipjumpCustom.ini.
Here is an example code - Now pressing Win+V will paste the current clipboard trimming any formatting. If it doesn't work, make sure you have restarted Clipjump. Trimming the Whitespace The updated version of NoFormatting…]]></description><link>https://aviaryan.com/blog/clipjump/duplicate-puretext</link><guid isPermaLink="false">https://aviaryan.com/blog/clipjump/duplicate-puretext</guid><pubDate>Thu, 07 Aug 2014 00:00:00 GMT</pubDate></item><item><title><![CDATA[Simple CSS notification boxes without using any icon]]></title><description><![CDATA[This post will show you how to create message/notification boxes using CSS without using a image/icon/font icon. So for creating icons, we will use CSS border-radius property and some unicode text if needed. The four icons in question are 
  and . Here is the style to create these 4 icons. You will notice that I have used specific fonts where needed. For creating containers i.e. message boxes, we…]]></description><link>https://aviaryan.com/blog/css-notification-bubble-box</link><guid isPermaLink="false">https://aviaryan.com/blog/css-notification-bubble-box</guid><pubDate>Mon, 04 Aug 2014 00:00:00 GMT</pubDate></item><item><title><![CDATA[About the theme]]></title><description><![CDATA[This theme has been customized from the Solar theme by @redwallhp.
Various features of theme are as follows - Seamless Disqus integration Just specify disqus_id, the forumname of your site in the _config.yml file and the disqus will be integrated to the site. For blog posts, the disqus_identifier is
made dynamically so that you don't lose your comments if the link to the post changes. Same is for…]]></description><link>https://aviaryan.com/blog/the-theme</link><guid isPermaLink="false">https://aviaryan.com/blog/the-theme</guid><pubDate>Thu, 10 Jul 2014 00:00:00 GMT</pubDate></item><item><title><![CDATA[Set max clip limits for any channel in Clipjump]]></title><description><![CDATA[Clipjump by default only allows channel 0 (Default) to have limits on maximum number of clips that can be accomodated in it. In all channel other than 0, unlimited clips can be stored without resrictions. This post explains how one can impose a maximum clip limit on any channel. We will have to use ClipjumpCustom.ini for the purpose. The variable we are going to use is cn.totalclipsN where the…]]></description><link>https://aviaryan.com/blog/clipjump/clipjump-set-limits-on-channels</link><guid isPermaLink="false">https://aviaryan.com/blog/clipjump/clipjump-set-limits-on-channels</guid><pubDate>Sat, 28 Jun 2014 00:00:00 GMT</pubDate></item><item><title><![CDATA[Disable Clipjump for a particular shortcut]]></title><description><![CDATA[The plugin CJ Disabled Shortcut can be used to disable clipjump when pressing shortcuts like Clip
Note in CintaNotes and similar features in Evernote, OneNote and other note-taking applications.
Basically this plugin disables clipjump around the span of pressing a shortcut which alters clipboard and thus puts unneeded entries to Clipjump. To use this plugin, you will have to set a separate…]]></description><link>https://aviaryan.com/blog/clipjump/disable-clipjump-cintanotes-evernote</link><guid isPermaLink="false">https://aviaryan.com/blog/clipjump/disable-clipjump-cintanotes-evernote</guid><pubDate>Mon, 09 Jun 2014 00:00:00 GMT</pubDate></item><item><title><![CDATA[The old Poole theme]]></title><description><![CDATA[This theme has been derived from Mark Otto's project poole. I needed a theme to suit both blogs and
project pages and @mdo's themes where just the perfect thing to start off with.
Thank you mdo !! This post mainly contains notes for myself and should be useful to anyone using this theme. Major Edits in the Theme Pages are more wider. No dynamic sidebar, instead a semi-dynamic list where the Github…]]></description><link>https://aviaryan.com/blog/post_1</link><guid isPermaLink="false">https://aviaryan.com/blog/post_1</guid><pubDate>Wed, 30 Apr 2014 00:00:00 GMT</pubDate></item><item><title><![CDATA[Creating Win Shortcut in Clipjump]]></title><description><![CDATA[You may have noticed that creating shortcut having the Win key is not possible with the Settings editor.
If you are really keen on utilizing those un-used Win keys , you can use the ClipjumpCustom.ini feature. All you have to do is get the correspoding label for the feature you need and then follow the underlying example. This uses the label channelOrganizer to create the shortcut Win + k for the…]]></description><link>https://aviaryan.com/blog/clipjump/win-shortcut-in-clipjump</link><guid isPermaLink="false">https://aviaryan.com/blog/clipjump/win-shortcut-in-clipjump</guid><pubDate>Sat, 26 Apr 2014 00:00:00 GMT</pubDate></item><item><title><![CDATA[SmartGit, Portable Git Client]]></title><description><![CDATA[I was looking for a portable Git GUI Client and I finally have found what I wanted, it is SmartGit. SmartGit is a smart, intuitive and easy Git client much suited for beginners like me. It has a rich interface full of features, is light on disk and works
right out-of-the box. I was surprised to see that it supersedes Github native client when the ease of usage is compared and so becomes the best…]]></description><link>https://aviaryan.com/blog/smartgit-portable-github-client</link><guid isPermaLink="false">https://aviaryan.com/blog/smartgit-portable-github-client</guid><pubDate>Sun, 26 Jan 2014 00:00:00 GMT</pubDate></item></channel></rss>