- Welcome to my homepage,
-
-
- I’m a Software Developer working at Zerodha where
- I write Golang, Python and Javascript to build things that are used at scale.
-
-
- I am also developing upi.link, a small and nifty
- programmable UPI shortlink generator.
-
-
-
-
- You can read my blog where
- I try to write about what I am doing and things I find interesting.
-
+
+
+
+
diff --git a/content/blog/2016-01-27-making-presenations-using-markdown.md b/content/blog/2016-01-27-making-presenations-using-markdown.md
new file mode 100644
index 0000000..470da2d
--- /dev/null
+++ b/content/blog/2016-01-27-making-presenations-using-markdown.md
@@ -0,0 +1,39 @@
+---
+title: Making Presenations using Markdown
+author: rhnvrm
+type: post
+date: 2016-01-27T00:00:00+00:00
+url: blog/2016/01/27/making-presenations-using-markdown/
+categories:
+ - projects
+ - uncategorized
+
+---
+It’s often a pain to make presenations. How many times have you just wanted to make a simple presentation but have had to deal with bulky software like MS Office?
+
+Well markdown alternatives exist for presenations also, you can focus on your content and make your presentations simply in markdown.
+
+If you don’t know what markdown is you can see this wonderful [cheatsheet][1] and
+
+get acquainted with it in seconds.
+
+Although there are many solutions, I found [RemarkJS][2] to be a good product. This is their getting started tutorial:
+
+> It takes only a few, simple steps to get up and running with remark:
+
+> 1. Create a HTML file to contain your slideshow (see below)
+
+> 2. Open the HTML file in a decent browser
+
+> 3. Edit the Markdown and/or CSS styles as needed, save and refresh!
+
+They also have a wonderful [website][3] which is acutally a presentation which you can use as an introduction.
+
+Many tools have also been built around it like [Remarkise][4] which can be used to render your Markdown-based slideshow on the fly.
+
+If you know of any other cooler alternatives, please drop a comment!
+
+ [1]: https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet
+ [2]: https://github.com/gnab/remark
+ [3]: http://remarkjs.com/
+ [4]: https://gnab.github.io/remark/remarkise
\ No newline at end of file
diff --git a/content/blog/2016-01-28-point-about-floating-points.md b/content/blog/2016-01-28-point-about-floating-points.md
new file mode 100644
index 0000000..81ae8c1
--- /dev/null
+++ b/content/blog/2016-01-28-point-about-floating-points.md
@@ -0,0 +1,18 @@
+---
+title: Point about Floating (Points)
+author: rhnvrm
+type: post
+date: 2016-01-28T00:00:00+00:00
+url: blog/2016/01/28/point-about-floating-points/
+categories:
+ - uncategorized
+
+---
+It is not always true what you might be told about floating point numbers, always better to look for things in the manual or on the [internet][1]
+
+![xkcd][2]
+
+Black Hat was lying to the ACM team. e^π – π, which is around 19.999099979 is very close to 20. Many people forget that floating point numbers are approximations, otherwise infinite space would be needed to store such numbers. He made them believe that it is “close enough to 20 that the computer should be unable to tell the difference, and that any noticeable deviation from 20 results from errors in the code”. Well, what more do you expect from black-hat?
+
+ [1]: http://floating-point-gui.de/basic/
+ [2]: https://imgs.xkcd.com/comics/e_to_the_pi_minus_pi.png
\ No newline at end of file
diff --git a/content/blog/2016-01-29-twitter-bots-using-tweepy.md b/content/blog/2016-01-29-twitter-bots-using-tweepy.md
new file mode 100644
index 0000000..16a385d
--- /dev/null
+++ b/content/blog/2016-01-29-twitter-bots-using-tweepy.md
@@ -0,0 +1,35 @@
+---
+title: Twitter bots using Tweepy
+author: rhnvrm
+type: post
+date: 2016-01-29T00:00:00+00:00
+url: blog/2016/01/29/twitter-bots-using-tweepy/
+categories:
+ - projects
+
+---
+Unable to think what to tweet about? Have you ever faced a similar situation?
+
+Well, it’s very easy to create your own bots using python’s Tweepy module. You can use these skeletons I recently made for a workshop on the same topic. All you need to make your own bot is add some logic to these skeletons.
+
+* * *
+
+This is a basic static script that you can use by running once yourself or setup a cronjob to run automaticall in intervals. Currently, it fetches JSON data from an API and parses it into a python dict which you can then manipulate with your py-fu.
+
+
+
+* * *
+
+This script uses twitter’s streaming API which you can use to read content in real time and act upon it again, in real time!
+
+
+
+* * *
+
+Note you will also need this file in the same directory, it holds your keys. You should add this file to .gitignore before commiting your keys in your own repo.
+
+
+
+If you create your own bot using this, we would love for you to also add it to the [audience][2] folder in the repo by sending a pull request.
+
+ [2]: https://github.com/ACM-SNU/api-bot-python/tree/master/audience
\ No newline at end of file
diff --git a/content/blog/2016-03-22-blip.md b/content/blog/2016-03-22-blip.md
new file mode 100644
index 0000000..d09e400
--- /dev/null
+++ b/content/blog/2016-03-22-blip.md
@@ -0,0 +1,39 @@
+---
+title: 'BLIP – Asset Tracking & Location Based Contextual Services Using Bluetooth Based Indoor Positioning'
+author: rhnvrm
+type: post
+date: 2016-03-22T23:43:41+00:00
+url: blog/2016/03/22/blip/
+categories:
+ - projects
+tags:
+ - hackathon
+ - iot
+ - python
+
+---
+**BLIP** is a naive solution for effective tracking of assets in indoor spaces, where satellite (GPS) based positioning systems are unreliable, and provide location based contextual services. This project was made at IndiaHacks: Internet Of Things Hackathon at SAP Labs, Gurgaon. It was an overnight hackathon and [Paul][1] and I were awake till the last moments and only slept after creating a small demo video.
+
+
+
+We were inspired by the The Time Machine (2002) movie’s scene where the protagonist enters a museum in the future.
+
+
+
+During the hackathon we were able to make an app that relays RSSI values to our real time Database (rethink-db) that works on a pub-sub model, queries the real time database for its calculated position and receives contextual information relating to its predicted position inside the building where beacons have been set up.
+
+
+
+Since, the final submission deadline was extended, we were able to reach back our campus at night and shoot a demo video at our university’s library.
+
+
+
+Finally, we were selected in the top 20 for the offline finals of IndiaHacks and went to Taj Vivanta, Bangalore. It was a nice experience where we got to improve our idea with the help of mentors that were available there. We tweaked the algorithm and the variables a bit for the demo room we made at the venue. We were surprised to be among the few student teams at the finale.
+
+
+
+We gave our best and demo’d the project and were finally awarded the 7th position and received two RaspberryPi 3B models as the prize.
+
+
+
+ [1]: https://twitter.com/commandpaul
\ No newline at end of file
diff --git a/content/blog/2016-04-15-foodify-app-hacknsit-2016.md b/content/blog/2016-04-15-foodify-app-hacknsit-2016.md
new file mode 100644
index 0000000..0992bde
--- /dev/null
+++ b/content/blog/2016-04-15-foodify-app-hacknsit-2016.md
@@ -0,0 +1,42 @@
+---
+title: Foodify App – HackNSIT 2016
+author: rhnvrm
+type: post
+date: 2016-04-15T00:22:24+00:00
+url: blog/2016/04/15/foodify-app-hacknsit-2016/
+categories:
+ - projects
+tags:
+ - android
+ - api
+ - hackathon
+ - python
+
+---
+[HackNSIT][1] is a 24 hour hackathon that took place at Netaji Subhash Institute of Technology, and had around 150 participants from all over India. The themes of the hackathon were diverse and we chose to build an app that can solve the problem of tracking the nutritional value of whatever you eat with just a simple snap. The app processes the image of a food item, retrieves nutritional content and also suggests recipes based on your daily calorie limit/goal. We won the third prize at this hackathon.
+
+
+
+Since we were a team of 4 composed of two python developers ([rhnvrm][2], [mrkaran_][3]) and two android developers ([mayank_saxena96][4], [arpit_gogia][5]), we started with a creating a [GitHub Organization][6] to organize our code. We had separate repositories for our _Backend API_ and _Android App_. Being lazy, we set up a webhook to Heroku to automatically deploy new builds whenever new code is pushed.
+
+**Tech Stack**: We used Python (Flask) for our API, Parse for the user database and Android for the mobile app. We have used CloudSight, NutritionX API and Spoonacular API. On the Android app, one of our main goals was to accomplish a low bandwidth connection to our server. Cameras on mobile device these days are capable of reproducing high quality photos measuring up to 6 MB in size. By using a simple Bitmap scaling down mechanism, we were able to reduce the size to around 200 kB, thus allowing users to use our app on low bandwidth connections like 2G.
+
+**User Flow**: We built our core API on Flask(Python) and hosted it on Heroku. The image is sent as multipart data from Android App as a POST request to /upload endpoint which calls CloudSIght API to retrieve food item name and then NutritionX API is called to retrieve relevant nutritional data of that item. The daily calorie limit is set at the time of signup, and this is deducted every time a new food item is added. Using Spoonacular API we get a list of recommended recipes which are within bounds of daily calorie limit.
+
+**Documentation**: We have properly documented our API endpoints for reference to other people. It is available [here][7]
+
+**Future Work**: Our aim is to integrate social features into this app, provide leaderboards, share healthy food items a user recommends to his/her followers. We will include some data insights on user’s food consumption and give him/her suggestions on what to consume to achieve his goal, provide visualizations, build a streak for providing an incentive to the user for eating healthy. We have already built our core API so porting this app to other platforms like iOS, web won’t be much difficult.
+
+You can see the demo video here:
+
+
+
+
+
+ [1]: http://www.hack-nsit.in/
+ [2]: https://twitter.com/rhnvrm
+ [3]: https://twitter.com/mrkaran_
+ [4]: https://twitter.com/mayank_saxena96
+ [5]: https://twitter.com/arpit_gogia
+ [6]: http://github.com/CapsLockHacks/
+ [7]: https://anypoint.mulesoft.com/apiplatform/rhnvrm/#/portals/organizations/ba699460-af7b-4192-b37f-7e7d635c9a8a/apis/62058/versions/64448
\ No newline at end of file
diff --git a/content/blog/2016-05-07-adding-support-for-vector-instructions-to-8051-architecture.md b/content/blog/2016-05-07-adding-support-for-vector-instructions-to-8051-architecture.md
new file mode 100644
index 0000000..b4c2f77
--- /dev/null
+++ b/content/blog/2016-05-07-adding-support-for-vector-instructions-to-8051-architecture.md
@@ -0,0 +1,15 @@
+---
+title: Adding Support for Vector Instructions to 8051 Architecture
+author: rhnvrm
+type: post
+date: 2016-05-07T00:00:48+00:00
+url: blog/2016/05/07/adding-support-for-vector-instructions-to-8051-architecture/
+categories:
+ - projects
+
+---
+This was a group project for the Computer Architecture course at SNU under Prof. Rajeev Kumar Singh. Our team wrote a theoretical paper in which the focus is on adding support for vector instructions to the Intel 8051 architecture. The proposed architecture has a new vector register bank and a unit to decode the vector addresses. The team was composed of Akhil Alluri, Dhiraj Balakrishnan, Manvendra Singh, Rohan Verma, and Pulkit Gairola. This project can be used to demonstrate how one can add specialized vectorisation capabilities to architectures found in microcontrollers.
+
+[View Fullscreen][1]
+
+ [1]: /wp-content/plugins/pdfjs-viewer-shortcode/pdfjs/web/viewer.php?file=/wp-content/uploads/2016/12/8051_Vectorization.pdf&download=true&print=true&openfile=false
\ No newline at end of file
diff --git a/content/blog/2016-05-10-participating-in-google-summer-of-code-2016.md b/content/blog/2016-05-10-participating-in-google-summer-of-code-2016.md
new file mode 100644
index 0000000..dfc3202
--- /dev/null
+++ b/content/blog/2016-05-10-participating-in-google-summer-of-code-2016.md
@@ -0,0 +1,34 @@
+---
+title: Participating in Google Summer of Code 2016
+author: rhnvrm
+type: post
+date: 2016-05-10T00:00:00+00:00
+url: blog/2016/05/10/participating-in-google-summer-of-code-2016/
+categories:
+ - gsoc
+ - projects
+
+---
+This summer I will be working on an open source project called [Apache
+
+Allura][1]. This software powers [SourceForge.net][2]
+
+and is developed
+
+under the [Apache Software Foundation][3]. My mentors are
+
+[Dave Brondsema][4]
+
+and [Heith Seewald][5] who have been guiding me along the way during the application
+
+period and the community bonding period and I hope to have an amazing summer working
+
+with them.
+
+I will keep updating my progress on this blog so stay tuned!
+
+ [1]: https://allura.apache.org/
+ [2]: http://sourceforge.net
+ [3]: https://www.apache.org/
+ [4]: http://brondsema.net
+ [5]: https://twitter.com/heiths
\ No newline at end of file
diff --git a/content/blog/2016-05-20-building-planet-gsoc.md b/content/blog/2016-05-20-building-planet-gsoc.md
new file mode 100644
index 0000000..928e492
--- /dev/null
+++ b/content/blog/2016-05-20-building-planet-gsoc.md
@@ -0,0 +1,48 @@
+---
+title: Building Planet GSoC
+author: rhnvrm
+type: post
+date: 2016-05-20T00:00:00+00:00
+url: blog/2016/05/20/building-planet-gsoc/
+categories:
+ - gsoc
+ - projects
+
+---
+There were many emails in the GSoC mailing list regarding ‘sharing’ blogs
+
+with the GSoC community. Many GSoC students keep blogs to track their
+
+progress. It becomes really tough to track hundreds of blogs so I thought
+
+of starting a blog aggregator.
+
+Most of the solutions that had been developed until now required setting up a server
+
+that would generate a static file of all the blogs. But I wanted a solution
+
+that was easy to set up and could be deployed by anyone by clicking a single button on github.
+
+The motivation for this was my conversation with James Lopeman (meflin) on irc who
+
+is an org-admin at the Python Software Foundation. Before
+
+that conversation, I had already set up a simple method using [river5][1]
+
+developed by
+
+[Dave Winer][2] but later I extended it to include a deploy on openshift button.
+
+Currently, around 48 blogs are indexed by [PlanetGSoC][3]. It
+
+can be forked by anyone to deploy their own planet on GitHub.io since it uses
+
+JSONP requests to fetch the JSON river from the server running on openshift.
+
+Feel free to fork the project or contribute! And if you have a blog related to GSoC be
+
+sure to send a pull request.
+
+ [1]: https://github.com/scripting/river5
+ [2]: https://github.com/scripting
+ [3]: http://planetGSoC.github.io
\ No newline at end of file
diff --git a/content/blog/2016-05-30-installing-apache-allura-on-digital-ocean.md b/content/blog/2016-05-30-installing-apache-allura-on-digital-ocean.md
new file mode 100644
index 0000000..651b0b1
--- /dev/null
+++ b/content/blog/2016-05-30-installing-apache-allura-on-digital-ocean.md
@@ -0,0 +1,46 @@
+---
+title: Installing Apache Allura on Digital Ocean
+author: rhnvrm
+type: post
+date: 2016-05-30T00:00:00+00:00
+url: blog/2016/05/30/installing-apache-allura-on-digital-ocean/
+categories:
+ - gsoc
+ - projects
+
+---
+Installing Apache Allura on your [Digital Ocean][1] droplet is now as easy as typing make install.
+
+[Apache Allura][2] is a Software Forge that powers [SourceForge.net][3]. Today,
+
+I created a Makefile that simplifies the process of setting up Allura on a Digital Ocean droplet. The source code is hosted
+
+on
+
+and on [github][4].
+
+Here are the steps to get started with deploying your own instance of Apache Allura.
+
+ 1. Set up your [digital ocean][1] account and spin up a new Ubuntu 14.04 droplet.
+ 2. SSH into your droplet’s root ssh root@<DO_id> and
+
+ clone the repository using git clone https://rhnvrm@forge-allura.apache.org/git/u/rhnvrm/allura-install
+ 3. Change your working directory into the cloned repository. cd allura-install
+ 4. Install git and make using apt-get install git make
+ 5. Run make install
+
+If you face an error during a make step, report it to the issue tracker on [github][5].
+
+If it is an error that you can fix or due to some network errors, you can run the next step listed in the make file.
+
+Suppose, you faced an error during the npm install inside the initialize-allura-taskd, you can run make initialize-allura-taskd again and
+
+then run each next step in a simlar fashion (such as initialize-allura-data)
+
+Finally, run make start (only required if make failed during a certain step)
+
+ [1]: http://digitalocean.com
+ [2]: http://allura.apache.org
+ [3]: http://sourceforge.net
+ [4]: http://github.com/rhnvrm/allura-install
+ [5]: http://github.com/rhnvrm/allura-install/issues
\ No newline at end of file
diff --git a/content/blog/2016-06-20-vim-as-your-daily-log-notebook.md b/content/blog/2016-06-20-vim-as-your-daily-log-notebook.md
new file mode 100644
index 0000000..f5947db
--- /dev/null
+++ b/content/blog/2016-06-20-vim-as-your-daily-log-notebook.md
@@ -0,0 +1,26 @@
+---
+title: Vim as your daily log notebook
+author: rhnvrm
+type: post
+date: 2016-06-20T00:00:00+00:00
+url: blog/2016/06/20/vim-as-your-daily-log-notebook/
+categories:
+ - uncategorized
+
+---
+There are probably hundreds of methods and software that have been written that can help you maintain a notebook that contains your daily logs and notes.
+
+I have tried tens of methods and software and after a few days they just feel like bloat or take up too much time to maintain regularly.
+
+So, I decided to break down my own problem and found a simplisitic method/solution that suits me. My need was to write two logs, one life log and one dev log which was distraction free and would not take more than a second to get started with.
+
+I finally ended up with editing my zshrc and vimrc. Now, I just end up doing the following every morning:
+
+ 1. Open the terminal (ctrl + t)
+ 2. type today [This opens a split window having my life log and dev log side by side]
+ 3. type nlog<space> to start a new log entry.
+
+You can look at my commits [here][1] and [here][2] to see how I have done it and modify it for yourself.
+
+ [1]: https://github.com/rhnvrm/dotfiles/commit/04a61fdb0a671e6de64f37730845b85fa7bf6109
+ [2]: https://github.com/rhnvrm/dotfiles/commit/81ebfa3f804032c8386d741232daa9744c54429c
\ No newline at end of file
diff --git a/content/blog/2016-08-04-to-draft-or-not-to-draft.md b/content/blog/2016-08-04-to-draft-or-not-to-draft.md
new file mode 100644
index 0000000..8076b77
--- /dev/null
+++ b/content/blog/2016-08-04-to-draft-or-not-to-draft.md
@@ -0,0 +1,13 @@
+---
+title: To Draft or not to Draft
+author: rhnvrm
+type: post
+date: 2016-08-04T00:00:00+00:00
+url: blog/2016/08/04/to-draft-or-not-to-draft/
+categories:
+ - uncategorized
+
+---
+I just realized that I have way more drafts pending in my blog than the actual posts that are published here. Maybe, it is because I am afraid of being incorrect. Well, today I have decided that I will not worry about being correct and will post rather than draft. The motivation to publish a pending draft drops exponentially for me with time. So, if any of my readers find any mistake in my posts; please notify me so that I can correct it for my and my reader’s sake.
+
+_Update_: The irony here is that I had left this post as a draft. Posting it here as a cruel joke on myself.
\ No newline at end of file
diff --git a/content/blog/2016-08-05-what-is-apache-allura-and-why-is-it-relevant-to-developers.md b/content/blog/2016-08-05-what-is-apache-allura-and-why-is-it-relevant-to-developers.md
new file mode 100644
index 0000000..b449c01
--- /dev/null
+++ b/content/blog/2016-08-05-what-is-apache-allura-and-why-is-it-relevant-to-developers.md
@@ -0,0 +1,62 @@
+---
+title: What is Apache Allura and why is it relevant to developers?
+author: rhnvrm
+type: post
+date: 2016-08-05T00:00:00+00:00
+url: blog/2016/08/05/what-is-apache-allura-and-why-is-it-relevant-to-developers/
+categories:
+ - gsoc
+
+---
+Apache Allura is a Top-Level Project under the Apache Software Foundation since April of 2014.
+
+It powers SourceForge, Open Source Projects Europe, DLR German Aerospace Center and DARPA’s VehicleForge.
+
+The most interesting features that distinguish Apache Allura from currently trending Forge Software like GitHub, GitLab and
+
+the Atlassian Toolkit are
+
+it’s modularity and use of well-known python technologies. It is one of the easiest to set up for personal or professional use
+
+and even for use by big organisations. It reaches millions of users and developers throught the ~500,000 projects hosted
+
+on SourceForge.
+
+With having minimal steps in setting up your own instance of Apache Allura on a DigitalOcean droplet, a RaspberryPi, or simply
+
+using SourceForge.net it is
+
+one of the most valueable products that you can deploy for your team for collaborating on code,
+
+documentation, research, or even blogging, chatting, discussing or even maintaining your personal Wiki. It is very convenient for new
+
+users to setup in terms of usablity by using the defaults and also provides enough tools, settings, access control and ways to modify your Forge
+
+for powerusers.
+
+This week, I will be posting a series of posts about Allura. So stay tuned!
+
+Further Reading:
+
+ * [An Open Forge][1]
+ * [The Apache Software Foundation Announces Apache™ Allura™ as a Top-Level Project][2]
+ * [Open Hub][3]
+ * [About SourceForge][4]
+ * [About DARPA VehicleForge][5]
+ * [SourceForge announces Apache Allura][6]
+ * [Apache Allura Wiki – Features][7]
+ * [Apache Allura Wiki – Feature Comparison][8]
+ * [Source Code][9]
+ * Also hosted as a mirror on Github: [![GitHub Stars][10]][11]
+
+ [1]: https://sourceforge.net/url: blog/an-open-forge/
+ [2]: https://blogs.apache.org/foundation/entry/the_apache_software_foundation_announces52
+ [3]: https://www.openhub.net/p/allura
+ [4]: https://sourceforge.net/about
+ [5]: http://cps-vo.org/group/avm/vehicleforge
+ [6]: https://sourceforge.net/url: blog/apache-allura-becomes-top-level-project/
+ [7]: https://forge-allura.apache.org/p/allura/wiki/Features/
+ [8]: https://forge-allura.apache.org/p/allura/wiki/Feature%20Comparison/
+ [9]: https://forge-allura.apache.org/p/allura/git/ci/master/tree/
+ [10]: https://img.shields.io/github/stars/apache/allura.svg
+ [11]: https://github.com/apache/allura/stargazers
\ No newline at end of file
diff --git a/content/blog/2016-08-06-topological-sort-for-problems-using-dag.md b/content/blog/2016-08-06-topological-sort-for-problems-using-dag.md
new file mode 100644
index 0000000..aac14df
--- /dev/null
+++ b/content/blog/2016-08-06-topological-sort-for-problems-using-dag.md
@@ -0,0 +1,111 @@
+---
+title: Topological Sort for problems using DAG
+author: rhnvrm
+type: post
+date: 2016-08-06T00:00:00+00:00
+url: blog/2016/08/06/topological-sort-for-problems-using-dag/
+categories:
+ - uncategorized
+
+---
+Given a DAG (Directed Acyclic Graph), in which we know the adjacencies represent the order in which to perform a task, and the
+
+vertices are tasks, we want to place the vertices in a sequence. We must find a sequence that must satisfy
+
+all dependencies of pre-requisites. This sequential arrangement of the vertices is called the topological sort of the DAG.
+
+The first examples that come in my mind are of pre-requisite chains in courses offered at universities. Suppose, you were
+
+given a challenge to plot a roadmap for everyone in your university about how they can complete their major and/or minor given
+
+the courses they have already completed. Another one to which I was exposed recently was of finding out the complete sequence
+
+of events that took place if only given a partial sequence and also to detect if the given information was accurate or not.
+
+Accuracy of the given information can be detected by checking if at any point in the algorithm we detect a cycle. Since,
+
+such problems are being expressed through DAGs, if there exists any cycle in the graph, it can be concluded that the graph will
+
+not have a topological sort. The proof for this can be found [here][1]
+
+Suppose we have the following graphs:
+
+
+
+Here, you can notice how graph1 has a toposort but for graph2, it does not exist. This is because of the fact there
+
+exists a cycle in the graph. We can also understand it using the proof of the statment I had mentioned above. “Topological
+
+sort exists only for a DAG” and since graph2 is not a DAG (since, it is cyclic) it must not have a toposort.
+
+We can find the toposort using a modified dfs algorithm or kahn’s algorithm.
+
+[Kahn’s algorithm][2] is discussed in the link and depends and utilizes
+
+on calculating the indegree of all the vertices and using Queue (although it can also be written using an array).
+
+Here is my implementation using Modified DFS and an array as a (kind-of) stack:
+
+
+
+The function dfs_toposort returns an empty array if there exists a cycle in the graph.
+
+Also, it is important to note here that the topological sort need not be unique. (Hence, for competitive programming
+
+problems it might be easier to find problems that involve checking if a given graph is a DAG or not; or if a sequence
+
+satisfying the pre-req chain exists or not by detecting cycles). This is quite evident once you realize that there might
+
+be many 0-in-degree vertices that can lead the toposort result.
+
+You can also see [Erik Demaine’s][3] lecture on this topic given for MIT 6.006
+
+ [1]: https://ece.uwaterloo.ca/~cmoreno/ece250/2012-03-16--topological-sort.pdf
+ [2]: http://www.geeksforgeeks.org/topological-sorting-indegree-based-solution/
+ [3]: https://www.youtube.com/watch?v=AfSk24UTFS8
\ No newline at end of file
diff --git a/content/blog/2016-08-07-share-wifi-via-ethernet-on-gnome-3-20.md b/content/blog/2016-08-07-share-wifi-via-ethernet-on-gnome-3-20.md
new file mode 100644
index 0000000..d314c67
--- /dev/null
+++ b/content/blog/2016-08-07-share-wifi-via-ethernet-on-gnome-3-20.md
@@ -0,0 +1,25 @@
+---
+title: Share WiFi via Ethernet on Gnome 3.20
+author: rhnvrm
+type: post
+date: 2016-08-07T00:00:00+00:00
+url: blog/2016/08/07/share-wifi-via-ethernet-on-gnome-3-20/
+categories:
+ - foss
+ - notes
+tags:
+ - fedora
+ - gnome
+ - linux
+
+---
+There is a hidden method to share your WiFi over Ethernet in the latest Gnome. I stumbled upon this while trying to connect
+
+my RaspberryPi 3B with my University’s Internet.
+
+ 1. Type nm-connection-editor in your terminal.
+ 2. Add a shared network connection by pressing the Add button.
+ 3. Choose Ethernet from the list and press Create.
+ 4. Click IPv4 Settings in the left.
+ 5. Choose Shared to other computers by clicking the Method drop-down menu.
+ 6. Enter a new name like Shared WiFi LAN as the Connection name at the top
\ No newline at end of file
diff --git a/content/blog/2016-08-09-apache-allura-gsoc-2016-summary.md b/content/blog/2016-08-09-apache-allura-gsoc-2016-summary.md
new file mode 100644
index 0000000..b08e080
--- /dev/null
+++ b/content/blog/2016-08-09-apache-allura-gsoc-2016-summary.md
@@ -0,0 +1,171 @@
+---
+title: Apache Allura – GSoC 2016 Summary
+author: rhnvrm
+type: post
+date: 2016-08-09T00:00:00+00:00
+url: blog/2016/08/09/apache-allura-gsoc-2016-summary/
+categories:
+ - gsoc
+ - projects
+
+---
+This post has the summary of my work during GSoC 2016. Hopefully I was able to cover everything. You can also see my work on [forge-allura][1]. Also, you can visually see a list of my commits made during GSoC that also contains the miscellaneous work [here][2].
+
+### Discussion Tool Changes {#discussion-tool-changes}
+
+The idea behind this change was to promote discussions on the platform. Most conversations on the web are now displayed in a similar format. The replies to a comment are also now anchored to the left, i.e. don’t become shorter in length and are only shifted towards the left along with a smaller avatar. We have also moved away from shadows under the avatars since they do not match with the current design scheme.
+
+The design enhances the username and avatar of the user to make it easier to recognize who has authored the comment. Also, the buttons used to interact in the discussion are now displayed on the upper right side. Also, there is now a unified design theme for all buttons including the moderation buttons. These set of buttons can easily be extendened in the future as well. This also makes more space available for the content. Images now do not overflow outside these bubbles and fit inside the bubbles.
+
+![Design Example of Discussion][3]
+
+Another prominent change is how we now display attachments. There is now a dedicated download and delete button for all attachments and an icon beside the file name displaying the type of attachment.
+
+Support for viewing the photo attachments has also been added by clicking on the image thumbnail inside the attachment box.
+
+![Preview Images][4]
+
+There has also been a change in how we display meta posts which share information rather than conversational text that is generated by the interaction of the user with the tools. These are not highlighted and uses smaller fonts so it is easier for the eyes to find real content and also distinguish between meta information and the same.
+
+![Meta Posts][5]
+
+You can also use Unicode Emoji’s within the discussion tool and they will be rendered as Twitter Style Emoji. This is very useful since we now have support for displaying the emoji even if the user don’t have the proper font’s to render them in his browser.
+
+![Imgur][6]
+
+Emoji Support enables users to use their devices emoji input keyboards and enter data. Also, now teams can use a simple Thumbs Up emoji instead of writing words to express themselves.
+
+You can view the results live on [SourceForge][7] as well.
+
+### Improved Landing Page {#improved-landing-page}
+
+![Imgur][8]
+
+We now have a better landing page. A landing page is forms the first impression for the tool. Although, if you are probably using SourceForge, your landing page might be the Project Catalog.
+
+Now we list all the neighborhoods in a block showing it’s logo along with the name and number of projects it contains.
+
+It makes it easier to digest the concept of neighborhoods for users who are used to something similar to Github or GitLab.
+
+### Minor Improvements in Ticket Listing and Search {#minor-improvements-in-ticket-listing-and-search}
+
+Now you can resize the length of the columns in the ticket listing.
+
+![Resize][9]
+
+Also you can now click on the username in the Owner column to view all tickets that have been assigned to that user directly from the ticket listing.
+
+### Merge Request Flow Improvements {#merge-request-flow-improvements}
+
+Now we show a link to Merge Requests listing in the side panel in all tools that support them even if none have been created.
+
+![List if zero][10]
+
+Also the filtering of merge requests have changed a bit. Now we have a new set of filter buttons that we use to filter the merge requests that are either open, rejected, merged.
+
+![Filter MRs][11]
+
+Also, there are now dedicated buttons matching the Forge theme that you can use to manage your merge requests. We now have an array of buttons and a text message that displays the status of the merge conflicts and if a one click merge is possible if you have access to that information. Users with correct priveleges can also click on the Reject button to reject and close the MR in two clicks including a confirmation dialog.
+
+Also, you can now Refresh the commits without having to manually edit the merge request, saving 4-5 clicks using the Refresh Commits button.
+
+![Imgur][12]
+
+### What could not be completed or was not done {#what-could-not-be-completed-or-was-not-done}
+
+#### Implement async loading of comments and allow them to be paginated. {#implement-async-loading-of-comments-and-allow-them-to-be-paginated}
+
+This was not implemented since there would be a loss in the traffic for the discussions. This would have a huge impact in search rankings for comments since crawlers don’t index async loaded comments and searching for problems on the internet is a very important way to reach this content. Suppose you have a problem you have faced with TexStudio software and search about it on a search engine and someone else has also reported a problem on it’s bug tracker then if it is not indexed in the search engine we will not be able to find it on the search results.
+
+#### Make Allura Responsive {#make-allura-responsive}
+
+This is something which I worked on for atleast 2 weeks and trying to find the most optimal solution. Even before starting there was some doubt about the feasability. But my final decision was that it is not feasible to do. This was due to the fact that there is no way to move to a fully functional mobile experience without altering the current structure of the project. The best way forward would be to move to bootstrap or some similar project. Also, this way we would be able to have a good enough way to move forward with the project.
+
+The first major problem I faced was keeping intact the design so that it does not break SourceForge.
+
+My first approach was to change the current method of using viewport based widths instead of fixed pixel widths.
+
+My next approach was to add media queries and then change the pixel values accordingly.
+
+Next I tried to use the method suggested by mentor to detect if we have a mobile browser and display a different template. This works, but is of no use if all the templates are not modified. So for testing I edited the width of the holders to the viewport size but then I realized if the inside is not also properly updated it would be of no use. Also all tests relating to that component would fail.
+
+So I moved on to work on other parts of the project.
+
+#### Extend the models in the threads to allow voting(express +1, LGTM etc.) on individual comments. {#extend-the-models-in-the-threads-to-allow-votingexpress-1-lgtm-etc-on-individual-comments}
+
+There were two ways I tried to implement this.
+
+First was to add a thumbs up button on the menu of the discussion bubble along side reply.
+
+![Imgur][6]
+
+Clicking that button adds a meta post as a reply to the post. But it looks ugly and does not seem useful.
+
+![Plus 1][13]
+
+The other method was to try to make the artifact votable but here the problem was that I could not get it to work as per my thought of how it should look and work. In this way I wanted a menu on the bottom.
+
+The code for all of these unimplemented work is available on my forked repo on forge-allura [here][14]. You can find all the branches with the unimplemented work mentioned here as well as other experiments. (My Branches begin with feature or rhnvrm/)
+
+### Other Cool Stuff I did related to Allura {#other-cool-stuff-i-did-related-to-allura}
+
+#### Makefile to install Allura with one command {#makefile-to-install-allura-with-one-command}
+
+You can now install Allura very easily if you don’t have docker or are not able to use it due to some reason
+
+
+
+ 1. Set up your [digital ocean][15] account and spin up a new Ubuntu 14.04 droplet.
+ 2. SSH into your droplet’s root ssh root@<DO_id> and
+
+ clone the repository using git clone https://rhnvrm@forge-allura.apache.org/git/u/rhnvrm/allura-install
+ 3. Change your working directory into the cloned repository. cd allura-install
+ 4. Install git and make using apt-get install git make
+ 5. Run make install
+
+#### Installed Allura on a RaspberryPi B {#installed-allura-on-a-raspberrypi-b}
+
+To show how it can even be run on a low powered device I installed Allura for me and my friends on a RPi 3B model.
+
+There were various problems that I faced during installation due to it being an ARM based device. I first tried to install using docker since it was easier but after installing docker and docker-compose from hyperiot I soon realized that it was not possible as it is ARM based and we don’t provide docker support for that.
+
+Here the makefile was very useful. Although I did not use it directly but I atleast had an idea how to install Allura step by step instead of having to re read the manual again and again.
+
+![Imgur][16]
+
+#### Deployed Allura for my University {#deployed-allura-for-my-university}
+
+Using the Raspberry Pi I am planning to deploy it for my university for using it for our Coding Club and also for internal usage. I have emailed my department and am hoping for a positive response.
+
+#### Setup and hosted a small Allura Instance for testing on Digital Ocean {#setup-and-hosted-a-small-allura-instance-for-testing-on-digital-ocean}
+
+During GSoC I ran Allura on a droplet for testing since my old laptop was having some issues with it’s graphics card. I was able to use a netbook and vim to test my changes on the droplet until I got my new laptop.
+
+### ShoutOut to tools that I used during GSoC {#shoutout-to-tools-that-i-used-during-gsoc}
+
+ 1. ZimWiki
+ 2. PyCharm
+ 3. Vim
+ 4. Digital Ocean
+ 5. Docker
+ 6. Pomodoro Timer App for Gnome
+ 7. Postman
+ 8. HexChat
+ 9. Imgur for hosting the image album ()
+
+ [1]: https://forge-allura.apache.org/p/allura/git
+ [2]: https://github.com/apache/allura/commits/f403b8c4e44f2065e4d4529050d499252e914f25?author=rhnvrm
+ [3]: https://i.imgur.com/4gmxwcL.png
+ [4]: https://i.imgur.com/Qw2g7at.png
+ [5]: https://i.imgur.com/Ch77UNq.png
+ [6]: https://i.imgur.com/LoTab39.png
+ [7]: https://sourceforge.net/p/texstudio/bugs/1872/
+ [8]: https://i.imgur.com/kvul0nB.png
+ [9]: https://i.imgur.com/iC3fGex.gif
+ [10]: https://i.imgur.com/tfTkcjR.png
+ [11]: https://i.imgur.com/izu38m5.png
+ [12]: https://i.imgur.com/rkjlglc.png
+ [13]: https://i.imgur.com/GycKCDW.png
+ [14]: https://forge-allura.apache.org/u/rhnvrm/allura/ref/master/branches/
+ [15]: http://digitalocean.com
+ [16]: https://i.imgur.com/2VdVmnN.jpg
\ No newline at end of file
diff --git a/content/blog/2016-10-20-hello-wordpress.md b/content/blog/2016-10-20-hello-wordpress.md
new file mode 100644
index 0000000..e019ba7
--- /dev/null
+++ b/content/blog/2016-10-20-hello-wordpress.md
@@ -0,0 +1,13 @@
+---
+title: Hello WordPress
+author: rhnvrm
+type: post
+date: 2016-10-20T19:09:37+00:00
+url: blog/2016/10/20/hello-wordpress/
+categories:
+ - uncategorized
+
+---
+I’m back to using WordPress from Jekyll. I followed David Lynch’s blog post to import my posts from the jekyll blog hosted on github.io
+
+Although, I did not use the plugins made by him, they might be useful if you had a lot of Disqus comments in your blog.
\ No newline at end of file
diff --git a/content/blog/2016-10-22-labeled-tweet-generator-and-galaxy-image-classifier-featured-in-sirajologys-youtube-videos.md b/content/blog/2016-10-22-labeled-tweet-generator-and-galaxy-image-classifier-featured-in-sirajologys-youtube-videos.md
new file mode 100644
index 0000000..57c6cc1
--- /dev/null
+++ b/content/blog/2016-10-22-labeled-tweet-generator-and-galaxy-image-classifier-featured-in-sirajologys-youtube-videos.md
@@ -0,0 +1,35 @@
+---
+title: Labeled Tweet Generator and Galaxy Image Classifier featured in Sirajology’s Youtube Videos
+author: rhnvrm
+type: post
+date: 2016-10-22T18:57:59+00:00
+url: blog/2016/10/22/labeled-tweet-generator-and-galaxy-image-classifier-featured-in-sirajologys-youtube-videos/
+categories:
+ - projects
+
+---
+I have been learning about machine learning and data science recently. Coincidentally, I found this cool Youtube channel called Sirajology and I must recommend it to any one who has also just begun his journey on this path like me. Each video has a challenge attached with it in the end. I participated in two of them by submitting my projects based on the specifications of the challenge and they were featured on the channel.
+
+Siraj classified me as “Badass of the Week” in these videos.
+
+The first project I made was a Galaxy Image Classifier (), which I trained using a dataset I created myself. I believe the results could have been better if I had used better images.
+
+It was based on this video:
+
+
+
+And it was featured in the next video in the series:
+
+
+
+The second project was a Labeled Tweet Dataset Generator (). Using this project, a datascientist can open and type his query in the searchbox and look at the results and if he is happy with them he can click the download as csv button to save them and work on it.
+
+It was based on this video:
+
+
+
+and was featured in this one:
+
+
+
+
\ No newline at end of file
diff --git a/content/blog/2016-10-31-just-installed-a-new-theme-for-the-blog.md b/content/blog/2016-10-31-just-installed-a-new-theme-for-the-blog.md
new file mode 100644
index 0000000..6575f9f
--- /dev/null
+++ b/content/blog/2016-10-31-just-installed-a-new-theme-for-the-blog.md
@@ -0,0 +1,17 @@
+---
+title: Just installed a new theme for the blog…
+author: rhnvrm
+type: post
+date: 2016-10-31T23:17:15+00:00
+url: blog/2016/10/31/just-installed-a-new-theme-for-the-blog/
+categories:
+ - uncategorized
+tags:
+ - ajax
+ - wordPress
+format: status
+
+---
+Just installed a new theme for the blog called P2. I’m using a child theme called Mercury. Also installed and played with a bunch of plugins. Want to try micro blogging and also live blogging during my coding sessions.
+
+Also, learnt that AJAX requests don’t seem to work behind proxies. P2 sends an initial Ajax request when you click on post from the front-end and it was failing, scourged the internet but couldn’t find a solution. So lesson learnt that you should always try a different device in such cases early on.
\ No newline at end of file
diff --git a/content/blog/2016-11-01-todays-git-tip-in-gitconfig-url-gitgithub.md b/content/blog/2016-11-01-todays-git-tip-in-gitconfig-url-gitgithub.md
new file mode 100644
index 0000000..3b37b2f
--- /dev/null
+++ b/content/blog/2016-11-01-todays-git-tip-in-gitconfig-url-gitgithub.md
@@ -0,0 +1,26 @@
+---
+title: 'Today’s git tip In gitconfig url git@github…'
+author: rhnvrm
+type: post
+date: 2016-11-01T09:45:37+00:00
+url: blog/2016/11/01/todays-git-tip-in-gitconfig-url-gitgithub/
+categories:
+ - uncategorized
+tags:
+ - git
+format: quote
+
+---
+Today’s git tip
+
+In .gitconfig:
+
+[url “git@github.com:”]
+
+insteadOf = gh:
+
+Now you can do, eg:
+
+$ git clone gh:kisielk/errcheck
+
+https://twitter.com/kisielk/status/793133952542191616
\ No newline at end of file
diff --git a/content/blog/2016-11-02-i-wonder-what-linus-torvalds-view-is-about.md b/content/blog/2016-11-02-i-wonder-what-linus-torvalds-view-is-about.md
new file mode 100644
index 0000000..0995372
--- /dev/null
+++ b/content/blog/2016-11-02-i-wonder-what-linus-torvalds-view-is-about.md
@@ -0,0 +1,16 @@
+---
+title: I wonder what Linus Torvald’s view is about…
+author: rhnvrm
+type: post
+date: 2016-11-02T16:44:09+00:00
+url: blog/2016/11/02/i-wonder-what-linus-torvalds-view-is-about/
+categories:
+ - uncategorized
+tags:
+ - git
+format: link
+
+---
+I wonder what Linus Torvald’s view is about “Gitless”
+
+https://news.mit.edu/2016/gitless-making-it-easier-to-collaborate-on-code-1025
\ No newline at end of file
diff --git a/content/blog/2016-11-07-a-tip-on-using-fsck-when-you-are.md b/content/blog/2016-11-07-a-tip-on-using-fsck-when-you-are.md
new file mode 100644
index 0000000..e285f07
--- /dev/null
+++ b/content/blog/2016-11-07-a-tip-on-using-fsck-when-you-are.md
@@ -0,0 +1,14 @@
+---
+title: A tip on using fsck when you are…
+author: rhnvrm
+type: post
+date: 2016-11-07T22:24:09+00:00
+url: blog/2016/11/07/a-tip-on-using-fsck-when-you-are/
+categories:
+ - uncategorized
+tags:
+ - linux
+format: status
+
+---
+A tip on using fsck when you are stuck in emergency mode. Whenever you are using \`fsck -y\` and it does not allow you to run because a certain device (say /dev/sdaX) is mounted, it does not mean you can’t run \`fsck -y /dev/sdaY\`. That is you don’t unmount that device.
\ No newline at end of file
diff --git a/content/blog/2016-11-08-feeling-excited-about-attending-apachecon-big-data-and.md b/content/blog/2016-11-08-feeling-excited-about-attending-apachecon-big-data-and.md
new file mode 100644
index 0000000..6dd0ddf
--- /dev/null
+++ b/content/blog/2016-11-08-feeling-excited-about-attending-apachecon-big-data-and.md
@@ -0,0 +1,15 @@
+---
+title: Feeling excited about attending ApacheCon Big Data and…
+author: rhnvrm
+type: post
+date: 2016-11-08T17:41:10+00:00
+url: blog/2016/11/08/feeling-excited-about-attending-apachecon-big-data-and/
+categories:
+ - uncategorized
+tags:
+ - aceu16
+ - allura
+format: status
+
+---
+I’m excited about attending ApacheCon Big Data and ApacheCon 16 at Seville, Spain. Only a few days are left. Talked with my mentor at Apache Allura, @brondsem today about his experiences at ApacheCon NA Denver 14 and what all I could do at ACEU 16. We’re hoping for improving the exposure of Apache Allura within the Apache community and trying to get some projects in the incubator to try Allura. I’ll try to present a lightning talk and host a demo session for Allura at the conference. Also, my work on the importer begins again tomorrow and hopefully it will be done before reaching Spain. Will share updates on this blog.
\ No newline at end of file
diff --git a/content/blog/2016-11-09-some-journal-publications-require-you-to-put-author.md b/content/blog/2016-11-09-some-journal-publications-require-you-to-put-author.md
new file mode 100644
index 0000000..1ea056c
--- /dev/null
+++ b/content/blog/2016-11-09-some-journal-publications-require-you-to-put-author.md
@@ -0,0 +1,28 @@
+---
+title: Some journal publications require you to put author…
+author: rhnvrm
+type: post
+date: 2016-11-09T16:59:35+00:00
+url: blog/2016/11/09/some-journal-publications-require-you-to-put-author/
+categories:
+ - uncategorized
+tags:
+ - latex
+format: status
+
+---
+Some journal publications require you to put author biography for each author with their pictures. For this I found the _picins _package. To install this package you can run the following commands
+
+
+ So, then you can use the following latex code for biography of an author:
+
+
+
\parpic{\includegraphics[width=1in,clip,keepaspectratio]{figures/photo.eps}}
+\noindent {\bf Lorem Ipsum} dolor sit amet, consectetur adipiscing elit. Vivamus at nulla velit. Aliquam neque purus, porta sit amet sodales non, scelerisque eu nibh. Nulla posuere accumsan dui nec dictum. Aliquam erat volutpat. Aliquam erat volutpat. In tristique, dolor et dignissim eleifend, diam eros sollicitudin odio, at consequat sapien odio nec velit. Aenean vel mi lacinia, viverra lorem et, venenatis velit. Duis fringilla purus nec tortor efficitur vestibulum. Donec vitae viverra diam, scelerisque bibendum magna. Nunc fringilla lobortis pharetra. Sed rhoncus arcu eget porta euismod. Vestibulum scelerisque, enim id condimentum sagittis, magna enim faucibus tortor, non volutpat tortor ipsum nec augue. Duis faucibus molestie dui, gravida vehicula ante porttitor et. Integer hendrerit ligula id magna ornare vestibulum.
+
\ No newline at end of file
diff --git a/content/blog/2016-11-12-reached-the-melia-sevilla-spain-tonight-pretty-excited.md b/content/blog/2016-11-12-reached-the-melia-sevilla-spain-tonight-pretty-excited.md
new file mode 100644
index 0000000..27f2ac8
--- /dev/null
+++ b/content/blog/2016-11-12-reached-the-melia-sevilla-spain-tonight-pretty-excited.md
@@ -0,0 +1,18 @@
+---
+title: Reached the Melia Sevilla Spain tonight Pretty excited…
+author: rhnvrm
+type: post
+date: 2016-11-12T21:42:21+00:00
+url: blog/2016/11/12/reached-the-melia-sevilla-spain-tonight-pretty-excited/
+categories:
+ - uncategorized
+tags:
+ - aceu16
+format: status
+
+---
+Reached the Melia Sevilla, Spain tonight. Pretty excited about ApacheCon. Am planning on finalizing the presentations about Allura by tomorrow night and discuss them with @brondsem on Monday.
+
+It was a long trip to Sevilla via Madrid and London with @gauravsaini03, he will be speaking about Apache OFBiz which is a complete enterprise solution.
+
+Met Dr Paul King(@paulk_asert), who is working on Apache Groovy and has worked on the “Groovy in Action” book by Manning publications. He has 3 back to back talks lined up at ApacheCon on Thursday about Groovy.
\ No newline at end of file
diff --git a/content/blog/2016-11-13-toured-seville-today-thanks-to-https-www-feelthecitytours.md b/content/blog/2016-11-13-toured-seville-today-thanks-to-https-www-feelthecitytours.md
new file mode 100644
index 0000000..1668494
--- /dev/null
+++ b/content/blog/2016-11-13-toured-seville-today-thanks-to-https-www-feelthecitytours.md
@@ -0,0 +1,18 @@
+---
+title: Toured Seville today thanks to https www feelthecitytours…
+author: rhnvrm
+type: post
+date: 2016-11-13T22:12:21+00:00
+url: blog/2016/11/13/toured-seville-today-thanks-to-https-www-feelthecitytours/
+categories:
+ - uncategorized
+tags:
+ - aceu16
+format: status
+
+---
+Toured Seville today thanks to https://www.feelthecitytours.com/en/tours/sevilla/ . They are an amazing company with a great tour of this beautiful city. Got to learn a lot about the city along with a bunch of great stories about the city. One of them was the story of Carmen (http://www.geocities.jp/wakaru_opera/englishcarmen.html) which is a pretty nice story.
+
+The TAC meeting was pretty nice and was followed by the TAC team dinner at a Tapas restaurant.
+
+Excited about the first day tomorrow.
\ No newline at end of file
diff --git a/content/blog/2016-11-14-day-1-apachecon-big-data-seville-2016.md b/content/blog/2016-11-14-day-1-apachecon-big-data-seville-2016.md
new file mode 100644
index 0000000..4193fea
--- /dev/null
+++ b/content/blog/2016-11-14-day-1-apachecon-big-data-seville-2016.md
@@ -0,0 +1,96 @@
+---
+title: Day 1 – ApacheCon Big Data, Seville 2016
+author: rhnvrm
+type: post
+date: 2016-11-14T21:59:52+00:00
+url: blog/2016/11/14/day-1-apachecon-big-data-seville-2016/
+categories:
+ - apache
+tags:
+ - aceu16
+
+---
+It was fun to volunteer for today’s sessions at Apache Big Data 2016. My responsibilites included helping the speakers setup their laptops and introduce them to the audience, keep time and remind them when time was running short, and finally helping out with the Q&A at the end. I also liveblogged the sessions via twitter and interacted with the speakers as most of the sessions were of my choice as the volunteer team had a shared spreadsheet on which we could choose our sessions in a first come first serve manner.
+
+The day began with the Keynote sessions at 9:30. Rich Bowen started the conference with his opening remarks followed by Stephan Ewen and Alan Gates who gave their talks.
+
+New photo by Rohan Verma / Google Photos
+
+A small coffee break followed the keynote in which the TAC team met and all us of started to prepare for the breakout sessions that run in parallel in different conference rooms.
+
+The first session I attended was about Apache Gearpump. It’s an interesting project and is a realtime big data streaming engine.
+
+
+
+
+
+The second session was interesting and I got to learn a lot more about Apache Solr. I learnt about Faceting which was new to me and I feel would be very useful for projects that use Solr. Even Apache Allura might be able to use it somewhere, but for this I will have to think where it can be used.
+
+
+
+
+
+The next session was one which I was very interested in as I had worked on a similar project called [Blip][1]. I talked to the presenter, Thomas Burgess and told him about it as well. Their company, [indoo.rs][2] has works on the same thing of providing indoor positioning services. They have even deployed it in San Francisco Airport. Right now they are researching about the same and trying to find new ways using Big Data analytics to reduce the time it takes to deploy these solutions and wish to create ways to make the process automated. They are also looking into using some seed data points and then extrapolating them using crowdsourcing. Hopefully, I will try to get in touch with them and discuss the research that is going on at our University regarding the same.
+
+
+
+
+
+Next, was a talk by Tim Park from Microsoft. I did not anticipate that this would turn out to be one of my favorite talks of today’s sessions since I had not read much about what was going to be talked about in this talk. It turned out to be great for me as I got to learn a lot and was able to connect the dots.
+
+
+
+
+
+Since, the previous session ended a bit early, I was able to goto the central banquet area where I was able to socilize with a few Apache people like Jean-Frederic Clere and talked about the Bar Camp. Also, talked to some of the speakers and atendees that I had interacted with during the events.
+
+Afterwards, the last session I attended was about Druid and Apache Hive. It was also pretty good, but I did not have much knowledge about what was being covered. Although, looking at the demonstration I was able to figure out what had been discussed earlier and the benefits.
+
+
+
+
+
+Hoping for a great day again tomorrow.
+
+ [1]: https://github.com/rhnvrm/iot-hackerearth
+ [2]: http://indoo.rs/
\ No newline at end of file
diff --git a/content/blog/2016-11-15-day-2-apachecon-big-data-seville.md b/content/blog/2016-11-15-day-2-apachecon-big-data-seville.md
new file mode 100644
index 0000000..5a6abef
--- /dev/null
+++ b/content/blog/2016-11-15-day-2-apachecon-big-data-seville.md
@@ -0,0 +1,99 @@
+---
+title: Day 2 – ApacheCon Big Data, Seville
+author: rhnvrm
+type: post
+date: 2016-11-15T23:37:36+00:00
+url: blog/2016/11/15/day-2-apachecon-big-data-seville/
+categories:
+ - apache
+tags:
+ - aceu16
+
+---
+The second day of ApacheCon BigData was also successful and amazing. It was a long day that started with the Keynotes by Mayank Bansal from Uber who explained Uber’s big data stack and how they scaled up.
+
+The next keynote was by Sean Owen from Cloudera who explained how Apache is more than just another Github where people just dump their code. It’s a place for building the community. It was also nice to hear his shoutout to Apache Allura which he talked about to explain the diversity and the reach of the projects. He said how we usually just think of ASF as a place for the HTTPd and Big Data projects but it’s more than that and how there are projects as big as these projects like Apache Allura.
+
+
+
+
+
+Then, I attended the session on Distributed and Native Machine Learning using Apache Mahout by Suneel Marthi from Redhat. The talk was Math Intensive and demonstrated how easy it is for Data Scientists to forget about the implementation of the stack below and just write the code for their Data projects in their favorite language. He demonstrated how easy it is with Apache Mahout-Samsara to do distributed Linear Algebra with an example of the EigenFaces classification problem.
+
+
+
+
+
+Another interesting talk was given by Clemens Valiente from the Trivago Development team who explained his company’s big data stack and how they moved from simple Java platform to the Big Data stack that reduced their query time from 5 seconds to less than a second.
+
+
+
+
+
+Julien Herzen presented Meerkat, which is a system built at Swisscom to do real-time anomaly detection on time series. Meerkat uses a combination of machine learning and big data technologies in order to trigger alerts in case of problems in Swisscom network.
+
+
+
+
+
+
\ No newline at end of file
diff --git a/content/blog/2016-11-16-day-3-apachecon-barcamp-and-apachecon.md b/content/blog/2016-11-16-day-3-apachecon-barcamp-and-apachecon.md
new file mode 100644
index 0000000..3bf1f1e
--- /dev/null
+++ b/content/blog/2016-11-16-day-3-apachecon-barcamp-and-apachecon.md
@@ -0,0 +1,105 @@
+---
+title: Day 3 – ApacheCon Barcamp and ApacheCon
+author: rhnvrm
+type: post
+date: 2016-11-16T23:05:05+00:00
+url: blog/2016/11/16/day-3-apachecon-barcamp-and-apachecon/
+categories:
+ - apache
+tags:
+ - aceu16
+
+---
+The morning began with me waking up a little later. The previous night, we had the Attendee Reception. The BarCamp began around 10 AM. A barcamp is an ‘unconference’ with no set schedule, facilitated by those involved in various Apache projects. It was organized by Jean Fredric Clere and Sharon Foga.
+
+You can learn more about the BarCamp at:
+
+https://wiki.apache.org/apachecon/BarCampApacheSeville
+
+Since, most people don’t know what a barcamp is and might be confused I’d suggest reading up about it on https://en.wikipedia.org/wiki/BarCamp
+
+
+
+
+
+The discussions were were nice and insightful, from all the attendees. I gave a presentation on Apache Allura and also a demonstration on what all can be done using Allura.
+
+Afterwards, we had the sessions of ApacheCon. I attended Jim Jagielski’s talk on Inner Sourcing.
+
+
+
+
+
+Here are his slides. I would recommend them to anyone who is trying to build Open Communities.
+
+After a small break, it was time for the day’s keynotes and ApacheCon to officially begin. Rich Bowen gave the Opening Remarks and welcomed all the attendees and the speakers to the next set of days of ApacheCon. Jim Jagielski gave the State of the Feather speech. I was amazed to learn so much more about the Apache Software Foundation and it’s resolve to put Community First before Code.
+
+
+
+
+
+This was the same day as Microsoft joined the Linux Foundation as a Platinum member which was also an organizer for ApacheCon and ApacheCon BigData 2016.
+
+
+
+
+
+Then we had the Lightning Talks. They were amazing, one of the most memorable lightning talk was given by someone who had made a drinking game out of code reviews. Another memorable one was given by Shane Curcuru about how he got involved with Apache and how others should do the same.
+
+
+
+ Get involved with Apache – lighting talk by @shanecurcuru
+
+
+
+
+
\ No newline at end of file
diff --git a/content/blog/2016-11-17-day-4-apachecon-and-the-apache-way.md b/content/blog/2016-11-17-day-4-apachecon-and-the-apache-way.md
new file mode 100644
index 0000000..dda6c1c
--- /dev/null
+++ b/content/blog/2016-11-17-day-4-apachecon-and-the-apache-way.md
@@ -0,0 +1,103 @@
+---
+title: Day 4 – ApacheCon and The Apache Way
+author: rhnvrm
+type: post
+date: 2016-11-17T23:28:01+00:00
+url: blog/2016/11/17/day-4-apachecon-and-the-apache-way/
+categories:
+ - apache
+tags:
+ - aceu16
+
+---
+On day 4, I attended the Apache Way track as I felt that I should get to know more about the ASF and how Apache works. I got to learn a lot and feel that this has paved my way to further get involved with Apache projects. The first session was a panel discussion having panel members from the ASF. It was hosted by Nick Burch and the panelists were members of the ASF.
+
+
+
+
+
+> The “Apache Way” is the process by which Apache Software Foundation projects are managed. It has evolved over many years and has produced over 100 highly successful open source projects. It generally works well! But not always..
+>
+> In this session, we’ll follow on from the theory, and look more on the practice of how it works. We’ll look more at cases when it has worked well! And when it has had problems. We’ll see more of the boundaries, the things that can be changed, and those that are fixed firm rules. We’ll see how businesses can get involved, and where project independence means they need to step back. Licensing, Trademarks, Decisions, Marketing, Infrastructure and more.
+
+Then was the session by Wen Ming who talked about how they built a Tech Community in China using the Apache Way and discussed all the problems they faced while doing so. It was nice to hear how different places in the world face the problem of accepting that Open Source is as important as normal work. Most asian countries face this problem that employers expect their employees to work 24/7 on the work done at the company and work done beyond that is considered to be somewhat illegal.
+
+
+
+
+
+Then I attended Apache 2.4 Reverse Proxy talk by Jim Jagielski. He talked about the new and unique features of Apache httpd’s reverse proxy.
+
+
+
+
+
+Afterwards, there was a lunch break and following was a talk by Bertrand Delacretaz in which he posed the question about whether Software Quality is a Cultural Thing or not.
+
+
+
+
+
+Then, we had the Attendee reception for ApacheCon. It was nice to interact with the attendees.
+
+It was followed by the PGP key signing event. It was nice to get to meet many people and get verified by them.
+
+
+
+
+
+
\ No newline at end of file
diff --git a/content/blog/2016-11-18-day-5-the-final-day-of-apachecon.md b/content/blog/2016-11-18-day-5-the-final-day-of-apachecon.md
new file mode 100644
index 0000000..99261fd
--- /dev/null
+++ b/content/blog/2016-11-18-day-5-the-final-day-of-apachecon.md
@@ -0,0 +1,113 @@
+---
+title: Day 5 – The final day of ApacheCon
+author: rhnvrm
+type: post
+date: 2016-11-18T23:52:10+00:00
+url: blog/2016/11/18/day-5-the-final-day-of-apachecon/
+categories:
+ - apache
+tags:
+ - aceu16
+
+---
+The morning began with keynotes from Sebastian Blanc and Bertrand Delacretaz. After that I attended Jean Fredric Clere’s talk on HTTP/2 and SSL/TLS. He also demonstrated the new protocol and the extensions.
+
+
+
+
+
+Next, got to learn about security lessons from the Deserialization vulnerability in the Java Apache Commons Collections library and how prevalant they are by Tim Jarret.
+
+
+
+
+
+After that was a talk on “If you build it, They won’t come” by Ruth Suehle. She talked about how UI/UX and documentation can make or break open source projects. She presented various examples of small and large open source projects. She also analyzed [Apache Infra’s new website][1] that will be coming up soon.
+
+
+
+
+
+Next talk was from Rod Cope who talked about the need to build Offline First apps and presented some of the features of PouchDB/CouchDB. I got to learn about the new MongoDB and PouchDB and will try using that for my next projects.
+
+
+
+
+
+The final talk was by fellow TACer Pedro Giffuni on how his experience with Random Numbers. One specific cool thing I took from his presentation were XORshift randomizers.
+
+
+
+
+
+And finally, after this we had the TACers meet hosted by Mellissa and Cristofer Dutz where we talked about our experiences at the event.
+
+In the end, I would like to thank the Apache Software Foundation, the Linux Foundation and the Apache Community for having me at the conference. Hope to keep connected with everyone I met at the conference and get more involved with the ASF.
+
+
+
+
+
+
+
+ [1]: https://infra-test.apache.org/
\ No newline at end of file
diff --git a/content/blog/2016-11-23-getting-ready-for-updating-my-system-to-fedora.md b/content/blog/2016-11-23-getting-ready-for-updating-my-system-to-fedora.md
new file mode 100644
index 0000000..0aada59
--- /dev/null
+++ b/content/blog/2016-11-23-getting-ready-for-updating-my-system-to-fedora.md
@@ -0,0 +1,12 @@
+---
+title: Getting ready for updating my system to Fedora…
+author: rhnvrm
+type: post
+date: 2016-11-23T18:59:45+00:00
+url: blog/2016/11/23/getting-ready-for-updating-my-system-to-fedora/
+categories:
+ - uncategorized
+format: status
+
+---
+Getting ready for updating my system to Fedora 25. Updating and backing up Fedora 24. Side by side, studying for my final exams and trying to cope with submission deadlines.
\ No newline at end of file
diff --git a/content/blog/2016-11-25-i-recently-corrupted-my-zsh-history-and-was.md b/content/blog/2016-11-25-i-recently-corrupted-my-zsh-history-and-was.md
new file mode 100644
index 0000000..f094b0a
--- /dev/null
+++ b/content/blog/2016-11-25-i-recently-corrupted-my-zsh-history-and-was.md
@@ -0,0 +1,26 @@
+---
+title: I recently corrupted my zsh history and was…
+author: rhnvrm
+type: post
+date: 2016-11-25T18:35:39+00:00
+url: blog/2016/11/25/i-recently-corrupted-my-zsh-history-and-was/
+categories:
+ - uncategorized
+tags:
+ - zsh
+format: status
+
+---
+I recently corrupted my zsh history and was facing this error.
+
+After a reboot, I started seeing a message when loading the shell:
+
+zsh: corrupt history file /home/myusername/.zsh_history
+
+I fixed it using:
+
+mv .zsh\_history .zsh\_history_bad
+
+strings .zsh\_history\_bad > .zsh_history
+
+fc -R .zsh_history
\ No newline at end of file
diff --git a/content/blog/2016-11-29-octoshark-hackathon.md b/content/blog/2016-11-29-octoshark-hackathon.md
new file mode 100644
index 0000000..12a9c60
--- /dev/null
+++ b/content/blog/2016-11-29-octoshark-hackathon.md
@@ -0,0 +1,43 @@
+---
+title: OctoShark Browser Extension – DigitalOcean Cloud Hack Delhi Winner 2016
+author: rhnvrm
+type: post
+date: 2016-11-29T01:03:43+00:00
+url: blog/2016/11/29/octoshark-hackathon/
+categories:
+ - projects
+tags:
+ - google-chrome
+ - hackathon
+ - js
+ - python
+
+---
+This product was built during the DigitalOcean Cloud Hack 2016 at 91springboard, Okhla New Delhi. These days, every cloud developer is using Docker. Docker has become the de-facto way for developers and system administrators to create lightweight images and deploy to cloud. A quick search on github returned more than 300,000 public projects with Dockerfiles. The idea behind OctoShark is to simplify the workflow of deploying and testing cloud projects. OctoShark aims to provide a one click solution to deploy any Docker Project directly to a new DigitalOcean Droplet. The OctoShark button would be visible on such github projects and it would allow users to spin up a server for that project in a jiffy. No developer now needs to think twice to test a project! Since OctoShark is a browser extension, it also provides real-time information about your existing droplets and enables you to perform actions on them. The most popular extension available online is deprecated because it was built to work with DO’s API V1 and not API V2. We believe with OctoShark, developers will be able to click and run the projects and not worry about anything else! We placed first in the Cloud Track in this hackathon.
+
+Team L to R – Karan Sharma, Rohan Verma, Manvendra Singh, Shubhang Arora, Vijay Nandwani
+
+### [OctoShark Extension][1]
+
+Our extension is built using the Kango Cross-Browser Extension Platform that connects GitHub with the DigitalOcean Platform.
+
+It provides the user the ability to deploy projects having Dockerfile to a new Digital Ocean droplet in a single click and also see the status and manage the droplets using the extension.
+
+### [OctoShark Server][2]
+
+The backend server of OctoShark on receiving a `GET` request on the `/create` endpoint creates a ubuntu docker’ droplet, clones the project into the droplet and builds the project using the Dockerfile.
+
+### Demo Video
+
+
+
+### Presentation Video
+
+
+
+### Future Work
+
+Currently, we are planning on launching the extension on the Chrome Extension Store and Firefox and deploy the server on the Hasura platform using the credits that we won!
+
+ [1]: https://github.com/CapsLockHacks/OctoShark-Extension
+ [2]: https://github.com/CapsLockHacks/do-server
\ No newline at end of file
diff --git a/content/blog/2016-12-12-sorting-out-my-todo-list-for-the-next.md b/content/blog/2016-12-12-sorting-out-my-todo-list-for-the-next.md
new file mode 100644
index 0000000..ba1f3aa
--- /dev/null
+++ b/content/blog/2016-12-12-sorting-out-my-todo-list-for-the-next.md
@@ -0,0 +1,14 @@
+---
+title: Sorting out my todo list for the next…
+author: rhnvrm
+type: post
+date: 2016-12-12T20:19:26+00:00
+url: blog/2016/12/12/sorting-out-my-todo-list-for-the-next/
+categories:
+ - uncategorized
+tags:
+ - misc
+format: status
+
+---
+Sorting out my todo list for the next 3 weeks.
\ No newline at end of file
diff --git a/content/blog/2016-12-13-understanding-the-undertones-of-political-thought-within-the-politically-agnostic-foss-movement.md b/content/blog/2016-12-13-understanding-the-undertones-of-political-thought-within-the-politically-agnostic-foss-movement.md
new file mode 100644
index 0000000..830e567
--- /dev/null
+++ b/content/blog/2016-12-13-understanding-the-undertones-of-political-thought-within-the-politically-agnostic-foss-movement.md
@@ -0,0 +1,87 @@
+---
+title: Understanding the Undertones of Political Thought within the Politically Agnostic FOSS Movement
+author: rhnvrm
+type: post
+date: 2016-12-13T00:41:59+00:00
+url: blog/2016/12/13/understanding-the-undertones-of-political-thought-within-the-politically-agnostic-foss-movement/
+categories:
+ - projects
+tags:
+ - foss
+ - gnu
+ - linux
+ - misc
+ - sociology
+
+---
+## **Introduction**
+
+The Free and Open Source Software (FOSS) movement, which is now seen as an integral part of the technology sector, is now making its impact outside this domain in various dimensions. It has given rise to the three “Open” pillars – Open Source, Open Standards and Open Content. Ideas formulated during the rise of these new FOSS communities have been able to raise various questions about Intellectual Property, Information Production and other newly formulated concepts. In this paper, we will first discuss the history of FOSS and the creation of the two camps of the FOSS movement. It is important here to remind the reader that the word “Free” stands for free as in “Freedom” and not the economic freebie, but also to note that it has been carefully chosen to highlight that as well. We will analyze this bipartisan community and the implications of their ideology about freedom. Going ahead, we will discuss the copyleft licenses and it’s impact on intellectual property followed by the emerging future of the new ideologies. Although, FOSS developers and community members are agnostic about politics the aim of this paper is to bring out the underlying political thought behind this recent modern phenomenon.
+
+## History of FOSS
+
+The concept of sharing technological information predates computers although this technology along with the internet have enabled sharing of information exponentially. Before the 1960s, most of the source code that was written was academic and usually available under the public domain. But with the advent of commercial software, came licenses for using and distributing software. In 1983, Richard Stallman started work on the GNU project to write a complete operating system free from any constraints on the usage of it’s source code. In 1985, Stallman published the GNU Manifesto and in 1989 he released the first version of the GNU General Public Licence (GPL) and it was the beginning of the Free Software Movement which would culminate with the creation of the Free Software Foundation (FSF). We should note here that the GNU GPL was a Copyleft license. It was a novel use of the existing copyright law that guaranteed the GPL licensed works to remain freely available even under derivative works and therefore saw extensive use by the community. As an aside, it is important to mention that this was one of the inspirations for the share-alike license provided by the Creative Commons which we will discuss ahead. There seems to be two major highlights for our discussion in context of this paper from Stallman’s work. First, being his definition of the “Free” in FOSS to be Free as in Freedom. The freedom he talks about is closer to the positive liberty – which according to Isaiah Berlin would be the possibility of acting and not the negative liberty. This positive liberty is attributed to the collective community behind the projects and the members of the community. Second, is his argument about the benefits of such projects. In essence, he breaks these benefits into the benefits to the contributors and the benefits to the community as a whole. His work has continued on to become one of the two major philosophies in the FOSS world.
+
+The early 90s saw the rise of the permissive open source licenses, like the Apache License, that were commercially aligned. Permissive licenses allowed users to use these projects and modify them and earn profit without necessarily having to be bounded by the restrictions imposed by the GPL license. In 1999, Eric S Raymond published his essay about the two different software models, “The Cathedral and the Bazaar”. He describes the Cathedral model, in which source is available with each software release but code developed between the releases is restricted to an exclusive group of software developers whereas in the Bazaar model, code was being developed over the internet in view of the public. The bazaar model was only possible with the rise of the internet and now we see the emergence of a new human dynamic that is Peer to Peer which we discuss below.
+
+In 1997, Netscape Navigator’s release of its source code, prompted Raymond and others to rethink about FSF’s social activism since it was not appealing to corporate companies and wanted to rebrand to highlight the business potential of sharing of source code. They adopted the label “open source” and the Open Source Initiative (OSI) was formed thereafter.
+
+## The Bipartisan Community
+
+Two major philosophies exist today in the FOSS world today. Both are lead by the two major camps, the FSF camp and the OSI camp. According to the FSF, free software is meant to protect four user freedoms. They term programs that don’t give these freedoms to by “non-free”. Their argument here is that non-free programs control the users and this makes the program an instrument of unjust power. It is clearly evident how it shares a common vocabulary with Marx, when he talks about class struggle in the Communist Manifesto. Comparing the social groups identified by Marx, the Labour and the Capital, are comparable to the Users and the Developers. To give an example, computer programs developed by hobbyists in the 90’s grew into serious competitors to commercial software being produced by large companies. One such community project was the GNU/Linux operating system which is now one of the only competitors to the Microsoft Windows operating system. The question that the FSF’s philosophy was in a position to answer was what was whether the Windows ecosystem was ethical or not in its treatment of its users.
+
+The FSF’s list of four freedoms are listed below:
+
+● The freedom to run the program as you wish, for any purpose (freedom 0).
+
+● The freedom to study how the program works, and change it so it does your computing as you wish (freedom 1). Access to the source code is a precondition for this.
+
+● The freedom to redistribute copies so you can help your neighbor (freedom 2).
+
+● The freedom to distribute copies of your modified versions to others (freedom 3). By doing this you can give the whole community a chance to benefit from your changes. Access to the source code is a precondition for this. – (FOSS A General Introduction/Intellectual Property Rights and Licensing – Wikibooks)
+
+It is hard not to notice the similarity between how this philosophy also calls for a certain set of negative freedoms in Isaiah Berlin’s terminology, just like Rawls lists out the primary goods for his first principle. Similar to Rawls use of arguments moral in nature to justify his argument, this philosophy is also justified on the basis of free software’s commitment to prevent limiting the freedom of others. The FSF’s main contention is the ethical use and creation of software, just like Rawls talks about the ethics of justice.
+
+Another undertone that can be brought about by classifying the user as the labourer in Marxist terms allows us to understand is how free software is in a position to reduce the alienation between the users and the developers. Technology that is designed as a “black box” makes the user to be left without any influence over the functions that the machinery imposes.
+
+OSI’s philosophy is a bit different from the FSF. They say, “When programmers can read, redistribute, and modify the source code for a piece of software, the software evolves. People improve it, people adapt it, people fix bugs. And this can happen at a speed that, if one is used to the slow pace of conventional software development, seems astonishing.” OSI is more focused on the technical values that make software powerful, reliable and business friendly. It bypasses FSF’s moral views on the subject and focuses on the practical advantages offered by FOSS’s distributed development model. Just like how Robert Nozick critiqued Rawls work, a similar argument like Nozick’s critique of pattern based principles can be extended to critique the FSF moral stand by the OSI.
+
+Even though both FSF and OSI differ immensely in their fundamental philosophy, they both share the same space and cooperate on their common goal. Richard Stallman has himself said that they both are like two political parties in the same community.
+
+## Analyzing Copyleft and Intellectual Property
+
+One of the biggest achievements of the FOSS movement is the Copyleft license. The purpose of the license as discussed above was to protect the four essential freedoms. Putting Copyleft in layman’s terms, it is a rule that when a program is redistributed, it must not add restrictions that deny others the four central freedoms. It has been successful in rupturing the naturalized form of intellectual property by inverting its singular by using intellectual property itself. This is similar to Marx’s inversion of Hegelian idealism, which retained Hegel’s dialectical method to repose history not as an expression of the “Absolute Idea” but as humanity’s collective creation through labor. By utilizing the existing copyright law, copyleft has been in a position to tell us that we are not mere subjects of an unchangeable law but in turn we can actually create and modify the laws to serve other ends. FOSS licenses can be understood as constitutions that serve to credit the researchers, protect them from liability, and then let people do what they want with the product.
+
+Nowadays, a free software user and developer is confronted with a choice of licenses and moral codes. This choice, although, requires prioritizing one group’s freedoms over another. This ethical dilemma can be resolved by favoring the copyleft licenses as they have a better facilitation of freedoms, a broader appeal to the community, and their commitment to an ethical vision for the future. Hobbes is known to have famously defined freedom as the absence of restriction. Political thought from Aristotle to Heidegger has been at odds to differentiate freedom from license. Isaiah Berlin’s characterization of positive freedom as an alternative and negative freedom as the absence of restriction is again valuable here. There is often a critique of positive freedoms called the “paradox of economic freedom” where unfettered freedoms in the form of removing all restrictions on the rich would result in the total exploitation of the poor, and thereby their subsequent loss of economic freedoms. Similarly, non-copyleft licenses, although operating to grant protection, inevitably fail to provide any means against the exploitation possible.
+
+## Peer Production and the Gift Economy
+
+Peer to Peer (P2P) is a newly emerging human dynamic which is giving rise to a third mode of production, governance and property. It is poised to have deeper impacts, even more than the impact of Marx’s identification of the manufacturing plants of Manchester as the blueprint for the new capitalist society. To understand what P2P is, we must first understand P2P processes. These processes produce use-value through the free cooperation of producers who have access to distributed capital and it is termed as the P2P production mode. These processes are governed by the producers themselves and make the use-value freely accessible universally. These processes occur in distributed networks where there is decentralization like the internet. P2P is often incorrectly described as a Gift Economy. This is because it is not based on equality matching but on reciprocity. Taking inspiration from Marx’s slogan “From each according to his ability, to each according to his needs” P2P does not involve obligatory reciprocity. Each contributes according to his capacities and willingness and each takes according to one’s needs. In the purest form of Peer Production, producers do not get any payment. P2P processes and P2P as a model itself might be important to read and understand and question as it might slowly but eventually be a factor for future economies and social policies. Take into account the emerging welfare states which might be able to sustain such individuals who partake in P2P processes since the current form of the economy cannot.
+
+## Creative Commons
+
+The commons movement, another much recent phenomenon, is centered on the idea of creating public goods to reinvigorate democratic principles. FOSS has enabled like-minded projects in art, law, and science to release all their archives under a Creative Commons license. Commons are universally available and regulated by global cyber collectives. A license called the “Share-Alike” licenses provides a similar to the Copyleft licenses that allows redistribution and derivative works only if they are also released under a commons license. This commons phenomenon is in contrast to the Communal lands of the past which were localized and regulated by communities usually limited by location. Creative Commons have therefore given an example of the spreading of the ideology generated by the FOSS movement might eventually lead to a different future.
+
+## Summary
+
+The Open Source Initiative’s efforts to popularize free software by divorcing it from politics seek to increase greater acceptance among corporate developers has although increased the exposure of FOSS to the world. Although, with this divorce, the underlying and foundational political and ethical message have been lost into the underground. Therefore, it is important to not forget these underlying message of liberty and revolution created by the origins of the FOSS movement.
+
+## Works Cited
+
+ * Benkler, Yochai, and Helen Nissenbaum. “Commons-based Peer Production and Virtue.” Journal of Political Philosophy 14.4 (2006): 394-419. Print.
+ * Berlin, Isaiah. “Two Concepts of Liberty.” Liberty (2002): 166-217. Print.
+ * Chopra, Samir, and Scott Dexter. Decoding Liberation: The Promise of Free and Open Source Software. New York: Routledge, 2008. Print.
+ * Cohen, G. A. Karl Marx’s Theory of History: A Defence. Princeton: Princeton UP, 1978. Print.
+ * Coleman, Gabriella. “The Political Agnosticism of Free and Open Source Software and the Inadvertent Politics of Contrast.” Anthropological Quarterly 77.3 (2004): 507-19. Print.
+ * “Copyleft vs. Copyright: A Marxist Critique | Söderberg | First Monday.” Copyleft vs. Copyright: A Marxist Critique | Söderberg | First Monday. Web. 11 Dec. 2016.
+ * “FOSS A General Introduction/Intellectual Property Rights and Licensing.” FOSS A General Introduction/Intellectual Property Rights and Licensing – Wikibooks, Open Books for an Open World. Web. 11 Dec. 2016.
+ * “FOSS A General Introduction/Introduction.” FOSS A General Introduction/Introduction – Wikibooks, Open Books for an Open World. Web. 11 Dec. 2016.
+ * “The Open Source Initiative” About | Open Source Initiative. Web. 11 Dec. 2016.
+ * Nozick, Robert. Anarchy, State, and Utopia. New York: Basic, 1974. Print.
+ * Rawls, John. A Theory of Justice. Cambridge, MA: Belknap of Harvard UP, 1971. Print.
+ * Weber, Steve. The Success of Open Source. Cambridge, MA: Harvard UP, 2004. Print.
+ * “Gnu.org.” The GNU Operating System and the Free Software Movement. Web. 11 Dec. 2016.
+
+_This was a term paper I submitted for a course titled “Intro to Political Thought” at SNU under [Prof. Shekhar Singh][1]._
+
+ [1]: http://snu.edu.in/humanitiessocialsciences/shekhar_singh_profile.aspx
\ No newline at end of file
diff --git a/content/blog/2016-12-14-at-last-i-am-now-on-fedora-25.md b/content/blog/2016-12-14-at-last-i-am-now-on-fedora-25.md
new file mode 100644
index 0000000..36a67eb
--- /dev/null
+++ b/content/blog/2016-12-14-at-last-i-am-now-on-fedora-25.md
@@ -0,0 +1,19 @@
+---
+title: At last I am now on Fedora 25…
+author: rhnvrm
+type: post
+date: 2016-12-14T14:10:25+00:00
+url: blog/2016/12/14/at-last-i-am-now-on-fedora-25/
+categories:
+ - uncategorized
+tags:
+ - linux
+ - misc
+format: status
+
+---
+At last, I am now on Fedora 25. It’s great to again be able to use VLC and TexStudio without having to do use any workarounds! Still need to test the Optimus improvements but can’t seem to be able to get Nvidia module to start. bbswitch is loaded. Need some time to figure this one out. I guess will have to try Dota 2 7.00 on WinDoze.
+
+**Edit: **It now works perfectly. I’m happy.
+
+Wow, wayland is seriously way smoother than X. One must-have gnome extension now is the “Gnome Shell Extension Reloader” since now you can’t simply reload X with \`ctrl+F2 r\` like in the old days.
\ No newline at end of file
diff --git a/content/blog/2016-12-19-if-you-are-using-os-rename-src-dest.md b/content/blog/2016-12-19-if-you-are-using-os-rename-src-dest.md
new file mode 100644
index 0000000..3db5f14
--- /dev/null
+++ b/content/blog/2016-12-19-if-you-are-using-os-rename-src-dest.md
@@ -0,0 +1,14 @@
+---
+title: If you are using os rename src dest…
+author: rhnvrm
+type: post
+date: 2016-12-19T19:04:05+00:00
+url: blog/2016/12/19/if-you-are-using-os-rename-src-dest/
+categories:
+ - uncategorized
+tags:
+ - python
+format: status
+
+---
+If you are using os.rename(src,dest) outside the current working directory, you can’t simply use os.rename(filename, “output.mp3”) since it will move the file to the current working directory. You should rather, path.dirname to get the file’s directory and then rename the file. For example you can use \`os.rename(file\_name, os.path.dirname(file\_name) + ‘/{song\_title}.mp3’.format(song\_title=song_title))\`
\ No newline at end of file
diff --git a/content/blog/2017-01-02-.md b/content/blog/2017-01-02-.md
new file mode 100644
index 0000000..330da05
--- /dev/null
+++ b/content/blog/2017-01-02-.md
@@ -0,0 +1,12 @@
+---
+title: Twenty Sixteen
+author: rhnvrm
+type: post
+date: -001-11-30T00:00:00+00:00
+draft: true
+url: blog/?p=126
+categories:
+ - uncategorized
+format: status
+
+---
diff --git a/content/blog/2017-01-06-.md b/content/blog/2017-01-06-.md
new file mode 100644
index 0000000..a84e49c
--- /dev/null
+++ b/content/blog/2017-01-06-.md
@@ -0,0 +1,12 @@
+---
+title: Postmortem Week 1 – 2017
+author: rhnvrm
+type: post
+date: -001-11-30T00:00:00+00:00
+draft: true
+url: blog/?p=128
+categories:
+ - uncategorized
+format: status
+
+---
diff --git a/content/blog/2017-01-07-.md b/content/blog/2017-01-07-.md
new file mode 100644
index 0000000..930bfc4
--- /dev/null
+++ b/content/blog/2017-01-07-.md
@@ -0,0 +1,12 @@
+---
+title: Tower of Hanoi
+author: rhnvrm
+type: post
+date: -001-11-30T00:00:00+00:00
+draft: true
+url: blog/?p=130
+categories:
+ - uncategorized
+format: status
+
+---
diff --git a/content/blog/2017-01-07-how-to-sign-pgp-keys-using-gpg.md b/content/blog/2017-01-07-how-to-sign-pgp-keys-using-gpg.md
new file mode 100644
index 0000000..b3d2272
--- /dev/null
+++ b/content/blog/2017-01-07-how-to-sign-pgp-keys-using-gpg.md
@@ -0,0 +1,40 @@
+---
+title: How to Sign PGP Keys using GPG
+author: rhnvrm
+type: post
+date: 2017-01-07T13:49:07+00:00
+url: blog/2017/01/07/how-to-sign-pgp-keys-using-gpg/
+categories:
+ - apache
+ - foss
+tags:
+ - aceu16
+ - foss
+ - linux
+ - misc
+
+---
+[][1]xkcd #364: Responsible Behavior
+
+I participated in ApacheCon EU 2016’s PGP Keysigning Party recently. Being a newbie about PGP keysigning, I made the mistake of not sending the keys back to the key server after signing as I was using a GUI tool called Seahorse. So today, after realizing this from searching my key on MIT’s PGP keyserver, I decided to do it again and send the keys this time using GnuPG. It is very easy to use GnuPG which is Gnu’s PGP implementation and it is well documented. I followed [this][2] article and am providing a list of simple commands below for those who already have setup GnuPG. Also, please not that you should not sign someone’s key until you verify someone.
+
+Get the key
+
+`$ gpg --keyserver pgp.mit.edu --recv-keys `
+
+Check the fingerprint
+
+`$ gpg --fingerprint`
+
+Sign the key
+
+`$ gpg --sign-key`
+
+Upload the key
+
+`$ gpg --keyserver pgp.mit.edu --send-key`
+
+
+
+ [1]: https://xkcd.com/364/
+ [2]: http://linuxreviews.org/howtos/gnupg/signingparty/#ss3.8
\ No newline at end of file
diff --git a/content/blog/2017-01-10-notes-on-regex.md b/content/blog/2017-01-10-notes-on-regex.md
new file mode 100644
index 0000000..46c1bd4
--- /dev/null
+++ b/content/blog/2017-01-10-notes-on-regex.md
@@ -0,0 +1,71 @@
+---
+title: Notes on Regex
+author: rhnvrm
+type: post
+date: 2017-01-10T01:06:48+00:00
+url: blog/2017/01/10/notes-on-regex/
+categories:
+ - notes
+tags:
+ - notes
+ - python
+ - regex
+
+---
+I’m going to use python. Regex can be used by using the `re` library. You should not refer to this post as these are just notes, it would be better to follow the actual documentation of the [library][1].
+
+To use regex, which uses backslashes `\` we must use raw python strings like `r"\n".`
+
+`.` matches anything but a newline
+
+`\d` matches `0-9` while `\D` matches anything but digits. Similarly, `\w` matches word chars. Usually, capital letters are complement of these sets.
+
+`\s` matches whitespace characters like return, newline, tab etc.
+
+`\w{x}` would match word chars x times.
+
+`^` matches start and `$` matches end.
+
+This can be used for exact match.
+
+`[]` matches a set.
+
+Important point to note here would be to match `.` inside set, we should not use `\.` since slash will also be matched here, because special characters lose their special meaning here but character classes don’t like `\w`.
+
+Inside, `^` means negated character set.
+
+There are also ranges like, a-z, A-Z, 0-9 that can be used in the set.
+
+`\{x,y} `matches repetitions between x and y inclusive.` w{3,5}` : It will match the character w 3,4 or 5 times. Leaving y means atleast x repetitions.
+
+`\d*` will match digits 0 or more times.
+
+`w+` will match w one or more times.
+
+`?` match zero or one time.
+
+`(?:...)` is a non capturing group, useful when you only need to check if it is there or not.
+
+`()` is capturing, can be used with `\1` etc eg. `(\d)\1`: It can match `00`, `11`, `22`, `33`, `44`, `55`, `66`, `77`, `88` or `99`. This is called backreferencing.
+
+Backreferencing can be used for conditionally checking `r"^\d{2}(-?)\d{2}\1\d{2}\1\d{2}$"`
+
+`\b` means check if it is a word boundary which is first char of string, between word and not word char, or last char in string. note: don’t use `^$` with word boundary.
+
+`(Bob|Kevin|Stuart)` will match either `Bob` or `Kevin` or `Stuart`
+
+`r1(?=r2)` Positive lookahead checks if r1 is immediately followed by r2
+
+`r1(?!r2)` Negative lookahead checks if r1 is _not_ immediately followed by r2
+
+`(?<=r2)r1` Positive lookbehind
+
+`(?` will match `b`. To only match `` use `<.*?>`
+
+Detect HTML links and content: `r'([\w ,./]*)(?=)'`
+
+findall matches in python: `re.findall(pattern, text)`
+
+ [1]: https://docs.python.org/3/library/re.html
\ No newline at end of file
diff --git a/content/blog/2017-01-12-.md b/content/blog/2017-01-12-.md
new file mode 100644
index 0000000..d53d36d
--- /dev/null
+++ b/content/blog/2017-01-12-.md
@@ -0,0 +1,20 @@
+---
+title: SNU Datalimit Chrome Extension
+author: rhnvrm
+type: post
+date: -001-11-30T00:00:00+00:00
+draft: true
+url: blog/?p=144
+categories:
+ - projects
+tags:
+ - api
+ - google-chrome
+ - js
+
+---
+[][1]
+
+The
+
+ [1]: https://chrome.google.com/webstore/detail/snudatalimit/mfjinloagcpmfacpjnlabcflnkbajidd
\ No newline at end of file
diff --git a/content/blog/2017-01-12-checking-if-a-number-is-prime-using-regex.md b/content/blog/2017-01-12-checking-if-a-number-is-prime-using-regex.md
new file mode 100644
index 0000000..a2a9875
--- /dev/null
+++ b/content/blog/2017-01-12-checking-if-a-number-is-prime-using-regex.md
@@ -0,0 +1,22 @@
+---
+title: Checking if a number is prime using Regex
+author: rhnvrm
+type: post
+date: 2017-01-12T11:17:48+00:00
+url: blog/2017/01/12/checking-if-a-number-is-prime-using-regex/
+categories:
+ - notes
+tags:
+ - python
+ - regex
+
+---
+
+ CUT TO Digital Clock with alarm ringing at 7:00 AM.
+
+
+
+ Loud sound of beeping alarm starts.
+
+
+
+ We see NAINA jumping from the bed in fear. She looks around and finds herself back in her room.
+
+
+
+ She shuts the alarm, this time bleaker music plays on the radio.
+
+
+
+ NAINA:
+
+
+
+ Seems like it was just a dream.
+
+
+
+ She stands up from the bed, laying her feet on the ground. We see the same shot of the magazines and random bits of rubbish lying around. But now the color seems to be faded. The room and posters on the wall also look a bit less colorful. There is a tone of bleakness which can be seen.
+
+
+
+ FADE TO bathroom
+
+
+
+ We see NAINA’s back and face in the mirror. She rinses her mouth and puts the toothbrush on the edge of the sink. She puts water from the faucet on her face to wash it. She rubs her eyes. She’s startled to find her reflection to be a bit different. She looks at her hand and then at the reflections hand. She then waves it.
+
+
+
+ NAINA:
+
+
+
+ What is happen—
+
+
+
+ There is silence, except the sound of the flowing tap, which is also a bit lower in volume than in the previous scene.
+
+
+
+ Suddenly, we hear the sound of something falling, it’s the toothbrush. She looks at it but doesn’t pick it up. She again sees the reflection, and it is seems normal now. A look of being creeped out is visible on her face.
+
+
+
+ The shot still focusing on the mirror, we can see her turn around, this time frantically leave the bathroom but not the reflection in the mirror.
+
+
+
+ FADE TO scene of the common area of apartment.
+
+
+
+ We can see NAINA walking towards the kitchen from her room. This time she is not dressed up. She is still in her pajamas. We can hear the pressure cooker, but this time the cooker is having a higher pitch.
+
+
+
+ Fade to kitchen
+
+
+
+ NAINA enters the kitchen, her mom can be seen preparing the breakfast. NAINA sits down at the table. Her mom is making eggs on the frying pan. The crackling sound of the eggs is not heard as clearly as last time.
+
+
+
+ NAINA grabs a single piece of bread from the 12 pack of bread that is on the table and looks at the bowl of boiled milk.
+
+
+
+ We see her mom turning and looking at her as soon as she grabs the bread.
+
+
+
+ NAINA : Morning Mom
+
+
+
+ Suddenly, she stops tending to the eggs that are being fried and with a concerned voice says
+
+
+
+ MOM: Good morning, beta.. you sound pretty tired. Did you sleep well?
+
+
+
+ This time her voice is different, we hear some disturbances like cracking in the mother’s voice and it is a bit unclear.
+
+
+
+ NAINA: Bad dreams..
+
+
+
+ NAINA grabs the bread and was about to leave when her mom turns to her while cutting onions for the omlette. She looks at her mother who now looks a bit different. This makes her jump against the wall with an astonished and scared face. The bottle of milk falls on the ground and shatters into pieces. Her mother’s face was different, her lips seemed to be inside out, giving her face a look straight out of a nightmare.
+
+
+
+ Mom : What is wrong beta?
+
+
+
+ She completely turn towards her, with the knife pointing towards NAINA.
+
+
+
+ FADE TO scene of the common room
+
+
+
+ It was way too much to handle for NAINA, she can be seen running out of the door and closing it.
+
+
+
+ This time outside, it’s not that bright while also being a bit greyed out.
+
+
+
+ She keeps running in panic.
+
+
+
+ It was when she was running and crossing the street, we again see the same children waiting for their school bus
+
+
+
+ Suddenly, we see the same school bus crashing into NAINA.
+
+
+ Sound of screeching tires can be heard.
+
+
+
+ The screen fades to black
+
+
+
+ FADE IN
+
+
+
+ Low piano keystroke plays in the background
+
+
+
+ CUT TO Digital Clock showing 7:00 AM.
+
+
+
+ NAINA wakes up with a jump this time. Scared on her bed, sweating like a pig.
+
+
+
+ The same shot of the magazines and her feet touching the ground.
+
+
+
+ Her room is very different this time, it is darker, greyer and messier.
+
+
+
+ FADE TO BATHROOM
+
+
+
+ The water is running in the sink. NAINA is away from the mirror, toward the camera, lost and scared. She is blocking the reflection in the mirror for the camera.
+
+
+
+ Suddenly a voice over can be heard
+
+
+
+ “What are you scared of?”
+
+
+
+ NAINA is shocked to her core listening to the voice. She immediately turns toward the mirror since the sound came from behind her. She sees a blurry figure. She rubs her eyes and leans forward. She can see the eyes of the figure which is making eye contact with NAINA. It was her own reflection. She is shocked to look at herself.
+
+
+
+ REFLECTION: BOOOO!!
+
+
+
+ NAINA jumps back, away from the mirror in fear with no clue as to what is happening with her. She again looks into the mirror, checks if her reflection is mirroring her. It is!
+
+
+
+ NAINA starts crying desperately.
+
+
+
+ REFLECTION: Thought that the “BOOOO!” would be clear enough..
+
+
+
+ NAINA: Wh-What are you?
+
+
+
+ The “Reflection” was amazed by such a question.
+
+
+
+ REFLECTION: “Wh-wh-wh” Do I stutter out a question like this?
+
+
+
+ NAINA: What are you ?..
+
+
+
+ The Reflection smiles.
+
+
+
+ REFLECTION: I am what we call a paradox, the question and the answer at the same time, a paradigm all together.
+
+
+
+ NAINA : (shouts) It is not possible..
+
+
+
+ REFLECTION: Or maybe not, may be I am just a product of your imagination or a part of your schizophrenic mind. Or it is also possible that I am a divine intervention, that’d be something unexpected, isn’t ?
+
+
+
+ NAINA: (shouts again) No.. this is not possible!
+
+
+
+ REFLECTION: Impossible is the kind of haircut you have. I look like a dork for God’s sake.
+
+
+
+ The Reflection starts playing with her hair looking at it in dislike.
+
+
+
+ NAINA : What is it that you want?
+
+
+
+ REFLECTION: I want you to start asking the right questions.
+
+
+
+ NAINA looks around, it is still her bathroom.
+
+
+
+ NAINA : Where am I ? What is going on with me… Here ? I do not understand anything.
+
+
+
+ REFLECTION: Wow! One at a time.. I said the right questions not a multi questions pop quiz!
+
+
+
+ NAINA : WHERE AM I?
+
+
+
+ REFLECTION: Look around from your point of view, it is still your bathroom!
+
+
+
+ NAINA: It is not possible again.. It does not look like my home.. There.. There are no colors.. From where does this noise keep interrupting me?! Th-This is not anything I know.
+
+
+
+ REFLECTION: How can you be so sure? You must have heard the saying “Ignorance is a blessing”. I.. on the other hand..like to believe that “ Ignorance leads to knowledge”.
+
+
+
+ NAINA: Knowledge?
+
+
+
+ REFLECTION: Yes! Knowledge! Look at yourself, lost in your own ignorance, asking yourself those questions: Where, What,.. But even except from me maybe..
+
+
+
+ NAINA : What do you mean?
+
+
+
+ REFLECTION: The further you fall away from knowledge the further you approach knowledge at its pure state!
+
+
+
+ NAINA: This is just a dream… I am just dreaming…
+
+
+
+ The reflection continues her speech as if she never heard the last part.
+
+
+
+ REFLECTION: It is the knowledge about the truth, about the sins, your hidden memories… about you, me, us,.. And.. Her
+
+
+
+ NAINA:Her?
+
+
+
+ REFLECTION: Don’t you remember?
+
+
+
+ NAINA: Remember what?
+
+
+
+ The headache is getting worse for NAINA
+
+
+
+ REFLECTION: Think harder! The headache is not gonna stop!
+
+
+
+ NAINA: I don’t remember!!!
+
+
+
+ REFLECTION: NAINA, NAINA…!! Do you see, where the knowledge leads you?! Leading you to forget! Leading you to meet me! Leading you to somewhere you do not have a clue about! Do you know how much pain she was in? How much she kept thinking and hoping? Do you?
+
+
+
+ NAINA: I don’t know what are you talking about ?…
+
+
+
+ Her headache grows stronger, she starts gripping her head hard!
+
+
+
+ REFLECTION: You don’t remember, do you? No, you don’t, otherwise you would not be here, now would you?
+
+
+
+ NAINA: I have had enough of this. Just tell me what has happened?
+
+
+
+ REFLECTION: It would be too easy to give all the answers on a plate, look at who you are talking to ? Look at me!! If you can’t remember, how can I possibly tell you ?
+
+
+
+ NAINA: What is that I have to remember ? How can I remember it?
+
+
+
+ The REFLECTION smiles again
+
+
+
+ REFLECTION: Didn’t I tell you the answer already “Ignorance is a blessing”! In order to remember you have to forget! Isn’t it ironic?
+
+
+
+ The REFLECTION laughs. NAINA seems lost!
+
+
+
+ NAINA: What do you mean!! One moment, you are saying you can’t tell me, the other you say something completely opposite! You are playing with me! WHO ARE YOU??
+
+
+
+ REFLECTION: OH GOD!!! Let’s not restart the whole conversation again!!
+
+
+
+ NAINA: How can I remember something I have forgotten!!! What are babbling about! Her, Her, Who is “Her”?
+
+
+
+ REFLECTION: NAINA, innocent NAINA, why can’t you see the meaning of it? Forget to remember? One never forgets a thing, it is just that when one has stored so much information, learned so many things, year after year that eventually he starts forgetting the most important things, all those things when cumulated result in a sum of all our base memories, feelings and experiences, nothing more, nothing less. However, one chooses to suppress their innermost, traumatic experiences using everyday facts and figures, for reasons unknown to us. Maybe the truth is simply a bit too much for you to handle.
+
+
+
+ NAINA: Are you trying to say that the key of this place is my ability to remember? I had never asked to be here in the first place. I honestly do not understand what you want me to remember!
+
+
+
+ REFLECTION: I wonder, is it me that wants “you” to remember or is it you yourself? Tell me Naina, what are dreams? Taking the words of Shakespeare .. dreams are the “children of an idle mind”, and how right he was! Dreams are our thoughts themselves, one’s deep memories trying to come through, trying to escape! Trying to talk to you, Naina, but have you been listening?
+
+
+
+ NAINA: It is a trick.. You are trying to trick me.. I am not supposed to be here!
+
+
+
+ REFLECTION: What were you dreaming last night, Naina?
+
+
+
+ Listening to this, Naina suddenly freezes, her headache is too much. She cannot think at all.
+
+
+
+ REFLECTION: You were dreaming about her. Think! Think harder! Naina… weren’t you?
+
+
+
+ NAINA: Y..Yes, I think so, .. She was there all alone.. Waiting for someone… someone special.. But she does not seem to come…
+
+
+
+ REFLECTION: How long she had been waiting, Naina ? How long has she been waiting?
+
+
+
+ NAINA: She has been waiting forever! She believes she will come. She does not give up hope.
+
+
+
+ REFLECTION: Why isn’t she coming ? Did she forget about her?
+
+
+
+ NAINA:N-NO..
+
+
+
+ Naina is silently looking into her reflection.
+
+
+
+ REFLECTION: How does she look like, Naina?
+
+
+
+ NAINA: She-
+
+
+
+ Naina pauses in disbelief
+
+
+
+ Naina: I do not remember… I cannot remember..
+
+
+
+ REFLECTION: You can’t remember her face? (smiles) What happened Naina? Is there something else you can remember?
+
+
+
+ NAINA: I was with her.. It’s you!! It’s all you playing games with me
+
+
+
+ (Reflection laughs)
+
+
+
+ REFLECTION: It seems you really do not want to listen do you? Just look at your hands….
+
+
+
+ Naina looks at her hands, they are all covered with blood, dripping from her hands. Blood.. Not hers.. From someone else…
+
+
+
+ NAINA: WHAT IS THIS ???
+
+
+
+ REFLECTION: (laughs)
+
+
+
+ Oh-oh you tell me Naina!
+
+
+
+ Naina: I know it’s all you playing games with me! It’s all your fault! IT’S ALL YOU!
+
+
+
+ Naina tries to grab the reflection, but her hands just hit the mirror leaving bloody handprints on it.
+
+
+
+ NAINA: It’s all a dream…
+
+
+
+ REFLECTION: Have you ever wondered that maybe that dream about her was not one, that it might have been reality? Maybe this is not a dream, maybe your so called “life” is a dream! Maybe you aren’t even alive at all! (laughs) Or maybe it’s a question of sanity Naina! I don’t think that talking to your reflection is what you call the sanest thing on the planet.
+
+
+
+ The REFLECTION smiles, Naina seems to be totally lost. The noise is getting louder, her heart beating faster and faster.
+
+
+
+ NAINA: Where am I .. This isn’t a world!
+
+
+
+ REFLECTION: You are right.. In a way.. Different perspectives, different worlds.. Life is just a dream, Naina.. A dream..
+
+
+
+ Blood starts dripping from the Reflection’s eyes!
+
+
+
+ REFLECTION : That–
+
+
+
+ Naina covers her eyes with her hands, two hands suddenly approach Naina…They come from the mirror…
+
+
+
+ REFLECTION
+
+
+
+ –ends!
+
+
+
+ They suddenly grab Naina and push her to the mirror, her face is pressed against the mirror! Face to face with herself!
+
+
+
+ REFLECTION: Fading memories, new memories! And a dream Naina, a ream of you in a world without you! (smiles) Welcome to my world!
+
+
+
+ SCREAM
+
+
+
+ ACT III
+
+
+
+ FADE IN:
+
+
+
+ Low key piano strokes play.
+
+
+
+ CUT TO Digital Clock showing 7:00 AM.
+
+
+
+ We are again inside the room.
+
+
+
+ NAINA wakes up suddenly, this time she looks around her room, it is still bleak and the posters seem faded and colorless.
+
+
+
+ She shuts off the alarm, the radio is playing static this time.
+
+
+
+ We see the same shot of her feet touching the ground. The magazines on the floor are colorless. There is no noise of the traffic or the hustle and bustle of city life. It’s all quiet.
+
+
+
+ FADE TO bathroom
+
+
+
+ The camera is focused on the mirror.
+
+
+
+ NAINA rushes inside the bathroom, we can only see her back and messy hair. She looks at herself in the mirror, the mirror reflects all her movements precisely.
+
+
+
+ She knocks on the mirror.
+
+
+
+ NAINA:
+
+
+
+ HELLO!!??
+
+
+
+ There is no reaction from the reflection. NAINA smiles.
+
+
+
+ NAINA:
+
+
+
+ Was nothing but a dream.
+
+
+
+ She turns her back away from the mirror and walks away. She doesn’t notice the water that had been flowing from the water tap on the sink. The flow is fast but there is no noise. No sound.
+
+
+
+ The camera zooms in on the mirror and the door of the bathroom that is visible until the edges of the mirror are not visible.
+
+
+
+ CUT TO Common Room
+
+
+
+ We see NAINA walking in a fast pace from the bathroom toward the kitchen. We see her feet stomp on the ground but there is no noise. Only a grey and dark common room with curtains closed, no light coming in.
+
+
+
+ We can see the fluorescent white light from the kitchens tube light lighting up the common room area
+
+
+
+ FADE TO camera inside the kitchen looking toward the kitchen door.
+
+
+
+ We can see the dining table, a pack of 12 pieces of bread that looks like it has been open since a few days. The bowl in which we saw boiled milk seems to be empty. We can see the pressure cooker on the stove, it seems to have been untouched since a few days.
+
+
+
+ NAINA walks into the kitchen through the door with a smile on her paranoid face.
+
+
+
+ Her smile disappears as she doesn’t find her MOM in the kitchen. She walks toward the stove, glaring at the knife… The same knife that she was using to cut onions now lies next to finely diced stale onions.
+
+
+
+ The camera now pans and follows her face from not so far distance
+
+
+
+ She bumps herself on the dining table, causing the bottle of milk to fall down and make the glass shatter but there is no sound except muffled sound of something glass like falling for the audience. She doesn’t hear it and continues to see the half eaten omelette still on the plate.
+
+
+
+ She then looks at the white milk that is flowing outward from the shattered glass to fill the dark floor.
+
+
+
+ NAINA:
+
+
+
+ What… is going on?
+
+
+
+ She now panics and starts breathing heavily heading outside.
+
+
+
+ FADE TO the common room
+
+
+
+ We see NAINA now walking briskly towards the door that opens outside the apartment. She opens the door, and walks out.
+
+
+
+ CUT TO Shot of Empty Street outside of Apartment facing the door
+
+
+
+ We can see the color of the door of the house has faded away. We see NAINA staring into oblivion. The towering apartment block looks dull. The street is empty, all gray, nothing but silence surrounds the once busy. Except the sound of wind blowing past NAINA.
+
+
+
+ The children who were waiting for their bus are now no more waiting for their bus.
+
+
+
+ CUT TO apartment complex
+
+
+
+ Outside the gate, no traffic can be seen. There are no people rushing in and out of the complex. Visuals of empty shopping streets with their shutters down.
+
+
+
+ Low key piano starts playing with a shot of birds flying across the sky.
+
+
+
+ Fade to black
+
+
+
+ TEXT:
+
+
+
+ A dream of you in a world without you…
+
+
+
+ -FIN-
+
\ No newline at end of file
diff --git a/content/blog/2017-05-20-.md b/content/blog/2017-05-20-.md
new file mode 100644
index 0000000..4e9b0ea
--- /dev/null
+++ b/content/blog/2017-05-20-.md
@@ -0,0 +1,15 @@
+---
+title: "2016"
+author: rhnvrm
+type: post
+date: -001-11-30T00:00:00+00:00
+draft: true
+url: blog/?p=192
+categories:
+ - uncategorized
+format: status
+
+---
+2017 has been a dull year. It has felt even more dull after the fast paced year that 2016 was.
+
+
\ No newline at end of file
diff --git a/content/blog/2017-05-20-xfce4-keyboard-shortcuts-for-clementine.md b/content/blog/2017-05-20-xfce4-keyboard-shortcuts-for-clementine.md
new file mode 100644
index 0000000..6f8f2d9
--- /dev/null
+++ b/content/blog/2017-05-20-xfce4-keyboard-shortcuts-for-clementine.md
@@ -0,0 +1,34 @@
+---
+title: Adding xfce4 Keyboard Shortcuts for Clementine or Spotify
+author: rhnvrm
+type: post
+date: 2017-05-20T15:08:44+00:00
+url: blog/2017/05/20/xfce4-keyboard-shortcuts-for-clementine/
+categories:
+ - foss
+ - notes
+ - tutorials
+ - uncategorized
+ - xfce
+tags:
+ - fedora
+ - foss
+ - linux
+ - music
+ - productivity
+ - tutorial
+ - xfce
+
+---
+xfce4 has default media key settings for Pragha music player. Although, if you use clementine music player you can use keyboard shortcuts to control it with DBus and MPRIS.
+
+Clementine is known as org.mpris.clementine and you can add the following entries to your Keyboard Settings > Application Shortcuts
+
+If you use spotify, it is registered as org.mpris.MediaPlayer2.spotify on qdbus.
+
+
+
+
\ No newline at end of file
diff --git a/content/blog/2017-06-26-take-out-a-moment-and-think-are-you.md b/content/blog/2017-06-26-take-out-a-moment-and-think-are-you.md
new file mode 100644
index 0000000..b5b489c
--- /dev/null
+++ b/content/blog/2017-06-26-take-out-a-moment-and-think-are-you.md
@@ -0,0 +1,20 @@
+---
+title: Take out a moment and…
+author: rhnvrm
+type: post
+date: 2017-06-26T09:12:19+00:00
+url: blog/2017/06/26/take-out-a-moment-and-think-are-you/
+client-modified:
+ - "1500191178"
+categories:
+ - uncategorized
+tags:
+ - psychology
+format: status
+
+---
+Take out a moment and think, are you going on the internet (reddit/youtube/dota2) because you want to be entertained or because you are really afraid of being bored?
+
+Boredom comes from having a mind that wants to be entertained. Instead, strive for cultivating a creative mind that can entertain itself (and others). The key word here is “cultivate”.
+
+#psychology
\ No newline at end of file
diff --git a/content/blog/2017-07-27-216.md b/content/blog/2017-07-27-216.md
new file mode 100644
index 0000000..b8f29a4
--- /dev/null
+++ b/content/blog/2017-07-27-216.md
@@ -0,0 +1,24 @@
+---
+author: rhnvrm
+type: post
+date: 2017-07-27T20:40:51+00:00
+url: blog/2017/07/27/216/
+categories:
+ - uncategorized
+tags:
+ - misc
+ - sociology
+format: status
+
+---
+While conformity and the playing out of social roles can help shore-up our bridges of self-deception, this may in the end turn out to be more of a curse, than a blessing. For given the brevity of life it is far better to become aware of our deceptions while we still have time to change. But sadly, it is often only when one is at death’s doorstep that they come to recognize the vanity and falseness of their existence up to that point.
+
+This idea is illustrated in The Death of Ivan Ilyich, one of Leo Tolstoy’s masterpieces. The main character in this work is a Russian magistrate who attains great success in rising to the top of Russian society. However, while enjoying the fruits of his labours, he becomes afflicted by a terminal illness and reflecting deeply on the meaning of life is haunted by a nagging feeling that his life was wasted:
+
+> “It is as if I had been going downhill while I imagined I was going up. And that is really what it was. I was going up in public opinion, but to the same extent life was ebbing away from me. And now it is all done and there is only death.” (Leo Tolstoy, The Death of Ivan Ilyich)
+
+This passage by Tolstoy strikes at the root of the danger of living at the mercy of our self-deceptions. Maintaining our illusions requires a massive amount of time and energy and often diverts our attention to vain pursuits. Therefore, our ability to engage in projects and strive after goals which would lead to a more fulfilling life is greatly restricted. To ensure that we don’t face a similar fate as Ivan Ilyich, it is crucial that we take a more honest look at ourselves and the life path that our deceptions have led us down. While most of us have spent years, if not decades, relying on our many self-deceptions, it is still within our ability to break down our false self.
+
+_Source:_
+
+
\ No newline at end of file
diff --git a/content/blog/2017-09-20-torogo.md b/content/blog/2017-09-20-torogo.md
new file mode 100644
index 0000000..7ee1bda
--- /dev/null
+++ b/content/blog/2017-09-20-torogo.md
@@ -0,0 +1,234 @@
+---
+title: HackTheNorth 2017 – University of Waterloo
+author: rhnvrm
+type: post
+date: 2017-09-20T14:25:42+00:00
+url: blog/2017/09/20/torogo/
+categories:
+ - projects
+tags:
+ - datascience
+ - hackathon
+ - python
+
+---
+[][1]
+
+I attended HackTheNorth, which is Canada’s Biggest Hackathon and takes place at University of Waterloo campus. I was glad to join over 1000 students from around the world at the University of Waterloo to collaborate and create something extraordinary in 36 hours. I didn’t go in as a team as the visa process was a bit delayed and so none of the participants from India knew if they would be able to go. Well, eventually, we were three people from different universities from New Delhi who formed a team when we met in Canada.
+
+
+
+ We are excited to announce that Canadian Prime Minister Justin Trudeau will be giving the welcoming remarks at opening ceremonies tonight! pic.twitter.com/cWePNlFXYj
+
+
+
+
+
+
+# The Project
+
+We built ToroGo, an app powered by Data Science to help newcomers decide the perfect neighborhood for someone moving to Toronto. I worked on writing the API for the backend and the entire data collection and analysis involved in the project.
+
+
+
+
+
+ Inspiration
+
+
+
+ We traveled all the way from India and while booking our AirBnb we were overwhelmed with the options available to us. Although, websites like tripadvisor help with reviews of an area, it is often not enough. Toronto welcomes over 40 million visitors annually, and is the leading tourism destination in Canada. So we decided to use the power of data science to help travelers like us solve where to stay.
+
+
+
+ What it does
+
+
+
+ Find a Place
+
+
+
+ In our discussions we came up with three important things that users look at while deciding where to live in a new city:
+
+
+
+
+ Price
+
+
+ Safety
+
+
+ Reviews
+
+
+
+
+ The app requests the user to enter his priority for the above mentioned features and suggests the top 5 suggested places that would suit the user based on data analysis.
+
+
+
+ Currency Converter
+
+
+
+ Along with that we provide the user easy access to check the live currency exchange rates using XE.com powerful api instantly from the app. It supports searching from 100s of currencies and can instantly give the live exchange rate.
+
+
+
+ How we built it
+
+
+
+ We used open datasets available from the Canadian Open Dataset website and Airbnb to build an aggregate score of around 130 sub-areas of Toronto City. We chose three parameters,
+
+
+
+
+ Locality Ratings based on Sentiment Analysis of Reviews
+
+
+ Safety Ratings based on Crime Data such as Assaults
+
+
+ Priceyness Ratings based on the cost of listings of Airbnbs in a Neighborhood.
+
+ After this, we wrote an algorithm based on Euclidean Distance between these ratings and the user’s preferences to suggest the most suitable locations for the user.
+
+
+
+ The currency converter is powered by XE.com‘s API and we were able to make an intuitive UX for searching through the currencies.
+
+
+
+ Challenges we ran into
+
+
+
+
+ Data was easy to find but aggregation was tough to do based on the neighborhood level.
+
+
+ Getting the heatmap to work based on neighborhood on Android
+
+
+ We tried to integrate the Microsoft Azure Chatbot API but were unable to integrate it with the app.
+
+
+
+
+ Accomplishments that we’re proud of
+
+
+
+
+ A full ranking of the neighborhoods based on reviews, safety and priceyness of Toronto
+
+
+ [1]: https://www.facebook.com/hackthenorth/photos/rpd.100005363469781/1987147797978461/?type=3&theater
\ No newline at end of file
diff --git a/content/blog/2017-10-03-.md b/content/blog/2017-10-03-.md
new file mode 100644
index 0000000..135e894
--- /dev/null
+++ b/content/blog/2017-10-03-.md
@@ -0,0 +1,12 @@
+---
+title: I’m moving back to Firefox
+author: rhnvrm
+type: post
+date: -001-11-30T00:00:00+00:00
+draft: true
+url: blog/?p=221
+categories:
+ - uncategorized
+format: status
+
+---
diff --git a/content/blog/2017-10-11-yumex-dnf-is-locked.md b/content/blog/2017-10-11-yumex-dnf-is-locked.md
new file mode 100644
index 0000000..e5eb25b
--- /dev/null
+++ b/content/blog/2017-10-11-yumex-dnf-is-locked.md
@@ -0,0 +1,20 @@
+---
+title: yumex-dnf is locked
+author: rhnvrm
+type: post
+date: 2017-10-11T18:43:36+00:00
+url: blog/2017/10/11/yumex-dnf-is-locked/
+categories:
+ - foss
+ - notes
+ - uncategorized
+ - xfce
+
+---
+I downloaded a .rpm and double clicked it to install it and it started yumex-dnf. But for some reason it crashed and dnf was locked. I fixed it using
+
+`yumex-dnf --exit`
+
+and installed the rpm using
+
+`sudo dnf install cacher-1.1.10.x86_64.rpm`
\ No newline at end of file
diff --git a/content/blog/2017-10-16-was-codification-of-odissi-successful-in-capturing-the-true-essence-of-the-dance-as-it-was-prevalent-or-even-as-it-was-performed-in-the-ancient.md b/content/blog/2017-10-16-was-codification-of-odissi-successful-in-capturing-the-true-essence-of-the-dance-as-it-was-prevalent-or-even-as-it-was-performed-in-the-ancient.md
new file mode 100644
index 0000000..061d9ea
--- /dev/null
+++ b/content/blog/2017-10-16-was-codification-of-odissi-successful-in-capturing-the-true-essence-of-the-dance-as-it-was-prevalent-or-even-as-it-was-performed-in-the-ancient.md
@@ -0,0 +1,19 @@
+---
+title: Was codification of Odissi successful in capturing the true essence of the dance as it was prevalent or even as it was performed in the ancient era?
+author: rhnvrm
+type: post
+date: 2017-10-16T01:10:30+00:00
+url: blog/2017/10/16/was-codification-of-odissi-successful-in-capturing-the-true-essence-of-the-dance-as-it-was-prevalent-or-even-as-it-was-performed-in-the-ancient/
+categories:
+ - uncategorized
+tags:
+ - odissi
+
+---
+Was codification of Odissi successful in capturing the true essence of the dance as it was prevalent or even as it was performed in the ancient era?
+
+
+
+[View Fullscreen][1]
+
+ [1]: /wp-content/plugins/pdfjs-viewer-shortcode/pdfjs/web/viewer.php?file=http%3A%2F%2F13.232.63.7%2Fwp-content%2Fuploads%2F2017%2F11%2Fdoc.pdf&download=true&print=true&openfile=false
\ No newline at end of file
diff --git a/content/blog/2017-10-28-the-male-and-female-dress-of-odissi-dance-an-comment-on-the-literature-on-the-web.md b/content/blog/2017-10-28-the-male-and-female-dress-of-odissi-dance-an-comment-on-the-literature-on-the-web.md
new file mode 100644
index 0000000..7c2f749
--- /dev/null
+++ b/content/blog/2017-10-28-the-male-and-female-dress-of-odissi-dance-an-comment-on-the-literature-on-the-web.md
@@ -0,0 +1,23 @@
+---
+title: The male and female dress of Odissi Dance – An comment on the Literature on the web
+author: rhnvrm
+type: post
+date: 2017-10-28T21:15:43+00:00
+url: blog/2017/10/28/the-male-and-female-dress-of-odissi-dance-an-comment-on-the-literature-on-the-web/
+categories:
+ - uncategorized
+tags:
+ - odissi
+
+---
+I was reading an [article][1] about Odissi and I found that the perpetuation of stereotypes do actually come into picture in the case of the content that is written on it. The following is a description of the Dress worn by the dancers:
+
+> The female dancers wear brightly coloured sari usually made of local silk adorned with traditional and local designs such as the Bomkai Saree and the Sambalpuri Saree. The front part of the sari is worn with pleats or a separate pleated cloth stitched in front to ensure flexibility of movements of the dancer while showcasing excellent footwork. Silver Jewellery adorns her head, ear, neck, arms and wrists. Musical anklets called ghunghru made of leather straps with small metallic bells attached to it are wrapped in her ankles while her waist is tied with an elaborate belt. Her feet and palms are brightened with red coloured dyes called alta. She wears a tikka on forehead and outlines her eyes prominently with Kajal so as to make her eye movements more visible. Her hair is tied in a bun and beautified with Seenthi. A moon shaped crest of white flowers or a Mukoot that is a reed crown with peacock feathers symbolising Lord Krishna may adorn the hairdo.
+
+The same article describes the male dress in a single line.
+
+> A male dancer wears a dhoti neatly pleated in the front and tucked between the legs that cover his lower body from waist while the upper body remains bare. A belt adorns his waist.
+
+It is upto the reader how to interpret this.
+
+ [1]: http://www.culturalindia.net/indian-dance/classical/odissi.html
\ No newline at end of file
diff --git a/content/blog/2017-11-11-vocabulary-of-odissi.md b/content/blog/2017-11-11-vocabulary-of-odissi.md
new file mode 100644
index 0000000..34b4707
--- /dev/null
+++ b/content/blog/2017-11-11-vocabulary-of-odissi.md
@@ -0,0 +1,456 @@
+---
+title: Vocabulary of Odissi
+author: rhnvrm
+type: post
+date: 2017-11-11T21:24:05+00:00
+url: blog/2017/11/11/vocabulary-of-odissi/
+categories:
+ - uncategorized
+tags:
+ - odissi
+
+---
+My argument is that dance can be seen through the lens of linguistics. It is nonetheless, composed of a vocabulary of poses and gestures that are codified within a set by masters to perform Abhinaya (acting) and tell stories similar to how a grammar and a vocabulary is used to write complicated sentences and paragraphs.
+
+For example, Odissi has the following hand gestures in its vocabulary
+
+
+
+
+ Odissi Single Hand Mudras
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Pataka
+
+
+
+ Tripataka
+
+
+
+ Ardhapataka
+
+
+
+ Kartarimukha
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mayura
+
+
+
+ Ardha Chandra
+
+
+
+ Arala
+
+
+
+ Sukhatundaka
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Mushti
+
+
+
+ Shikhara
+
+
+
+ Kapittha
+
+
+
+ Katakamukha
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Katakamukha
+
+
+
+ Katakamukha
+
+
+
+ Katakamukha
+
+
+
+ Kapittha
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Katakamukha
+
+
+
+ Katakamukha
+
+
+
+ Katakamukha
+
+
+
+ Suchi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Ardhasuchi
+
+
+
+ Chandrakala
+
+
+
+ Padmakosha
+
+
+
+ Sarpasheesha
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Simhamukha
+
+
+
+ Kangula
+
+
+
+ Alapadma
+
+
+
+ Alapadma
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Chatura
+
+
+
+ Chatura
+
+
+
+ Bhrmara
+
+
+
+ Sakata
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Hamsasya
+
+
+
+ Hamsapakshaka
+
+
+
+ Mrigashirsha
+
+
+
+ Kangula
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Kapittha
+
+
+
+ Trishula
+
+
+
+ Tambula
+
+
+
+ Vardhamana
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Vardhamana
+
+
+
+ Pushpa
+
+
+
+ Baana
+
+
+
+ Teera
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+The amazing thing in my opinion is how intuitive gestures are in comparison to words or letters and often signify such great amount of information than what would even comprise a sentence. Odissi repertoire sequentially includes an invocation followed by nritta, nritya, natya, and moksha.
+
+> The invocation called Mangalacharana is performed followed by offering of flowers called Pushpanjali and salutation to mother earth referred as Bhumi Pranam. Next in line is performance of Batu or Batuka Bhairava or Battu Nrutya or Sthayee Nrutya which is pure dance or nritta dedicated to Lord Shiva. It is performed only on rhythmic music without any recitation or singing. The next part is nritya that encompass expressional dance or Abhinaya to communicate a story, song or poetry through hand gestures or mudras, emotions or bhavas and eye and body movements. The next part natya includes a dance drama based on Hindu mythological texts and epics. An Odissi performance is concluded with the dance movement referred as Moksha that aims to communicate a feeling of emancipation of the soul.
+
+The most critical here being the pure dance that can be performed to highlight the structure and the vocabulary of the dance using choreography similar to what can be done using advanced penmenship of certain writers in their poems.
\ No newline at end of file
diff --git a/content/blog/2017-11-30-emotive-adsense-project.md b/content/blog/2017-11-30-emotive-adsense-project.md
new file mode 100644
index 0000000..fb4fcf2
--- /dev/null
+++ b/content/blog/2017-11-30-emotive-adsense-project.md
@@ -0,0 +1,45 @@
+---
+title: Emotive Adsense Project
+author: rhnvrm
+type: post
+date: 2017-11-30T19:59:36+00:00
+url: blog/2017/11/30/emotive-adsense-project/
+categories:
+ - projects
+
+---
+
+
+## Objective
+
+Use Facial Expressions to find segments of the video where engagement is above a threshold and display advertisements during those segments.
+
+
+
+## Domain Background
+
+Internet Video Traffic will account for over 80% of all consumer internet traffic in the coming years. According to Cisco, by 2021, every second, a million minutes or almost 17,000 hours of video content will be uploaded on the internet. The whole video market is changing how businesses, brands or government communicate. Even though the bandwidth and internet speeds have increased, the attention span of users is still limited. With increasing number and length of videos, a system which can recommend video segments where the customers are highly engaged with the content can be used to lure customers to watch advertisements is becoming essential. Media corporations relying on getting their message to users must now rely on alternate measures to combat the information overload. Suggesting users with engaging or interesting content is one of those methods. For example, companies like Netflix who are actively pushing their own original content, need to suggest users with engaging clips to lure them into watching more of their content.
+
+## Problem Statement
+
+Increasing bandwidth access of users with time has lead to the average youtube video length increasing from 2-5 minutes to 10-15 minutes within just a decade. A one hour video, which was once out of question for normal viewers, is now considered normal. Although, the time of videos has increased, any user can attest that most of the video content is just “fluff” or buffer content with the main content somewhere in the middle. Thereby, finding the most engaging part of a video will result in enabling platforms to suggest the most lucrative parts of the videos to place advertisements in.
+
+
+
+##
+
+## Solution Statement
+
+Our project solves this problem of segregating “fluff” from videos and recommending interesting parts of the video. By tagging videos with user reactions, and averaging over multiple users our system will be able to gain knowledge about the content in the video and hence, use the tagged content based on facial reactions of viewers, pick out segments inside a video to recommend to advertisers. The same segments can then be displayed as suggestions using autoplay, on the homepage, to lure viewers to click and view the whole video.
+
+Finally, due to the large scope of the project, we were able to complete only 2 separate parts of the project.
+
+
+
+**Part 1. Training the Model for Emotion Recognition**
+
+In this part, we trained a model (accuracy was very low due to limited GPU availability on our side) for Emotion Recognition.
+
+**Part 2. Prototype UI – Applying Knowledge Engineering**
+
+In this part, we developed a prototype UI which uses Affdex API for emotion recognition and displays advertisements when user engagement with video is above a chosen threshold.
\ No newline at end of file
diff --git a/content/blog/2017-12-19-what-thefuck-is-wrong-with.md b/content/blog/2017-12-19-what-thefuck-is-wrong-with.md
new file mode 100644
index 0000000..68127a9
--- /dev/null
+++ b/content/blog/2017-12-19-what-thefuck-is-wrong-with.md
@@ -0,0 +1,16 @@
+---
+title: What thefuck is wrong with…
+author: rhnvrm
+type: post
+date: 2017-12-19T14:35:43+00:00
+url: blog/2017/12/19/what-thefuck-is-wrong-with/
+client-modified:
+ - "1513694143"
+categories:
+ - uncategorized
+format: aside
+
+---
+**What thefuck is wrong with my zsh?**
+
+Well, turns out, the reason it took so much time for my zsh to startup, was because of this program called **thefuck**. Used `zsh -xv` to figure out what took so long and did a `dnf remove thefuck` and fixed it.
\ No newline at end of file
diff --git a/content/blog/2017-12-20-setting-up-latex-on-spacemacs.md b/content/blog/2017-12-20-setting-up-latex-on-spacemacs.md
new file mode 100644
index 0000000..b09a6cf
--- /dev/null
+++ b/content/blog/2017-12-20-setting-up-latex-on-spacemacs.md
@@ -0,0 +1,33 @@
+---
+title: Setting up LaTeX on Spacemacs
+author: rhnvrm
+type: post
+date: 2017-12-20T14:47:24+00:00
+url: blog/2017/12/20/setting-up-latex-on-spacemacs/
+categories:
+ - notes
+tags:
+ - emacs
+ - foss
+ - latex
+ - linux
+ - spacemacs
+ - vim
+
+---
+I have been using Vim for text editing and even Vim mode even in Sublime Text. Although, I wanted to use Org mode so I switched to Spacemacs with Evil mode that gives the best of both worlds. I had been using `TeXworks` and `TeXstudio` for editing and building LaTeX documents but now that I have Emacs, I wanted to try out the `pdf-tools` layer and `latex` layers so that all my work can be done from inside Spacemacs itself. Tomorrow, I even want to set up another tool that allows publishing to WordPress blogs through Emacs itself. Now that I have time to invest, I thought the best investment would be to invest it into saving more time in the future.
+
+One of the great features about Emacs in my opinion is how much of the information is self documented inside the editor and how little I had to search on my browser as I could just press / and find out what I wanted to do. For example, I wanted to change the font size by one point, and I could easily do it by pressing `/` in my `.spacemacs` file and type font and edit a single line followed by simple restart. All of this without even having to search on the internet. Combine Vim’s excellent editing and maneuverability with the `Org mode` and `auto-completion`, Spacemacs turns out to a be a champion for any person who types for a living or even as a hobby.
+
+The first step is to add the `latex` layer to the `.spacemacs` file which will automatically install everything required after pressing `SPC-f-e-R`. This, being a layer, will be automatically loaded on opening, say a tex file.
+
+Then, all that needs to be done is press, `SPC-m-b` to build and `SPC-m-v` to view.
+
+Although, by default, Emacs will open it in your default PDF viewer. Emacs also provides another layer, `pdf-tools`, briefly mentioned above, which allows rendering PDF files inside Emacs itself. Adding this layer to your config, you can add the following to your config file to set PDF tools to be your default PDF viewer inside Emacs.
+
+
+
+Similarly, we can also setup syncing between TeX and the PDF which I will cover sometime later when the need arises.
\ No newline at end of file
diff --git a/content/blog/2017-12-20-switching-to-spacemacs-based-on.md b/content/blog/2017-12-20-switching-to-spacemacs-based-on.md
new file mode 100644
index 0000000..afb880a
--- /dev/null
+++ b/content/blog/2017-12-20-switching-to-spacemacs-based-on.md
@@ -0,0 +1,18 @@
+---
+title: Switching to Spacemacs Based on…
+author: rhnvrm
+type: post
+date: 2017-12-20T11:51:35+00:00
+url: blog/2017/12/20/switching-to-spacemacs-based-on/
+client-modified:
+ - "1513770694"
+categories:
+ - uncategorized
+tags:
+ - dgplug
+format: aside
+
+---
+**Switching to Spacemacs**
+
+Based on mbuf (@shakthimaan)’s session in #dgplug about Reading and Writing habits, (https://dgplug.org/irclogs/2017/Logs-2017-12-18-13-23.txt) have decided to move to spacemacs from vim, just for Org mode. Let’s see how it goes!
\ No newline at end of file
diff --git a/content/blog/2017-12-21-deep-learning-through-the-lens-of-the-information-plane.md b/content/blog/2017-12-21-deep-learning-through-the-lens-of-the-information-plane.md
new file mode 100644
index 0000000..b53d20a
--- /dev/null
+++ b/content/blog/2017-12-21-deep-learning-through-the-lens-of-the-information-plane.md
@@ -0,0 +1,198 @@
+---
+title: Deep Learning Through the Lens of the Information Plane
+author: rhnvrm
+type: post
+date: 2017-12-21T14:31:58+00:00
+url: blog/2017/12/21/deep-learning-through-the-lens-of-the-information-plane/
+categories:
+ - projects
+tags:
+ - datascience
+ - deeplearning
+ - informationtheory
+ - math
+ - neuralnetwork
+ - python
+
+---
+The ridiculous effectiveness of Deep Learning has lead to research on tools that help to analyze these Deep Neural Network based “black boxes”. Recent research papers by the Information Theory community to analyze has rise to a new tool, The Information Plane, which can help analyze and answer various questions about these networks. This article, provides a brief overview of the concepts from information theory required to develop an understanding of the Information Plane, followed by a replication study of the implementation of the paper that introduces this theory with respect to Deep Neural Networks.
+
+## **1. Introduction**
+
+Information Theory has long been considered marginal to Statistical Learning theory and has usually not been studied by Machine Learning researchers. It is considered to be an integral part of Communication Engineering and is often known to be the theory of Data Compression and Error Correcting Codes. With increased compute power enabled through GPUs, a new interest in Deep Learning (LeCun et al.[1]) has re-emerged. Although, Deep Learning provides ridiculous effectiveness, there is pretty much no fundamental theory behind these machines and they are often criticized for being used as mysterious “black boxes”[2]. This has lead to major corporations like Intel investing in research that focuses on building an understating of why deep networks work the way they do and has resulted in the recent paper on “Opening the Black Box of Deep Neural Networks via Information Theory” by Ravid Schwartz-Ziv and Naftali Tishby [2] which studies these by analyzing their information-theoretic properties and tries to provide a framework to study them using the Information Plane which have been based upon the work done by Naftali Tishby earlier [3]. The theory provides tools, such as the Information Plane, that can be used to reason about what happens during deep learning, a study of what happens during Deep Neural Network (DNN) learning during training and some hints for how the results can be applied to improve the efficiency of deep learning.
+
+One of the observations from the paper [2] is that DNN training involves two distinct phases: First, the network trains to fully represent the input data and minimize the error in generalization and then, it learns to forget the irrelevant details by compressing the representation of the input.
+
+Another observation is a potential explanation for why transfer learning works when the top most layers are retrained for similar tasks, but I skip it for further work as it is beyond the scope of this current study, although it has been mentioned while discussing the Asymptotic Equipartition Property.
+
+From an engineering standpoint, the papers provide a very relevant theory which could help answer questions such as, if the trained model is optimal or not, if there exist any design principles for such machines, or if the layers or neurons represent anything and if the algorithms we use can be improved or not.
+
+The following paper contributes via providing an overview of the fundamentals of Information Theory required to study these papers, followed by a detailed summary of the work related to the Information Plane and Deep Learning and finally a replication study containing a re implementation study and its results and comparison with the results of the original authors as well as the critics of the paper. The goal of the paper was to dive into cutting edge research and implement the state of the art and verify the results of both the original authors \[2\] \[3\] as well as the critique [4] submitted to ICML 2018.
+
+## **2. Concepts from Information Theory**
+
+### **2.1 Markov Chain**
+
+A Markov process is a “memory-less” (also called “Markov Property”) stochastic process. A Markov chain is a type of Markov process containing multiple discrete states. That is being said, the conditional probability of future states of the process is only determined by the current state and does not depend on the past states. [5]
+
+### **2.2 KL Divergence**
+
+KL divergence measures how one probability distribution diverges from a second expected probability distribution . It is asymmetric. [5]
+
+
+
+ achieves the minimum zero when everywhere.
+
+### **2.3 Mutual Information**
+
+Mutual information measures the mutual dependence between two variables. It quantifies the “amount of information” obtained about one random variable through the other random variable. Mutual information is symmetric. [5]
+
+
+
+### **2.4 Data Processing Inequality**
+
+For any markov chain: , we would have [5]
+
+
+
+
+
+A deep neural network can be viewed as a Markov chain, and thus when we are moving down the layers of a DNN, the mutual information between the layer and the input can only decrease.
+
+### **2.5 Reparameterization Invariance**
+
+For two invertible functions , , the mutual information still holds:
+
+
+
+
+
+
+
+For example, if we shuffle the weights in one layer of DNN, it would not affect the mutual information between this layer and another.
+
+### **2.6 The Asymptotic Equipartition Property**
+
+This theorem is a simple consequence of the weak law of large numbers. It states that if a set of values is drawn independently from a random variable X distributed according to , then the joint probability satisfies [5]
+
+
+
+
+
+where is the entropy of the random variable .
+
+Although, this is out of bounds of the scope of this work, for the sake of completeness I would like to mention how the authors of [2] use this to argue that for a typical hypothesis class the size of is approximately . Considering an -partition, , on , the cardinality of the hypothis class, , can be written as and therefore we have,
+
+
+
+
+
+Then the input compression bound,
+
+
+
+
+
+becomes,
+
+
+
+
+
+The authors then further develop this to provide a general bound on learning by combining it with the Information Bottleneck theory [6].
+
+## **3. Information Theory of Deep Learning**
+
+### **3.1 DNN Layers as Markov Chain**
+
+In supervised learning, the training data contains sampled observations from the joint distribution of and . The input variable and weights of hidden layers are all high-dimensional random variable. The ground truth target and the predicted value are random variables of smaller dimensions in the classification settings. Moreover, we want to efficiently learn such representations from an empirical sample of the (unknown) joint distribution , in a way that provides good generalization.
+
+The structure of a deep neural network, which consists of the target label , input layer , hidden layers and the final prediction . (Image Source: Tishby 2015)[3]If we label the hidden layers of a DNN as as in Figure above, we can view each layer as one state of a Markov Chain: . According to DPI, we would have:
+
+
+
+A DNN is designed to learn how to describe to predict and eventually, to compress to only hold the information related to . Tishby describes this processing as “successive refinement of relevant information” [3].
+
+The DNN layers form a Markov chain of successive internal representations of the input layer . (Image Source: Schwartz-Ziv and Tishby 2017 [2])As long as these transformations on in about preserve information, we don’t really care which individual neurons within the layers encode which features of the input. This can be captured by finding the mutual information of with respect to and . Schwartz-Ziv and Tishby (2017) treat the whole layer, , as a single random variable, charachterized by and , the encoder and decoder distributions respectively, and use the Reparameterization Invariance given in [(2)][1] to argue that since layers related by invertible re-parameterization appear in the same point, each information path in the plane corresponds to many different DNN’s, with possibly very different architectures. [3]
+
+
+
+This is to say that after training, when the trained network, the new input passes through the layers which form a Markov Chain, to the predicted output . The information plane has been discussed further in Section [3][2].
+
+### **3.2 The Information Plane**
+
+
+
+Using the representation in Fig. [3][3], the encoder and decoder distributions; the encoder can be seen as a representation of , while the decoder translates the information in the current layer to the target output .
+
+The information can be interpreted and visualized as a plot between the encoder mutual information and the decoder mutual information ;
+
+The encoder vs decoder mutual information of DNN hidden layers of 50 experiments. Different layers are color-coded, with green being the layer right next to the input and the orange being the furthest. There are three snapshots, at the initial epoch, 400 epochs and 9000 epochs respectively. (Image source: Shwartz-Ziv and Tishby, 2017) [2])Each dot in Fig. [3][4]. marks the encoder/ decoder mutual information of one hidden layer of one network simulation (no regularization is applied; no weights decay, no dropout, etc.). They move up as expected because the knowledge about the true labels is increasing (accuracy increases). At the early stage, the hidden layers learn a lot about the input X, but later they start to compress to forget some information about the input. Tishby believes that “the most important part of learning is actually forgetting”. [7]
+
+Early on the points shoot up and to the right, as the hidden layers learn to retain more mutual information both with the input and also as needed to predict the output. But after a while, a phase shift occurs, and points move more slowly up and to the left.
+
+The evolution of the layers with the training epochs in the information plane, for different training samples. On the left – 5% of the data, middle – 45% of the data, and right – 85% of the data. The colors indicate the number of training epochs with Stochastic Gradient Descent. (Image source: Shwartz-Ziv and Tishby, 2017) [2])Schwartz-Ziv and Tishby name these two phases Empirical eRror Minimization (ERM) and the phase that follows as the Representation Compression Phase. Here the gradient means are much larger than their standard deviations, indicating small gradient stochasticity (high SNR). The increase in is what we expect to see from cross-entropy loss minimization. The second diffusion phase minimizes the mutual information – in other words, we’re discarding information in X that is irrelevant to the task at hand.
+
+A consequence of this is pointed out by Schwartz-Ziv and Tishby indicating that there is a huge number of different networks with essentially optimal performance, and attempts to interpret single weights or even single neurons in such networks can be meaningless due to the randomised nature of the final weights of the DNN. [2]
+
+## **4. Experimental Setup and Results**
+
+### **4.1. Experimental Setup**
+
+The experiments were done on a network with 7 fully connected hidden layers, and widths 12-10-7-5-4-3-2 neurons, similar to what had been done in the original paper. The network is trained using Stochiastic Gradient Descent and cross-entropy loss function, but no other explicit regularization. The activation functions are hyperbolic tangent in all layers but the final one, where a sigmoid function is used. The bin count was taken to be 24 for the mutual information calculation. Off the shelf python libraries such as Tensorflow[8], NumPy[9], ScikitLearn[9] were used for the re-implementation as described by the original paper.
+
+Variations were made to the activation function to Rectified Linear Unit (ReLu) and Sigmoidal to verify the results of a recent paper [4] which is under open review for ICLR 2018 under the same conditions.
+
+### **4.2. Results**
+
+Loss Function observed with a network having layers of 12-10-7-5-4-3-2 widths when trained with tanh as activation function. The X-Axis represents training losses and the Y-Axis represents stepsInformation Plane observed with a network having layers of 12-10-7-5-4-3-2 widths when trained with tanh as activation function. The X-Axis represents and the Y-Axis represents
+
+The results were plotted using the experimental setup and tanh as the activation function. It is important to note that it’s the lowest layer which appears in the top-right of this plot (maintains the most mutual information), and the top-most layer which appears in the bottom-left (has retained almost no mutual information before any training). So the information path being followed goes from the top-right corner to the bottom-left traveling down the slope.
+
+Early on the points shoot up and to the right, as the hidden layers learn to retain more mutual information both with the input and also as needed to predict the output. But after a while, a phase shift occurs, and points move more slowly up and to the left.
+
+Loss Function observed with a network having layers of 12-10-7-5-4-3-2 widths when trained with ReLu as activation function. The X-Axis on the left represents training losses and the Y-Axis represents steps. The X-Axis represents for the figure on the right and the Y-Axis represents Information Plane observed with a network having layers of 12-10-7-5-4-3-2 widths when trained with ReLu as activation function. The X-Axis on the left represents training losses and the Y-Axis represents steps. The X-Axis represents for the figure on the right and the Y-Axis represents Information Plane observed with a network having layers of 12-10-7-5-4-3-2 widths when trained with Sigmoid as activation function. The X-Axis on the left represents training losses and the Y-Axis represents steps. The X-Axis represents for the figure on the right and the Y-Axis represents Loss Function observed with a network having layers of 12-10-7-5-4-3-2 widths when trained with Sigmoid as activation function. The X-Axis on the left represents training losses and the Y-Axis represents steps. The X-Axis represents for the figure on the right and the Y-Axis represents
+
+### **4.3. Analysis**
+
+The results of using the hyperbolic tan function (tanh) as the choice for activation function corresponds with results obtained by Schwartz-Ziv and Tishby (2017) [2]. Although, the same can’t be said about the results obtained when ReLu or Sigmoid function was used as the activation function. The network seems to stabilize much faster when trained with ReLu but does not show any of the charachteristics mentioned by Schwartz-Ziv and Tishby (2017) such as compression and diffusion in the information plane. This is in line with [4], although the authors have commented in the open review [4] that they have used other strategies for binning during MI calculation which give correct results. The compression and diffusion phases can be clearly seen in Fig. [4][5]. The corresponding plot of the loss function also shows that the DNN actually learned the input variable with respect to the ground truth .
+
+## References
+
+[1] Y. LeCun, Y. Bengio, and G. E. Hinton, “Deep learning,” Nature, vol. 521, no. 7553, pp. 436–444, 2015. [Online]. Available: http://sci-hub.tw/10.1038/nature14539
+
+[2] R. Shwartz-Ziv and N. Tishby, “Opening the black box of deep neural networks via information,” CoRR, vol. abs/1703.00810, 2017. [Online]. Available: http://arxiv.org/abs/1703.00810
+
+[3] N. Tishby and N. Zaslavsky, “Deep learning and the information bottleneck principle,” CoRR, vol. abs/1503.02406, 2015. [Online]. Available: http://arxiv.org/abs/1503.02406
+
+[4] Anonymous, “On the information bottleneck theory of deep learning,” International Conference on Learning Representations, 2018. [Online]. Available: https://openreview.net/forum?id=ry WPG-A-
+
+[5] T. M. Cover and J. A. Thomas, Elements of Information Theory (Wiley Series in Telecommunications and Signal Processing). Wiley-Interscience, 2006.
+
+[6] N. Tishby, F. C. N. Pereira, and W. Bialek, “The information bottleneck method,” CoRR, vol. physics/0004057, 2000. [Online]. Available: http://arxiv.org/abs/physics/0004057
+
+[7] L.Weng. Anatomize deep learning with informa-tion theory. [Online]. Available: https://lilianweng.github.io/lillog/2017/09/28/anatomize-deep-learning-with-information-theory.html
+
+[8] M. Abadi, A. Agarwal, P. Barham, E. Brevdo, Z. Chen, C. Citro, G. S. Corrado, A. Davis, J. Dean, M. Devin, S. Ghemawat, I. Goodfellow, A. Harp, G. Irving, M. Isard, Y. Jia, R. Jozefowicz, L. Kaiser, M. Kudlur, J. Levenberg, D. Mané, R. Monga, S. Moore, D. Murray, C. Olah, M. Schuster, J. Shlens, B. Steiner, I. Sutskever, K. Talwar, P. Tucker, V. Vanhoucke, V. Vasudevan, F. Viégas, O. Vinyals, P. Warden, M. Wattenberg, M. Wicke, Y. Yu, and X. Zheng, “TensorFlow: Large-scale machine learning on heterogeneous systems,” 2015, software available from tensorflow.org. [Online]. Available: https://www.tensorflow.org/
+
+[9] E. Jones, T. Oliphant, P. Peterson et al., “SciPy: Open source scientific tools for Python,” 2001–, [Online; accessed ¡today¿]. [Online]. Available: http://www.scipy.org/
+
+[10] S. Prabh. Prof. shashi prabh homepage. [Online]. Available: https://sites.google.com/a/snu.edu.in/shashi-prabh/home
+
+[11] N. Wolchover. New theory cracks open the black box of deep learning — quanta magazine. Quanta Magazine. [On-line]. Available: https://www.quantamagazine.org/new-theory-cracks-
+
+open-the-black-box-of-deep-learning-20170921/
+
+[12] Machine learning subreddit. [Online]. Available: https://www.reddit.com/r/MachineLearning/
+
+This work has been undertaken in the Course Project component for the elective titled “Information Theory (Fall 2017)” [https://sites.google.com/a/snu.edu.in/shashi-prabh/teaching/information-theory-2017] at Shiv Nadar University under the guidance of Prof. Shashi Prabh
+
+
+
+
+
+ [1]: #RepInv
+ [2]: #ssecIP
+ [3]: #encdec
+ [4]: #infoplane
+ [5]: #FigTanhIP
\ No newline at end of file
diff --git a/content/blog/2017-12-21-setting-up-python-on-spacemacs-and-using-pyenv-to-use-python3.md b/content/blog/2017-12-21-setting-up-python-on-spacemacs-and-using-pyenv-to-use-python3.md
new file mode 100644
index 0000000..f2f1f17
--- /dev/null
+++ b/content/blog/2017-12-21-setting-up-python-on-spacemacs-and-using-pyenv-to-use-python3.md
@@ -0,0 +1,43 @@
+---
+title: Setting up Python on Spacemacs and using Pyenv to use Python3
+author: rhnvrm
+type: post
+date: 2017-12-21T12:55:34+00:00
+url: blog/2017/12/21/setting-up-python-on-spacemacs-and-using-pyenv-to-use-python3/
+categories:
+ - foss
+ - notes
+ - uncategorized
+tags:
+ - fedora
+ - python
+ - spacemacs
+
+---
+After diving into Spacemacs yesterday, I was able to setup LaTeX properly. Only SyncTeX is left to be setup although, right now I can live without it. After tweeting about it, I got a reply about setting up Python on Spacemacs. I had installed the python layer but had not tested it. There was no hitch, although I faced a small issue with having python2 as well as python3 on my system. Emacs recognized only python2. I ended up finding about pyvenv which I have discussed below. Also, am optimistic that I will be able to setup Pipenv as well through pipenv.el that is available on GitHub by tomorrow. Also, have commited my .spacemacs file to my dotfiles repository on github.
+
+Getting started with the setup along with the basic packages etc. was easy by just adding the python layer into the `.spacemacs` file. Then, the only thing need to be done was install, by pressing `SPC-f-e-R`. I then tried to run a python interpreter in a new buffer by, going to the menu `SPC-SPC-` and typing `run-python.` After the `ipython` shell worked out fine, I decided to run a python file by entering one. Without any hitch, the python mode loaded and I could press `SPC-m-c-c` to run the file.
+
+The problem I mentioned above about the python versions came into my view when I ran a simple print function, which gave an error as I did not have any shebang on top of the file. This made me realize a potential problem in the future as Python development heavily depends upon virtual environments. Thankfully, the python layer had already added pyvenv and pyenv. Although, pyenv only listed one `system` version, and that too it was of python2. So to solve this, I ran the following:
+
+
+
+
+
+The \`-p\` flag is documented in the virtualenv docs as:
+
+> The Python interpreter to use, e.g., –python=python2.5 will use the python2.5 interpreter to create the new environment. The default is the interpreter that virtualenv was installed with (like <span class="pre">/usr/bin/python</span>)
+
+Afterwards, it was easy to change the environment inside emacs using `SPC-m-v-s` and choose `venv3` for using python3 instead of python2. Similarly, `-V` can be used instead of `-v` to set virtualenvs using directories.
+
+I’m looking forward to setting up the [Pipenv.el][1] to be able to use [pipenv][2] as well.
+
+**References:**
+
+ *
+ *
+
+ [1]: https://github.com/pwalsh/pipenv.el
+ [2]: http://pipenv.readthedocs.io/en/latest/
\ No newline at end of file
diff --git a/content/blog/2018-02-23-featured-on-googles-instagram-instagram.md b/content/blog/2018-02-23-featured-on-googles-instagram-instagram.md
new file mode 100644
index 0000000..37e022f
--- /dev/null
+++ b/content/blog/2018-02-23-featured-on-googles-instagram-instagram.md
@@ -0,0 +1,93 @@
+---
+title: Featured on Google’s Instagram
+author: rhnvrm
+type: post
+date: 2018-02-23T15:07:54+00:00
+url: blog/2018/02/23/featured-on-googles-instagram-instagram/
+client-modified:
+ - "1521385675"
+categories:
+ - misc
+ - projects
+ - uncategorized
+format: aside
+
+---
+Featured on Google’s Instagram
+
+
+
+
\ No newline at end of file
diff --git a/content/blog/2018-03-18-extract-filenames-without-their-extensions.md b/content/blog/2018-03-18-extract-filenames-without-their-extensions.md
new file mode 100644
index 0000000..ca9188f
--- /dev/null
+++ b/content/blog/2018-03-18-extract-filenames-without-their-extensions.md
@@ -0,0 +1,19 @@
+---
+title: Extract filenames without their extensions…
+author: rhnvrm
+type: post
+date: 2018-03-18T15:03:10+00:00
+url: blog/2018/03/18/extract-filenames-without-their-extensions/
+client-modified:
+ - "1521385389"
+categories:
+ - tutorials
+ - uncategorized
+tags:
+ - linux
+format: aside
+
+---
+Extract filenames without their extensions and put it in the clipboard
+
+
ls -C | awk -F"." '{print $1}' | xclip -selection c
\ No newline at end of file
diff --git a/content/blog/2018-03-20-today-i-integrated-the-wordpress.md b/content/blog/2018-03-20-today-i-integrated-the-wordpress.md
new file mode 100644
index 0000000..c55dd89
--- /dev/null
+++ b/content/blog/2018-03-20-today-i-integrated-the-wordpress.md
@@ -0,0 +1,14 @@
+---
+title: Today I integrated the WordPress…
+author: rhnvrm
+type: post
+date: 2018-03-20T18:01:32+00:00
+url: blog/2018/03/20/today-i-integrated-the-wordpress/
+client-modified:
+ - "1521568892"
+categories:
+ - uncategorized
+format: aside
+
+---
+Today I integrated the WordPress API into my Homepage to display my projects. It now uses an Ajax call to fetch the latest posts in the Project category. Also, I removed the font-awesome icons which were messing up the profile links.
\ No newline at end of file
diff --git a/content/blog/2018-05-11-genie-the-voice-enabled-coding-companion-winner-dell-intern-hackathon.md b/content/blog/2018-05-11-genie-the-voice-enabled-coding-companion-winner-dell-intern-hackathon.md
new file mode 100644
index 0000000..b715f16
--- /dev/null
+++ b/content/blog/2018-05-11-genie-the-voice-enabled-coding-companion-winner-dell-intern-hackathon.md
@@ -0,0 +1,18 @@
+---
+title: Genie – The Voice Enabled Coding Companion – Winner Dell Intern Hackathon
+author: Rohan Verma
+type: post
+date: 2018-05-11T14:27:21+00:00
+url: blog/2018/05/11/genie-the-voice-enabled-coding-companion-winner-dell-intern-hackathon/
+categories:
+ - projects
+tags:
+ - alexa
+ - hackathon
+ - productivity
+ - python
+
+---
+
+
+Genie is a Voice Assistant made up of three agents who talk to you and help you automate software engineering tasks. Watch the video to understand what it can do for you.
\ No newline at end of file
diff --git a/content/blog/2018-05-11-my-personal-opinion-about-learning.md b/content/blog/2018-05-11-my-personal-opinion-about-learning.md
new file mode 100644
index 0000000..5df02bb
--- /dev/null
+++ b/content/blog/2018-05-11-my-personal-opinion-about-learning.md
@@ -0,0 +1,18 @@
+---
+title: My personal opinion about learning frameworks
+author: Rohan Verma
+type: post
+date: 2018-05-11T14:19:01+00:00
+url: blog/2018/05/11/my-personal-opinion-about-learning/
+client-modified:
+ - "1526048340"
+categories:
+ - uncategorized
+format: aside
+
+---
+My personal opinion about learning specific topics and frameworks is that it is not required to be done. In fact, it is only due to our education that we end up learning frameworks in the “learn first – then apply” kind of way. I would suggest trying a different approach.
+
+Decide on what you want to automate. What I mean by this is think of your day to day activities that you do online which you can automate. After you have found a problem (you can also try to solve others problems), sit down and list down what tools you think might help you to solve said problem. It could be a simple python script. After you have written the script, think of how you can make it a product by having a User Interface. A simple web interface can be created using Flask that runs the script you wrote on the press of a button. Finally, you will want to deliver this product to users, for which you can use Heroku/Digital Ocean/Openshift etc.
+
+In this way, you will always be motivated to find the solution and not waste much time in reading through things that will be essentially off-topic to you.
\ No newline at end of file
diff --git a/content/blog/2018-05-16-reviving-an-old-samsung-n150-netbook-and-making-it-a-solid-dev-environment.md b/content/blog/2018-05-16-reviving-an-old-samsung-n150-netbook-and-making-it-a-solid-dev-environment.md
new file mode 100644
index 0000000..365537c
--- /dev/null
+++ b/content/blog/2018-05-16-reviving-an-old-samsung-n150-netbook-and-making-it-a-solid-dev-environment.md
@@ -0,0 +1,56 @@
+---
+title: Reviving an old Samsung N150 Netbook and making it a solid Dev Environment
+author: Rohan Verma
+type: post
+date: 2018-05-16T14:51:23+00:00
+url: blog/2018/05/16/reviving-an-old-samsung-n150-netbook-and-making-it-a-solid-dev-environment/
+categories:
+ - foss
+ - notes
+ - xfce
+tags:
+ - archlinux
+ - foss
+ - gnu
+ - linux
+ - productivity
+ - xfce
+
+---
+I had an old Samsung N150 netbook lying around in my parent’s house. It was an amazing netbook and I remember fondly using it when my parents were not using it to browse the internet and sometimes even use it for school work. It came with Windows Vista if I recall correctly but I had installed Windows XP service pack 3 on it because as we know, Vista sucked! Well, the netbook was very solid, it even ran small games such as Fifa Manager etc and came with a solid keyboard, ethernet and VGA as well for connecting to a big screen. Although, its current state is pretty dismal with Avast Antivirus beeping every other second with a “Threat has been detected” alert as it is riddled with loads of russian malware.
+
+After thinking a lot, I decided to install Arch linux using Anarchy Linux as I always wanted to have an Arch machine. I have only ever used it before on my previous laptop but had again reverted to Fedora on it a few days later as I could not upgrade that often on University internet.
+
+The first step was to download Anarchy from https://anarchy-linux.org/download/
+
+> ## Anarchy Linux is a distribution aimed at bringing the Linux revolution to the world. We believe that Linux is the way of the future for desktop computing and provide you with a platform to install a custom Arch based operating system just the way you like. Anarchy Linux is intended for both novice and advanced users alike.
+
+To write to the USB drive, I used:
+
+`sudo dd if=anarchy-1.0.0-x86_64.iso of=/dev/sdb1 bs=4M && sync`
+
+The boot sequence worked properly and opened the Anarchy boot screen. I selected the option to start the live environment to start the installer. The installer however failed to start the GUI installer and instead started the text based installer. However, the experience in my opinion was much better than most GUI installers I have used like Anaconda for Fedora. The only thing that comes to mind is that one should connect to the wifi first before starting the installer using wifi-menu. Otherwise package installation will probably be something that would have to be done after booting for the first time.
+
+My first attempt failed, I had selected the option to download a few custom packages like text editors but their download failed for some reason and the whole process had to be restarted. The download of around 700 MB was wasted along with 1 hour. In my second attempt I went with just the default packages and the download size came to be around 396 MB.
+
+The problem, I figured, was due to a “improperly signed by the maintainer” (https://plus.google.com/108897040723051595529/posts/M3REzAKNWCf) on the numix circle package. I could not find the solution, but I tried to disable the sign checking by setting SigLevel to Never from Required in the pacman.conf options. This did not work and then I decided that it might be more suitable to boot into the OS first then try to solve the issue later. So I decided to skip installation of the DE as the failiure was happening with that. But even this did not work out.
+
+What I figured was happening was nothing but the Anarchy installer failing to pacstrap as it did not retry the downloads which timedout.
+
+None of this worked so I decided to do a manual install using Arch Linux ISO, as I had used that before successfully. I also knew that pacstrap retried the downloads instead of giving an error.
+
+The steps I followed are given in Arch Wiki (https://wiki.archlinux.org/index.php/installation_guide)
+
+We have to install the sudo package. It allows using
+
+`pacman -S sudo`
+
+Then run visudo command and add your user to the sudoers.
+
+`rhnvrm ALL=(ALL) ALL`
+
+The next step was to install XFCE4 and XFCE4 Goodies.
+
+`pacman -S xfce4 xfce4-goodies`
+
+After this, I started to set up the machine according to my liking.
\ No newline at end of file
diff --git a/content/blog/2018-06-07-emacs-starts-a-bit-slow.md b/content/blog/2018-06-07-emacs-starts-a-bit-slow.md
new file mode 100644
index 0000000..6f3bc08
--- /dev/null
+++ b/content/blog/2018-06-07-emacs-starts-a-bit-slow.md
@@ -0,0 +1,16 @@
+---
+title: Emacs starts a bit slow…
+author: Rohan Verma
+type: post
+date: 2018-06-07T10:11:52+00:00
+url: blog/2018/06/07/emacs-starts-a-bit-slow/
+client-modified:
+ - "1528366312"
+categories:
+ - uncategorized
+format: aside
+
+---
+Emacs starts a bit slow but it can be started as a daemon
+
+
emacsclient -c -n -e '(switch-to-buffer nil)'
\ No newline at end of file
diff --git a/content/blog/2018-07-30-functional-options-for-testing-without-mocks-in-golang.md b/content/blog/2018-07-30-functional-options-for-testing-without-mocks-in-golang.md
new file mode 100644
index 0000000..47e076d
--- /dev/null
+++ b/content/blog/2018-07-30-functional-options-for-testing-without-mocks-in-golang.md
@@ -0,0 +1,101 @@
+---
+title: Functional Options for testing without mocks in Golang
+author: Rohan Verma
+type: post
+date: 2018-07-30T16:55:48+00:00
+url: blog/2018/07/30/functional-options-for-testing-without-mocks-in-golang/
+categories:
+ - notes
+tags:
+ - api
+ - golang
+ - notes
+
+---
+Suppose you have a HTTP request to be sent but don’t care about the result or errors. This request is sent through a function which is usually called inside a goroutine and is not in any way a core aspect of your main logic. The only important part is forming the actual request and the payload. When you wrote this function, you did not write tests as it would be a pain to make the function return something and check it. Now that the core component is completed, you want to test that the request formed is actually in fact created properly and abides by a small set of rules expected by the reader of the payload packet.
+
+Usually, structs are created with Option structs which hold parameters which are used inside New() constructors. These allow reducing the configurations down to initializing one config struct which can be set by the caller. Although, it is useful for the API creator, it can become cumbersome for the API user. As pointed out by [Dave Cheney][1], it obfuscates the API and causes problems with defaults.
+
+Another way is to use Functional Options, for example
+
+
+ type Server struct {
+ logger *logrus.Logger // optional
+ store databaste.Store // required
+ }
+
+ type ServerOption func(Server) Server
+
+ func WithLogger(logger *logrus.Logger) ServerOption {
+ return func(s Server) Server {
+ s.logger = logger
+ return s
+ }
+ }
+
+ func NewServer(store database.Store, options ...ServerOption) *Server {
+ s := Server{store: store}
+ for _, option := range options {
+ s = option(s)
+ }
+ return &s
+ }
+
+ func main() {
+ myServer := NewServer(myStore, WithLogger(myLogger))
+ }
+
+
+In the above example, we can set the logger without having to depend on config structs and obfuscating the API.
+
+Now that we have potentially solved configuration issues, we can move on to testing. To avoid writing mock functions, we can inject a function that actually performs the request. This way, the default method will be to use the actual implementation but the test can inject a function which simply returns the data we want to check in a way that would be easier for us to test with.
+
+
+// app.go
+// WithRequestSender sets the RequestSender for MyStruct.
+func WithRequestSender(fn func([]byte, *MyStruct)) Option {
+ return func(f *MyStruct) {
+ f.RequestSender = fn
+ }
+}
+
+// app_Test.go
+func TestMyStruct_save(t *testing.T) {
+ var result string
+
+ getResult := func(s []byte, p *MyStruct) {
+ result = string(s)
+ }
+ p := New(
+ WithLogger(log.New(os.Stdout, "TEST: ", log.Ldate|log.Ltime|log.Lshortfile)),
+ WithQueueSize(1000),
+ WithRequestSender(getResult),
+ )
+
+ Convey("Given some Content is created with some initial values", t, func() {
+ s := Content{
+ Token: 123,
+ }
+ Convey("When the struct is inserted into the queue and save is called", func() {
+ q := *p.GetFromQueue()
+ q <- s
+ p.save()
+ Convey("Then the result created by struct to be sent to endpoint", func() {
+ Convey("The result should begin with [", func() {
+ So(result[0], ShouldEqual, '[')
+ })
+ Convey("The result should end with ]", func() {
+ So(result[len(result)-1], ShouldEqual, ']')
+ })
+ Convey("The result should contain statement", func() {
+ So(result, ShouldContainSubstring, string(MyStmt))
+ })
+ })
+ })
+ })
+}
+
+
+The above way, enables us to check data that might be coming to us in some convoluted way without ever having to write complicated unreadable code or having to modify much of the actual implementation.
+
+ [1]: https://dave.cheney.net/2014/10/17/functional-options-for-friendly-apis
\ No newline at end of file
diff --git a/content/blog/2018-08-01-rewriting-lyric-api-in-golang.md b/content/blog/2018-08-01-rewriting-lyric-api-in-golang.md
new file mode 100644
index 0000000..5b85fab
--- /dev/null
+++ b/content/blog/2018-08-01-rewriting-lyric-api-in-golang.md
@@ -0,0 +1,31 @@
+---
+title: Rewriting Lyric API in Golang
+author: Rohan Verma
+type: post
+date: 2018-08-01T19:10:39+00:00
+url: blog/2018/08/01/rewriting-lyric-api-in-golang/
+categories:
+ - notes
+tags:
+ - golang
+ - js
+ - lyrics
+ - music
+ - node
+ - spotify
+
+---
+I had originally written a [Lyric API][1] as a hobby project way back using Node. I published it on github as a combination of API server hosted on [heroku][2] along with a library hosted on [NPM][3]. It still gets 50 downloads a week and the hosted [heroku API server][2] is actually used by many people even though it offers little to no functionality. I was recently looking at [wtf dashboard][4] and even contributed a [small patch][5] to it. [wtf][4] is written in Go and I am using it daily. I want to build a widget for Spotify on the dashboard. So I thought having lyrics was going to be very useful for this widget as I could display the current playing song on the widget and below it, the lyrics.
+
+A Go API for connecting with the Spotify Web API is already available but for getting the lyrics, I decided that since [Lyric API][1] I had written in Node was so small that I could essentially rewrite it in golang in less than a day.
+
+Voila! [Lyrics API Go][6] is now available with two providers at the moment (more than the what was initially in the Node project). I plan to add Genius as another provider soon.
+
+After that, the major work left would be to write a Current Song Fetcher using the Spotify Web API and based on the artist and song name, calling [Lyrics API Go][6] to fetch the lyrics and write the data to bytes and display it on the widget.
+
+ [1]: https://github.com/rhnvrm/lyric-api
+ [2]: https://lyric-api.herokuapp.com/api/
+ [3]: https://www.npmjs.com/package/lyric-get
+ [4]: https://github.com/senorprogrammer/wtf
+ [5]: https://github.com/senorprogrammer/wtf/pull/250
+ [6]: https://github.com/rhnvrm/lyric-api-go
\ No newline at end of file
diff --git a/content/blog/2018-08-20-automate-fast-download-of-a-large-files-through-ftp.md b/content/blog/2018-08-20-automate-fast-download-of-a-large-files-through-ftp.md
new file mode 100644
index 0000000..458e6ad
--- /dev/null
+++ b/content/blog/2018-08-20-automate-fast-download-of-a-large-files-through-ftp.md
@@ -0,0 +1,14 @@
+---
+title: Automate fast download of a large files through FTP
+author: Rohan Verma
+type: post
+date: 2018-08-20T06:27:08+00:00
+url: blog/2018/08/20/automate-fast-download-of-a-large-files-through-ftp/
+categories:
+ - notes
+tags:
+ - linux
+ - productivity
+
+---
+`lftp -e 'set net:timeout 10; pget -n 10 BigFile.zip; bye' -u UserName,PassWord ftp://BigFiles.com`
\ No newline at end of file
diff --git a/content/blog/2018-09-25-whistle-project-winner-ethindia-2018-hackathon.md b/content/blog/2018-09-25-whistle-project-winner-ethindia-2018-hackathon.md
new file mode 100644
index 0000000..fa80036
--- /dev/null
+++ b/content/blog/2018-09-25-whistle-project-winner-ethindia-2018-hackathon.md
@@ -0,0 +1,49 @@
+---
+title: Whistle Project – Winner EthIndia 2018 Hackathon
+author: Rohan Verma
+type: post
+date: 2018-09-25T10:45:25+00:00
+url: blog/2018/09/25/whistle-project-winner-ethindia-2018-hackathon/
+categories:
+ - projects
+tags:
+ - blockchain
+ - ethereum
+ - hackathon
+
+---
+
+
+
+
+
Demo Video
+
+Recently I took part in EthIndia Hackathon that took place in Bengaluru. This time I was participating without a team after a long time and made a team on the day of the event. All three of us (Ronak, Ayush and I) had a different idea of what we should work on but we finally came to a consensus on an idea that I had got from my current workplace’s CTO (Kailash Nadh). He had discussed a problem statement where he wanted to distribute asset holding information of people who have demised to their family members. This is a common task called the Dead Mans Switch which has been covered in a lot of movies as well as various experimental ideas. This was a big problem to solve, not only in size but also in the number of question marks it raises. After a lot of discussion with various mentors from the Ethereum community we decided and implemented upon the following idea by reducing the scope (instead of covering all assets, stick to only sending videos through IPFS) and deciding to skip the big issues like (missed heartbeats)
+
+Whistle – A platform to empower Whistleblowers and those who live under constant fear of death. Using smart contracts and the NuCypher proxy re-encryption MockNet we store the re-encrypted ipfs hash of the recorded video on the smart contract which can be interacted with using our heartbeat function interface which resets the decryption timer to a future date. In case a heartbeat is missed, the contract triggers emails containing the decrypted ipfs hash containing the video which can be streamed by anyone else.
+
+The best part about the event was the mentorship which guided us throughout the duration of the hackathon. We learnt that any good product, needs a few use cases which it is trying to solve and it should solve those perfectly. Based on those lines, we did a bit of research and found a bit more about this issue. Recently, Latifa Al Maktoum, a woman belonging to the royal family of Dubai, ran away and came to India as she was being tortured and drugged. She released a video on youtube, where she tells her viewers that if they are watching this, she might already be dead!
+
+
+
+
The full video
+
+Using a unique combination of heartbeat transactions and the NuCypher MockNet, we can enable them to allow decryption of the video only after their demise. We also integrated a small platform on top, through which whistleblowers can assign receipients such as news agencies. Then the recipients stored on the contract can be sent emails with the link of the data stored on IPFS once the video’s hash stored on the contract is decrypted using our method. A few other examples are people who may be related to influential families or groups, ex-members of cults, people stuck in legal loopholes, or someone who is just afraid that they may die before publishing their findings, such as a whistleblower. In India, there are multitudes of cases, one such example is the Vyapam scam where “[more than 40 people associated with the scam have died since the story broke in 2013][1]” many of whom were critical witnesses and whistleblowers whose testimony was lost due to their murder. Our platform, Whistle, hence enables users of our application, to anonymously, store information until their demise.
+
+We needed to define our users to allow us to reduce the scope of the product. Targeting people under immediate threats who may not be able to trust any centralized organization which could censor their message. It is important for them to although, keep their message hidden until their demise, as then they can leverage this as a position. Through using our platform, the individual could essentially, release all the information even after their demise (checked by not sending a heartbeat message) by sending an email with the files stored on IPFS to all major news outlets. By limiting ourselves to whistleblowers, we were able to solidify our projects appeal. We decided that we wanted to empower such individuals and whistle blowers who live under a constant fear of death, to utilize the decentralized blockchain and store encrypted data on the blockchain.
+
+The most critical technology of our platform is the NuCypher network. Through this network, we are able to perform proxy reencryption and run a read only function written in our contract to detect the “is alive” criteria. The smart contract stores all the details required to securely decrypt such as the policy_id which is required by the NuCypher mocknet, along with a function that can be run by the mocknet to detect if the state on the chain is in agreement with our condition, that the last heartbeat should have been before the current time. (We update this whenever the user checks in with a time in the future).
+We ran into a multitude of problems like understanding and going through the codebase of NuCypher Mocknet and the demos they shared. It was a challenging task but we are proud to be able to have implemented the architecture that allowed us to perform off the chain decryption based on a condition stored on chain. Being able to implement the heartbeat contract and the flow of required to perform the decryption only after the condition was met was interesting. Finally, interacting with smart contract deployed on private chain to make a consolidated product was in itself a challenge. We originally tried to use the embark platform and wanted to make a [_Status.im_][2] bot that would query for the heartbeat transaction directly through a message in the chat. But due to a multitude of reasons, such as deprecation of the _/debug_ console command we are not able to go through with this.
+
+You can go through the following repositories to understand a bit more about the project:
+https://github.com/siftbox/File-Encrypt-IPFS-Solidity
+https://github.com/siftbox/File-Encrypt-IPFS-Platform
+https://github.com/CapsLockHacks/nucypher-mocknet-api
+https://github.com/Ronak-59/Alive.Network-Frontend/
+
+
+
+
+
+ [1]: https://www.firstpost.com/india/mystery-of-vyapam-scam-the-death-toll-keeps-increasing-in-indias-killer-scandal-2316888.html
+ [2]: http://Status.im
\ No newline at end of file
diff --git a/content/blog/2018-10-14-convolutional-neural-network-basics.md b/content/blog/2018-10-14-convolutional-neural-network-basics.md
new file mode 100644
index 0000000..cbd7d47
--- /dev/null
+++ b/content/blog/2018-10-14-convolutional-neural-network-basics.md
@@ -0,0 +1,87 @@
+---
+title: Convolutional Neural Network Basics
+author: Rohan Verma
+type: post
+date: 2018-10-14T15:54:42+00:00
+url: blog/2018/10/14/convolutional-neural-network-basics/
+categories:
+ - notes
+tags:
+ - datascience
+ - deeplearning
+ - neuralnetwork
+
+---
+## Convolution
+
+It is a matrix operation in which we add each element with local neighbors with respect to the weight of the kernels. Mathematically, it is the element-wise product of each element of the kernel with the image-piece followed by a sum. These filters can be used to detect various things like edges etc.
+
+![][1]
+
+## Filters/Kernels
+
+Filters/Kernels capture features in their receptive field using matrices containing values (weights) with convolution. A higher result of this operation implies that the feature captured by the kernel is in the image, and a lower score implies the opposite.
+
+## Epochs
+
+A single epoch is a combination of one forward pass and a one backward pass through the network and the whole dataset has been covered. A single epoch is usually not enough and leads to underfitting. Too many epochs, would lead to a longer training time and also overfit to the data.
+
+## 1×1 Convolutions
+
+1×1 Convolutions are used to change the dimensionality of the the previous layer. It will take in x channels and not look at any neighbors and take the sum and change it into y channels. This is very useful, and for example, can be used after max pooling to reduce the z-dimensionality.
+
+## 3×3 Convolution
+
+![][2]![][3]
+
+3×3 Convolutions are composed of 9 parameters. We tend to use them because they can be combined to have the same effect as higher area convolutions. Back to back application of 3×3 convolution would have the same effective receptive field as would a single 5×5 convolution and would also be faster as this is what has been optimized by modern day GPUs and TPUs.
+
+## Feature Maps
+
+Feature maps, also called activation maps, are the final output results of the activation function (such as ReLU or Sigmoid) applied on the values of a given filter or kernel. A higher activation corresponds to higher likelihood that a feature was found by the kernel in the image and a lower would imply it not being in the receptive field.
+
+## Feature Engineering
+
+In older concepts, people used to manually extract local features also called interest points. This used to utilize various algorithms which used to extract points in the image and would then be used to match similar ones in other images. For example,
+
+
+
+The above image shows ORB interest points and then matches these points for another image taken from another angle.
+
+Reference: [Image Feature Extraction and Matching Tutorial – Kaggle][4]
+
+## Activation Function
+
+The purpose of the activation function is to find a function that can take the input signal and squish them between $-1$ and $1$, and get an output signal.
+
+### Hyperbolic Tan function
+
+
+
+![][5]
+
+### Sigmoid
+
+
+
+![][6]
+
+### Rectified Linear Units
+
+
+
+There are other modifications of ReLU like Leaky ReLU and randomized leaky ReLU.
+
+![][7]
+
+## Receptive Fields
+
+Receptive Field of a kernel is the region of the image which affects its result. For layers directly connected to the image, this may be a very small region of 3×3 but for higher layers this region increases as they combine multiple receptive fields below them.
+
+ [1]: https://cdn-images-1.medium.com/max/1600/0*dRD6PhKOnnCIhz15.jpg
+ [2]: https://cdn-images-1.medium.com/max/600/1*1okwhewf5KCtIPaFib4XaA.gif
+ [3]: https://www.saama.com/wp-content/uploads/2017/12/01.jpg
+ [4]: https://www.kaggle.com/wesamelshamy/tutorial-image-feature-extraction-and-matching
+ [5]: https://cdn-images-1.medium.com/max/800/0*VHhGS4NwibecRjIa.png
+ [6]: https://cdn-images-1.medium.com/max/800/0*WYB0K0zk1MiIB6xp.png
+ [7]: https://cdn-images-1.medium.com/max/800/0*qtfLu9rmtNullrVC.png
\ No newline at end of file
diff --git a/content/blog/2018-11-19-streaming-audio-from-linux-to-android-using-pulseaudio-over-lan.md b/content/blog/2018-11-19-streaming-audio-from-linux-to-android-using-pulseaudio-over-lan.md
new file mode 100644
index 0000000..2a9b71c
--- /dev/null
+++ b/content/blog/2018-11-19-streaming-audio-from-linux-to-android-using-pulseaudio-over-lan.md
@@ -0,0 +1,32 @@
+---
+title: Streaming audio from Linux to Android using PulseAudio over LAN
+author: Rohan Verma
+type: post
+date: 2018-11-19T19:50:35+00:00
+url: blog/2018/11/19/streaming-audio-from-linux-to-android-using-pulseaudio-over-lan/
+categories:
+ - notes
+tags:
+ - android
+ - linux
+
+---
+Suppose you are in a situation where you want to watch a movie on your TV or monitor but don’t want to use speakers. Maybe you are looking to listen to an audio book stored on your laptop but don’t want to transfer it to your phone. Or you just want to buy an audio jack splitter. Look no further, PulseAudio to the rescue.
+
+
+PulseAudio provides streaming via SimpleProtocol on TCP via a simple command. All you need to do is find the source and start streaming it.
+
+You can find the source by running this command:
+
+
+
+Next, you will need to download PulseDroid, the apk can be found in the Github repository or you can use the following command to download it using wget:
+
+
+
+Just enter the IP address of your machine (you can find it by running ifconfig) and the port you chose and press the Start button.
\ No newline at end of file
diff --git a/content/blog/2019-01-08-setting-so_reuseport-and-similar-socket-options-in-go-1-11.md b/content/blog/2019-01-08-setting-so_reuseport-and-similar-socket-options-in-go-1-11.md
new file mode 100644
index 0000000..d2f3dc9
--- /dev/null
+++ b/content/blog/2019-01-08-setting-so_reuseport-and-similar-socket-options-in-go-1-11.md
@@ -0,0 +1,85 @@
+---
+title: Setting SO_REUSEPORT and similar socket options in Go 1.11
+author: Rohan Verma
+type: post
+date: 2019-01-08T12:38:24+00:00
+url: blog/2019/01/08/setting-so_reuseport-and-similar-socket-options-in-go-1-11/
+categories:
+ - notes
+tags:
+ - golang
+ - networking
+
+---
+Go recently introduced a heavily requested feature that allows programmers to set socket options before accepting and creating connections. You can find a mention of this in [Go 1.11 Release Notes][1]. Although, not many have written on this and implementing this is a bit confusing due to a change in the way one has to implement this. So I decided to share this with others who might be interested in using this feature.
+
+By reading how support for this has been added, we can get an idea about how to go about implementing this. The release notes mention that a new [ListenConfig][2] type has been added. This type contains a Control function which needs to be implemented. This Control function should contain code to set the Socket Option.
+
+Let us see how one would start a UDP reader that performs a callback on receiving a packet.
+
+
type UDPOptions struct {
+ Address string
+ MinPacketLength int
+ MaxPacketLength int
+}
+
+func StartUDPReader(opt UDPOptions, callback func([]byte)) {
+ addr, err := net.ResolveUDPAddr("udp", opt.Address)
+ if err != nil {
+ h.sysLog.Fatalf("address resoultion failed: %v", err)
+ }
+
+ conn, err := net.ListenUDP("udp", addr)
+ if err != nil {
+ h.sysLog.Fatalf("listen failed: %v", err)
+ }
+
+ packet := make([]byte, opt.MaxPacketLength)
+ for {
+ n, _, err := conn.ReadFromUDP(packet)
+ if err == nil && n >= opt.MinPacketLength && n <= opt.MaxPacketLength {
+ callback(packet)
+ }
+ }
+}
+
+This is how the reader would look after adding SO_REUSEPORT using the new way.
+
+
+
+Using this approach we can reuse the port and have zero downtime, between restarts by starting the new reader before stopping the currently running reader.
+
+ [1]: https://golang.org/doc/go1.11#net
+ [2]: https://golang.org/pkg/net/#ListenConfig
\ No newline at end of file
diff --git a/content/blog/2019-02-23-.md b/content/blog/2019-02-23-.md
new file mode 100644
index 0000000..44f1a84
--- /dev/null
+++ b/content/blog/2019-02-23-.md
@@ -0,0 +1,11 @@
+---
+title: t
+author: rhnvrm
+type: post
+date: -001-11-30T00:00:00+00:00
+draft: true
+url: blog/?p=459
+categories:
+ - notes
+
+---
diff --git a/content/blog/2019-03-17-a-review-of-the-siempo-launcher.md b/content/blog/2019-03-17-a-review-of-the-siempo-launcher.md
new file mode 100644
index 0000000..7a450f3
--- /dev/null
+++ b/content/blog/2019-03-17-a-review-of-the-siempo-launcher.md
@@ -0,0 +1,70 @@
+---
+title: Three months of self inflicted digital pain and how it changed my habits – A review of Siempo Launcher
+author: rhnvrm
+type: post
+date: 2019-03-17T20:13:13+00:00
+excerpt: "Last December, I decided to start an experiment and adopt a new launcher called Siempo apart from the OnePlus and Nova launcher that I'm used to since I started using Android. After three months, even though I have stopped using it, I have observed some changes and would like to share it with my readers who are also interested in digital well being. There has been a recent surge in people starting to restart blogging even though on closed platforms like Medium, but I guess it at least that is searchable outside from search engines, and hope to see more self hosted blogs following Hackernoon's recent split. Apart from this, people like me who were active social media users who now realize the downright issues with platforms like Facebook, Instagram, YouTube and Snapchat and their algorithms, and are no longer interested in being driven by them throughout their day. In this article I talk about my experience with it and how it changed my usage habits."
+url: blog/2019/03/17/a-review-of-the-siempo-launcher/
+categories:
+ - notes
+tags:
+ - android
+ - digital wellbeing
+
+---
+Last December, I decided to start an experiment and adopt a new launcher called [Siempo][1] apart from the OnePlus and Nova launcher that I’m used to since I started using Android. After three months, even though I have stopped using it, I have observed some changes and would like to share it with my readers who are also interested in digital well being. There has been a recent surge in people starting to restart blogging even though on closed platforms like Medium, but I guess it at least that is searchable outside from search engines, and hope to see more self hosted blogs following Hackernoon’s recent split. Apart from this, people like me who were active social media users who now realize the downright issues with platforms like Facebook, Instagram, YouTube and Snapchat and their algorithms, and are no longer interested in being driven by them throughout their day. In this article I talk about my experience with it and how it changed my usage habits.
+
+After surveying all the options, the only fully featured launcher (that was usable) I found was [Siempo][1]. An other notable mention was the Minimal Launcher but it did not have a free dark mode or even proper app search, making it unusable apart from phone calls and messages. I did not want to go to the extreme with this experiment so Siempo seemed to be the best option out there for Android. A few notable features of this app based on my experience are mentioned below. But before that, I must mention what I guess mostly the ideas on which the app is based on.
+
+Tristan Harris, a Former Design Ethicist at Google had around 2-3 years ago started a movement called _[Time Well Spent][2]_ [now called][2] _[Humane Tech][2]._ Nothing better to explain this than his TED Talk on “How a handful of tech companies control billions of minds every day”
+
+
+
+
+
+A few notable things from the website are copied below for reference
+
+
+
+ Unfortunately, what’s best for capturing our attention isn’t best for our well-being:
+
+
+
+ Snapchat turns conversations into streaks, redefining how our children measure friendship. Instagram glorifies the picture-perfect life, eroding our self worth. Facebook segregates us into echo chambers, fragmenting our communities. YouTube autoplays the next video within seconds, even if it eats into our sleep.
+