{"@attributes":{"version":"2.0"},"channel":{"title":"Balasankar C","description":"Balasankar C's personal website. Often talks about technology, literature,  freedom and privacy.\n","link":"\/","pubDate":"Sun, 28 Dec 2025 07:12:41 -0600","lastBuildDate":"Sun, 28 Dec 2025 07:12:41 -0600","generator":"Jekyll v4.2.0","item":[{"title":"Granting Namespace-Specific Access in GKE Clusters","description":"<p>Heyo,<\/p>\n\n<p>In production Kubernetes environments, access control becomes critical when multiple services share the same cluster. I recently faced this exact scenario: a GKE cluster hosting multiple services across different namespaces, where a new team needed access to maintain and debug their service-but only their service.<\/p>\n\n<p>The requirement was straightforward yet specific: grant external users the ability to exec into pods, view logs, and forward ports, but restrict this access to a single namespace within a single GKE cluster. No access to other clusters in the Google Cloud project, and no access to other namespaces.<\/p>\n\n<h3 id=\"the-solution\">The Solution<\/h3>\n\n<p>Achieving this granular access control requires combining Google Cloud IAM with Kubernetes RBAC (Role-Based Access Control). Here\u2019s how to implement it:<\/p>\n\n<h4 id=\"step-1-tag-your-gke-cluster\">Step 1: Tag Your GKE Cluster<\/h4>\n\n<p>First, <a href=\"https:\/\/docs.cloud.google.com\/kubernetes-engine\/docs\/how-to\/tags#attach-tag-cluster\">apply a unique tag to your GKE cluster<\/a>. This tag will serve as the identifier for IAM policies.<\/p>\n\n<h4 id=\"step-2-grant-iam-access-via-tags\">Step 2: Grant IAM Access via Tags<\/h4>\n\n<p>Add an IAM policy binding that grants users access to <a href=\"https:\/\/docs.cloud.google.com\/resource-manager\/docs\/tags\/tags-creating-and-managing#iam_conditions_and_tags\">resources with your specific tag<\/a>. The <code class=\"language-plaintext highlighter-rouge\">Kubernetes Engine Viewer<\/code> role (<code class=\"language-plaintext highlighter-rouge\">roles\/container.viewer<\/code>) provides sufficient base permissions without granting excessive access.<\/p>\n\n<h4 id=\"step-3-create-a-kubernetes-clusterrole\">Step 3: Create a Kubernetes ClusterRole<\/h4>\n\n<p>Define a <a href=\"https:\/\/kubernetes.io\/docs\/reference\/access-authn-authz\/rbac\/#role-and-clusterrole\">ClusterRole<\/a> that specifies the exact permissions needed:<\/p>\n\n<div class=\"language-yaml highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code><span class=\"na\">apiVersion<\/span><span class=\"pi\">:<\/span> <span class=\"s\">rbac.authorization.k8s.io\/v1<\/span>\n<span class=\"na\">kind<\/span><span class=\"pi\">:<\/span> <span class=\"s\">ClusterRole<\/span>\n<span class=\"na\">metadata<\/span><span class=\"pi\">:<\/span>\n  <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">custom-access-role<\/span>\n<span class=\"na\">rules<\/span><span class=\"pi\">:<\/span>\n  <span class=\"pi\">-<\/span> <span class=\"na\">apiGroups<\/span><span class=\"pi\">:<\/span> <span class=\"pi\">[<\/span><span class=\"s2\">\"<\/span><span class=\"s\">\"<\/span><span class=\"pi\">]<\/span>\n    <span class=\"na\">resources<\/span><span class=\"pi\">:<\/span> <span class=\"pi\">[<\/span><span class=\"s2\">\"<\/span><span class=\"s\">pods\"<\/span><span class=\"pi\">,<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">pods\/exec\"<\/span><span class=\"pi\">,<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">pods\/attach\"<\/span><span class=\"pi\">,<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">pods\/portforward\"<\/span><span class=\"pi\">,<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">pods\/log\"<\/span><span class=\"pi\">]<\/span>\n    <span class=\"na\">verbs<\/span><span class=\"pi\">:<\/span> <span class=\"pi\">[<\/span><span class=\"s2\">\"<\/span><span class=\"s\">get\"<\/span><span class=\"pi\">,<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">list\"<\/span><span class=\"pi\">,<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">watch\"<\/span><span class=\"pi\">,<\/span> <span class=\"s2\">\"<\/span><span class=\"s\">create\"<\/span><span class=\"pi\">]<\/span>\n<\/code><\/pre><\/div><\/div>\n\n<p>Note: While you could use a namespace-scoped <code class=\"language-plaintext highlighter-rouge\">Role<\/code>, a <code class=\"language-plaintext highlighter-rouge\">ClusterRole<\/code> offers better reusability if you need similar permissions for other namespaces later.<\/p>\n\n<h4 id=\"step-4-bind-the-role-to-users\">Step 4: Bind the Role to Users<\/h4>\n\n<p>Create a <code class=\"language-plaintext highlighter-rouge\">RoleBinding<\/code> to connect the role to specific users and namespaces:<\/p>\n\n<div class=\"language-yaml highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code><span class=\"na\">apiVersion<\/span><span class=\"pi\">:<\/span> <span class=\"s\">rbac.authorization.k8s.io\/v1<\/span>\n<span class=\"na\">kind<\/span><span class=\"pi\">:<\/span> <span class=\"s\">RoleBinding<\/span>\n<span class=\"na\">metadata<\/span><span class=\"pi\">:<\/span>\n  <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">custom-rolebinding<\/span>\n  <span class=\"na\">namespace<\/span><span class=\"pi\">:<\/span> <span class=\"s\">my-namespace<\/span>\n<span class=\"na\">subjects<\/span><span class=\"pi\">:<\/span>\n  <span class=\"pi\">-<\/span> <span class=\"na\">kind<\/span><span class=\"pi\">:<\/span> <span class=\"s\">User<\/span>\n    <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">myuser@gmail.com<\/span>\n    <span class=\"na\">apiGroup<\/span><span class=\"pi\">:<\/span> <span class=\"s\">rbac.authorization.k8s.io<\/span>\n<span class=\"na\">roleRef<\/span><span class=\"pi\">:<\/span>\n  <span class=\"na\">kind<\/span><span class=\"pi\">:<\/span> <span class=\"s\">ClusterRole<\/span>\n  <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">custom-access-role<\/span>\n  <span class=\"na\">apiGroup<\/span><span class=\"pi\">:<\/span> <span class=\"s\">rbac.authorization.k8s.io<\/span>\n<\/code><\/pre><\/div><\/div>\n\n<p>Apply both configurations using <code class=\"language-plaintext highlighter-rouge\">kubectl apply -f &lt;filename&gt;<\/code>.<\/p>\n\n<h3 id=\"how-it-works\">How It Works<\/h3>\n\n<p>This approach creates a two-layer security model:<\/p>\n<ul>\n  <li><strong>GCP IAM<\/strong> controls which clusters users can access using resource tags<\/li>\n  <li><strong>Kubernetes RBAC<\/strong> controls what users can do within the cluster and limits their scope to specific namespaces<\/li>\n<\/ul>\n\n<p>The result is a secure, maintainable solution that grants teams the access they need without compromising the security of other services in your cluster.<\/p>\n","pubDate":"Sun, 28 Dec 2025 00:00:00 -0600","link":"\/tech\/kubernetes-namespace-exec-access-for-external-users.html","guid":"\/tech\/kubernetes-namespace-exec-access-for-external-users.html","category":"Tech"},{"title":"FOSS contributions in 2019","description":"<p>Heyo,<\/p>\n\n<p>I have been interested in the concept of Freedom - both in the technical and\nsocial ecosystems for almost a decade now. Even though I am not a harcore\ncontributor or anything, I have been involved in it for few years now - as an\nenthusiast, a contributor, a mentor, and above all an evangelist. Since 2019 is\ncoming to an end, I thought I will note down what all I did last year as a FOSS\nperson.<\/p>\n\n<h2 id=\"gitlab\">GitLab<\/h2>\n\n<p>My job at GitLab is that of a Distribution Engineer. In simple terms, I have to\ndeal with anything that a user\/customer may use to install or deploy GitLab. My\nteam maintains the omnibus-gitlab packages for various OSs, docker image, AWS\nAMIs and Marketplace listings, Cloud Native docker images, Helm charts for\nKubernetes, etc.<\/p>\n\n<p>My job description is essentially dealing with the above mentioned tasks\nonly, and as part of my day job I don\u2019t usually have to write and backend\nRails\/Go code. However, I also find GitLab as a good open source project and\nhave been contributing few features to it over the year. Few main reasons I\nstarted doing this are<\/p>\n<ol>\n  <li>An opportunity to learn more Rails. GitLab is a pretty good project to do\nthat, from an engineering perspective.<\/li>\n  <li>Most of the features I implemented are the ones I wanted from GitLab, the\nproduct. The rest are technically simpler issues with less complexity(relates\nto the point above, regarding getting better at Rails).<\/li>\n  <li>I know the never-ending dilemma our Product team goes through to always\nmaintain the balance of CE v\/s EE features in every release, and prioritizing\nappropriate issues from a mountain of backlog to be done on each milestone.\nIn my mind, it is easier for both them and me if I just implemented something\nrather than asked them to schedule it to be done by a backend team, so that I\ncane enjoy the feature. To note, most of the issues I tackled already had\n<code class=\"language-plaintext highlighter-rouge\">Accepting Merge Requests<\/code> label on them, which meant Product was in\nagreement that the feature was worthy of having, but there were issues with\nmore priority to be tackled first.<\/li>\n<\/ol>\n\n<p>So, here are the features\/enhancements I implemented in GitLab, as an interested\ncontributor in the selfish interest of improving my Rails understanding and to\nget features that I wanted without much waiting:<\/p>\n\n<ol>\n  <li><a href=\"https:\/\/gitlab.com\/gitlab-org\/gitlab-foss\/merge_requests\/24823\">Add number of repositories to usage ping data<\/a><\/li>\n  <li><a href=\"https:\/\/gitlab.com\/gitlab-org\/gitlab-foss\/merge_requests\/25032\">Provide an API endpoint to get GPG signature of a commit<\/a><\/li>\n  <li><a href=\"https:\/\/gitlab.com\/gitlab-org\/gitlab-foss\/merge_requests\/25363\">Add ability to set project path and name when forking a project via API<\/a><\/li>\n  <li><a href=\"https:\/\/gitlab.com\/gitlab-org\/gitlab-foss\/merge_requests\/30417\">Add predefined CI variable to provide GitLab FQDN<\/a><\/li>\n  <li><a href=\"https:\/\/gitlab.com\/gitlab-org\/gitlab-foss\/merge_requests\/31752\">Ensure changelog filenames have less than 99 characters<\/a><\/li>\n  <li><a href=\"https:\/\/gitlab.com\/gitlab-org\/gitlab\/merge_requests\/16405\">Support notifications to be fired for protected branches also<\/a><\/li>\n  <li><a href=\"https:\/\/gitlab.com\/gitlab-org\/gitlab\/merge_requests\/18812\">Set X-GitLab-NotificationReason header in emails that are sent due to explicit subscription to an issue\/MR<\/a><\/li>\n  <li><a href=\"https:\/\/gitlab.com\/gitlab-org\/gitlab\/merge_requests\/18821\">Truncate recommended branch name to a sane length<\/a><\/li>\n  <li><a href=\"https:\/\/gitlab.com\/gitlab-org\/gitlab\/merge_requests\/20255\">Support passing CI variables as push options<\/a><\/li>\n  <li><a href=\"https:\/\/gitlab.com\/gitlab-org\/gitlab\/merge_requests\/22196\">Add option to configure branches for which emails should be sent on push<\/a><\/li>\n<\/ol>\n\n<h2 id=\"swathanthra-malayalam-computing\">Swathanthra Malayalam Computing<\/h2>\n\n<p>I have been a volunteer at Swathanthra Malayalam Computing for almost 8 years\nnow. Most of my contributions are towards various localization efforts that SMC\ncoordinates. Last year, my major contributions were improving our fonts build\nprocess to help various packaging efforts (well, selfish reason - I wanted my\nlife as the maintainer of Debian packages to be easier), implementing CI based\nworkflows for various projects and helping in evangelism.<\/p>\n\n<ol>\n  <li><a href=\"https:\/\/gitlab.com\/smc\/smc-project\/issues\/98\">Ensuring all our fonts build with Python3<\/a><\/li>\n  <li><a href=\"https:\/\/gitlab.com\/smc\/smc-project\/issues\/93\">Ensuring all our fonts have proper appstream metadata files<\/a><\/li>\n  <li><a href=\"https:\/\/gitlab.com\/smc\/msc\/merge_requests\/2\">Add an FAQ page to Malayalam Speech Corpus<\/a><\/li>\n  <li><a href=\"https:\/\/gitlab.com\/smc\/magisk-malayalam-fonts\/merge_requests\/1\">Add release workflow using CI for Magisk font module<\/a><\/li>\n<\/ol>\n\n<h2 id=\"debian\">Debian<\/h2>\n\n<p>I have been a Debian contributor for almost 8 years, became a Debian Maintainer\n3 years after my first stint with Debian, and have been a Debian Developer for 2\nyears. My activities as a Debian contributor this year are:<\/p>\n\n<ol>\n  <li>Continuing maintenance of <code class=\"language-plaintext highlighter-rouge\">fonts-smc-*<\/code> and <code class=\"language-plaintext highlighter-rouge\">hyphen-indic<\/code> packages.<\/li>\n  <li><a href=\"https:\/\/wiki.debian.org\/Teams\/DebianGoTeam\/GopasspwPackaging\">Packaging<\/a> of\n<a href=\"https:\/\/github.com\/gopasspw\/gopass\/\">gopass password manager<\/a>. This has been\ngoing on very slow.<\/li>\n  <li><a href=\"https:\/\/qa.debian.org\/developer.php?login=Balasankar%20C%20%3Cbalasankarc@debian.org%3E&amp;comaint=yes#Sponsored\/other%20uploads\">Reviewing and sponsoring various Ruby and Go packages<\/a>.<\/li>\n  <li>Help GitLab packaging efforts, both as a Debian Developer and a GitLab\nemployee.<\/li>\n<\/ol>\n\n<h2 id=\"other-foss-projects\">Other FOSS projects<\/h2>\n\n<p>In addition to the main projects I am a part of, I contributed to few FOSS last\nyear, either due to personal interest, or as part of my job. They are:<\/p>\n\n<ol>\n  <li><a href=\"https:\/\/calamares.io\">Calamares<\/a> - I <a href=\"https:\/\/euroquis.nl\/\/calamares\/2019\/09\/24\/malayalam.html\">initiated<\/a>\nand <a href=\"https:\/\/euroquis.nl\/bla%20bla\/2019\/10\/22\/potpourri.html#calamares\">spearheaded<\/a>\nthe localization of Calamares installer to <a href=\"https:\/\/www.transifex.com\/calamares\/calamares\/language\/ml\/\">Malayalam language<\/a>.\nIt reached 100% translated status within a month.<\/li>\n  <li><a href=\"https:\/\/www.chef.io\/\">Chef<\/a>\n    <ol>\n      <li><a href=\"https:\/\/github.com\/chef\/ohai\/pull\/1377\">Fix openSUSE Leap and SLES detection in Chef Ohai 14<\/a><\/li>\n      <li><a href=\"https:\/\/github.com\/chef-cookbooks\/runit\/pull\/243\">Make runit service\u2019s control commands configurable in Chef Runit cookbook<\/a><\/li>\n    <\/ol>\n  <\/li>\n  <li><a href=\"https:\/\/mozilla.org\/\">Mozilla<\/a> - Being one of the Managers for Malayalam\nLocalization team of Mozilla, I helped coordinate localizations of various\nprojects, interact with Mozilla staff for the community in clarifying their\nconcerns, getting new projects added for localization etc.<\/li>\n<\/ol>\n\n<h2 id=\"talks\">Talks<\/h2>\n\n<p>I also gave few talks regarding various FOSS topics that I am\ninterested\/knowledgeable in during 2019. List and details can be found at the\n<a href=\"\/talks\">talks<\/a> page.<\/p>\n\n<p>Overall, I think 2019 was a good year for the FOSS person in me. Next year, I\nplan to be more active in Debian because from the above list I think that is\nwhere I didn\u2019t contribute as much as I wanted.<\/p>\n","pubDate":"Wed, 01 Jan 2020 00:00:00 -0600","link":"\/tech\/foss-contributions-in-2019.html","guid":"\/tech\/foss-contributions-in-2019.html","category":"FOSS"},{"title":"DebUtsav Kochi 2018","description":"<p>Heyo,<\/p>\n\n<p>Been quite some time since I wrote about anything. This time, it is Debutsav.\nWhen it comes to full-fledged FOSS conferences, I usually am an attendee or at\nmost a speaker. I have given some sporadic advices and suggestions to few in the\npast, but that was it. However, this time I played the role of an organizer.<\/p>\n\n<p>DebUtsav Kochi is the second edition of Debian Utsavam, the celebration of Free\nSoftware by Debian community. We didn\u2019t name it MiniDebConf because it was our\nrequirement for the conference to be not just Debian specific, but should\ninclude general FOSS topics too. This is specifically because our target\naudience aren\u2019t yet Debian-aware to have a Debian-only event. So, DebUtsav Kochi\nhad three tracks - one for general FOSS topics, one for Debian talks and one for\nhands-on workshops.<\/p>\n\n<p>As a disclaimer, the description about the talks below are what I gained from my\ninteraction with the speakers and attendees, since I wasn\u2019t able to attend as\nmany talks as I would\u2019ve liked, since I was busy with the organizing stuff.<\/p>\n\n<p>The event was organized by Free Software Community of India, whom I represented\nalong with Democratic Alliance for Knowledge Freedom (DAKF) and Student\nDeveloper Society (SDS). Cochin University of Science and Technology were\ngenerous enough to be our venue partners, providing us with necessary\ninfrastructure for conducting the event as well as accommodation for our\nspeakers.<\/p>\n\n<p>The event span across two days, with a registration count around 150\nparticipants. Day 1 started with a keynote session by <a href=\"https:\/\/twitter.com\/arunasank\">Aruna Sankaranarayanan<\/a>,\naffiliated with OpenStreetMap. She has been also associated with GNOME Project,\nWikipedia and Wikimedia Commons as well as was a lead developer of the Chennai\nFlood Map that was widely used during the floods that struck city of Chennai.<\/p>\n\n<p>Sruthi Chandran, Debian Maintainer from Kerala, gave a brief introduction about\nthe Debian project, its ideologies and philosophies, people behind it, process\ninvolved in the development of the operating system etc. An intro about\nDebUtsav, how it came to be, the planning and organizations process that was\ninvolved in conducting the event etc were given by SDS members.<\/p>\n\n<p>After these common talks, the event was split to two parallel tracks - FOSS and\nDebian.<\/p>\n\n<p>In the FOSS track, the first talk was by Prasanth Sugathan of Software Freedom\nLaw Centre about the needs of Free Software licenses and ensuring license\ncompliance by projects. Parallely, Raju Devidas discussed about the process\nbehind becoming an official Debian Developer, what does it mean and why it\nmatters to have more and more developers from India etc.<\/p>\n\n<p>After lunch, Ramaseshan S introduced the audience to Project Vidyalaya, a free\nsoftware solution for educational institutions to manage and maintain their\ncomputer labs using FOSS solutions rather than the conventional proprietary\nsolutions. Shirish Agarwal shared general idea about various teams in Debian and\nhow everyone can contribute to these teams based on their interest and ability.<\/p>\n\n<p>Subin S showed introduced some nifty little tools and tricks that make Linux\ndesktop cool, and improve the productivity of users. Vipin George shared about\nthe possibility of using Debian as a forensic workstation, and how it can be\nmade more efficient than the proprietary counterparts.<\/p>\n\n<p>Ompragash V from RedHat talked about using Ansible for automation tasks, its\nadvantages over similar other tools etc. Day 1 ended with Simran Dhamija talking\nabout Apache SQOOP and how it can be used for data transformation and other\nrelated usecases.<\/p>\n\n<p>In the afternoon session of Day 1, two workshops were also conducted parallel\nto the talks. First one was by Amoghavarsha about reverse engineering, followed\nby an introduction to machine learning using Python by Ditty.<\/p>\n\n<p>We also had an informal discussion with few of the speakers and participants\nabout Free Software Community of India, the services it provide and how to get\nmore people aware of such services and how to get more maintainers for them etc.\nWe also discussed the necessity of self-hosted services, onboarding users\nsmoothly to them and evangelizing these services as alternatives to their\nproprietary and privacy abusing counterparts etc.<\/p>\n\n<p>Day 2 started with a keynote session by Todd Weaver, founder and CEO of Purism\nwho aims at developing laptops and phones that are privacy focused. Purism also\ndevelops PureOS, a Debian Derivative that consists of Free Software only, with\nfurther privacy enhancing modifications.<\/p>\n\n<p>On day 2, the Debian track focused on a hands-on packaging workshop by Pirate\nPraveen and Sruthi Chandran that covered the basic workflow of packaging, the\nflow of packages through various suites like Unstable, Testing and Stable,\nstructure of packages. Then it moved to the actual process of packaging by\nguiding the participants through packaging a javascript module that is used by\nGitLab package in Debian. Participants were introduced to the tools like\nnpm2deb, lintian, sbuild\/pbuilder etc. and the various debian specific files and\ntheir functionalities.<\/p>\n\n<p>In the FOSS track, Biswas T shared his experience in developing keralarescue.in,\na website that was heavily used during the Kerala Floods for effective\ncollaboration between authorities, volunteers and public. It was followed by\nAmoghavarsha\u2019s talk on his journey from Dinkoism to Debian. Abhijit AM of COEP\ntalked about how Free Software may be losing against Open Source and why that\nmay be a problem. Ashish Kurian Thomas shed some knowledge on few *nix tools\nand tricks that can be a productivity booster for GNU\/Linux users. Raju and\nShivani introduced Hamara Linux to the audience, along with the development\nprocess and the focus of the project.<\/p>\n\n<p>The event ended with a panel discussion on how Debian India should move forward\nto organize itself properly to conduct more events, spread awareness about\nDebian and other FOSS projects out there, prepare for a potential DebConf in\nIndia in the near future etc.<\/p>\n\n<p>The number of registrations and enthusiasms of the attendees for the event is\ngiving positive signs on the probability of having a proper MiniDebConf in\nKerala, followed by a possible DebConf in India, for which we have bid for.\nThanks to all the participants and speakers for making the event a success.<\/p>\n\n<p>Thanks to FOSSEE, Hamara Linux and GitLab for being sponsors of the event and\nthus enabling us to actually do this. And also to all my co-organizers.<\/p>\n\n<p>A very special thanks to Kiran S Kunjumon, who literally did 99% of the work\nneeded for the event to happen (as you may recall, I am good at sitting on a\nchair and planning, not actually doing anything. :D ).<\/p>\n\n<p><img src=\"\/images\/tech\/debutsav\/photo.jpg\" alt=\"Group photo\" class=\"inline\" \/><\/p>\n","pubDate":"Wed, 19 Dec 2018 00:00:00 -0600","link":"\/tech\/debutsav.html","guid":"\/tech\/debutsav.html","category":"debian"},{"title":"FOSSAsia 2018 - Singapore","description":"<p>Heyo,<\/p>\n\n<p>So I attended my first international FOSS conference - <a href=\"http:\/\/2018.fossasia.org\/\">FOSSAsia 2018<\/a>\nat <a href=\"https:\/\/www.lli.sg\/\">Lifelong learning institute, Singapore<\/a>. I presented a\ntalk titled \u201cOmnibus - Serve your dish on all the tables\u201d\n(<a href=\"\/talks\/fossasia\">slides<\/a>, <a href=\"https:\/\/www.youtube.com\/watch?v=8P1gokiEhT0\">video<\/a>)\nabout the tool Chef Omnibus which I use on a daily basis for my job at\n<a href=\"https:\/\/about.gitlab.com\">GitLab<\/a>.<\/p>\n\n<p>The conference was a 4-day long one and my main aim was to network with as many\npeople as I can. Well, I planned to attend sessions, but unlike earlier times\nwhen I attended all the sessions, these days I am more focussed on certain\ntopics and technologies and tend to attend sessions on those (for example,\ndevops is an area I focuses on, block chain isn\u2019t).<\/p>\n\n<p>One additional task I had was attend the Debian booth at the exhibition from\ntime to time. It was mainly handled by Abhijith (who is a DM). I also met two\nother Debian Developers there - <a href=\"https:\/\/wiki.debian.org\/AndrewLee\">Andrew Lee<\/a>(alee)\nand <a href=\"https:\/\/wiki.debian.org\/HectorOron\">H\u00e9ctor Or\u00f3n Mart\u00ednez<\/a>(zumbi).<\/p>\n\n<p>I also met some other wonderful people at FOSSAsia, like Chris Aniszczyk of\nCNCF, Dr Graham Williams of Microsoft, Frank Karlitschek of NextCloud,\nJean-Baptiste Kempf and Remi Denis-Courmont of VideoLan, Stephanie Taylor of\nGoogle, Philip Paeps(trouble) of FreeBSD, Harish Pillai of RedHat, Anthony,\nChristopher Travers, Vasudha Mathur of KDE, Adarsh S of CloudCV (and who is from\nMEC College, which is quite familiar to me), Tarun Kumar of Melix, Roy Peter of\nGo-Jek (with whom I am familiar, thanks to the Ruby conferences I attended),\nDias Lonappan of Serv and many more.  I also met with some whom I know knew only\ndigitally, like Sana Khan who was (yet another, :D) a Debian contributor from\nCOEP. I also met with some friends like Hari, Cherry, Harish and Jackson.<\/p>\n\n<p>My talk went ok without too much of stuttering and I am kinda satisfied by it.\nThe only thing I forgot is to mention during the talk that I had stickers (well,\nI later placed them in the sticker table and it disappeared within minutes. So\nthat was ok. ;))<\/p>\n\n<p>PS: Well, I had to cut down quite a lot of my explanation and drop my demo due\nto limited time. This caused me miss many important topics like omnibus-ctl or\ncookbooks that we use at GitLab. But, I had a few participants come up and meet\nme after the talk, with doubts regarding omnibus and its similarity with\nflatpak, relevance during the times of Docker etc, which was good.<\/p>\n\n<p>Some photos are here:<\/p>\n\n<p><img src=\"\/images\/tech\/fossasia\/Abhijith.jpg\" alt=\"Abhijith in Debian Booth\" class=\"inline\" \/><\/p>\n<div class=\"caption\">Abhijith in Debian Booth<\/div>\n\n<p><img src=\"\/images\/tech\/fossasia\/Abhijith_VLC.jpg\" alt=\"Abhijith with VLC folks\" class=\"inline\" \/><\/p>\n<div class=\"caption\">Abhijith with VLC folks<\/div>\n\n<p><img src=\"\/images\/tech\/fossasia\/alee.jpg\" alt=\"Andrew's talk\" class=\"inline\" \/><\/p>\n<div class=\"caption\">Andrew's talk<\/div>\n\n<p><img src=\"\/images\/tech\/fossasia\/Anthony_Harish.jpg\" alt=\"With Anthony and Harish: Two born-and-brought-up-in-SG-Malayalees\" class=\"inline\" \/><\/p>\n<div class=\"caption\">With Anthony and Harish: Two born-and-brought-up-in-SG-Malayalees<\/div>\n\n<p><img src=\"\/images\/tech\/fossasia\/Chris.jpg\" alt=\"Chris Aniszczyk\" class=\"inline\" \/><\/p>\n<div class=\"caption\">With Chris Aniszczyk<\/div>\n\n<p><img src=\"\/images\/tech\/fossasia\/debian-booth.jpg\" alt=\"Debian Booth\" class=\"inline\" \/><\/p>\n<div class=\"caption\">At Debian Booth<\/div>\n\n<p><img src=\"\/images\/tech\/fossasia\/Frank.jpg\" alt=\"Frank Karlitschek\" class=\"inline\" \/><\/p>\n<div class=\"caption\">With Frank Karlitschek<\/div>\n\n<p><img src=\"\/images\/tech\/fossasia\/Graham.jpg\" alt=\"Graham Williams\" class=\"inline\" \/><\/p>\n<div class=\"caption\">With Graham Williams<\/div>\n\n<p><img src=\"\/images\/tech\/fossasia\/MOS.jpg\" alt=\"MOS Burgers - Our breakfast place\" class=\"inline\" \/><\/p>\n<div class=\"caption\">MOS Burgers - Our breakfast place<\/div>\n\n<p><img src=\"\/images\/tech\/fossasia\/Premas.jpg\" alt=\"Premas Cuisine - The kerala taste\" class=\"inline\" \/><\/p>\n<div class=\"caption\">Premas Cuisine - The kerala taste<\/div>\n\n<p><img src=\"\/images\/tech\/fossasia\/Premas_ML.jpg\" alt=\"The joy of seeing Malayalam\" class=\"inline\" \/><\/p>\n<div class=\"caption\">The joy of seeing Malayalam<\/div>\n\n<p><img src=\"\/images\/tech\/fossasia\/sana.jpg\" alt=\"With Sana\" class=\"inline\" \/><\/p>\n<div class=\"caption\">With Sana<\/div>\n\n<p><img src=\"\/images\/tech\/fossasia\/Tamil.jpg\" alt=\"Well, Tamil, ftw\" class=\"inline\" \/><\/p>\n<div class=\"caption\">Well, Tamil, ftw<\/div>\n\n<p><img src=\"\/images\/tech\/fossasia\/zumbi.jpg\" alt=\"Zumbi's talk\" class=\"inline\" \/><\/p>\n<div class=\"caption\">Zumbi's talk<\/div>\n","pubDate":"Sun, 25 Mar 2018 00:00:00 -0500","link":"\/tech\/fossasia-2018.html","guid":"\/tech\/fossasia-2018.html"},{"title":"Introduction to Git workshop at CUSAT","description":"<p>Heyo,<\/p>\n\n<p>It has been long since I have written somewhere. In the last year I attended some events, like FOSSMeet, DeccanRubyConf, GitLab\u2019s summit and didn\u2019t write anything about it. The truth is, I forgot I used to write about all these and never got the motivation to do that.<\/p>\n\n<p>Anyway, last week, I conducted a workshop on Git basics for the students of <a href=\"http:\/\/cusat.ac.in\/\">CUSAT<\/a>. My real plan, as always, was to do a bit of FOSS evangelism too. Since the timespan of workshop was limited (10:00 to 13:00), I decided to keep everything to bare basics.<\/p>\n\n<p>Started with an introduction to what a VCS is and how it became necessary. As a prerequisite, I talked about FOSS, concept of collaborative development, open source development model etc. It wasn\u2019t easy as my audience were not only CS\/IT students, but those from other departments like Photonics, Physics etc. I am not sure if I was able to help them understand the premise clearly. However, then I went on to talk about what Git does and how it helps developers across the world.<\/p>\n\n<p>IIRC, this was the first talk\/workshop I did without a slide show. I was damn lazy and busy to create one. I just had one page saying \u201cGit Workshop\u201d and my contact details. So guess what? I used a whiteboard! I went over the basic concepts like repositories, commits, staging area etc and started with the hand-on session. In short, I talked about the following<\/p>\n<ol>\n  <li>Initializing a repository<\/li>\n  <li>Adding files to it<\/li>\n  <li>Add files to staging areas<\/li>\n  <li>Committing<\/li>\n  <li>Viewing commit logs<\/li>\n  <li>Viewing what a specific commit did<\/li>\n  <li>Viewing a file\u2019s contents at a specific commit<\/li>\n  <li>Creating a GitLab account (Well, use all opportunity to talk about your employer. :P)<\/li>\n  <li>Creating a project in GitLab<\/li>\n  <li>Adding it as a remote repository to your local one<\/li>\n  <li>Pushing your changes to remote repository<\/li>\n<\/ol>\n\n<p>I wanted to talk about clone, fork, branch and MRs, but time didn\u2019t permit. We wound up the session with Athul and Kiran talking about how they need the students to join the FOSSClub of CUSAT, help organizing similar workshops and how it can help them as well. I too did a bit of \u201cmotivational talk\u201d regarding how community activities can help them get a job, based on my personal experience.<\/p>\n\n<p>Here are a few photos, courtesy of Athul and Kiran:<\/p>\n\n<p><img src=\"\/images\/tech\/cusat-git\/image_1.jpg\" alt=\"\" class=\"inline\" \/><\/p>\n\n<p><img src=\"\/images\/tech\/cusat-git\/image_2.jpg\" alt=\"\" class=\"inline\" \/><\/p>\n\n<p><img src=\"\/images\/tech\/cusat-git\/image_3.jpg\" alt=\"\" class=\"inline\" \/><\/p>\n\n<p><img src=\"\/images\/tech\/cusat-git\/image_4.jpg\" alt=\"\" class=\"inline\" \/><\/p>\n","pubDate":"Wed, 17 Jan 2018 00:00:00 -0600","link":"\/tech\/git-intro-workshop-cusat.html","guid":"\/tech\/git-intro-workshop-cusat.html"},{"title":"SMC\/IndicProject Activities- ToDo List","description":"<p>Heyo,<\/p>\n\n<p>So, M.Tech is coming to an end I should probably start searching for a job soon. Still, it seems I will be having a bit of free time from Mid-September. I have got some plans about the areas I should contribute to SMC\/Indic Project. As of now, the bucket list is as follows:\n<!--more--><\/p>\n\n<ol>\n  <li><strong>Properly tag versions of fonts in SMC GitLab repo<\/strong> - I had taken over the package fonts-smc from Vasudev, but haven\u2019t done any update on that yet. The main reason was fontforge being old in Debian. Also, I was waiting for some kind of official release of new versions by SMC. Since the new versions are already available in the SMC Fonts page, I assume I can go ahead with my plans. So, as a first step I have to tag the versions of fonts in the corresponding GitLab repo. Need to discuss whether to include TTF file in the repo or not.<\/li>\n  <li><strong>Restructure LibIndic modules<\/strong> - Those who were following my <a href=\"http:\/\/localhost:4000\/tech\/category\/GSoC\/\">GSoC posts<\/a> will know that I made some structural changes to the modules I contributed in LibIndic. (Those who don\u2019t can check <a href=\"http:\/\/lists.nongnu.org\/archive\/html\/silpa-discuss\/2016-08\/msg00006.html\">this mail<\/a> I sent to the list). I plan to do this for all the modules in the framework, and to co-ordinate with Jerin to get REST APIs up.<\/li>\n  <li><strong>GNOME Localization<\/strong> - <a href=\"https:\/\/l10n.gnome.org\/teams\/ml\/\">GNOME Localization<\/a> has been dead for almost two years now. Ashik has shown interest in re-initiating it and I plan to do that. I first have to get my committer access back.<\/li>\n  <li><strong>Documentation<\/strong> - Improve documentation about SMC and IndicProject projects. This will be a troublesome and time consuming task but I still like our tools to have proper documentation.<\/li>\n  <li><strong>High Priority Projects<\/strong> - Create a static page about the high priority projects so that people can know where and how to contribute.<\/li>\n  <li><strong>Die Wiki, Die<\/strong> - Initiate porting Wiki to a static site using Git and Jekyll (or any similar tool). Tech people should be able to use git properly.<\/li>\n<\/ol>\n\n<p>Knowing me pretty much better than anyone else, I understand there is every chance of this being \u201cNever-being-implemented-plan\u201d (\u0d05\u0d24\u0d3e\u0d2f\u0d24\u0d4d \u0d06\u0d30\u0d02\u0d2d\u0d36\u0d42\u0d30\u0d24\u0d4d\u0d35\u0d02 :D) but still I intend to do this in an easy-first order.<\/p>\n","pubDate":"Tue, 06 Sep 2016 23:47:17 -0500","link":"\/tech\/smc_todolist.html","guid":"\/tech\/smc_todolist.html","category":["foss","smc","indicproject","community","SMC"]},{"title":"GSoC Final Report","description":"<p>Heyo,<\/p>\n\n<p>It is finally the time to wind up the GSoC work on which I have been buried for the past three months. First of all, let me thank Santhosh, Hrishi and Vasudev for their help and support. I seem to have implemented, or at least proved the concepts that I mentioned in <a href=\"https:\/\/discourse.indicproject.org\/t\/inflection-aware-spellchecker-for-malayalam\/37\">my initial proposal<\/a>. A spell checker that can handle inflections in root word and generate suggestion in the same inflected form and differentiate between spelling mistakes and intended modifications has been implemented. The major contributions that I made were to<\/p>\n\n<ol>\n  <li>Improve LibIndic\u2019s Stemmer module. - <a href=\"https:\/\/github.com\/libindic\/indicstemmer\/commits?author=balasankarc\">My contributions<\/a><\/li>\n  <li>Improve LibIndic\u2019s Spell checker module - <a href=\"https:\/\/github.com\/libindic\/spellchecker\/commits?author=balasankarc\">My contributions<\/a><\/li>\n  <li>Implement relatively better project structure for the modules I used - <a href=\"https:\/\/github.com\/libindic\/indicngram\/commits?author=balasankarc\">My contributions on indicngram<\/a><\/li>\n<\/ol>\n\n<!--more-->\n\n<h2 id=\"1-lemmatizerstemmer\">1. Lemmatizer\/Stemmer<\/h2>\n\n<h3 id=\"tldr\">TLDR<\/h3>\n\n<div class=\"dashed-div\">\n  <p>My initial work was on improving the existing stemmer that was available as part of  LibIndic. The existing implementation was a rule based one that was capable of handling single levels of inflections. The main problems of this stemmer were<\/p>\n\n  <ol>\n    <li>General incompleteness of rules - Plurals (\u0d2a\u0d36\u0d41\u0d15\u0d4d\u0d15\u0d7e), Numerals(\u0d2a\u0d24\u0d3f\u0d28\u0d3e\u0d32\u0d3e\u0d02), Verbs (\u0d15\u0d3e\u0d23\u0d3e\u0d02) are missing.<\/li>\n    <li>Unable to handle multiple levels of inflections - (\u0d2a\u0d36\u0d41\u0d15\u0d4d\u0d15\u0d33\u0d4b\u0d1f\u0d4d)<\/li>\n    <li>Unnecessarily stemming root words that look like inflected words - (\u0d06\u0d2a\u0d24\u0d4d\u0d24\u0d4d -&gt; \u0d06\u0d2a\u0d02 following the rule of \u0d0e\u0d31\u0d23\u0d3e\u0d15\u0d41\u0d33\u0d24\u0d4d\u0d24\u0d4d -&gt; \u0d0e\u0d31\u0d23\u0d3e\u0d15\u0d41\u0d33\u0d02)<\/li>\n  <\/ol>\n\n  <p>The above mentioned issues were fixed. The remaining category is verbs which need more detailed analysis.<\/p>\n<\/div>\n\n<p>I too decided to maintain the rule-based approach for lemmatizer (actually, what we are designing is half way between a stemmer and lemmatizer. Since it is more inclined towards a lemmatizer, I am going to call it that.) mainly because for implementing any ML or AI techniques, there should be sufficient training data, without which the efficiency will be very poor. It felt better to gain higher efficiency with available rules than to try out ML techniques with no guarantee (Known devil is better logic).<\/p>\n\n<p>The basic logic behind the multi-level inflection handling lemmatizer is iterative suffix stripping. At each iteration, a suffix is identified from the word and it is transformed to something else based on predefined rules. When no more suffixes are found that have a match on the rule set, we assume the multiple levels of inflection have been handled.<\/p>\n\n<p>To handle root words that look like inflected words (hereafter called \u2018exceptional words\u2019) from being stemmed unnecessarily, it is obvious we have to use a root word corpus. I used the Datuk dataset that is made available openly by Kailash as the root word corpus. A corpus comparison was performed before the iterative suffix stripping started, so as to handle root words without any inflection. Thus, the word \u0d06\u0d2a\u0d24\u0d4d\u0d24\u0d4d will get handled even before the iteration begins. However, what if the input word is an inflected form of an exceptional word, like \u0d06\u0d2a\u0d24\u0d4d\u0d24\u0d3f\u0d32\u0d47\u0d15\u0d4d\u0d15\u0d4d? This makes it necessary to introduce the corpus comparison step after each iteration.<\/p>\n\n<p><img src=\"\/images\/tech\/lemmatizer_flowchart.png\" alt=\"Lemmatizer Flowchart\" class=\"center-image\" \/><\/p>\n\n<p>At each iteration, suffix stripping happens from left to right. Initial suffix has 2nd character as the starting point and last character as end point. At each inner iteration, the starting point moves rightwards, thus making the suffix shorter and shorter. Whenever a suffix is obtained that has a transformation rule defined in the rule set, it is replaced with the corresponding transformation. This continues until the suffix becomes null.<\/p>\n\n<p>Multi-level inflection is handled on the logic that each match in rule set induces a hope that there is one more inflection present. So, before each iteration, a flag is set to False. Whenever a match in ruleset occurs at that iteration, it is set to true. If at the end of an iteration, the flag is true, the loop repeats. Else, we assume all inflections have been handled.<\/p>\n\n<p>Since this lemmatizer is also used along with a spellchecker, we will need a history of the inflections identified so that the lemmatization process can be reversed. For this purpose, I tagged the rules unambiguously. Each time an inflection is identified, that is the extracted suffix finds a match in the rule set, in addition to the transformation, the associated tag is also pushed to a list. As the result, the stem along with this list of tags is given to the user. This list of tags can be used to reverse the lemmatization process - for which I wrote an inflector function.<\/p>\n\n<p>A demo screencast of the lemmatizer is given below.<\/p>\n\n<video width=\"100%\" controls=\"\">\n    <source src=\"\/videos\/lemmatizer_screencast.mp4\" type=\"video\/mp4\" \/>\n    Your browser does not support the video tag.\n<\/video>\n\n<p>So, comparing with the existing stemmer algorithm in LibIndic, the one I implemented as part of GSoC shows considerable improvement.<\/p>\n\n<h3 id=\"future-work\">Future work<\/h3>\n<ol>\n  <li>Add more rules to increase grammatical coverage.<\/li>\n  <li>Add more grammatical details - Handling Samvruthokaram etc.<\/li>\n  <li>Use this to generate sufficient training data that can be used for a self-learning system implementing ML or AI techniques.<\/li>\n<\/ol>\n\n<h2 id=\"2-spell-checker\">2. Spell Checker<\/h2>\n\n<h3 id=\"tldr-1\">TLDR<\/h3>\n\n<div class=\"dashed-div\">\n  <p>The second phase of my GSoC work involved making the existing spell checker module better. The problems I could identify in the existing spell checker were<\/p>\n  <ol>\n    <li>It could not handle inflections in an intelligent way.<\/li>\n    <li>It used a corpus that needed inflections in them for optimal working.<\/li>\n    <li>It used only levenshtein distance for finding out suggestions.<\/li>\n  <\/ol>\n\n  <p>As part of GSoC, I incorporated the lemmatizer developed in phase one to the spell checker, which could handle the inflection part. Three metrics were used to detect suggestion words - Soundex similarity, Levenshtein Distance and Jaccard Index. The inflector module that was developed along with lemmatizer was used to generate suggestions in the same inflected form as that of original word.<\/p>\n<\/div>\n\n<p>There were some general assumptions and facts which I inferred and collected while working on the spell checker. They are<\/p>\n\n<ol>\n  <li>Malayalam is a phonetic language, where the word is written just like it is pronounced. This is opposite to the case of English, where alphabets have different pronunciations in different words. Example is the English letter \u201ca\u201d which is pronounced differently in \u201capple\u201d and \u201cate\u201d.<\/li>\n  <li>Spelling mistakes in Malayalam, hence, are also phonetic. The mistakes occur by a character with similar pronunciation, usually from the same varga. For example,  \u0d05\u0d26\u0d4d\u0d27\u0d4d\u0d2f\u0d3e\u0d2a\u0d15\u0d7b may be written mistakenly as \u0d05\u0d26\u0d4d\u0d2f\u0d3e\u0d2a\u0d15\u0d7b, but not as \u0d05\u0d1a\u0d4d\u0d2f\u0d3e\u0d2a\u0d15\u0d7b.<\/li>\n  <li>A spelling mistake does not mean a word that is not present in the dictionary. The user has to be considered intelligent and he should be trusted not to make mistakes. A word not present in dictionary can be an intentional modification also. <u>A \"mistake\" is something which is not in the dictionary AND which is very similar to a valid word<\/u>. If a word is not found in dictionary and no similar words are found, it has to be considered an intentional change the user induced and hence should be deemed correct. This often solves the issues of foreign words deemed as incorrect.<\/li>\n  <li>Spelling mistakes in inflected words usually happen at the lemma of the word, not the suffix. This is also because most commonly used suffix parts are pronounced differently and mistakes have a smaller chance to be present there.<\/li>\n<\/ol>\n\n<p><img src=\"\/images\/tech\/spellchecker_architecture.png\" alt=\"Spell checker architecture\" class=\"center-image\" \/><\/p>\n\n<p>The first phase, obviously is a corpus comparison to check if the input word is actually a valid word or not. If it is not, suggestions are generated. For this, a range of words have to be selected. From the logic of Malayalam having phonetic spelling mistakes, the words starting with the characters that are linguistic successor and predecessor of the first character of the word is selected. That is, for the input words \u0d2c\u0d3e\u0d30\u0d24\u0d02, which have \u0d2c as first character the words selected will be the ones starting by \u0d2b and \u0d2d. Out of these words, the top N (which is defaulted to 5) words have to be found out that are most similar to the input word.<\/p>\n\n<p>Three metrics were used for finding out similarity between two words. For Malayalam, a phonetic language, soundex similarity was assigned the top priority. To handle the words that were similar but not phonetically similar because of a difference on a single character that defines phonetic similarity, levenshtein distance was also used. This finds out distance between two words, or the number of operations needed for one word to be transformed to other. To handle the other words, Jaccard index was also used. The priority was assigned as soundex &gt; levenshtein &gt; jaccard. Weights were assigned to each possible suggestion based on the values of these three metrics based on the following logic:<\/p>\n\n<blockquote>\n  <p>If soundex == 1, similarity = 100<br \/>\nElseif levenshtein  &lt;= 2, weight = 75 + (1.5 * jaccards)<br \/>\nElseif levenshtein &lt; 5, weight = 65 + (1.5 * jaccards)<br \/>\nElse, weight = 0<\/p>\n<\/blockquote>\n\n<p>To differentiate between spelling \u201cmistakes\u201d and intended modifications, the logic used that if a word did not have N suggestions that have weight &gt; 50, it is most probably an intended word and not a spelling mistake. So, such words were deemed correct.<\/p>\n\n<p>A demo screencast of the spell checker is given below.<\/p>\n\n<video width=\"100%\" controls=\"\">\n    <source src=\"\/videos\/output1.mp4\" type=\"video\/mp4\" \/>\n    Your browser does not support the video tag.\n<\/video>\n\n<h2 id=\"3-package-structure\">3. Package structure<\/h2>\n\n<p>The existing modules of libindic had an inconsistent package structure that gave no visibility to the project. Also, the package names were too general and didn\u2019t convey the fact that they were used for Indic languages. So, I suggested and implemented the following suggestions<\/p>\n\n<ol>\n  <li>Package names (of the ones I used) were changed to libindic-<module>. Examples would be libindic-stemmer, libindic-ngram and libindic-spellchecker. So, the users will easily understand this package is part of libindic framework, and thus for indic text.<\/module><\/li>\n  <li>Namespace packages (PEP 421) were used, so that import statments of libindic modules will be of the form <code class=\"language-plaintext highlighter-rouge\">from libindic.&lt;module&gt; import &lt;language&gt;<\/code>. So, the visibility of the project \u2018libindic\u2019 is increased pretty much.<\/li>\n<\/ol>\n","pubDate":"Tue, 16 Aug 2016 23:47:17 -0500","link":"\/tech\/gsoc-final-report.html","guid":"\/tech\/gsoc-final-report.html","category":["malayalam","gsoc","stemmer","inflection","spellchecker","suggestion","jaccards","ngram","soundex","language","processing","GSoC"]},{"title":"4 Days. 22 Hours. LaTeX.","description":"<p>Heyo folks,<\/p>\n\n<p>One of the stuff I love doing is teaching what I know to others. Though it is a Clich\u00e9 dialogue, I know from experience that when we teach others our knowledge expands. From 10 students, you often get 25 different doubts and minimum 5 of them would be ones you haven\u2019t even thought yourself earlier. In that way, teaching drives a our curiosity to find out more.\n<!--more--><\/p>\n\n<p>I was asked to take a LaTeX training for B.Tech students as a bridge course (happening during their semester breaks. Poor kids!). The usual scenario is faculty taking class and we PG students assisting them. But, since all the faculty members were busy with their own subjects\u2019 bridge courses and LaTeX was something like an additional skill that the students need for their next semesters for their report preparation, I was asked to take to take it with the assistance of my classmates. At first, I was asked to take a two-day session for third year IT students. But later, HOD decided that both CS and IT students should have that class, and guess what - I had to teach for four days. Weirdly, the IT class was split to two non-continuous dates - Monday and Wednesday. So, I didn\u2019t have to take class for four consecutive days, but only three. :D<\/p>\n\n<p>The syllabus I followed is as follows:<\/p>\n\n<ul>\n  <li>Basic LaTeX \u2013 Session I\n    <ol>\n      <li>Brief introduction about LaTeX, general document structure, packages etc.<\/li>\n      <li>Text Formatting<\/li>\n      <li>Lists \u2013 Bullets and Numbering<\/li>\n    <\/ol>\n  <\/li>\n  <li>Graphics and Formulas \u2013 Session II\n    <ol>\n      <li>Working with Images<\/li>\n      <li>Tables<\/li>\n      <li>Basic Mathematical Formulas<\/li>\n    <\/ol>\n  <\/li>\n  <li>Academic Document Generation (Reports and Papers) \u2013 Session III\n    <ol>\n      <li>Sectioning and Chapters<\/li>\n      <li>Header and Footer<\/li>\n      <li>Table of Contents<\/li>\n      <li>Adding Bibliography and Citations<\/li>\n      <li>IEEETran template<\/li>\n    <\/ol>\n  <\/li>\n  <li>Presentations using Beamer \u2013 Session IV<\/li>\n<\/ul>\n\n<p>As (I, not the faculty) expected, only half of the students came (Classes on semester breaks, I was surprised when even half came!). Both the workshops - for CS and IT - were smooth without any much issues or hinderences. Students didn\u2019t hesitate much to ask doubts or tips on how to do stuff that I didn\u2019t teach (Unfortunately, I didn\u2019t have time to go off-syllabus, so I directed them to Internet. :D). Analysing the students, CS students were more lively and interactive but they took some time to grasp the concept. Compared to them, even though kind of silent, IT students learned stuff fast.<\/p>\n\n<p>By Friday, I had completed 4 days, around 22 hours of teaching and that too non-stop. I was tired each day after the class, but it was still fun to share the stuff I know. I would love to get this chance again.<\/p>\n\n<p><img src=\"\/images\/tech\/latex-it.jpeg\" alt=\"IT Batch\" \/><\/p>\n\n<div class=\"caption\">IT Batch<\/div>\n<p><br \/>\n<br \/>\n<br \/>\n<img src=\"\/images\/tech\/latex-cs.jpeg\" alt=\"CSE Batch\" \/><\/p>\n\n<div class=\"caption\">CSE Batch<\/div>\n","pubDate":"Mon, 25 Jul 2016 00:00:00 -0500","link":"\/tech\/latex-training.html","guid":"\/tech\/latex-training.html","category":["latex","training","teaching","knowlege","Lecture"]},{"title":"Kerala State IT Policy - A Stakeholder Consultation","description":"<p>Heyo folks,<\/p>\n\n<p>Last Saturday, that is 16th July, I attendeda a meeting regarding the upcoming Kerala State IT Policy. It was a stakeholder consultation organized by DAKF, Software Freedom Law Centre and Ernakulam Public Library Infopark branch. The program was presided by Prasanth Sugathan of SFLC (I had met him during Swatanthra, when I helped Praveen in the Privacy track) and was inaugurated by M. P Sukumaran Nair, advisor to the Minister of Industries. The agenda of the meeting was to discuss about the suggestions that needs to be submitted to the Government before they draft the official IT policy, that will be in effect for the next few years. I attended the meeting representing Swathanthra Malayalam Computing. Even though the meeting had a small audience, some of the key topics were brought into the mix. <!--more--><\/p>\n\n<p>Professor Jyothi John, retired principal of Model Engg. College, discussed about MOOCs to improve the education standard of the State. He also talked about improving the industry-academia-research relationship that is in a pathetic state as of now. I was asked to talk a few words. But, since SMC hadn\u2019t taken any official stand or points for the meeting, I actually talked about my views about the issue. Obviously, my topics were more focused on Language Computing, Digital empowerment of the language and as well as how FOSS should be the key stone of the IT policy. I also mentioned about the E-Waste problem that Anivar had discussed the other day on the Whatsapp group.<\/p>\n\n<p><img src=\"\/images\/tech\/itpolicy_balu.jpeg\" alt=\"Me Talking\" class=\"inline\" \/><\/p>\n\n<div class=\"caption\">Me Talking | PC: Sivahari<\/div>\n\n<p>Mr. Joseph Thomas, the president of FSMI also talked on the importance of FOSS in IT policy (Kiran Thomas had some pretty strong disagreements with it. :D ). Following that, Babu Dominic from BSNL talked about their success stories with FOSS and how the project was scraped by government. There were some brilliant insights from Satheesh, who is a Social Entrepreneur now and once ran an IT-based company.<\/p>\n\n<p>Following that, the meeting took the form of a round table discussion where interesting points regarding E-Waste and the money-saving nature of FOSS (Microsoft has been targetting Institutions for pirated copies, not home users) were raised by Mr. Bijumon, Asst Professor of Model Engg College. Mr. Jayasreekumar, who is a journalist talked about the important issue of the downtrodden people, or the people in the lower socio-economic belt were not part of the discussion and the image of digital divide that carves. We have to seriously increase diversity of participants in these meetings, as a large part of the population has no representation in them. Such meetings will be only fruitful, if the sidelined communities who also should benefit from this policy are brought together to participate in them.<\/p>\n\n<p>The general theme of the meeting was pointing towards how the IT policy should focus more on the internal market, and how it should be helpful in entrepreneurs in competing with foreign competitors, atleast in the domestic market.<\/p>\n\n<p><img src=\"\/images\/tech\/itpolicy_news.jpeg\" alt=\"News Coverage in Deshabhimani\" \/><\/p>\n\n<div class=\"caption\">News Coverage | PC: Deshabhimani<\/div>\n\n<p>More and more meetings of this nature are a must, if the state is to advance in the domain of IT.<\/p>\n","pubDate":"Thu, 21 Jul 2016 00:00:00 -0500","link":"\/tech\/it-policy-discussion.html","guid":"\/tech\/it-policy-discussion.html","category":["itpolicy","government","foss","discussion","meeting","smc","FOSS","Event","SMC"]},{"title":"GSoC Update: Week #7 and #8","description":"<p>Heyo,<\/p>\n<p>Last two weeks were seeing less coding and more polishing. I was fixing the LibIndic modules to utilize the concept of namespace packages (<a href=\"https:\/\/www.python.org\/dev\/peps\/pep-0420\/\">PEP 420<\/a>) to obtain the <code>libindic.module<\/code> structure. In the stemmer module, I introduced the namespace package concept and it worked well. I also made the inflector a part of stemmer itself. Since inflector's functionality was heavily dependent on the output of the stemmer, it made more sense to make inflector a part of stemmer itself, rather than an individual package. Also, I made the inflector language-agnostic so that it will accept a language parameters as input during initialization and select the appropriate rules file.<\/p>\n<p>In spellchecker also, I implemented the namespace concept and removed the bundled packages of stemmer and inflector. Other modifications were needed to make the tests run with this namespace concept, fixing coverage to pick the change etc. In the coding side, I added weights to the three metrics so as to generate suggestions more efficiently. I am thinking about formulating an algorithm to make comparison of suggestions and root words more efficient. Also, I may try handling spelling mistakes in the suffixes.<\/p>\n<p>This week, I met with Hrishi and discussed about the project. He is yet to go through the algorithm and comment on that. However he made a suggestion to split out the languages to each file and make <strong>init<\/strong>.py more clean (just importing these split language files). He was ok with the work so far, as he tried out the web version of the stemmer.<\/p>\n<div style=\"text-align:center\">\n[caption id=\"attachment_852\" align=\"aligncenter\" width=\"800\"]<a href=\"http:\/\/balasankarc.in\/tech\/wp-content\/uploads\/2016\/07\/hrishi_test_spellchecke.png\"><img src=\"http:\/\/balasankarc.in\/tech\/wp-content\/uploads\/2016\/07\/hrishi_test_spellchecke.png\" alt=\"hrishi_testing_spellchecker\" width=\"800\" height=\"395\" class=\"size-full wp-image-852\" \/><\/a> Hrishi testing out the spellchecker[\/caption]<br \/>\n<\/div><\/p>\n","pubDate":"Mon, 18 Jul 2016 19:47:17 -0500","link":"\/tech\/gsoc07-08.html","guid":"\/tech\/gsoc07-08.html","category":["malayalam","gsoc","stemmer","inflection","spellchecker","suggestion","jaccards","ngram","soundex","language","processing","GSoC"]}]}}