├── .gitignore ├── .hugo_build.lock ├── archetypes └── default.md ├── assets └── css │ ├── dark.css │ ├── fonts.css │ ├── main.css │ └── syntax.css ├── config.toml ├── content └── blog │ ├── 20-and-22.md │ ├── 2019-1 │ ├── index.md │ └── jan.png │ ├── 2020.md │ ├── 2021-me.md │ ├── 2022.md │ ├── 2023.md │ ├── 2024.md │ ├── Automate-stuff │ └── index.md │ ├── Bangalore │ └── index.md │ ├── First-year │ └── index.md │ ├── My-Setup │ └── index.md │ ├── abraham.md │ ├── adbot-tg.md │ ├── analytics_from_scratch.md │ ├── birthday │ └── index.md │ ├── bye-k2.md │ ├── college-trip.md │ ├── custom-mdx.md │ ├── deploy-hugo │ ├── dpl.png │ └── index.md │ ├── desk-2020.md │ ├── docker-nix-python.md │ ├── dumb.md │ ├── fastapi-auth.md │ ├── fastapi_deta.md │ ├── final-year.md │ ├── frappe-internship.md │ ├── gorelaser │ └── index.md │ ├── hack.md │ ├── hackathons │ └── index.md │ ├── hopp-gen.md │ ├── image-gen.md │ ├── img │ ├── 2020-gh.png │ ├── 2022-gh.png │ ├── cat-typing.gif │ ├── eg-1.jpeg │ ├── eg-2.jpeg │ ├── eg-3.jpeg │ ├── eg-4.jpeg │ ├── fastapi.png │ ├── feynman.png │ ├── mp_1.jpeg │ ├── nw-img.jpeg │ ├── pil_img.jpeg │ ├── search.png │ ├── solder_1.jpeg │ ├── sw1.jpg │ ├── ws2.jpeg │ └── yay.gif │ ├── iv │ └── index.md │ ├── jiofi.md │ ├── lobsters_feed.md │ ├── love-and-other │ └── index.md │ ├── macropad.md │ ├── mob-dev │ └── index.md │ ├── philosophies.md │ ├── philosphy-2.md │ ├── pink-floyd.md │ ├── probot │ ├── glitch_show.png │ ├── index.md │ └── wp.jpg │ ├── purpose.md │ ├── pwcli │ ├── index.md │ └── scrot.png │ ├── readme_ghactions.md │ ├── shelby │ └── index.md │ ├── telegram-bot-gh-actions │ ├── bfather.png │ ├── index.mdx │ └── scr.png │ ├── termchat.mdx │ ├── tgnotify │ ├── index.md │ ├── p1.png │ └── p2.png │ ├── two-planets.md │ ├── useful │ └── index.md │ ├── why_birthday.md │ └── zettel-search.md ├── flake.lock ├── flake.nix ├── layouts ├── 404.html ├── _default │ ├── baseof.html │ ├── list.html │ ├── single.html │ ├── term.html │ └── terms.html ├── index.html ├── partials │ ├── footer.html │ ├── head.html │ ├── header.html │ └── paginator.html └── shortcodes │ └── callout.html ├── netlify.toml └── static └── n1.png /.gitignore: -------------------------------------------------------------------------------- 1 | public/ -------------------------------------------------------------------------------- /.hugo_build.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/athul/blog/70339afbaad1cad9f38b1ce8472971731419079a/.hugo_build.lock -------------------------------------------------------------------------------- /archetypes/default.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "{{ replace .Name "-" " " | title }}" 3 | date: {{ .Date }} 4 | draft: true 5 | --- 6 | 7 | -------------------------------------------------------------------------------- /assets/css/dark.css: -------------------------------------------------------------------------------- 1 | body { 2 | color: white; 3 | background-color: #121116; 4 | } 5 | 6 | ::-moz-selection { 7 | background: blue; 8 | color: #fff; 9 | text-shadow: none; 10 | } 11 | 12 | ::selection { 13 | background: red; 14 | color: #fff; 15 | text-shadow: none; 16 | } 17 | 18 | code { 19 | /* background-color: lightblue; */ 20 | /* color: black; */ 21 | text-decoration: bold; 22 | padding: 0.1em 0.2em; 23 | } 24 | pre { 25 | background-color: #272822; 26 | line-height: 1.4; 27 | overflow-x: auto; 28 | padding: 1em; 29 | } 30 | 31 | a { 32 | border-bottom: 3px solid var(--darkMaincolor); 33 | color: inherit; 34 | } 35 | /* a:hover { 36 | background-color: var(--darkMaincolor); 37 | color: black; 38 | } */ 39 | 40 | .site-description a { 41 | color: #ddd; 42 | } 43 | .site-description a:hover { 44 | color: black; 45 | } 46 | 47 | .tags a { 48 | color: paleturquoise; 49 | border-bottom: 3px solid var(--darkMaincolor); 50 | } 51 | .tags a:hover { 52 | background-color: var(--darkMaincolor); 53 | color: plum; 54 | } 55 | 56 | .site-title a { 57 | color: white; 58 | text-decoration: none !important; 59 | } 60 | 61 | .header nav, 62 | .footer { 63 | border-color: #333; 64 | } 65 | 66 | .highlight { 67 | background-color: #333; 68 | } 69 | .soc:hover { 70 | color: plum; 71 | } 72 | .draft-label { 73 | color: var(--darkMaincolor); 74 | background-color: blue; 75 | } 76 | -------------------------------------------------------------------------------- /assets/css/fonts.css: -------------------------------------------------------------------------------- 1 | /* fira-sans-regular - latin */ 2 | @font-face { 3 | font-family: 'Fira Sans'; 4 | font-style: normal; 5 | font-weight: 400; 6 | src: url('../fonts/fira-sans-v10-latin-regular.eot'); /* IE9 Compat Modes */ 7 | src: local('Fira Sans Regular'), local('FiraSans-Regular'), 8 | url('../fonts/fira-sans-v10-latin-regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ 9 | url('../fonts/fira-sans-v10-latin-regular.woff2') format('woff2'), /* Super Modern Browsers */ 10 | url('../fonts/fira-sans-v10-latin-regular.woff') format('woff'), /* Modern Browsers */ 11 | url('../fonts/fira-sans-v10-latin-regular.ttf') format('truetype'), /* Safari, Android, iOS */ 12 | url('../fonts/fira-sans-v10-latin-regular.svg#FiraSans') format('svg'); /* Legacy iOS */ 13 | } 14 | /* roboto-mono-regular - latin */ 15 | @font-face { 16 | font-family: 'Roboto Mono'; 17 | font-style: normal; 18 | font-weight: 400; 19 | src: url('../fonts/roboto-mono-v12-latin-regular.eot'); /* IE9 Compat Modes */ 20 | src: url('../fonts/roboto-mono-v12-latin-regular.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ 21 | url('../fonts/roboto-mono-v12-latin-regular.woff2') format('woff2'), /* Super Modern Browsers */ 22 | url('../fonts/roboto-mono-v12-latin-regular.woff') format('woff'), /* Modern Browsers */ 23 | url('../fonts/roboto-mono-v12-latin-regular.ttf') format('truetype'), /* Safari, Android, iOS */ 24 | url('../fonts/roboto-mono-v12-latin-regular.svg#RobotoMono') format('svg'); /* Legacy iOS */ 25 | } 26 | /* ibm-plex-mono-500italic - latin */ 27 | @font-face { 28 | font-family: 'IBM Plex Mono'; 29 | font-style: italic; 30 | font-weight: 500; 31 | src: url('../fonts/ibm-plex-mono-v6-latin-500italic.eot'); /* IE9 Compat Modes */ 32 | src: local('IBM Plex Mono Medium Italic'), local('IBMPlexMono-MediumItalic'), 33 | url('../fonts/ibm-plex-mono-v6-latin-500italic.eot?#iefix') format('embedded-opentype'), /* IE6-IE8 */ 34 | url('../fonts/ibm-plex-mono-v6-latin-500italic.woff2') format('woff2'), /* Super Modern Browsers */ 35 | url('../fonts/ibm-plex-mono-v6-latin-500italic.woff') format('woff'), /* Modern Browsers */ 36 | url('../fonts/ibm-plex-mono-v6-latin-500italic.ttf') format('truetype'), /* Safari, Android, iOS */ 37 | url('../fonts/ibm-plex-mono-v6-latin-500italic.svg#IBMPlexMono') format('svg'); /* Legacy iOS */ 38 | } 39 | -------------------------------------------------------------------------------- /assets/css/main.css: -------------------------------------------------------------------------------- 1 | /* global.css */ 2 | @import url("https://cdn.jsdelivr.net/npm/@xz/fonts@1/serve/fira-sans.min.css"); 3 | @import url("https://cdn.jsdelivr.net/npm/@xz/fonts@1/serve/cascadia-code.min.css"); 4 | @import url("https://fonts.googleapis.com/css2?family=Open+Sans:wght@700&display=swap"); 5 | @import url("https://fonts.googleapis.com/css2?family=Montserrat:wght@400;900&display=swap"); 6 | html { 7 | font: 100%/1.75 "Merriweather", "Georgia", serif; 8 | } 9 | body { 10 | --bg: #121116; 11 | --textNormal: rgba(255, 255, 255, 0.88); 12 | --textTitle: yellow; 13 | --textLink: yellow; 14 | --block: rgba(255, 255, 255, 0.63); 15 | --hr: hsla(0, 0%, 100%, 0.2); 16 | --link: #121116; 17 | --date: silver; 18 | --ttr: teal; 19 | --hovercolor: #50fa7b; 20 | --headingcol: #50fa7b; 21 | background-color: var(--bg); 22 | --callout: #42b983; 23 | transition: background 0.2s ease-out; 24 | --calbdcol: #50fa7b; 25 | --selection: crimson; 26 | --gh: dodgerblue; 27 | --gh-bx: black; 28 | --inlineCode-text: rgb(173, 219, 103); 29 | } 30 | .desc { 31 | font-family: "Fira Sans", sans-serif; 32 | font-size: large; 33 | margin-bottom: 2rem; 34 | display: flex; 35 | } 36 | .desc a { 37 | color: var(--textLink); 38 | text-decoration: none; 39 | } 40 | .desc strong { 41 | color: hotpink; 42 | } 43 | .content { 44 | font-family: "Fira Sans", sans-serif; 45 | font-size: large; 46 | max-width: 61.25rem; 47 | margin-left: auto; 48 | margin-right: auto; 49 | padding: 2.625rem 1.3125rem; 50 | } 51 | section a:hover { 52 | background-color: var(--hovercolor); 53 | color: var(--link); 54 | } 55 | 56 | blockquote { 57 | border-color: rebeccapurple; 58 | color: var(--textNormal); 59 | border-left: 0.32813rem solid rebeccapurple; 60 | margin-left: -1.75rem; 61 | padding-left: 1.42188rem; 62 | font-style: italic; 63 | } 64 | hr { 65 | border: 3px solid rebeccapurple; 66 | margin-bottom: calc(1.75rem - 1px); 67 | } 68 | .bio { 69 | font-family: "Fira Sans", sans-serif; 70 | font-size: medium; 71 | } 72 | img { 73 | display: block; 74 | margin: 0 auto; 75 | } 76 | h2, 77 | h3, 78 | h4, 79 | h5 { 80 | letter-spacing: -0.015em; 81 | font-family: "Open Sans", sans-serif; 82 | font-size: x-large; 83 | } 84 | .callout { 85 | color: #cdd6f4; 86 | background: #1e1e2e; 87 | padding: 1.5em 1.25em; 88 | border-radius: 25px; 89 | display: flex; 90 | flex-direction: row; 91 | margin-top: 20px; 92 | border-bottom-width: 4px; 93 | border-bottom-style: solid; 94 | border-bottom-color: #a6e3a1; 95 | border-left-color: #a6e3a1; 96 | border-left-width: 6px; 97 | border-left-style: solid; 98 | } 99 | .callout-inner { 100 | font-style: italic; 101 | margin-left: 1em; 102 | } 103 | .callout a { 104 | color: blue; 105 | } 106 | .callout a:hover { 107 | background: greenyellow; 108 | } 109 | 110 | @media (max-width: 767px) { 111 | .callout { 112 | padding: 1.5em 0.75em 1.5em 0.6em; 113 | } 114 | .callout-inner { 115 | margin-left: 0.5em; 116 | } 117 | } 118 | 119 | div .callout::before { 120 | color: red; 121 | content: attr(emoji); 122 | } 123 | .new-label { 124 | color: #50fa7b; 125 | text-decoration: none; 126 | padding: 2px 4px; 127 | border-radius: 4px; 128 | margin-left: 6px; 129 | background-color: dodgerblue; 130 | } 131 | .main { 132 | font-family: "Montserrat", sans-serif; 133 | font-weight: 900; 134 | } 135 | h1 { 136 | font-family: "Montserrat", sans-serif; 137 | font-size: 2.5rem; 138 | } 139 | .main h1 { 140 | font-size: 4rem; 141 | line-height: 4.375rem; 142 | margin-bottom: 2.625rem; 143 | margin-top: 0px; 144 | } 145 | .main a { 146 | box-shadow: none; 147 | text-decoration: none; 148 | color: tomato; 149 | } 150 | .main a:hover { 151 | color: tomato; 152 | } 153 | .head a:hover { 154 | color: red; 155 | background-color: var(--hovercolor); 156 | } 157 | 158 | article a { 159 | box-shadow: 0 1px 0 0 currentColor; 160 | color: var(--textLink); 161 | text-decoration: none; 162 | } 163 | footer a { 164 | color: plum; 165 | text-decoration: none; 166 | } 167 | .list-item a { 168 | box-shadow: 0 1px 0 0 currentColor; 169 | color: paleturquoise; 170 | text-decoration: none; 171 | } 172 | .list-item h3 a:hover { 173 | background-color: var(--bg); 174 | } 175 | .meta { 176 | color: #999; 177 | letter-spacing: -0.5px; 178 | } 179 | .single_header a { 180 | box-shadow: none; 181 | text-decoration: none; 182 | color: tomato; 183 | } 184 | .single_header a:hover { 185 | color: tomato; 186 | } 187 | .single_header h3 { 188 | font-family: Montserrat, sans-serif; 189 | line-height: 1.1; 190 | margin-top: unset; 191 | } 192 | figcaption { 193 | text-align: center; 194 | } 195 | -------------------------------------------------------------------------------- /assets/css/syntax.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Based on copypasta from Remy Bach and Sarah Drasner 3 | */ 4 | code[class*='language-'], 5 | pre[class*='language-'] { 6 | color: white; 7 | background: none; 8 | font-family: Consolas, Menlo, Monaco, source-code-pro, Courier New, monospace; 9 | font-feature-settings: normal; 10 | text-align: left; 11 | white-space: pre; 12 | word-spacing: normal; 13 | word-break: normal; 14 | word-wrap: normal; 15 | line-height: 1.5; 16 | margin-bottom: 0; 17 | 18 | -moz-tab-size: 4; 19 | -o-tab-size: 4; 20 | tab-size: 4; 21 | 22 | -webkit-hyphens: none; 23 | -moz-hyphens: none; 24 | -ms-hyphens: none; 25 | hyphens: none; 26 | } 27 | 28 | /* Code blocks */ 29 | code[class*='language-'] { 30 | overflow: auto; 31 | padding: 1.3125rem; 32 | } 33 | 34 | pre[class*='language-']::-moz-selection { 35 | /* Firefox */ 36 | background: hsl(207, 4%, 16%); 37 | } 38 | 39 | pre[class*='language-']::selection { 40 | /* Safari */ 41 | background: hsl(207, 4%, 16%); 42 | } 43 | 44 | /* Text Selection colour */ 45 | pre[class*='language-']::-moz-selection, 46 | pre[class*='language-'] ::-moz-selection { 47 | text-shadow: none; 48 | background: hsla(0, 0%, 100%, 0.15); 49 | } 50 | 51 | pre[class*='language-']::selection, 52 | pre[class*='language-'] ::selection { 53 | text-shadow: none; 54 | background: hsla(0, 0%, 100%, 0.15); 55 | } 56 | 57 | /* Inline code */ 58 | :not(pre) > code[class*='language-'] { 59 | border-radius: 0.3em; 60 | background: #031627; 61 | color: var(--inlineCode-text); 62 | padding: 0.15em 0.2em 0.05em; 63 | white-space: normal; 64 | } 65 | 66 | .token.attr-name { 67 | color: rgb(173, 219, 103); 68 | font-style: italic; 69 | } 70 | 71 | .token.comment { 72 | color: rgb(128, 147, 147); 73 | } 74 | 75 | .token.string, 76 | .token.url { 77 | color: rgb(173, 219, 103); 78 | } 79 | 80 | .token.variable { 81 | color: rgb(214, 222, 235); 82 | } 83 | 84 | .token.number { 85 | color: rgb(247, 140, 108); 86 | } 87 | 88 | .token.builtin, 89 | .token.char, 90 | .token.constant, 91 | .token.function { 92 | color: rgb(130, 170, 255); 93 | } 94 | 95 | .token.punctuation { 96 | color: rgb(199, 146, 234); 97 | } 98 | 99 | .token.selector, 100 | .token.doctype { 101 | color: rgb(199, 146, 234); 102 | font-style: 'italic'; 103 | } 104 | 105 | .token.class-name { 106 | color: rgb(255, 203, 139); 107 | } 108 | 109 | .token.tag, 110 | .token.operator, 111 | .token.keyword { 112 | color: #ffa7c4; 113 | } 114 | 115 | .token.boolean { 116 | color: rgb(255, 88, 116); 117 | } 118 | 119 | .token.property { 120 | color: rgb(128, 203, 196); 121 | } 122 | 123 | .token.namespace { 124 | color: rgb(178, 204, 214); 125 | } 126 | 127 | pre[data-line] { 128 | padding: 1em 0 1em 3em; 129 | position: relative; 130 | } 131 | 132 | .highlight { 133 | background-color: hsla(207, 95%, 15%, 1); 134 | display: block; 135 | margin-right: -1.3125rem; 136 | margin-left: -1.3125rem; 137 | padding-right: 1em; 138 | padding-left: 1.25em; 139 | border-left: 0.25em solid #ffa7c4; 140 | } 141 | 142 | .highlight { 143 | margin-bottom: 1.75rem; 144 | margin-left: -1.3125rem; 145 | margin-right: -1.3125rem; 146 | border-radius: 10px; 147 | background: #011627; 148 | -webkit-overflow-scrolling: touch; 149 | overflow: auto; 150 | } 151 | 152 | @media (max-width: 672px) { 153 | .highlight { 154 | border-radius: 0; 155 | } 156 | } 157 | 158 | .highlight code[class*='language-'] { 159 | float: left; 160 | min-width: 100%; 161 | } -------------------------------------------------------------------------------- /config.toml: -------------------------------------------------------------------------------- 1 | baseURL = "https://blog.athulcyriac.in" 2 | languageCode = "en-us" 3 | title = "dayDreams ++" 4 | copyright = "© Athul" 5 | paginate = 6 6 | pygmentsstyle = "catppuccin-mocha" 7 | pygmentscodefences = true 8 | pygmentscodefencesguesssyntax = true 9 | enableEmoji = true 10 | 11 | [params] 12 | favicon = "/n1.png" 13 | mode = "dark" 14 | useCDN = true 15 | subtitle = "Personal Blog of **Athul Cyriac Ajay**. Find more about me [here](https://athulcyriac.in)" 16 | description = "Because I daydream as incrementally" 17 | 18 | [[params.social]] 19 | name = "GitHub" 20 | icon = "github" 21 | url = "https://github.com/athul" 22 | 23 | [[params.social]] 24 | name = "Twitter" 25 | icon = "twitter" 26 | url = "https://twitter.com/athulcajay/" 27 | 28 | [[params.social]] 29 | name = "GitLab" 30 | icon = "gitlab" 31 | url = "https://gitlab.com/athul/" 32 | 33 | [[menu.main]] 34 | name = "RSS" 35 | url = "/index.xml" 36 | weight = 3 37 | 38 | [[menu.main]] 39 | name = "All Posts" 40 | url = "/blog" 41 | weight = 2 42 | 43 | [[menu.main]] 44 | name = "Tags" 45 | url = "/tags" 46 | weight = 1 47 | -------------------------------------------------------------------------------- /content/blog/20-and-22.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 20 → 22 3 | date: "2023-03-04" 4 | description: Though being 20 was hard, try >20 5 | tags: ["meta","rant"] 6 | --- 7 | 8 | So 2 years ago, one of my friends were looking for a job and he was 22 at that time. He was/is a good programmer guy and had a lot of projects under his name. He was struggling to get a job he liked and I asked him a question. 9 | 10 | > "Dude you are a contributor to the Fedora Kernal, how hard can getting the job be?" 11 | > To which he replied 12 | > "That was 20 year old me. I'm not 20 anymore" 13 | 14 | Little did I know that this answer will come to haunt me 2 years later. 15 | 16 | ---- 17 | 18 | When I was 20, I used to be the guy who thinks of "how can I write something that will solve this given problem" and I would have a rough idea on how to build a solution to that. It was not a well thought out product or something of extreme value but it felt great when I could think of something like that and get motivated to work on it. I used to spend almost all my weekend attending hackathons, hacking on stuff I found interesting and fun. 19 | 20 | I can safely say **I used to be a Hacker**. 21 | 22 | Am I a hacker now? I'm not sure. Sometimes I get this sudden boost in motivation to work on something so trivial or something more fun just to make 5 mins of my time less manual. But that's just programmer vibes I guess, a lot of "Not Invented Here" syndrome. 23 | 24 | My life has been one hack on top of another. Winging things all the time, not completing enough(Only things I've completed end to end is School and some old computer games) just leaving things off once it serves my purpose. It's a pretty lazy trait and I fully accept me being lazy. But being lazy has it's perks of getting to work on something that makes your life less mediocre. 25 | 26 | But thinking on mediocrity on life, life used to be less mediocre back when I was 20. Sitting home(due to covid), having a deluge of ideas, not thinking much into the future and getting anxious, pondering on philosophical pointless questions. But being 22, guess the only thing still going on from 2 years ago is sitting at home(remotly working), everything else has changed. Zero original ideas, zero creativity, zero things to do for fun and more mediocre. Maybe I'm just trying to hold on to my childish self. If I get to an option to choose to relive my childhood vs to fast forward to my mid-life situation, I'll choose my childhood any day any time and relive it all again to reach this age again and wing it again. Life was simpler then(like a 50 year old would say). Funnily(?) enough I can't write my heart out anymore, even reading my blogs from 2 years ago makes my current self feel like *what happened?* and neither can I read much more books. I mean these two must be correlated but still not living upto that 20 year old self. Maybe from my current perpective, life peaked when I was 20 and I'm still struggling to match what I achieved when I was 20. 27 | 28 | Maybe my GitHub green dots might give you an idea on what changed 29 | 30 | {{< figure src="../img/2020-gh.png" width="70%" >}} 31 | {{< figure src="../img/2022-gh.png" width="70%" >}} 32 | 33 | I'm just speculating on all the above, it's fun to have these weird thought experiments as long as it doesn't kill a cat or destroy a ship. 34 | 35 | But yeah, being 22 hasn't been easy to wing. Maybe mediocrity is part of being an Adult(Am I an adult?). Maybe it's becoming all the things I never dreamt of becoming but alas! I've become all those. I've become a bore of a person, less interesting. I find my 20 year old self a hella lot interesting and lot more curious and a lot more hacker vibes and zero fucks to give. Now it's too many "fucks to give" to handle. 36 | 37 | I'm sorry to that 20 year self, I'm sorry that I ended up less than you. 38 | 39 | > "The child is gone, The dream is gone 40 | > I have become comfortably numb" 41 | > - Comfortably Numb, The Wall,Pink Floyd 42 | -------------------------------------------------------------------------------- /content/blog/2019-1/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: 2019 in an Oyster's Shell-I 3 | date: "2020-01-12" 4 | description: Its rewind time everybody.... 5 | tags: ["life","rewind"] 6 | aliases: [/2019] 7 | --- 8 | > Okay, when you're reading this, I am 2020% sure that you wont be in 2019.😝 9 | 10 | 2019 ended as every year ends, FAST and obviously fucked. Mine was just same... There were a lot of good things that happened like making this blog and becoming old. 2019 wasn't that harsh on **me** like the years before that. 11 | 12 | I got to do a lot of stuff I wished to do. I learned lots of stuff. Explored much,travelled much... 13 | 14 | Let me try to recollect stuff in the order of Months 15 | 16 | ### January 17 | On December 31st,2018 at about 11pm, I received an email regarding the GitHub Campus Experts Program. It stated that my first review was over and I had to improve on stuff. Okay that is not a good one to start the year with but hey I thought that was for the good. 2018 has given me its last blow. 18 | 19 | 2019 in January was full of mixed feelings and wishes...I was still in my S1 then. Specifically I was writing my first sem exams, without knowing which was would I fail first. My new year resolution for 2019 was to improve my profile in GitHub. I started commiting for the first 15 days in one of my private repositories. I did that, by thinking GitHub could be my perfect "Dear Diary". 20 | 21 | ![](/jan.png) 22 | 23 | On Jan 14th I went to Kochi-Muziris Bienale. I'm not that much of an art fan but I went there for meeting Sir Richard Stallman, the then FSF Head. Since I was bored by art, I walked nearly 1km to go to the nearest beach and stayed there till noon and again walked 2km to mattanchery to get food. I also got to meet a lot of wonderful student developers in central kerala. I still keep contact with most of them. I met Devdutt Shenoi, Sreeram, Kiran, Subin, Abhijith, George and many others whom I have forgotten the names. 2019's first Biriyani happened on the same day which was with My dad who then worked in Mattanchery and it was at Kayees, t'was a **kidu** biriyani. 24 | 25 | Exams were now over and we were planning to host a Hackathon in college. We had a team set and all, and we planned. 26 | 27 | I went to Velaimkanni in Tamil Nadu that month and got an email at 4am in the morning that my 2nd review for the campus experts program was done and i still needed to be improved. And again college, January ended pretty good and 11% of 2019 was done. 28 | 29 | ### February 30 | February was the month which helped me cross off the first thing in my Year checklist, Becoming a Campus Expert. That happened by 24th of February. Thats the best thing I remember in February. I got a project to do for our department's library. I moved from Windows to Linux and met Sharad Joe,Namitha,Chrisbin, Sumithran and Akshaya at School of AI Kottayam's first meetup in Kottayam. I got my Hacktoberfest Swags that month. 31 | 32 | ### March 33 | In the first week of March, I had a video call from GitHub about the Campus Experts. She was the program manager and that was the first time I had a one-to-one conversation with a person not from India. I got to meet a lot of people from different parts of the world and India itself. I was so excited to join the program and thus I became the **Campus Expert from Kerala**. I got to be featured in Gopi Chettan's whatspp status and in TinkerHub's official Instagram and twitter handles. 34 | 35 | We named our Hackathon _*Meenachil/Meen Hacks*_ and Iwas in charge of Sponsorship and Website. I had donemuch work on that. 36 | 37 | ### April 38 | Our college's Techincal fest was that month but I couldn't enjoy much since I was suffering from severe Asthma. 39 | I got my swags from GitHub being a campus expert. This included a Hoodie, a Bag and a GitHub Campus Experts Flag. April was okay and it was the time we were meant to host our Hackathon but due to technical issues we had to postpone it. Our S1 results came that month. Those were tough times, and postponing the hackathon had left us low in confidence. The 2nd Sememster exams were also upon us. 40 | 41 | ### May 42 | I discoverd Termux which could be used to run code on Android. And since my PC was on strike I had to use Termux. I learned Vim and NeoVim and became big fans of it. Study Leaves and Exams. 43 | ### June 44 | June was full of exams and code. June was a good month. I wrote code on my Phone. I wrote [Wakatime Metrics with Json](https://github.com/athul/wakatime-metrics) in this time. 45 | Just the next day after my Physics University exam, I commited the initial one for this blog. I wrote the first two blogs on my Phone. People were telling that I was lying when I told them that I coded my blog on my phone 46 | ### July 47 | My birthmonth. I was home most of the time due to sem break. Nothing good came that month. 48 | ### August 49 | I went to my first ever hackathon and that was in Bangalore too. My teammate was Devdutt and that was my travels for the first time. 50 | It was also the month were gonna conduct MeenHacks but on the day before the Hackathon, we had to cancel the event due to imminent rains. I was totally depressed for 2 weeks after the event postponed...Again. Kerala again went to flood mode. I contributed to Kerala Rescue by opening an Issue and Submi tting a PR review. 51 | 52 | ----- 53 | Rest on Part 2 54 | -------------------------------------------------------------------------------- /content/blog/2019-1/jan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/athul/blog/70339afbaad1cad9f38b1ce8472971731419079a/content/blog/2019-1/jan.png -------------------------------------------------------------------------------- /content/blog/2020.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: The 2020! 3 | date: "2020-12-31" 4 | description: 2020 taught me ....... 5 | tags: ["life","personal","rewind"] 6 | aliases: [/2020] 7 | --- 8 | 2020 was hell of a year and I mean that not as an *idiom* but literally it was hellish. But I learned a lot in 2020. Let it be how to actually drive a car or do Yoga, it's all due to 2020. I've only been around the Sun for 20 times.As of Jan 1 2021, I'm only 20.5 years old. 9 | 10 | 2020 gave me a new view on life. Too much Kurzgesagt give you an existential crisis mind. I questioned about the point of life. What's actually the point of living on this big pile of silica? What difference does our life actually make? These were my thoughts for a few months but I later moved past that. There is no point in over-thinking this stuff. 11 | 12 | 2020 taught me how social interactions matter. Personally I see a lot of people everyday and speak with them, 2020 gave a stoppage to all that. I acquired(not proud of it) *Social Anxiety*. I feared to talk to people whom I don't know about especially on Virtual Meetings. I guess I overcame that. 13 | 14 | 2020 gave me a new perspective on Cinema. All the credits go to my brother for that. I watched old movies. Movies before my birth, It's just sad to watch movies of today compared to that. Other than a handful movies, all are cliched to a huge extent. 15 | 16 | 2020 showed me the value of people. It taught me about grief and loss. 2020 took a friend from me. The day before we were playing cards and Mini Militia in home balcony and the next day he wasn't there. I still remember his favorite dialog from KGF. 17 | 18 | 2020 taught me how to manage money. Money can't buy you happiness, it just increases the stress of being you. It increases the responsiblities you have on your family. 19 | 20 | 2020 taught how a competitive work environment actually works and the need for asking questions to stuff that you don't know. It showed me how incompetent I am and not very consistent at anything. May be I have [Dunning-Kruger]. 21 | 22 | 2020 gave me a lot of time and books to read. Sadly I didn't even complete a single book. 23 | 24 | 2020 gave me a new perspective on Malayalam music. It's pretty cool per se. 25 | 26 | 2020 gave me chances to work on many side projects. I still remember last Jan 1, I posted about [Shelby](https://github.com/athul/shelby) and it was my first project to reach 100+ stars on GitHub. My highest repo stars is 300+. 27 | 28 | 2020 made me learn more about automating stuff and RSS feeds. I've made a few telegram bots as my Feedreader for the day. I mainly use it for [Lobsters Front Page](https://lobste.rs) 29 | 30 | 2020 taught me to hack in Virtual hackathons. Discord was the saviour. 31 | 32 | 2020 taught me how to let go of my fears. Main fear is not achieving anything after college and being a zero in Life as a whole. 33 | 34 | 2020 made me realize how *fat* I was getting. Being tall and fat is bad combination. 35 | 36 | 2020 gave me my first Salary. It was from an Internship and not any side gig. 37 | 38 | 2020 was the year of the SPAMfam. It showed me what it means to be in a technical community. 39 | 40 | 2020(Feb) showed me new places. I [travelled](/iv) to another state and a beach with my classmates. 41 | 42 | 2020 taught me how to use LaTeX with KaTeX. 43 | 44 | 2020 taught me more about Python and Code. I discovered many new sides of Code and the importance of putting a space between and `=` symbol. I even got to work on a mainstream project by the HoppScotch team and worked on lots of side projects in the mean time. It taught me the importance of commenting code and how to refactor the code you wrote a few months ago. 45 | 46 | 2020 made it possible for me to meet some Amazing people in the Tech Community. It showed me how to handle an online event. 47 | 48 | 2020 gave me new tech to play with. I got a new Amazon Echo and a Mechanical Keyboard. I also managed to but a new Phone and Headphones. The me in 2018 never even dreamt of buying a new phone nor a wireless headphone before graduating college, I considered these stuff as luxury. I still do. I even got a ton of Tshirts, stickers and a Bag this year. Google gave a pair of Headphones which was so cool. Auth0 gave a lot of tshirts. GitHub gave a cup and a wholesome video. Twilio gave a cup and a tshirt. Dev.to gave a backpack. 49 | 50 | 2020 was the first time I have been gifted a Book and the first time I actually bought one. Thanks to Nadeem Ikka and deta.sh team for the books. 51 | 52 | 2020 was the year which I realized blogging actually makes 💸. 53 | 54 | 2020 taught me how to sell Wooden planks and getting a profit from them. The mechanical keyboard community came to the rescue. 55 | 56 | 2020 taught me how to use Vim in a better way. I switched my code editor from VsCode to Vim. Except for debugging. 57 | 58 | [Dunning-Kruger]:https://en.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect 59 | -------------------------------------------------------------------------------- /content/blog/2021-me.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: The Athul of 2021 3 | date: "2021-12-31" 4 | description: "2020 was a year ago" 5 | tags: ["life", "personal","rewind"] 6 | aliases: [/2021] 7 | --- 8 | 9 | There was a christmas celebration in college and I was among the group of students along with my classmates to help organize the event. It went fairly well and since it was my last year in college and I enjoyed it a lot. This was also a time I though about my next 6-7 months of my life. The pace of time to engluf the future in a matter of 30 weeks away seems a bit daunting, but I can't possibly do anything about it so I felt like savouring those moments with my friends. 10 | 11 | As a person who just believes in the Absurdist philosophy put forward by Albert Camus, these maybe the last few moments I get to spend with my friends while I'm in college. These maybe the some of the few things that can give some meaning to life. It's something that I feel after being at home for more than a year. 12 | 13 | After the events, I looked at the pictures. Everyone seemed so content. I didn't pose for much pictures since my mind was trying to come at terms with the above said problem. Yeah to start _Athul of 2021_, he **overthinks** a lot, a lot! 14 | 15 | --- 16 | 17 | 2021 was another year partially sitting at home and looking at stars and the rest some of it going to college and meeting my classmates. It started with the first day when my mom gave a lecture on the placements in college and why I should sit in it and get a job. Sadly, I didn't sit for placements. I haven't had a chance to regret that decisions yet and I hope I don't get a chance for that. 18 | 19 | The First 3 months of 2021 was interesting as well as less interesting. Went to an in-person hackathon after a year and best part was going to Munnar for the same. The mist there, the cold sunrises and sunsets there and the hot sip of tea from any shop/tea stall and the cold breeze that embraced you with the plant-ish aroma of the tea leaves it had been friends with. The walk along those paths isn't like any other. Just you, your gang, the cold sun, the colder yet gentle breeze and the smell of soil which has been made moist by the coldness of the place. 20 | 21 | The rest of the year was just a wait to go there once again to vibe out. A longing to be with the clouded sky and winter feel of Munnar once again. It didn't work out though in the rest of 2021 and I hope to tally that out in 2022. This was the time when I found that I loved travelling. I'm asthmatic so I'm supposed to not like it much but anyways here I am still waiting to travel once more there. 22 | 23 | I bought a cycle by March and went on for rides everyday at a minimum of 10km everyday. I listened to a few audiobooks while I went for cycling. This was the time I finally got the time to complete **The God of Small Things**. Being close to the river mentioned in the Book, it is really a book close to my heart. I had bought the book in May 2020, I regret not reading it sooner. 24 | 25 | Summer was around the corner as well as Easter. I joined [Frappe for my Internship](/blog/frappe-internship/) and for the next 3 months. I read a ton of code to understand how a method works and had to improvise at time to get the required results. It was fun. I invested a lot in books at that time. I drove to places. I cycled a lot. Learned a lot more about life philosophies. 26 | 27 | Star watching was my main hobby after going for cycling. Learned a lot more constellations. Saw the Milky Way 🌌 for the first time in my life. And just like last year a ton of deep existential thoughts while watching the stars. Favorite constellations coming at Scorpius with [Antares](https://en.wikipedia.org/wiki/Antares) the Red giant at it's head. 28 | 29 | Post Internship was tough. I had nothing to do for the day other than cycling in the evening, plus there were heavy rains. Getting a Netflix subscription paid off nicely. Watched a shit ton of movies and tv shows and a lot more thanks to other streaming websites. 30 | 31 | July was a tumultous month. Went through something I thought that would come later in life. Should've prepared better for that and no it's not any death just something more crippling atleast when at that time but looking back from the time I am writing this, that feels like a healable wound. And it was the time for breakup songs. Heard a lot of new music which is still tops my chart of music([Oh Wonder](https://open.spotify.com/track/1Gl8PKu5MzKuVWEf5xc0lX?si=18b0e7a0e6ca41ec), [SYML](https://open.spotify.com/track/1BwBeG8Pae6uHp3w29AHvi?si=bc7cd384e0914a65)). 32 | 33 | July was the starting point of listening to Rock Music. Especially Pink Floyd. I wrote 2 different posts about Pink Floyd, you can find it [1](/blog/pink-floyd/), [2](/blog/two-planets/). Other than Pink Floyd, I listened to a lot of [Porcupine Tree](https://open.spotify.com/artist/5NXHXK6hOCotCF8lvGM1I0?si=pib2qu29QhuDVuX7-8sK5w), [Tame Impala](https://open.spotify.com/artist/5INjqkS1o8h1imAzPqGZBb?si=61b0461a15b24c12), [Foo Fighters](https://open.spotify.com/artist/7jy3rLJdDQY21OgRLCZ9sD?si=Wr1kAtirSMOUerPoOPLnUw) to name a few. Also learned to play the guitar. I can play a few of my favorite songs on the guitar(Wish you were Here(Pink Floyd), Locket(Crumb)). 34 | 35 | Watching Ted Lasso made everything great again. Season 2 aired in September which made everything better too. 36 | 37 | One of my Major achievements this year was building a Mechanical Keyboard. I learned to solder, learned about Keyboard matrices and for the first time tinkered with a microcontroller(The Raspberry Pi Pico with an RP2040) and contributed a keyboard firmware in Python. I wrote about my Macropad [here](/blog/macropad/) and wrote about my new keyboard [here](/blog/bye-k2). 38 | 39 | Meeting and mingling with my friends were a boon in October. This is being continued till date and it is going pretty well. 40 | 41 | Yeah that's pretty much it about Athul in 2021. I have read a few [books](https://athulcyriac.in/books) this year and read Dune before the movie. This feels like a big monologue on how privileged I am but I have lost my flair in storytelling in 2021 and that kinda hurts. I have to find a way around this in the future but I'm stuck with this as of now. 42 | 43 | - Favorite song I found in 2021 is [Hey Moon](https://open.spotify.com/track/2NJGAT43AvS7BQvn2017yS?si=4764c69b123a45be) 44 | - Favorite series in 2021 were **Ted Lasso** and **Normal People** 45 | - Books were **Dune** and **The God of Small Things** 46 | - Movies were **Dune** and **Joji** 47 | 48 | Athul in 2021 is pretty much a year older shittier version of Athul 2020. Just a few less people skills and communication skills than 2021 version. 49 | -------------------------------------------------------------------------------- /content/blog/2023.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Yearly Review 2023 3 | date: "2023-12-28" 4 | description: "Kind of makes me feel sometimes didn't want to grow!" 5 | tags: ["life", "personal","rewind"] 6 | aliases: [/2023] 7 | --- 8 | 9 | So, it's that time of the year, looking back, contemplating, feeling emotional on what happened and all those things. I was pretty confused with what the title should be because, I usually tend to put quircky titles for things and suddenly there isn't a title I could think of ather than a really generic ones, so maybe yeah, I lost that quirckyness a but along the way, which is okay to live by if you think about it. Sometimes you have to clean your memory so that new memories can persist. 10 | 11 | 2023 when looking back gave goods and bads as any person would receive. Started off fine but by the last lap, it turned my world upside down. Like something I have never expected to happen and I have no clue how I'm still coping up with that stuff. 12 | 13 | On December 31st, my senior engineer and mentor at Frappe resigned. It kinda made me lot of internal questioning about myself regarding how I'll go forward with work because it felt that you are going to be alone in a 2 person team. But eventually had to move on to handling things but it was not great. 14 | 15 | January was when Abraham, Kiran and Subin rented out a new apartment. They called it SPAM HQ because all 3 of them knew each in some ways via our Whatsapp group SPAM. I used to travel there every weekend to talk and chill with the guys. Great fun. 16 | 17 | January was also when I went to Kozhikode for Kerala Literature Fest, it was in Kozhikode and spend 2 days there, walking, talking and enjoying food. But not so much on the books though. It was kinda a required weekend break. 18 | 19 | By end of January, there was Pehia Summit and Barcamp Kochi. I took a session at Barcamp Kochi on Mechanical Keyboards, that was my first ever talk on Keyboards. It was really fun and chatted to a lot of people. 20 | 21 | In February, it was time for Frappe offsite, we went to Bhopal this time. Really wierd place but our stay was in the middle of a forest, which was a nice experience. No Internet connectivity made it a little worse since none of the general operations went through. But it was a nice team building experience and I got to see the Sanchi Stupa. My mom who was the history teacher was so happy to hear that I saw the monument and the got to know the history behind it. I don't recall anything else from February that is worth a say. 22 | 23 | March was the month I went to Mumbai for a whole week and moved to a new role inside Frappe itself. Enjoyed and hated Mumbai at the same time. Whenever I visit Mumbai, I always ponder on why people actually live in a big city. More oppurtunities? Fast yet miserable lives? I guess it is something obvious that the village guy inside my head doesn't see. Maybe art but at this point I don't care. 24 | 25 | April too I don't recall much happening other than the work stuff which is too boooring for this context. Ooh, got a salary hike by 20% which was nice. 26 | 27 | May was good. First week itself, Me, Abraham, Sid and Dharwish drove all the way to Malappuram(~100 KM) to see our friend Anirudh. He was going through a rough patch and all of us took him for a day out to the nearest beach. It was a good day, one that all of us will cherish. 28 | The next week, I had promised my younger brother that I'll take him out for a motorcycle trip for a day. We rode to Wagamon which was a hill station near us(80km) and that was a good day too. May went on with the usual stuff. 29 | 30 | June was the month our family started to look into buying a new car and I went on to book a new car, a Toyota. It was also the month of the new spiderman movie which I too went to watch on the first week itself. June was also the month of the plan to move out from my home to Kochi, which was not far but away to figure stuff out in my early 20s. 31 | 32 | July started off with another Frappe offsite to Igatpuri which was near Mumbai itself. It was okay. New places and all was fine untill you feel out of place. July was the month I moved out. I moved out to Kochi but would come home for every weekend. Me and 5 other friends rented out a house in Kochi which was near Infopark and only three out of the six guys actually worked there. But the move gave me a whole new perspective of freedom and how things will be. I learned to cook new meals. Had a new workout routine which never actually worked out, lazy as ever. But new things and all of them fast. Subin moved out of Abraham's flat and Bijoy who was also a long time friend joined in. 33 | 34 | August wasn't any good. Had to work from Mumbai for another whole week. It wasn't great. Kinda pulled through, this time the whole dynamic was shifted with me and my team lead getting into tumultous conversations which fucked me up even bad. The thing is that I generally get anxious on smallest of things, I panic a lot when shit like these happen. Even existence seemed a burden to me then. I still recall tweeting about how losing fun in the things you love is bad and Abraham was the only one who actually called me and asked me what happened. I still recall him telling me don't worry and things will turn out fine. August went through as I put myself in the pressure cooker of doubt. But every week I was at Kochi, I would go to Abraham's place at 10pm once a week to geek out about things. I still continue this today. 35 | 36 | September's first week went on with going to Mumbai again and this time it was Frappe's annual conference. I talked about the feature I worked on and 3 days later came back to Kochi. 37 | 38 | ## September 2nd week 39 | 40 | Yep, it's a heading. This was one of the hardest weeks I had to go through. Debconf was happening in Kochi and Abraham was in the organizing team and we had already registered for it. We went for DebConf and met some old friends, had a lot of chat about software, SBI Auto Loans and how awesome some bank managers are. On September 12, me, Abraham, Bijoy and one of our friend went out for Dinner and we had quite a good dinner. I dropped off Bijoy and Abraham with our friend to Abraham's place. I told Abraham that I was going home the next day and wouldn't be able to see him till September ends. 41 | 42 | The next day in the evening when I was going home, Bijoy called me and told me come back to Kochi as soon as possible and something bad had happened. I rushed back as soon as I could. We lost Abraham that day. My best friend, my brother was lying there in the bed of the canal, lifeless. The water took him. I couldn't even process what I was happening in front of me. 43 | 44 | I couldn't get out of it. The grief, the loss, the pain. I haven't cried like that since forever. I wake up cry for a few minutes, go on with life. Repeat. As Pink Floyd said, it comes in waves. 45 | 46 | But all of this you wouldn't get as the reader because I can't make you feel the grief becuase I am not Arundhathi Roy or Khaled Hosseini or John Green. My grief is my own and it's not conveyable via words. 47 | 48 | I questioned all of the things I kept close, I questioned my faith, battled my gods on why this happened nothing made sense and still doesn't. 49 | 50 | September was fucked for me. I really wished I was sleeping and someone would wake me up after September ends like Green Day's song. Alas, not a nightmare rather a reality I had to go through. 51 | 52 | --- 53 | 54 | October went on. I travelled to Pune for a work sprint, met a friend of me and Abraham's had a lot of talks. Attended my first ever actual interview at RedHat. Worked from a co-working space. Blah blah. Nothing made sense to me. I sucked at work. Bought a new car though. Had to switch to a Honda rather than a Toyota. Went to Bangalore for a weekend, met my cousins who work there, met my nephews and neices there. 55 | 56 | November first week, our CEO asked me to start looking for a new job by December end. Took a two week break from work, resigned from Frappe on 22nd. What a trainwreck it was. 57 | 58 | December has been moderately good. I sat for a few more interviews and got into a new company which had an office in Kochi. Will be starting there in January. 59 | 60 | --- 61 | 62 | End Note: 2023 was fucked up. I still haven't gotten over my grief. It hurts me to know that I won't have my best buddy anymore nor will I get a chance to drink beer with him and talk about all shits of life with him. Philosophies don't matter anymore. People who are gone aren't going to come back. I'm not sure I'll meet Abraham anywhere else maybe in my dreams. Wishful thinking is good till a point when you know that it's just stupid hope. But it's what us humans are, Hopeful! 63 | 64 | Rather than overthinking Athul, I don't even think anymore. Thinking is too bad for me since I'd rather be digging my own hole for me to rest. Athul died somewhere along the way, somepart of Athul lives, and I don't even know which part lives. It's just a matter of minutes till we break bread with out loved one for one last time. 65 | 66 | --- 67 | 68 | Please read Abraham's blog too if you are free: https://abrahamraji.in and [Debian News](https://www.debian.org/News/2023/20230914) 69 | -------------------------------------------------------------------------------- /content/blog/2024.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Yearly Review 2024 3 | date: "2025-01-01" 4 | description: "Insert something exciting" 5 | tags: ["life", "personal","rewind"] 6 | aliases: [/2024] 7 | --- 8 | 9 | Unlike previous years' reviews, this year I don't want to write an essay on things, keeping it short and sweet, point wise: 10 | 11 | - Joined KnowBe4 on January 2nd as an SRE in the Platform Team. 12 | - KnowBe4 has a Kochi office, and all the folks are really sweet—awesome colleagues and awesome friends. 13 | - Tried going to the gym, but I don't think I have enough discipline to keep it up. 14 | - Presented a talk on Nix OS at the KochiFOSS meetup in February. 15 | - Moved to a new flat in Kochi. 16 | - Went for night drives a lot—lost count at some point. 17 | - Hung out with my friends a lot. 18 | - Went to Goa for a weekend, met a few of my colleagues from Frappe. 19 | - Went on an international vacation to Thailand, swam in the sea, and visited Phi Phi Islands. 20 | - Tried meal prepping but failed there too. 21 | - Learned some new tech skills. 22 | - Got a lot lazier. 23 | - Read very few books. 24 | - Watched some good movies. 25 | - Started listening to old Malayalam songs a lot. 26 | - Moved from my OnePlus to a Samsung S23 and got a new (used) ThinkPad. 27 | - Bought 3 new watches—one for my brother, one for my mother, and one for me (a Moonswatch, the costliest item I own after my phone). 28 | - Went on a weekend trip to Kodaikanal and Munnar with my roommates/flatmates. 29 | - Got a new PlayStation 5 and played a lot of games. Finished *Ghost of Tsushima*, *Spider-Man 2*, *The Last of Us*, *God of War*, and *God of War: Ragnarok*. 30 | - Didn't build any new keyboards or contribute to open-source projects. I still think 20-year-old Athul was better than 24-year-old Athul. 31 | - Went to the TechRoastShow in Bangalore. 32 | - Drove my car to 18,000 km (in a year and 3 months). Longest single stretch drive was 360 km. 33 | 34 | Life was mostly chill this year—less stress, a lot less solitude. Got a lot lazier, thought less about what's to come, and became a lot less philosophical. 35 | 36 | -------------------------------------------------------------------------------- /content/blog/Automate-stuff/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Shell Scripting to Automation 3 | date: "2019-07-02" 4 | description: Automating Basic Unix stuff with Shell Scripts/Bash Scripts. From Pushing to different branches to saving you a Few Keypresses 5 | --- 6 | 7 | Ever encountered a time when you have a few working branches which you update daily? Then you'll know how tiresome it is to `checkout` to every branch and typing `git push ` . If you haven't encountered this,try doing it once, you'll know what I'm saying😏😏. 8 | We could always automate these stuff just by a few line of shell code.It's quite **easy** you know. Starting by taking the above said situation,you've got 5 branches and you want to push to all these 5 branches. We'll write a shell script for it. 9 | ```bash 10 | cd ~/path/to/git/repository/ #Assuming you are anywhere 11 | for i in 'master' 'dev' 'fix1' 'patch1' 'dope-branch-name' 12 | do 13 | git checkout $i 14 | git pull origin $i && git push origin $i 15 | done 16 | ``` 17 | This 7 line script can help you save some keystrokes.You should save this script with a `.sh` extension and can be run by typing `sh script_filename.sh` So now,what does this mean? It's the same thing you type in the terminal with a for loop as for extra a _"dev"_ touch😁😁. 18 | The looping variable `i` will loop through the strings we've passed through, these will be our branch names and inside the for loop the variable is passed by a _$_ prefix. Now wherever we use the _$_ as prefix for the variable name,the script will automatically pass the variable's value, just like that :snap:⚡⚡. Everything that needs to be executed inside the loop should be between the `do` and `done` keywords. The loop will go on till the parameters are over. 19 | 20 | ------ 21 | 22 | Now let us make a script which runs a python program,saves its output to another file and commits it and git push it. 23 | Here I'll be pushing it to a [Gist](https://gist.github.com). 24 | So some days ago I started using (Wakatime)[] which gets track on your coding activity and its super cool,showing it off in your GitHub profile seemed cool and one [Campus Expert,John Pham](phamous.dev) did do it and it looked super cool. But the way he did was using GitHub Actions, and no I didn't apply for the Beta of GH Actions. So I made a Python🐍 script to make something like his. You can find it [here](https://github.com/Athul-CA/wakatime-metrics). 25 | It's a tad manual since API requests are 😰😱. The manual thing is you've got to copy a json file from your wakatime dasboard's "embed" page. The rest of the work is done by a shell script👻👻. For showing the activity in my Profile too,I made a public gist with a `.txt` file in GitHub and cloned it to my local machine. The shell script goes like this,👇👇 26 | 27 | ```bash 28 | cd ~/path/to_the/python_file and json file 29 | nvim filename.json 30 | python main.py filename.json > ~/path_to_cloned_gist_repo/filename.txt 31 | cd ~/path_to_gist_repo 32 | git commit -a -m "New Metrics" 33 | git push origin master 34 | 35 | ``` 36 | When running this script, you'll be first prompted to paste the `json` text you copied from the Wakatime dashboard. You should delete the current contents and paste the new ones and save it. You can use any editor of your choice, I use NeoVim. It will run the python program and it will push the changes to GitHub. Easy Right? Just with a few line of Bash Script we can automate quite a good amount of Tedious Tasks. 37 | We can set up a script for launching the terminal just as the System turns on but I believe its for you to find out more about it. This post might've helped and possibly this will be the needed push for you to explore the world of shell scripting and automation✌️✌️✌️. 38 | I will post some more on this when I understand more of this some day.👻 39 | -------------------------------------------------------------------------------- /content/blog/Bangalore/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: ETHIndia/Bangalore Days 3 | date: "2019-09-03" 4 | description: For the First Time,I attended my First Hackathon in Bangalore and it was an international Hackathon called ETHIndia. Wew,it was actually really awesome to visit Bangalore and Hack on something I dont know anything about 5 | --- 6 | # Bangalore Hacks 7 | 8 | So for the First Time I went to Bangalore and that too for a Hackathon. The Hackathon was so awesome that I love Hackathons now and Apply for every Hackathon I hear about. Plus I didn't like Bangalore much because of its dry nature. Its just Bleh. From a person coming from a **Humid Atmosphere**, it takes time to cope to that one. I'll write all where it started from to most of the details I remember. 9 | 10 | ---------- 11 | ### Aug 1st 2019 12 | This was the First Day in the 2nd Year of College. I had the train to Bangalore in the evening of the Day. So I had to get all the prior permissions from our Tutuor and our HOD. Phew, our tutor made me run to our department to another part of the Campus twice. Atleast than run made everything smoother for me. 13 | So I headed Home and Packed up for my trip and borrowed the Laptop from my cousin. Thanks to my Uncle who gave me 3 Big Books for my Cousin in Bangalore for His Studies. Damn They were Heavy. So I went to the Railway Station and got on a Train to Ernakulam South where the Train to Bangalore is to be departed. This was my rendezvous point with Devdutt Shenoi. So our train was at 8.35Pm but it was late by Half-an-Hour. The Train Came at 9.15 PM. We got on, my Seat was 2 Bogeys from Devdutt but in the beggining we ate pizza together. 3rd Time I was eating Pizza in 19 Years. Some people got from thrissur and I chatted with them for some time. Went to Sleep. 14 | ### Aug 2nd 2019 15 | So since the train was Late. It was stopped in Erode and Held there for an Hour from 4 to 5 AM. We were to reach Bangalore by 8 in the Morning but yet here we are 200 Km from Bangalore. But yet it had its perks. I saw the Eastern Ghats for the First time. The Villages the train Passed in Tamil Nadu. Not eating Breakfast till Noon etc... So anyways we reached Bangalore by 11 AM in the Morning. We were planning to go First to Christ University Campus since Red Hat's DevConf was being held. It was also an Oppurtunity to meet some fellow Campus Experts. So we got on a Bus from KSR to Christ University Campus. But due to our misinformation that bus was to Another Christ University Campus away from the City. Damn There were 3 Christ Campuses in bangalore Itself. So we got off somewhere and took a Cab to the venue of ETHIndia. We reached the Venue of ETHIndia by 12PM. We found one of our frined Sreeram there Vlogging with his Gimbal Camera. The Food was free and that was so delicious. It was a new cuisine which I had never tasted before. So we ate our Breakfast/Lunch and went to a conference hall. We got in when the guys from Lendroid were talking about their platform. Time passed and I found these things talks quite Boring. I got out of the room and met Anoop who goes by Kai as his handle. He was also from Kerala. Then Subin and Varun came. Then I met Allen and his team mate Ushana. In the evening Sreeram was interviewing Eylon from Do Stack and I met him and we listened to his story on how he got into Blockchain and stuff. Then there was a talk from Vitalik, the founder of Ethereum. 16 | The hackathon actually started in the Evening by 7 PM. All of us were given a Bag with 2 Notebooks, Some Stickers and 4 Tshirts. Then I met Syam*ettan* from Mozilla Kerala.He was the maintainer of Keralarescue.in . He was there for some venue arrangements. Then I also met two volunteers for the Hackathon who were friends of Syamettan. We started hacking on something dealing with IPFS and Decentralization. I made the frontend for the stuff. Time passed by. Then I actually met the person sitting infront of me who was also a Malayali. I was thrilled when I heard he was from Pala, Kottayam. At least someone who understands my slang(Kottayam's Malayalam is the best form of malayalam. The other guys were not from Kottayam though, so it was hard for them to understand some words I was saying). A midnight we went just for a walk with Syamettan. We wanted a coffee but no shops were open. we came back. Oh I didnt tell you about the unlimited supply of **Monster** Energy Drink Right? Yep unlimited. 17 | Then we slept till the morning. 18 | ### Aug 3rd 2019 19 | 2nd Day at the hackathon. Hoo we were excited. Ate our Breakfast talked to some people and so on. But then I saw this Sticker on a Laptop. It was an **expertocat** and only GitHub Campus Experts had this to give away. So I went there and asked them from where they got this and talked and made friends with them. They were from Vadodara, Gujarat. And to our suprize one of them was from Kerala. He was born and brough-up in Gujarat though. They were so Friendly towards us. My Teammate Devdutt went for his Neice's Birthday party on the same day. So I was there siting with my Laptop without any formal idea on what we were doing. God it was frustrating. Then I and My Friend Kai(Anoop) tried to hack on something but it didn't work out. 20 | Then I ctually met this Kid from Ernakulam. He is a fellow mallu yet I didn't speak to him much though. To my amazement he was a Google Code-In finalist and worked for Postgres. His name was Allen. We talked all Night with Drinking Monsters. We even made stacks of monster bottles. Devdutt came back at 4:00PM. Then again we did something more to the Hack. We again spoke to the guys from Gujarat. We talked about GitHub, New Technologies, how some websites work. They showed me some of their open source Projects. We got about 3 more extra Tshirts the same day. Between this time I called Went to sleep at 3AM. 21 | ### Aug 4th 2019 22 | The Final day of the Hackathon. We got up at about 8 AM . Submitted our Project and left the venue at about 10:00 AM. Just before Leaving we got another Tshirt from the Organizers for playing Dumb-Charades with my friend Sreeram. I called my cousin and he came with a Scooter to pick me up. We then went to his apartment. From there we went see my Sister who was working as a Pharmacy Doctor in Bangalore. I went to meet her. I also met an ISRO Engineer there who was a friend of her. From there went to meet 2 of my other cousins. It's been 3 years since I had ssen him and his family. I got to meet my nephew for the first time. We ate lunch, He bought me another T shirt. On our way to the railway station, he showed m the offices of Microsoft, Oracle and some big corporates. So at about 5 PM I got on the Train for Home. 23 | 24 | -------- 25 | I reached home at about 7:00 AM on 5th. Dressed up and went to College the same Day. EthIndia was a one-of-a-kind experience for me. I don't even know anything about Ethereum still. 26 | -------------------------------------------------------------------------------- /content/blog/First-year/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Freshman Year 3 | date : "2019-06-22" 4 | description: Summary of my First Year College Life,My first year of Engineering,My first year of meetups, and my First Year of Open Source 5 | --- 6 | It all formally started with the First Day of August 2018, I came to the Campus of College of Engineering Kidangoor,the Lush Green Campu🌳🌲 and the Meenachil River🌊 were something totally new for me. New people,new place, New possibilities.... 7 | ### Pre-College Drama 8 | But most of the beginning of College *for me* started about *_2 months_* ago after my entrance examination. Oh, I was totally sure I'd come here in Kidangoor as my performance in exams was way off the charts and this was my only best option for Engineering. 9 | So I started *researching*. I searched in every social media I could find, I checked Facebook,Instagram,Twitter,Youtube and Even GitHub(there was nothing much there:sweaty_smile:). I also found about one of my seniors in school who was studying here,I had contacted him and asked for his feedback(He is now known by Chacko/Albin) 10 | It was this time I've found about technical communities in Kochi and Kottayam. I've joined a Telegram group from Kottayam and asked if anyone was fron CE Kidangoor, I've got a reply from Joseph who is a senior here. He was the second person I've met before college.Later on I met Gokul Bro and EC Chechi. 11 | After joining college I met Abhinav, he was the second person I met from my Class.He still remains to be my best bud. 12 | ### First Meetup 13 | Fast forward a Few weeks, I went for my First Meetup.I met Abhijith Bro and Akshay chettan and many others there. They were all astonished to see a first year boy in an Intro to ML workshop. It was totally awesome to meet them and to visit Kochi. 14 | ### Class and College 15 | Class was totally boring but Classmates were totally cool and the college had an another level of Vibe. I loved going to college not for the classes but for just being there for the **Vibe**. No, There was no special girl there(not even now😅 16 | ### Open Source📦 17 | I had made an account in GitHub in Ju ly but it became active in mid September. Me and Abhinav had a plan to make the Python Programs for the programming lab Open Source for the future students. Abhinav was the Free Software guy then and I was the Open Source guy. We together with some seniors made the __Open Source Community__ here. 18 | My mentor GKS told me the value of the GitHub profile and I made repos for the silliest of things(even now 😁).This was the first time I explored GitHub, Learned Git, and found out about the Campus Experts Program.I applied for the Student Developer pack in October and got it. This was also the time I E-met Musthaq Ahamed he is totally cool and one of the awesomest guys I have met. He is one of the most patient guys I have known,oh how much I annoyed him with my messages and If were in his position I would've snapped long ago. I completed Hacktoberfest too. 19 | ### First Hackthon and Sticker💻 20 | The funny thing is that I never attended any Hackathon. I organized one without any prior knowledge with my seniors in December first as Local Hack Day from MLH. That was the first time I got a sticker for myself and an _octocat_, Oh how I wished to get one. 21 | > Octocats and stickers are cool 22 | 23 | This was also when I organized a workshop,2 people from my class came and the rest were all seniors. 24 | 25 | > My seniors are __Cool and Super Awesome__ 26 | ### Post-University Exams🎓 27 | > Damn,Calculus was rough 28 | 29 | I went again to a handfull of workshops and talks, I contributed to some Open Source Repositories in GitHub. I joined TinkerHub, which is a community spread throughout Kerala and is growing rapidly. In the mean time I met Subin who was a core contributor to KeraLinux and FOSS guy,Sreeram the Android Guy, Pranav who helped me with one of my projects amd Kiran the Web Dev also with Abhijith the Pythonista and Devdutt the IEEE guy. I also had the oppurtunity to meet Dr.Richard Stallman,the father of the GNU project(Got stickers). I also met an Engineer who was working in GitLab and attendes his talk on how he got the job with Open Source. 30 | ### School of AI 31 | This was the first best thing for the Technical community in Kottayam apart from the clubs in Colleges. This was totally an Independant community which is managed by different people in different colleges. I am one of the organizers here. For our first meetup, I met Sharad bro,Chrisbin,Namitha and Akshaya Chechi and Rushtam. 32 | ### To Linux🐧 33 | Abhinav had now became a super _Cyber Security_ guy and installed Linux on a 160GB HDD of mine. Using linux is Bliss. I am not fond of using windows now but I dont hate Microsoft. I also moved from Python to Js. 34 | ### The 5 month Long CE Journey🚩 35 | I had applied for Campus Experts program in the Latter Half of October and Got Selected in the First week of November. In their website there was a map of showing the Campus Experts around the world,and couldn't find anyone from Kerala there this made me apply for it. I met Manu S Pillai who was a CE from Kerala and was living in Delhi. Yep he was a Python guy. 36 | On March's first Sunday I got a mail saying(in a way) that I have become a Campus Expert I was on CloudNine when I saw this. Later that week,I met Lieke Boon who was the Student Program Manager at GitHub via video call. She explained to me about how the program works and related matters in a 30min call. I've met other CEs in our messaging platform and yes they are Totally cool. Some of the Indian CEs were from IITs,NITs and IIITs and there was me who was from a Tier3 college in a small corner of Kerala and I felt so honoured to be here. 37 | ### Meenachil Hacks 38 | By this time I met Samanyu Bro and Akshay Bro in college who are my seniors and Samanyu bro is the Lead of InfinCEK another technical community here. Akshay bro is the Web Developer here and he is one of the awesomest people in college.Me with another 10 people put forward for Meenachil Hacks. We made a website got stickers and funding for the event and it is going to be in August 2019. 39 | ### Swag Count💖 40 | - 4 Tees(Hacktoberfest, Devfolio, DigitalOcean, Algolia) 41 | - 1 Pajama(GitLab) 42 | - 1 Hoodie (GitHub) 43 | - 1 Backpack (GitHub) 44 | - 1 Cap(Gatsby) 45 | - 1 Pendrive (Google AI) 46 | - 2 Key chain (ICFOSS, Algolia{bottle opener}) 47 | - 4 costers(Dribble and StickerMule) 48 | - 50+ Stickers from Various companies and Communitues 49 | - 960 contributions in GitHub, more than anyone in College 50 | -------------------------------------------------------------------------------- /content/blog/My-Setup/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: My System Setup 3 | date: "2019-07-09" 4 | description: My Personal and Mobile Setup for Coding and Basic Stuffs 5 | --- 6 | Coding is one of my favorite Hobbies apart from Music and Films. 7 | My system is a Desktop with 4Gigs of RAM and an Intel Pentium Processor with 1024+ 8 | 160 Gigs of HDD Space.I've got a Windows and Linux Setup in my Desktop. I use Linux more than Windows. The only use for windows is for transferring files from the Pendrives and my Drives. 9 | 10 | #### My Linux Setup 11 | I use *Ubuntu* with *KDE Plasma* as the Desktop Environment which makes it **Kubuntu**. So The terminal is "Konsole". I use **'Oh-My-ZSH'** rather than the original **'Bash'** as my console. Oh-My-ZSH is so cool and the way we could customize it to our needs. 12 | #### My ZSH Setup 13 | - Theme is "Norm" 14 | - Plugins -> Git 15 | - Sometimes I cahnge the Theme to Powerlevel 9k 16 | 17 | I've got my Editors as Vim, NeoVim, Visual Studio Code and Atom. VS Code is my main editor while NeoVim is used Second. I use Atom and Vim for extreme cases. I don't check on my windows much so I don't know whats there. 18 | I mostly use these editors for JavaScript and Python. Occassionaly HTMl,C sometimes React, Django, Machine Learning Examples etc... 19 | 20 | #### Favorite Apps 21 | - Latte Dock(For the MAC OS like Dock) 22 | - Spotify 23 | - Tmux 24 | - GitHub Desktop for Linux 25 | #### Vs Code Plugins 26 | - Python for VsCode 27 | - C/C++ 28 | - Wakatime(For Coding Metrics) 29 | - GitLens 30 | - GitHub Pull Requests 31 | - Live Server 32 | - Material Icon Theme 33 | - Markdown Previeew GitHub 34 | - ESLint 35 | - Prettier 36 | - MDX 37 | - DeepDark Material Theme(Colors and Syntaxes) 38 | - Fira Code 39 | #### Vim/NeoVim Plugins 40 | - Airline 41 | - Python-Mode 42 | - WakaTime 43 | - Papaya(Colors) 44 | - NerdTree 45 | - Vim JavaScript 46 | #### Git Setup 47 | All The basic aliases for the Git Plugin for Oh-My-ZSH 48 | -------------------------------------------------------------------------------- /content/blog/abraham.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: For Abraham, forever ago 3 | description: "Shine on you crazy Diamond" 4 | date: "2023-09-15" 5 | tags: ["personal"] 6 | --- 7 | 8 | I met Abraham on a random telegram group when I had joined college back in 2018. He was the person who started Nexus SJCET which is the FOSS Cell of SJCET. His username was `avron` back then. I met him IRL in my second year of college during an event at his college, I still remember first meeting him and saying it's nice to meet you finally IRL. That was the first thing that I recollect when thinking about him now. 9 | 10 | Meeting him the next time was at a Hackathon but we didn't talk much then because we didn't knew each other that much. That was end of second year I guess. I don't know truth be told when it was but it was during those times. 11 | 12 | As you say third time's the charm, I again met Abraham at another Hackathon in Munnar. Even though we didn't knew each other that much, I kinda felt like I've known the guy for so long and we talked about all kinds of things. We talked about Code, Vim vs Emacs where Abe was an ardent Emacs user and was telling me join the cult but I refused and I was telling him to join the Vim cult. I still remember talking on all kinda philosophies with Him, Anusree and Levi during our "hackathon sessions" there. The four of us vibed off really good and we even began a new group on TG with just 4 of us. We used to have hourly long calls during COVID which made our bond really strong. 13 | 14 | I invited Abraham and Levi to my home a few months later and we had a fun time together, I drove them to nearest spots for sightseeing and we made dinner using a grill. It was the first time I called him Avarachan, which stuck. Fun fact is that Avarachan was 4 syllabelles and Abraham was just 3 and I found it easier to call him Avarachan than Abraham. I used to talk to Avarachan almost everyday about something or the other. We used to talk about a lot of things. 15 | 16 | When he got into his first job at BigBinary he used to always talk about the gripes of using a Mac machine. It was against all his ideologies and philosophies but he had to still do it for the work. He used to talk to me about how Ruby on Rails is so cool, the Object Oriented nature of it and how it gave a new perspective of OOP. He also used to talk to me about the improvements he made to their form system where he 400x improved the upload processing capabilities. Even I though I didn't understand that much back then it was so cool to listen to him geek about it. 17 | 18 | We used to geek out on all kinds of tech things and even beyond that, he introduced me to Nirvana, and later I introduced him to Foo Fighters, Porcupine Tree etc... Our music tastes were almost similar too. 19 | 20 | Even when it was time for me to get a job, he helped me prepare for it. He was always there for me whenever I fuck up something at my work and I used to tell him all about my work and what fun things I did that week since our calls were moved to weekends. 21 | 22 | We all went on a Munnar trip on 2022 October, where we all enjoyed really well. He always wanted to move out from Kottayam and he did on January 2023. I went with him to select his new flat. I used to visit his place every weekend, which I drove 50KM one side to geek out. 23 | 24 | He went to Kosovo for DebConf 2022 and send us pictures of his outings in Kosovo and he was the one announced about DebConf 2023 happening in Kochi. He went through a breakup but I didn't know how to help him out there. I tried but my consoling skills are very poor. 25 | 26 | Avarachan passed away on 13th September 2023 in a kayaking accident during an outing of the DebConf 2023 event. He was my bestest friend, my bigger brother and my family. 27 | 28 | He was there whenever I needed help, He would be the first person whom I'll call whenever I needed guidance because Avarachan was years ahead on maturity. He always gave me feedback the right time I needed something like that. I always asked him about Life philosophies and all kinds of things. He always called me Kutta. He was Barney Stinson to my Ted Mosby, The Chandler to my Joey, always there, my bestest friend. 29 | 30 | He was our Diamond and he shone so vividly that it changed many peoples lives. I always look up to you bro, always. 31 | 32 | > "Shine on you Crazy Diamond..." 33 | 34 | --- 35 | 36 | I wrote the above a few days after his passing, from a really dark place. I had a lot of struggle within myself about accepting he's no more. Accepting that I won't be able to talk to him again, accepting that I won't be able to see him again, accepting that I won't be able to hear his voice again, accepting that I won't be able to see his smile again. 37 | 38 | I spend a lot of time fighting my gods, beliefs and everything I thought had some power over this to make things change, to make things better, to make everything go back to the way it was, with him on the other end of the phone or to talk to him for a few hours. I really wish I got a few more seconds to hear his voice for one last time and say Thank You and Goodbye. All of a sudden, Pink Floyd's lyrics hit me. It hit me hard. The album "Wish you were here" tore me apart. Every lyric, every song was greiving. 39 | 40 | But this feels like a cruel joke played on to all of us. Death, without any warning is hard to bear and hard to get over. Even harder to live with the reality that yesterday you had dinner with the guy and the next day you're calling up his friends to say he's no more. 41 | 42 | Whenever I think of him, I recall the time when I was struggling with something and he told me to listen to "Breathe" by Pink Floyd. 43 | 44 | > "Breathe, Breathe in the air, 45 | > Don't be afraid to care" 46 | -------------------------------------------------------------------------------- /content/blog/analytics_from_scratch.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Harnessing Headers; Building a Custom Analytics Server 3 | date: "2020-12-01" 4 | description: Using Python and Deta.sh to build a simple Analytics Server from Scratch 5 | tags: ["code", "tech", "project"] 6 | --- 7 | 8 | Recent days, I have a hard time going to sleep. I have no idea why but it may be because I wake up late or sit in front of my computer all day long. Anyways this sleeplessness paved way for quite a handful of ideas and the most recent one was an Analytics Server. 9 | I was heavily inspired by [Shynet](https://github.com/milesmcc/shynet) for its simplicity and aesthetics and I had been using it for getting the analytics of this Blog and a few Personal Projects. Shynet was built with Django which again piqued my interest. 10 | I had the usual NIH[^1]-ish thought, why not build one. Why borrow when you can create. I only wanted a barebones Analytics Server with the main outputs like how man URL hits do I receive on the site, what are the referrers, which devices are being used to access and so on... 11 | And from that sleeplessness idea, I tried my hand on it the next day and I would say I succeeded. I also [told](https://lobste.rs/s/tgvgjn/what_are_you_doing_this_weekend#c_khfgz9) in lobste.rs that I am going to build one 12 | 13 | The core is hacky but it gets the job done. 14 | 15 | > You can find the whole source code [here](https://github.com/athul/jimbru). 16 | 17 | ## Starting to start 18 | 19 | I tend to work on my side projects between my Google Meet classes and I tend to be lazy most of the time. Reduce the complexity, reduce the dependency and reduce unwanted additions. This is a new way of working for my projects and before I used to implement a new feature if I was in a good mood and worldly surroundings were okay. Now I follow my project guidelines, which I had [jotted down](https://athul.github.io/notes/posts/project.html). 20 | 21 | Initially, I googled for the same and an old 2014 blog post came up. It was in Python but with Flask and gave me an idea on how it should work. It gave me a lot of insights on how everything should be glued together to work with and how to use the Js side of things effectively. 22 | 23 | FastAPI was in my mind because I could host that and use it for some sites of mine with ease. I hacked up the basic working server in a few hours and tried to get some data from it. All this data needed to be stored somewhere and I used [deta.sh](https://deta.sh)'s Base which is a NoSQL DB with an easy API for working with Python. 24 | 25 | The base working model was barebones and didn't provide many insights on anything. It did as it was told to do, nothing more nothing less. 26 | 27 | ## Goldmine of Sorts. 28 | 29 | To get more insights into the working of Shynet, I found out that the HTTP-headers were used to get all the data. An HTTP-Header response contains almost every needed data to make something like this. Imagine the data being sent to any server for every page load, it may be hard to comprehend but it's a lot of data. 30 | 31 | ```json 32 | { 33 | "accept": "image/webp,image/apng,image/*,*/*;q=0.8", 34 | "accept-encoding": "gzip, deflate, br", 35 | "accept-language": "en-IN,en-GB;q=0.9,en-US;q=0.8,en;q=0.7", 36 | "referer": "https://athul.github.io/", 37 | "sec-fetch-dest": "image", 38 | "sec-fetch-mode": "no-cors", 39 | "sec-fetch-site": "cross-site", 40 | "user-agent": "Mozilla/5.0 (Linux; Android 9; LLD-AL10) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Mobile Safari/537.36", 41 | "x-amzn-trace-id": "Root=", 42 | "x-forwarded-for": "2.3.4.5", 43 | "x-forwarded-host": "", 44 | "x-forwarded-port": "443", 45 | "x-forwarded-proto": "https", 46 | "x-original-forwarded-for": "1.2.3.4", 47 | "x-real-ip": "1.2.3.4", 48 | "x-request-id": "1234gasdjhgi", 49 | "x-scheme": "https" 50 | } 51 | ``` 52 | 53 | This is a sample header request from my website to the Analytics server. See, we can get many details from these if we've got the right tools. There is a site called https://ipapi.co/ and we can get quite a handful of details from them wit just the IP address, we could get data like the network provider, the location of the User logged in and so on... 54 | 55 | These are some Gems I learned from Reading Shynet's Source code. Shynet uses a DB called MaxMind GeoIP DB. 56 | 57 | Okay, now I can use the Data. But where would I see all these? I could go to Deta's DB explorer and Read all these as JSON and get the idea. But what's the point in reading JSON and understanding JSON, without getting any meaningful insights?? 58 | 59 | ## Processing the Received Data 60 | 61 | Once the data is received to the DB, to get some meaningful insights, had to process it a bit further. The data had to be sorted and provided and should be sent to the Frontend. 62 | This was the first time I learned about and used the `Sorted` and `Counter` functions of Python. To get the Device details from the 'user-agent' key in headers, I used the `user-agent` package in Python. All this data would be used to render the Graphs and Tables in the Frontend. 63 | 64 | ## API or Templates? 65 | 66 | FastAPI is widely used for its API capabilities using async requests and all. But FastAPI is built on top of [Starlette](https://www.starlette.io/) which is a cool web framework. It not only supports REST API's but also supports templating with Jinja2. FastAPI does this too. I had been building toy APIs for a while now, and creating an API for transferring the data and doing stuff, but I felt like this should be kept private and be not accessible from Prying hands. So with no prior experience with Jinja2 templating, I finalized on using templates. 67 | 68 | Using templates made it quite a lot easier to manage and work on. It was daunting at first but I later picked up the pace and made my way through it. 69 | 70 | Jinja2 has many good features that you could work on and use. It works on Js files as well. It can be picked easily with some trial and error. The docs are also quite good except for the filters part since it doesn't have many examples. Filters are another cool feature of Jinja2. 71 | 72 | ## Charts for the Win !! 73 | 74 | Okay so templating is fixed and I opted for Tailwind CSS for frontend styling and Chart.js for the Graphs, but I later shifted to [Frappe Charts](https://frappe.io/charts) because I wanted to try it out and that was quite a good match. Frappe charts have an easier API and small size compared to Chart.js and for a Js noob like me, it was quite easy. 75 | Using templates inside the Js file also boosted the development time. Using graphs/charts also improved aesthetics and made more sense of the Data. The only tradeoff was that it increased page load time. 76 | 77 | ## Current Features 78 | 79 | - Easily Deployable on Deta Micros 80 | - Small Js Code. It tracks the PageLoad time and current URL 81 | - Graphs and Insights 82 | - Country and Network Provider and location info 83 | 84 | > I know many features are missing, I would implement them if I get the time and if anyone requests them. 85 | 86 | **I'm also planning on writing on a Tutorial for building the same from scratch** 87 | 88 | ## Screenshots 89 | 90 | Login Page 91 | ![Login page](https://i.imgur.com/RMrl7Ra.png) 92 | 93 | Welcome Page 94 | ![Main Page - Graph 1](https://i.imgur.com/ehGrsLT.png) 95 | 96 | Graphs on Hours and Devices 97 | ![Another Graphs](https://i.imgur.com/za32htT.png) 98 | 99 | Visited URLs and referrers 100 | ![Counters](https://i.imgur.com/YTevkH8.png) 101 | 102 | Device and user agents 103 | ![user Agents](https://i.imgur.com/7PZq091.png) 104 | 105 | All Sessions 106 | ![sessions](https://i.imgur.com/j4TztQt.png) 107 | 108 | Per Session Page 109 | ![Per Session](https://i.imgur.com/nbP8fT0.png) 110 | 111 | --- 112 | 113 | If you found this useful, consider donating me on [BMC ☕️](https://www.buymeacoffee.com/athulca) or [Paypal](https://paypal.me/athulca) and can reach out to me on [Twitter](https://twitter.com/athulcajay) 😄 114 | 115 | [^1]: https://athul.github.io/notes/posts/nih.html 116 | -------------------------------------------------------------------------------- /content/blog/birthday/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Call Your Friend 3 | date: "2020-01-12" 4 | description: Enjoy your friend's birthday together 5 | --- 6 | 7 | > when was the last time someone called to wish you a "Happy Birthday"? 8 | 9 | All of us Humans have our Birthdays, this is as true as the sun rises in the east and sets in the west stuff... The universal truth stuff. 10 | 11 | Otherwise if you're a robot, you'll have a manufacturing date. 12 | 13 | We all greet our friends with a lousy "Happy Birthday" in Whatsapp or Instagram (or Facebook) or someother social media platform. This maybe effective in the short term but the level of personalization is nearly equal to 1. 14 | 15 | In my opininon Birthday Wishes should come from the Heart.Rather than a routine Message through Whatsapp, it should come from your words. 16 | 17 | I prefer calling that person on his birthday, it gives a better message that I care and I value you... all that stuff. You took a bit of time to call that friend. It can help you get better with your old friends or relationships. Best of it all, It'll make the person happy since you've called. 18 | 19 | Next Time call your friends on His/Her Birthday in addition to that whatsapp message. 20 | -------------------------------------------------------------------------------- /content/blog/bye-k2.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Bye K2 3 | date: "2021-11-18" 4 | description: Moving to a new keyboard 5 | tags: ["hobby", "keyboards", "project"] 6 | --- 7 | 8 | I was bit by the mevhanical Keyboard bug almost a year ago. I was really excited to receive my Keychron K2 on 19th November 2020. I was waiting t to buy it for more than 6 months but was out of stock on the Indian vendor websites then and to get my hands on the keyboard I had bought it from a vendor in Singapore which fortuantely shipped to India. I had to pay a about 34% of it's cost as customs 🥲. 9 | 10 | That was my most costliest purchase of an item for my computer and it seconds my custom mechanical keyboard which I built in November 2021. It holds a very special place in my heart and I'm proud of myself to have earned the money to buy a Keychron K2. 11 | 12 | ## Why???? 13 | 14 | Why did I ditch my K2? 15 | 16 | The K2 is a good keyboard but it lacks something I want, **Configurability**. I'm kinda being a hypocrite by saying this since I use a Mac as my daily driver but atleast I can configure that other than the RGB of the K2. Plus it was becoming a defacto for almost every Indian Tech guy on Twitter and Youtube. At the time when I bought my K2, I was one of the few owners to show off a K2 among my peers and now it seemed like something everyone knew about. I still love the K2 for it's colours and form factor. 17 | 18 | ## What did I switch to? 19 | 20 | I bought the PCB and switches and soldered together an **ErgoDash**. ErgoDash is a ergo split mechanical keyboard. It has 35 keys per side and per key single color backlight and an RGB underglow. I use a combination of Gateron Yellows, Blues and Browns. It's not the best combos but it fits perfectly for me. Plus It's really really really configurable. It uses QMK as it's firmware and it is boosted with the VIA firmware for ergodash and the VIA configurator boosts this flexibility. 21 | 22 | {{
}} 23 | 24 | Also it supports layers which is an added advantage compared to the K2. I wish I could hack the K2 and run it QMK, sadly no option at the time of writing this post. 25 | 26 | Honestly typing on the ergodash is hard work since I'm not used to this split layout and I have to reteach my muscle memory to adjust to new key mappings. My WPM is now at 20 from the 50 I used to get from the K2 and that is one thing. I need to get a palm rest for both the halves and a travelling bag for both the halves. These are attainable and these tradeoffs are something I can live with. :wink: 27 | 28 | {{
}} 29 | {{
}} 30 | {{
}} 31 | -------------------------------------------------------------------------------- /content/blog/custom-mdx.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Custom MDX Components for Gatsby 3 | date: "2020-04-26" 4 | description: Make custom MDX components for a Gatsby Website/Blog 5 | --- 6 | 7 | So this week I updated my **Blog in Gatsby** to use MDX rather than usual Markdown for writing content. The major reason I had done this was because I could use React components inside the contents itself to make it more interactive and user-friendly. 8 | 9 | > Life update: Started as an intern in a Bangalore Based Startup called Algoshelf 10 | 11 | As a noob in this React ecosystem, I found it hard to implement custom components to be used in MDX and the number of blog posts were less too, so I thought why not implement it and write a blog.... And here we are now :) 12 | 13 | 14 | ## MDX 15 | *"MDX is an authorable format that lets you seamlessly write JSX in your Markdown documents. You can import components, such as interactive charts or alerts, and embed them within your content. This makes writing long-form content with components a blast 🚀."* - [MDX Website](https://mdxjs.com/) 16 | 17 | In simpler terms, you can use React Components inside Markdown. 18 | 19 | ## Authoring Components 20 | Authoring custom components for mdx is quite easy. Easily said it's just a React Component and if you know react well then this will be easy as pie. 21 | 22 | Here we'll implement a custom callout like component with basic styling. This callout will have an emoji in the beginning and followed by text. So let's get to it 23 | 24 | ### The Component Itself 25 | This will be first thing that we'll define. Here is the code, and we'll be defining the code in the `src/components/callout.js` file. 26 | ```js 27 | import React from "react" 28 | 29 | const Callout = ({ emoji, children }) => { 30 | return ( 31 |
32 |
33 | {children} 34 |
35 |
36 | ) 37 | } 38 | 39 | export default Callout 40 | ``` 41 | Here we're making a new Callout function with 2 arguments. The Emoji argument is for the for the emoji for the callout and the children argument is the data that will be enclosed inside the component's tags while in use. We're appending the emoji tag to the div as an attribute for getting the data with CSS. 42 | 43 | Now we need to be able to use it in the blog/website. I'll show an example of a blog. 44 | 45 | In your `src/templates/blog-post.js` file add these in the top 46 | 47 | ```jsx 48 | import { MDXProvider } from "@mdx-js/react" 49 | import Callout from "../components/callout" 50 | const shortcodes = { 51 | Callout 52 | } 53 | ``` 54 | and for using the callout inside the markdown content, paste this 55 | ```jsx 56 | 57 | {post.body} 58 | 59 | ``` 60 | Now we'll be able to use it with our content. 61 | 62 | ### Styling the Component 63 | I've used CSS styling for the component since i'm comfortable with CSS. 64 | ```css 65 | .callout { 66 | color: black; 67 | background: azure; 68 | padding: 1.5em 1.25em; 69 | border-radius: 25px; 70 | display: flex; 71 | flex-direction: row; 72 | margin-top: 20px; 73 | border-bottom-width: 4px ; 74 | border-bottom-style: solid; 75 | border-bottom-color: #50fa7b; 76 | border-left-color: #50fa7b; 77 | border-left-width: 6px; 78 | border-left-style: solid; 79 | } 80 | .callout-inner { 81 | font-style: italic; 82 | margin-left: 1em; 83 | } 84 | 85 | @media (max-width: 767px) { 86 | .callout { 87 | padding: 1.5em 0.75em 1.5em 0.6em; 88 | } 89 | .callout-inner { 90 | margin-left: 0.5em; 91 | } 92 | } 93 | 94 | div .callout::before{ 95 | color:red; 96 | content: attr(emoji); 97 | } 98 | ``` 99 | You can use any other framework or library for styling and it's upto personal preference. 100 | 101 | ### Using the component 102 | Now we want out custom made callout component to be used with our content. For that just call the components inside our post like this 103 | ```md 104 | 105 | This data will be displayed in the callout component 106 | 107 | ``` 108 | 109 | This data will be displayed in the callout component 110 | 111 | 112 | So that was easy right? Creating a new component and using it here and all the stuff. 113 | 114 | Even better, you can use already other components too other than the custom made ones, 115 | For that just import the component and use it in the content like this. Here we're using components from Rebass, you can use any one you prefer. 116 | ```md 117 | import { Box } from 'rebass' 118 | 124 | > ”This is an important quote.” 125 | 126 | ``` 127 | 128 | ## Conclusion 129 | So we have just made a custom component for MDX and now we know how to use other components to be used in our content. So that's all ⚡️. -------------------------------------------------------------------------------- /content/blog/deploy-hugo/dpl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/athul/blog/70339afbaad1cad9f38b1ce8472971731419079a/content/blog/deploy-hugo/dpl.png -------------------------------------------------------------------------------- /content/blog/deploy-hugo/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Deploy a Hugo Website to GH Pages 3 | date: "2020-04-18" 4 | description: Deploy a Hugo website to GitHub Pages with GitHub Actions 5 | --- 6 | Due to the quarantine I thought of doing something good and useful for others. So I hacked up a theme for Hugo called [Archie](https://athul.github.io/archie). The design was inspired from https://blog.jse.li and was hacked from the ezhil theme for Hugo. The main reason why I built it was due to the Hugo-Ink theme built by [knadh](https://github.com/knadh) since I'm totally a fanboy of him. So deploying Archie to GitHub Pages was quite fun and easily managable. GitHub Actions made it a lot easier since I don't have to rely on any other platforms for deployment. 7 | 8 | ## Steps to Deploy the Hugo Site 9 | There are a few steps to deploy the Hugo site to GitHub Pages and this is these steps are taken from a [Discussion Thread](https://discourse.gohugo.io/t/deploy-hugo-project-to-github-pages-with-github-actions/20725) in the Hugo Forum 10 | ### Create the SSH Deploy Keys 11 | A question arises here.... Why SSH keys? SSH keys are safe because they are secured with a SHA256 hash. It's also better to use the Deploy key than a GitHub API token as it should be confidential. 12 | 13 | ```bash 14 | ssh-keygen -t rsa -b 4096 -C "$(git config user.email)" -f gh-pages -N "" 15 | ``` 16 | Execute this command and it will generate 2 files: 17 | - `gh-pages.pub` (public key) 18 | - `gh-pages` (private key) 19 | 20 | Now we need to add these files to GitHub,for that go to repository setting and click on the Deploy Keys button, add your public key with the Allow write access 21 | ![](dpl.png) 22 | 23 | Next go to the Secrets button and add the Private key(`gh-pages`) as `ACTION_DEPLOY_KEY.` 24 | 25 | To copy the public / private keys just run 26 | ```bash 27 | cat gh-pages | pbcopy 28 | ``` 29 | and it will copy the private key to the clipboard 30 | 31 | ### Defining the Workflow 32 | A workflow is a a file which runs your action on the GitHub Environment, the Workflow is a Yaml file and it contains specific instructions on what to do and how to do it. 33 | 34 | For our purpose we'll be defining a workflow for deploying to GitHub Pages whenever we get a push to the `master` branch. Paste these in the `.github/workflows/gh-pages.yml` file 35 | ```yml 36 | name: Github Pages 37 | on: 38 | push: 39 | branches: 40 | - master 41 | jobs: 42 | deploy: 43 | runs-on: ubuntu-18.04 44 | steps: 45 | - uses: actions/checkout@v2 46 | with: 47 | submodules: true 48 | 49 | - name: Setup Hugo 50 | uses: peaceiris/actions-hugo@v2 51 | with: 52 | hugo-version: '0.67.1' 53 | - name: Build 54 | run: hugo --minify 55 | - name: Deploy 56 | uses: peaceiris/actions-gh-pages@v3 57 | with: 58 | deploy_key: ${{ secrets.ACTIONS_DEPLOY_KEY }} 59 | publish_dir: ./public 60 | ``` 61 | > Note: Before deploying, just add the url to which you're going to deploy in the baseURL of the `config.toml` file with a trailing `/` 62 | 63 | ---- 64 | ### What I learned? 65 | With Archie too 😁, 66 | 67 | - Hugo as a SSG 68 | - CSS styling 69 | - Hugo Templating syntax 70 | - Deploying with Deploy Keys in GitHub 71 | - Designing New Hugo Shortcodes -------------------------------------------------------------------------------- /content/blog/desk-2020.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Desk Setup - 2020 3 | date: "2020-11-24" 4 | description: Desk setup and most used Apps 5 | tags: ["hobby","tech"] 6 | --- 7 | 8 | My Desk is a small corner of the house. It's where my system stands, every Eureka moment I had and "Why the hell isn't this working?" happened. It doesn't have much unlike the desk showoff counterparts but has quite the basic stuffs which I need. As a college student going to "Google Meet" my desk setup is more than enough for video calls with the video off as most of my classes do. I also watch some of my classes on my Phone. I sometimes write notes about a Topic, it a tad tedious to listen to class and type out the same coming from a Pen and Paper way for the past 15 years of schools. So here they are, 9 | 10 | ## Phone 11 | 12 | I own a OnePlus Nord. I used to use an Honor 9 Lite which I ditched in August 2020, the same time I bought the new one. Strangely enough my Phone and my Laptop has the same memory. 8 Gigs of RAM and 128 gigs of Storage. Bought it myself with Self Earned money from writing Blogs for others. Coming from a 3 + 32 GB phone, the Nord is frikking fast. Better Photos and Fast Charging became my Favorites. I sometimes take Photos on the starry sky. 13 | 14 | ![](https://pbs.twimg.com/media/EjgdZeXXcAIeIsd?format=jpg) 15 | 16 | ## Laptop 17 | 18 | I own a Macbook Air 2017. It runs on MacOS Catalina. The new Big Sur upgrade is available but haven't upgraded yet, because I'm afraid if it'll break my current apps like catalina did a year ago. The Mac has been with me for a year now. I selected the macbook Air due to my travelling needs. I usually go to hackathons a lot and it's uncomfortable to take a laptop say weighing 2kgs and communting with that. The sheer weight will induce new back problems for me and a person at 181cm height, back problems are really ahrd to cope with. 19 | 20 | ![Laptop](https://i.imgur.com/bhkzivl.jpg) 21 | 22 | ## PC 23 | 24 | I own a PC too. It's a 2016 assembled one where I procured the items from a local wholesale shop. It's still running. I had upgraded the ram to 8gigs in April but I seldom turn it own now. It has about 4 linux distros loaded 25 | 26 | - Manjaro 27 | - Elementary 28 | - Kubuntu 29 | - KDE Neon 30 | 31 | I use manjaro most times when I turn it on. It's filled with Movies by my sibiling who has a good taste for movies. 32 | 33 | ## Monitor 34 | 35 | I own a Aopen 19" Monitor. It was too bought from a local shop. Aopen is owned by Acer I guess. I had a plan to move to another bigger one but it's on hold for the time being. May upgrade that after college or after I get a job or have a better economical hold 😄. 36 | 37 | ![Monitor](https://i.imgur.com/DatLqsx.jpg) 38 | 39 | ## Keyboard 40 | 41 | I recently bought a mechanical keyboard. I had been waiting to buy one for the past 6-7 months. I'm an owner of a Keychron K2. it did cost me quite a bit of money but It was money well spent. I used to own a Logitech k200 for the past 4 years. I had spray painted a few keys of the membrane keyboard for more aesthetics but was went south. The new keybaord is RGB + Gateron Browns + Aluminium frame. 42 | 43 | ![](https://pbs.twimg.com/media/EnIHlmiXMAAUPoi?format=jpg&name=medium) 44 | 45 | ## Chair 46 | 47 | The current chair I use was bought from a local store. Metal Legs and cushioned seats. The one I used before was 20+ years old. It had started giving me a lot of backpain after a coding or workshop session. So went and bought the new one. The wheel base is a boon for me. I don't have to get up and walk a few meters to turn on the Fan or light anymore😂. 48 | 49 | ![](https://pbs.twimg.com/media/EhKm5p-XgAAgYlj?format=jpg) 50 | 51 | --- 52 | ## Apps 53 | 54 | The Apps I use most on my laptop 55 | 56 | ### iTerm2 57 | 58 | iTerm2 is my terminal emulator. I use zsh as my basic shell with a custom [prompt](https://github.com/athul/shelby) I made a year ago in Go. I sometimes uses NeoVim for file editing. 59 | 60 | ### Brave 61 | 62 | I use Brave Browser to surf the internet. It doesn't show me ads of any sorts and I'm really happy about that. It doesn't show ads on Spotify, Youtube or Twitter 63 | 64 | ### VsCodium 65 | 66 | I had been a VsCode user for a few years now. I recently switched to VsCodium for a more privacy oriented code editor. I use the Vim emulation plugin for vsCodium for mouse independancy. The other plugins I use are the Golang plugin and Python plugin. I sometimes write Js or HTML and that's it. I have a wakatime plugin to track my coding activity and get detailed stats. 67 | 68 | ### Insomnia 69 | 70 | Insomnia is my local API Testing App. It still bothers me that Insomnia is made in electron. It would've been super cool if it was made in native code. 71 | 72 | ### Spotify 73 | 74 | For music and podcasts(duh) 75 | 76 | ### Telegram and WhatsApp 77 | 78 | Messaging obviosly 79 | -------------------------------------------------------------------------------- /content/blog/dumb.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Dumb and Dumber 3 | date: "2020-05-27" 4 | description: The title says it all 5 | tags: ["personal"] 6 | --- 7 | 8 | Let me kick off with a tweet, that'll be better 9 | 10 | ![](/img/feynman.png) 11 | 12 | If you personally know me, you'll know which definition suits me, for those who don't, I fall in the former category and that has been one of my failures in these 19 years and I'm reluctant to address this single point of failure. 13 | 14 | I've been hearing this since school days and multiple times I tried to change it and I never got cured of it. 15 | 16 | Even in college and in my community life this has been a hard hitting personal problem for me. But hey I lived this long to tell these to someone else. 17 | 18 | ## The Dumb Stuffs 19 | 20 | Long Story Short: I've got an internship and worked there for a month and they let me go in the first month. I was unproductive and lazy. 21 | 22 | But I wasn't much sad for it. A bit sad yes but I too has faced a lot of rejection and this seemed a bit more straining. Yes I was unproductive and lazy, I know that. I've never seen a hustling work environment. All I seen are hackathons. 23 | 24 | But in this one month span I learned a lot. Starting from SSH-Keys and ending to a deep introspection on life and meaning and failures. I failed a lot, "A Lot". For starters I failed in cracking jokes, exams and easier stuffs. This fear of failures pushed me on but at some point I stopped to fear failures. 25 | Most of you would think, "Thats good right?".Yes in a sense and personally it was a huge loss for me. I got studious in school because of the fear that my parents may scold me. 26 | 27 | By the Time I got to college studies never have made a fearful. Rather than studies, the Fear of being a Failure haunted me and it still does. I was having a suicidal thoughts regarding the same, but got relieved after talking to my dad about it. It was soo depressing to have a fear like this and then onwards for me it felt like almost every other failure made that fear a bit more to reality bits by bits. 28 | 29 | I have trouble sleeping with this fear in my mind. My sleep cycle has lost it cyclical balance and rather has affected my total person. Even when I lost my internship after a month, this fear came back which was dormant for a few weeks that I will be failure and I believe I still am. 30 | 31 | Looking back to the past 19 years, All I've have are some good Friends and other than that I still have no acheivements to be proud of. Rather I've always been an arrogant asshole in the family and in my community for showing off to people that "I know stuff" which I don't know about. 32 | 33 | One thing I learned while on the internship was 34 | 35 | > "Never be reluctant to ask for help! No one is gonna judge you" 36 | 37 | I hope I could use this advice to be less dumb in the future. 38 | -------------------------------------------------------------------------------- /content/blog/final-year.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: The last 100 days 3 | date: "2022-03-03" 4 | description: The Last 100 days of College 5 | tags: ["life","college","rant","personal"] 6 | --- 7 | 8 | I joined College of Engineering Kidangoor on August 1st 2018 to start my undergraduate studies in Computer Science and Engineering under Kerala Technological University. CE Kidangoor is nearby the banks of the river Meenachil which starts from the western ghats and drains to the Vembanad Lake. Kidangoor is a small town and has impacted almost every student who had studied there. Impact in the sense that it have taught people how to cope with shortcomings and to move forward even when an adversity looks straight to your eyes and is ready to shoot you at point blank. The "പോട്ടെ പുല്ല്" mindset. This mindset is with almost every student under KTU. 9 | 10 | CEK wasn't a theatre of dreams or the best college nearby to get the UG degree, it's decent enough that people don't even know much about this college. It's not lush with greenery nor with fun side activities. It's like a school with another hierarchy and structure of operations. But there is something in CEK that's worth enjoying and I can't understand what it is. Some say to enjoy college you must be live in college. That's something I still haven't achieved yet, and I'm not sure I'll achieve it in these last 100 days. I had 4 years(remove 100 days) to achieve this but haven't yet. 11 | 12 | As the title says "The Last 100 Days" is actually not correct but not incorrect too. I've got like 5 months of college left but 1.5 months will be gone for our exams and the rest some for project works and you remove all those non-working days and I'll get roughly 80 days. 13 | 14 | There is something strange I felt when I understood that college is going to finish soon. The helplessness that I won't get to sit in the same classroom and discuss about all kinds of stuff. Sleep on the backbench after eating lunch and listening to lullabies which are actually just computer science theories. Microprocessors, Automata, Omega Networks, Hashes, Transactions and all kinda of theory. 15 | 16 | The helplessness came from the thought that I didn't get enough of college. 2 years of my supposed college life was snatched away due to COVID. The lockdown actually happened when we were actually getting along. The thought that there is a lot to explore, a lot to learn from college and all these just went down the drain. I couldn't even explore much of the local leisure spots. 17 | 18 | CEK taught me many things that I forget to recollect. It taught me that people will be good most of the time if you deal with them in a good manner. The only exception were the self imposed dictator of CEK and a few faculty. CEK was nothing like the college portrayed in movies, when I joined, it felt more like a school, but it later changed and felt more like a tight knit group of people, just chillin out in daylight when classes were on full swing. It was better than school and here everyone's voice was given equal value unlike the gangs at school.One thing that's best about CEK was the students. The senior students who became good friends and mentors, my classmates and my junior students. 19 | 20 | CEK gave me a lot of room to grow. My seniors motivated me to scratch the surface of the technical skills of my classmates and my juniors. This paved off my way to become a GitHub Campus Expert and to be part of a college community. Later I had the luck of leading it and start a new hackathon at CEK(The hackathon didn't pan out well). It also made me attend many more hackathons and join other communities. To strive for the vibe I can find at hackathons rather than trying to win. To become the Athul you read today. 21 | 22 | With all these said, I never have regretted studying at CEK. I thank the books I've read while learning for the entrance examination and my parents who never asked me why I should pursue Engineering. 23 | 24 | Looking back CEK was the theatre of _"my"_ dreams!!! 25 | -------------------------------------------------------------------------------- /content/blog/frappe-internship.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: The Intern 3 | date: "2021-07-24" 4 | description: Internship Journey @Frappe 5 | tags: ["tech", "life", "personal"] 6 | --- 7 | 8 | Recently I had been an Intern at [Frappe](https://frappe.io). To get more context, Frappe is the company behind [ERPNext](https://erpnext.com). ERPNext is an Open Source ERP built on top of the Frappe homegrown Python Framework called **Frappe Framework** and I don't think many Indian companies have a framework of their own. 9 | Frappe is so cool, the people, the philosophy and the values. The People were so kind and helpful and the best of all a great learning experience. 10 | 11 | When I was a kid my parents and elders used to tell me a Malayalam proverb "കുന്നോളം ആശിച്ചാലേ കുന്നികുരുവോളം കിട്ടു" which translates to "Dream Big to acheive the smallest". There maybe better translations but nothing comes to mind now. Looking into this, this proverb was for the lazy dreamers who wanted great things in life but never work for it, the one thing I got to learn is if you've put the effort for acheiving it then you shall receive. Sadly I didn't understand the logic behind dreaming big, what's the point? Like Buddha says, "Desire is the root cause for all suffering". 12 | 13 | The point I'm trying to say is I didn't dream to be part of a Google or Microsoft. Budding Developers seems to think that you need to get into a FAANG company for your life to settle but that isn't anyways true. The one thing developers seems to do is work like robots and make shit tons of money, but here too what's the point of making shit tons of money? To be respected? Money can't buy anyone happiness, it's one of the ways to surf capitalism's wave. Being a Catholic, I was fascinated by the Bible in my earlier years, one of the sentences/quotes(English isn't my first language and my vocabulary has become too redundant and my brain functions feels deteriorated while I try to translate words) which actually shows the hollowness of money/power 14 | 15 | > "What good will it be for someone to gain the whole world, yet forfeit their soul?" Matthew 16:26 16 | 17 | After all this ranting on my life philosophies(I may regret this later 🙈). 18 | 19 | I can't tell you on what I've worked there, but these are some rants on what I learned 20 | 21 | ## Books 22 | 23 | Most of the people at Frappe are ardent readers. This came like a surprise to me, never have I in my 3 years of studying in college and having a dozen cousins and their spouses in Engineering heard about a full team so spirited on reading books and having a book club and bi-weekly calls to talk about books. This time at Frappe made me read quite a handful of books and an urge to spend money on books. Books were also a topic of discussion in company wide calls. 24 | 25 | ## Philosphy/Ideals 26 | 27 | I never understood the philosophy behind writing code untill now. Honestly, there isn't much to blabber about on code philosophy but it can be either perfect code or sphagetti code which has to be refactored over and over to attain a certain "perfectionism". Frappe has certain values/ideals and from what I understood, each person working there follows that unbeknownst to the individual. It's something that the senior engineers always impact the junior engineers and their peers. You can read more about the values at Frappe [here](https://frappe.io/values) 28 | 29 | ## Code styles 30 | 31 | Underscores, underscores and underscores.... Only use underscores. Period. Or write every method in Python or JavaScript in snake case. No camelCase, never use it. The other code styles usually come to typing, spaces after equals and variable naming. 32 | 33 | ## Frappe Framework 34 | 35 | This is a tech sided stuff but hell yeah, this was one of the best things I've learned in 2021. T'was a bit bulky to learn at start but later it was quite easier to build something on top of it. Initially it was a bit hard to understand how it works, but later on it was easier than most frameworks I've learned. Everything was a lot easier with it. 36 | 37 | --- 38 | 39 | People were so good there. We had games on Discord every Friday and everyone gave their honest feedback at all times. People appreciate you to for a smallest achievement you made, and the flexible timing made the environment stress free. But on a personal note, it was a tough time for me from a mental aspect. I was feeling a lot dejected and lonely and the people there helped me a lot. They gave me new perspectives of music, new perspective of movies and series and yes of course books. Frappe gave me good friends and that's something I'm really grateful for 💖. 40 | 41 | > P.S: This was written after months of procrastinating from blogging. People won't read it much but I guess I have lost the flair on writing too. 42 | -------------------------------------------------------------------------------- /content/blog/gorelaser/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Go ❤️ Travis+Gorelaser 3 | date: "2020-01-05" 4 | description: Using Travis CI with Goreleaser to Build and Deploy Your Go Applications to GitHub Releases and Godownloader to help users download your packages the easy way....🥳🥳🥳🥳🥳🥳🥳🥳🥳🥳 5 | --- 6 | Past Month, I've been wworking on Shelby a lot. I had set up my CI pipeline using [Travis CI](https://travis-ci.org/) by a `.travis.yml` file from [Powerline Go](https://github.com/justjanne/powerline-go).I used a shell script from [Mimir](https://github.com/talal/mimir)'s documentaion to help users install the binary or tar. 7 | I had tweaked both of em a bit to make it work for Shelby's requirements. 8 | 9 | #### The Email 10 | One day morning, I e-mailed [@talal](ttps://github.com/talal/) since I used some of the source code from Mimir for bootstrapping the project. He was so happy to receive the Email and gave mesome much needed feedback for Shelby. Out of this was one to try out Goreleaser for deployment. So I went on try it. Some other feedback also came from one of my telegram group [TinkerHub](https://t.me/TinkerHub/6839) to change the default installation path. 11 | > We'll be using goreleaser to Deploy a Go application to GitHub Releases.I am writing this because the Docs were a bit confusing to me. 12 | 13 | --- 14 | 15 | ## Setting Up Goreleaser and Travis CI 16 | 17 | All the installation Instructions of Gorelaser can be found in their [Official Docs](https://goreleaser.com/install/). 18 | After Installing Goreleaser, you just have to `cd` to that go repository you want to deploy and run `goreleaser init`. This command will create a `goreleaser.yml` already filled with some commands and stuff. 19 | 20 | **Here is the Gorelaser part to Deploy the Application to GitHUb Relases** 21 | ```yml 22 | release: 23 | github: 24 | owner: 25 | name: 26 | ``` 27 | You can add this to the bottom of the `.gorealeaser.yml` file and it'll work fine. 28 | 29 | **For Deploying to GitHub Releases Add this to your `.travis.yml` file** 30 | 31 | ```yml 32 | deploy: 33 | - provider: script 34 | skip_cleanup: true 35 | script: curl -sL https://git.io/goreleaser | bash 36 | on: 37 | tags: true 38 | ``` 39 | This will only deploy to GitHub releases when a tag is created and pushed. You will need a GitHub Token in the Repo scope and while adding it to Travis Secrets you must name it like `GITHUB_TOKEN` only. 40 | 41 | --- 42 | ### Some tips before pushing a tags for checking Goreleaser. 43 | You can always try goreleaser in you the terminal. 44 | - Try `goreleaser release --skip-publish` command and you can always test with this before you push to GitHub. 45 | I'd totally suggest this since I had simply pushed without any testing and I had to write the whole thing...again. 46 | 47 | --- 48 | 49 | ## GoDownloader 50 | You can install godownloader from their [releases page](https://github.com/goreleaser/godownloader/releases). Follow the next steps to use it Globally 51 | ```shell 52 | $ tar -xvf .tar.gz 53 | $ mv godownloader /usr/local/bin/ 54 | ``` 55 | Now go to your working folder and run 56 | ```shell 57 | $ godownloader --repo=/ > godownloader.sh 58 | ``` 59 | This will make a `godownlaoder.sh` file which can be used as an installation script. 60 | 61 | ---- 62 | ## Here are my Pipelines 63 | - `.travis.yml` 64 | 65 | ```yml 66 | sudo: false 67 | language: go 68 | 69 | go: 70 | - "1.13" 71 | before_script: 72 | - go get -v 73 | - go build 74 | - rm -rf shelby 75 | # 76 | # before we deploy, we go build for all operating systems we would like to support 77 | deploy: 78 | - provider: script 79 | skip_cleanup: true 80 | script: curl -sL https://git.io/goreleaser | bash 81 | on: 82 | tags: true 83 | ``` 84 | - `.goreleaser.yml` 85 | 86 | ```yml 87 | 88 | before: 89 | hooks: 90 | # you may remove this if you don't use vgo 91 | - go mod tidy 92 | # you may remove this if you don't need go generate 93 | - go get -v 94 | builds: 95 | - 96 | 97 | env: 98 | - CGO_ENABLED=0 99 | ldflags: 100 | - -s -w 101 | goos: 102 | - darwin 103 | - linux 104 | goarch: 105 | - amd64 106 | archives: 107 | - replacements: 108 | darwin: Darwin 109 | linux: Linux 110 | amd64: x86_64 111 | checksum: 112 | name_template: 'checksums.txt' 113 | snapshot: 114 | name_template: "{{ .Tag }}" 115 | changelog: 116 | sort: asc 117 | filters: 118 | exclude: 119 | - '^docs:' 120 | - '^test:' 121 | release: 122 | github: 123 | owner: athul 124 | name: shelby 125 | ``` 126 | -------------------------------------------------------------------------------- /content/blog/hack.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Hacking the Quarantine 3 | date: "2020-06-06" 4 | description: Hacking the Quarantine with Online Hackathons with my Buddies 5 | tags: ["code", "tech"] 6 | --- 7 | 8 | If you are reading this, I hope you are safe and in good Health 9 | 10 | The quarantine is tough. While the time of writing this, I'm nearing 3 months of sitting at home and doing stuff excluding college. It was easy at first and now I'm all sloppy and don't think about college or studies now. I got to be a bit better at something these these and I'm proud of that. 11 | 12 | ## At the tip of the Iceberg 13 | 14 | I am an avid hackathon enthusiast, even though I have only won one hackathon yet I feel like hackathons are like my weekly/monthly family meetings. I get to see usual family members and meet new people and hang out with them for a day or two. The energy radiating through a hackathon is something you won't get anywhere else and personally I call this energy **"The Vibe"** 😁. 15 | Then the quarantine happened. I was locked out of the people I meet and locked out from travelling. This was frustrating at first but I managed to cope with this. 16 | 17 | As a technophile, I'm always infront of my computer. I enjoy being in front of it most of the times and it's fun. I got with an internship at a Startup to kickoff everything. And bt April I joined another one as an Intern which I eventually lost after a month 😁. 18 | 19 | Coming back to Hackathons, in the month of March itself, there was this hackathon by GitHub called the "GitHub Actions Hackathon" from March 1-30. I hacked a lot on GitHub actions to build Telegram bots and notifying Agents. This was an oppurtunity which was set for myself to showcase my GitHub Actions Hack and I made one for the Hackathon itself. I usually used **Go** to write a Telegram notifier but it was usually late to send me a notification, like 30 seconds slow. So I thought to rewrite the whole logic in Javascript which GitHub Actions run natively. After a whole day of new language features and new stuff, I rewrote the notifier to Javascript and submitted it to the Hackathon. I called it [Telewire](https://github.com/athul/telewire). It was fast this time(~2s respone time). That was my first ever "Online Hackathon". Frankly I couldn't relate it much to a hackathon since I was a one man team. Then the pandemic happened. 20 | 21 | ## Falling Down from the Iceberg 22 | 23 | > Headings has been fun, and I was in a conflict if I should run back from the tip or fall down to the ocean. I embraced the ocean. 24 | 25 | The month of April went by with work and shipping and updating a few projects😁. 26 | The one hackathon in April which I participated was the Twilio-Dev Hackathon to which I submitted a varied varsion of Telewire in Javascript which doesn't send notification to Telegram but to a Phone as SMS. Thus I used twilio product and made myself eligible for the Hackathon. Obviosuly I didn'twin anything but hey, I got a 50$ credit to their store, which I haven't used up till now. Then my frined Subin contacted me about a Hackathon by MLH which was online and since he was enclosed in the p2p world, he said we can build something. I said "Sure, lets learn something new" 27 | 28 | ## Near the brim of the Ocean 29 | 30 | On the first week of May, MLH started it's summer league which was to be a series of virtual events and we simply participated in them. That was a weekend full of fun. That was where [vett.space](https://vett.space) originated. I worked on the UI in Vue which I didn't have any idea on before the hackathon. We used discord for the first time and used it's voice features to keep us in the loop. That was my first ever Online Hackathon where I got **"The Vibe"**. 31 | vett.space went to be something we've never imagined much. It came to be a timepassing game and breakout game. 32 | Fast-forward to the last week of May where we joined forces for another hackathon by MLH. This was rookie-hacks and we built a platform for collecting raingauge data from Kerala. Me with Subin and Kiran made this. We eventually won a category prize and we were really happy for that. Discord's voice and video features are top class and we totally loved them. We even had our team breakout sessions with vett.space game with voice chatting which made it even more fun. 33 | 34 | ## Embracing the Ocean 35 | 36 | For me Hackathons are the best way for community bindings. Personally, my teammates and I are not from the same college. 4 of us are from 4 different colleges and from various parts of Kerala. The only thing that makes us come together are the love for Technology and learning new stuffs and obviously Hackathons. 37 | We always come up with new ideas which we feel are socially good and fun to hack on. Hackathons never disappointed me other than 1(My first hackathon, where I didn't knew anything) but it turned out to be an eye opener. Hackathons are the best place for you to be yourself and meet lot of passionate people just like you. 38 | 39 | I embrace the community and the Hackathon culture❤️. 40 | -------------------------------------------------------------------------------- /content/blog/hackathons/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Hackathons and Students 3 | date: "2020-02-12" 4 | description: The Importance of Students and Hackathons 5 | tags: ["tech","hackathons"] 6 | --- 7 | Since I went to my first hackathon on Aug 1st at ETHIndia, Bangalore, I loved going to hackathons ever since. I organized about 2 hackathons a year since then. I went to about 6 Hackathons from 2019 to 2020 February. I don't know why but I just love going to hackathons. The energy you feel at a Hackathon can be found nowhere else. 8 | 9 | People usually when speaking of hackathons define them as just a sprint where you solve a problem statement and live on. While this is true, in the case of an enterprise mode event but the word 'hackathon' among the student developer community should have a much wider definition. This is quite relative but they all convey the same meaning opposite to what people usually refer to. **Joe Nash**([@jna_sh](https://twitter.com/jna_sh)) whom I look up to as a mentor and the Guru of Hackathons once told us(*Campus Experts*) about **hackathons** that, 10 | 11 | > " There's nowhere else in the world you can spend 24 hours in a room full of people who are passionate about what you'ew passionate about, who all want to help each other learn and grow. That's the story to tell 😍" 12 | 13 | That's the definition I would use. Since this definition gives better insights and expectations to a hackathon and this is what happens at one. This is a gem of a quote I'd say. 14 | 15 | 16 | ## Why participate in a hackathon? 17 | Why not participate in a Hackathon????? 18 | 19 | 20 | Apart from the unlimited(limited) amount of swags you'll get like stickers, T-shirts, some electronics... Hackathons are another way of enjoying tech as a whole. It encapsulates the meaning of community and technology. From a personal side note on the free stuff, the First Hackathon I went got me about 8 T-shirts, a bag, 2 books and stickers. When I came home, my Dad jokingly said that *"you'll only need a laptop and an internet connection and we wouldn't need to buy any clothes for you"*. This has a wider perspective of thought and this is what the student hackers are becoming too. 21 | 22 | In a [TED Talk](https://www.youtube.com/watch?v=6VakF2hZFPQ) by **Dave Fontenot, The Organizer of Mhacks, Michigan** he said something similar to the following words. For those who haven't seen this. This is a must watch. 23 | 24 | > "Hackathons are like drugs, it gives you an immense amount of concentration and productivity" 25 | 26 | This statement is true. To understand that you must attend a hackathon and be part of the community. That's where the real vibe starts. The real #LIFEHACKER moment begins. 27 | 28 | ## What's holding you down? 29 | 30 | Many people tell me that they think hackathons are for hackers, like the guys who sit in front of their laptops and type something normal people don't understand and “hack” stuff. This “hacking” is true. But the term “hacking” refers to building something at a hackathon. 31 | 32 | > “You go to a hackathon and become a Hacker and not the way around”- Dave Fontenot 33 | 34 | Then the other type of people is that they think they aren't qualified enough or doesn't know enough to go to a hackathon. Frankly speaking, my first hackathon was Ethereum based, nearly half a year from there, I still don't know what Ethereum is. We made a jugaad and submitted that rather than that I wasn't interested in Ethereum. But since I got an opportunity, I seized that. See you don't need to be qualified in anything to go to a hackathon. This is where the inclusivity factor kicks in. Hackers welcome you... No matter who you are. 35 | 36 | ## Best things at a hackathon 37 | 1. #### Brainstorming: 38 | Wooooooooo, that's the best thing. That's where you feel the energy and confidence of your team mates come rushing in. There was this hack called OpenHack which was held in Kochi. The Hack was for making solutions for future floods in Kerala. It was well planned and well funded, the only thing lacking was the idea of what to build. Yeah, the tagline had the idea on what to build but the hackers found it hard to innovate on that. They all used a single API which was written at another hackathon and in the end it broke. So the organizers and volunteers (including me) took on to plan for what will be the future of the whole idea behind the project. That's when the real energy sparked. The top student developers in all of Kerala, hackers, and engineers came together to make the future of the project better. We discussed from which platform we'll use for tracking to which CSS framework we'll use. Man, that was the best thing at that hackathon. 39 | 40 | 41 | 2. #### Hacking 42 | 43 | Yep, the main part. This is where you become God. You create. You ideate. You build. You become one with your team. 44 | 45 | 3. #### Networking 46 | 47 | You'll make friends. If you're a sticker encyclopedia (like me), you'll find more. Once I started a convo with a person by asking him how he got a specific octocat sticker on his laptop. Then me and his team became instant friends. This happens when you relate to their thinking. A guy who loves stickers is a guy who is in the field. He'll know stuff and he’ll be the best resource person to help you on your build. 48 | 49 | 4. #### Learning 50 | This is the output. Rather than a drowsy head and cursing yourself after on drugs, you won't get that in this drug. Yes, this drug will make you go get it more often but trust me that is worth the effort. The things you'll learn will be the best things you'll learn in your life, the best skills you'll ever acquire. You'll learn 'teamwork'. 51 | 52 | ## Students and hackathons 53 | For a student being in college/school and interested in technology, a hackathon is the best place to boost your passion. You can find many people of the same *“wavelength”*. You can learn a lot from them. They'll help you a lot. From my personal experience, I went to HackCamp in Kochi both for taking a workshop and hacking. The thing was that I used to know React a few months before. At the time of the hack, React was miles away from my brain. Since I didn't know much JS, React was coming hard on me. One of my hacker friends Akhil Mohan from RIT and Mohit Rajan from FISAT helped me so much on my project. I knew Akhil from another hackathon and I met Mohit just there. The learning experience I got was out of the world. I kinda learned so much of React, Wikipedia, and Torrents. This is only a kind of a sample of the learning experiences at a Hackathon. 54 | 55 | I reckon that students will learn more in hackathons than they learn in college/school. This is my personal opinion so, you have all the power to take it as it is or drop it. This improved self-learning capability is the best thing they'll be acquiring since this will be integral in their Future Endeavours. 56 | 57 | ------- 58 | 59 | ## The state of hackathons in Kerala, India 60 | Kerala is a small state in India. It has a rich student developer community and I'm proud to say that I'm a part of it. The thing is that most of the hackathons I've gone to have an underdeveloped way of judging. This was a serious case and many hackers in my circle have stopped coming for hacks in Kerala due to this drawback. My point is that student hackathons should never be for starting a business or for starting a startup. It is organized by the community for the experience and the fun. I've seen hackers getting disappointed when the judges say dumb things like "This business model is not good" or "Why did you build something that's already in the market?". I've seen judges giving first prizes to a shitty waste management systems. Damn, I could write that in half a day with my teammates. Where is the innovation in that I would ask? At a hackathon, we got judged for our translation model that Google has better models than us and we 5 won't be able to complete that even if we sat for a 100 years working for that. Yeah, the judges may have 3x102 years of experience but what's the point if they can't understand the idea of a student hackathon. 61 | 62 | For me, this is the first evil that I say to the organizers of a hackathon I'm asked to help. But every once in a while some good hackathons come too in Kerala. This might be a small one but it'll be the best ones. I've been proven right multiple times. Most colleges don't have a standalone hackathon in their colleges. They'll be part of their technical fest. Only a handful in my knowledge does standalone hackathons here. 63 | 64 | 65 | ## My say on hackathons 66 | The best way to hack your tech life is to get to a hackathon. Be a part of that culture and the community. Give feedback on where the organizers or your teammates should improve. 67 | 68 | > "How much steep the learning curve be, you can always go beyond that and make that a straight line" 69 | -------------------------------------------------------------------------------- /content/blog/img/2020-gh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/athul/blog/70339afbaad1cad9f38b1ce8472971731419079a/content/blog/img/2020-gh.png -------------------------------------------------------------------------------- /content/blog/img/2022-gh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/athul/blog/70339afbaad1cad9f38b1ce8472971731419079a/content/blog/img/2022-gh.png -------------------------------------------------------------------------------- /content/blog/img/cat-typing.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/athul/blog/70339afbaad1cad9f38b1ce8472971731419079a/content/blog/img/cat-typing.gif -------------------------------------------------------------------------------- /content/blog/img/eg-1.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/athul/blog/70339afbaad1cad9f38b1ce8472971731419079a/content/blog/img/eg-1.jpeg -------------------------------------------------------------------------------- /content/blog/img/eg-2.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/athul/blog/70339afbaad1cad9f38b1ce8472971731419079a/content/blog/img/eg-2.jpeg -------------------------------------------------------------------------------- /content/blog/img/eg-3.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/athul/blog/70339afbaad1cad9f38b1ce8472971731419079a/content/blog/img/eg-3.jpeg -------------------------------------------------------------------------------- /content/blog/img/eg-4.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/athul/blog/70339afbaad1cad9f38b1ce8472971731419079a/content/blog/img/eg-4.jpeg -------------------------------------------------------------------------------- /content/blog/img/fastapi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/athul/blog/70339afbaad1cad9f38b1ce8472971731419079a/content/blog/img/fastapi.png -------------------------------------------------------------------------------- /content/blog/img/feynman.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/athul/blog/70339afbaad1cad9f38b1ce8472971731419079a/content/blog/img/feynman.png -------------------------------------------------------------------------------- /content/blog/img/mp_1.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/athul/blog/70339afbaad1cad9f38b1ce8472971731419079a/content/blog/img/mp_1.jpeg -------------------------------------------------------------------------------- /content/blog/img/nw-img.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/athul/blog/70339afbaad1cad9f38b1ce8472971731419079a/content/blog/img/nw-img.jpeg -------------------------------------------------------------------------------- /content/blog/img/pil_img.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/athul/blog/70339afbaad1cad9f38b1ce8472971731419079a/content/blog/img/pil_img.jpeg -------------------------------------------------------------------------------- /content/blog/img/search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/athul/blog/70339afbaad1cad9f38b1ce8472971731419079a/content/blog/img/search.png -------------------------------------------------------------------------------- /content/blog/img/solder_1.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/athul/blog/70339afbaad1cad9f38b1ce8472971731419079a/content/blog/img/solder_1.jpeg -------------------------------------------------------------------------------- /content/blog/img/sw1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/athul/blog/70339afbaad1cad9f38b1ce8472971731419079a/content/blog/img/sw1.jpg -------------------------------------------------------------------------------- /content/blog/img/ws2.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/athul/blog/70339afbaad1cad9f38b1ce8472971731419079a/content/blog/img/ws2.jpeg -------------------------------------------------------------------------------- /content/blog/img/yay.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/athul/blog/70339afbaad1cad9f38b1ce8472971731419079a/content/blog/img/yay.gif -------------------------------------------------------------------------------- /content/blog/jiofi.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Jiofi-CLI 3 | date: "2020-08-01" 4 | description: Introducing Jiofi-CLI. A CLI interface for getting your Jiofi Device Info. 5 | --- 6 | JioFi ia a portable wifi hotspot for personal use by Jio. They have somewhat generous plans and are a major telecom provider in India. Jiofi has a web dashboard to display the current details regarding the data usage, battery status and number of devices connected to the network. But I am too lazy to go to the dashboard to check the data out. So I built a small Python CLI to monitor the jiofi device from the network. I call it Jiofi-CLI. You can find the source code on GitHub at [Jiofi-CLI](https://github.com/athul/jiofi-cli). It's easy to install and you can install it with `pip`. The Python Package Manager. 7 | 8 | ## The Build Breakdown 9 | 10 | Before digging in deep, I saw a [repo on GitHub](https://github.com/anandubajith/jiofi-status) regarding jiofi that scrapes data from the dashboard of a Jiofi and this seemed a legit solution for getting the info. So Initial solution which came into mind for getting the data was **Web Scraping**!! 😈. So went on to scrape the dashboard without any prior knowledge in web scraping. I read a few articles on using Beautiful Soup with Requests for fetching the data and parsing the HTML. I went forward with it for a bit and I found out that the data part won't be shown in the scraped output. I was *sad*😓. I don't have any idea on moving forward without the data. Then the geek inside me woke up. "If the data can't be scraped, then the data has to come from somewhere". A sudden `Ctrl+Shift+i` took me to the chrome developer console. 11 | 12 | I spend half an hour tryin to figure out where the data is coming from. Trying the Networks tab finally yeilded some luck. I saw a pattern in the *waterfall* tab in the Network section. About 300+ requests are send in the span of 10 mins. Okay that seems interesting. I checked all the XHR requests and found the motherlode. A series of POST requests were being sent to the JioFi's internal API server. That was a `xxx-form-url-encoded` requests to the endpoint. *_An internal API⚡️⚡️_*. I checked the request headers and saw that a specific keyword was used to fetch the data. These were for LTEStatus, DeviceStatus, WANStatus and so on. I tried to get the data from Insomnia which is a REST Client since Postwoman had shown me a few errors and I was too lazy to fix the errors with Postwoman for that time. Those errors were due to local endpointsand not anything serious. 13 | 14 | It worked on Insomnia, I received the data that was to be used for the web dashboard or in simple terms, I mocked the web dashboard of JioFi with Insomnia. Win 🙌 Win. The response was like any other API response, in JSON. Here is the sample response. 15 | 16 | ```json 17 | { 18 | "Page": "GetLTEStatus", 19 | "Mask": "", 20 | "connected_status": "Attached", 21 | "connection_time": "00:00:57:19", 22 | "signal_strength": "Normal", 23 | "operating_mode": "TDD", 24 | "operating_band": "Band 40", 25 | "bandwidth": "20 MHz", 26 | "earfcn": "38750", 27 | "active_cell_id": "123", 28 | "plmn": "405 862", 29 | "apn_in_use": "jionet", 30 | "gcellid_pcellid": "12345", 31 | "eCellid": "12345", 32 | "ecgi": "1234567", 33 | "rsrp": "-106", 34 | "rsrq": "-13", 35 | "rssi": "74", 36 | "sinr": "9.8", 37 | "cinr": "not support", 38 | "tx_rate_total_data_transferred": "11.91 Kbps / 918.67 Kbyte", 39 | "rx_rate_total_data_received": "359.30 Kbps / 18.31 Mbyte", 40 | "ul_operator_limit": "50000000", 41 | "dl_operator_limit": "100000000" 42 | } 43 | ``` 44 | 45 | This JSON response once hooked up with Python will give the precise data. I used Python's requests library to fetch the json from the URL. I divided all the Pages(Page of the specific Keyword, like `"Page": "GetLTEStatus"`) to their respective functions to print the specific data to Stdout. Nothing fancy, just the `print` function of Python. 46 | 47 | Once I made out these functions, I need to implement a CLI interface to be the icing on the cake. Initially went on with Argparse since it's builtin and has a lot of cool features. Argparse then felt a bit daunting, so I tried it with Click. Click also showed some errors due to some function's optional arguments, I dropped it. So a=searching for another one, I found out about [fire](https://github.com/google/python-fire). It had a really easy API and it just helped me finish the job quite quickly. I was completed with a CLI and ready for packaging. My friend GKR helped me on packaging the CLI and it was on pypi after a few hours(*I was lazy to finish it duh...*) and that was my first python package on Pypi. You can find it [here](https://pypi.org/project/jiofi/). 48 | 49 | This is the output of Jiofi command when installed on your system 50 | 51 | ```bash 52 | $ jiofi 53 | NAME 54 | jiofi 55 | 56 | SYNOPSIS 57 | jiofi COMMAND 58 | 59 | COMMANDS 60 | COMMAND is one of the following: 61 | 62 | devices 63 | Prints a tabular view of all the connected devices in the network 64 | 65 | speed 66 | Prints the Current upload and download speed 67 | 68 | basic 69 | Get basic Details like Battery charge and state, no of connected devices and data used in