<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[/home/jishnu/blog]]></title><description><![CDATA[bike. code. eat. repeat.]]></description><link>https://blog.j15h.nu/</link><image><url>https://blog.j15h.nu/favicon.png</url><title>/home/jishnu/blog</title><link>https://blog.j15h.nu/</link></image><generator>Ghost 4.1</generator><lastBuildDate>Fri, 17 Apr 2026 02:33:26 GMT</lastBuildDate><atom:link href="https://blog.j15h.nu/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[Hardware Updates - MacBook 1 Year later, Raspberry Pi and GNOME40]]></title><description><![CDATA[Misc updates to hardware I use. Includes updates to macOS, gnome 40 and my new Raspberry Pi 4]]></description><link>https://blog.j15h.nu/hardware-updates-2021-jan/</link><guid isPermaLink="false">5fb3f266d1de78301e542f5f</guid><category><![CDATA[apple]]></category><category><![CDATA[macOS]]></category><category><![CDATA[gnome]]></category><category><![CDATA[raspberry pi]]></category><category><![CDATA[MacBook Pro]]></category><dc:creator><![CDATA[Jishnu]]></dc:creator><pubDate>Wed, 10 Feb 2021 13:17:40 GMT</pubDate><media:content url="https://blog.j15h.nu/content/images/2021/02/PXL_20200913_130022388.MP-1.jpg" medium="image"/><content:encoded><![CDATA[<h2 id="macbook-pro">MacBook Pro</h2><img src="https://blog.j15h.nu/content/images/2021/02/PXL_20200913_130022388.MP-1.jpg" alt="Hardware Updates - MacBook 1 Year later, Raspberry Pi and GNOME40"><p>This is an update to my older blog post, <a href="https://blog.j15h.nu/new-to-macos/">New to macOS</a>, which I wrote after my initial impressions with my office MacBook Pro 16inch.</p><p>I started using this laptop right after my team meet in Dec 2019. Now it is more than a year and I have seen a major OS upgrade this year. I was adventurous enough to even use the public beta builds.<br></p><ul><li>Application Switcher still opens at random displays in a multi screen set up.</li></ul><p>This is one of the most irritating part. You won&apos;t know where app switcher is going to open up when you press Command Key + Tab</p><ul><li>Overheating - this is not meant to use on lap most of the time</li></ul><p>MacBook Pro 16&quot; with i9 processor is definitely not one to have if you are planning to use it for a long time in your lap. For me, it doesn&apos;t bother much since I use it on the desk mostly, even when travelling I try to find a desk.</p><ul><li>Can&apos;t take direct action from notification</li></ul><figure class="kg-card kg-image-card"><img src="https://blog.j15h.nu/content/images/2021/02/Screen-Shot-2021-02-10-at-6.25.30-PM-1.png" class="kg-image" alt="Hardware Updates - MacBook 1 Year later, Raspberry Pi and GNOME40" loading="lazy" width="720" height="258" srcset="https://blog.j15h.nu/content/images/size/w600/2021/02/Screen-Shot-2021-02-10-at-6.25.30-PM-1.png 600w, https://blog.j15h.nu/content/images/2021/02/Screen-Shot-2021-02-10-at-6.25.30-PM-1.png 720w" sizes="(min-width: 720px) 720px"></figure><p>In the older versions, you could take direct action such as &apos;archive&apos; from the notification popup. Now, it is a 3 steps operation, first you need to hover over the notification, then select options and then click on archive. Such a painful UX for users.</p><h2 id="gnome-40">GNOME 40</h2><p>On the free software side, I am kind of jealous of the updates that are work in progress for the GNOME 40 release. Do watch baby WOGUE channel if you want to see some demo of the developer builds.</p><p>One of the most irritating part of gnome 3 initial release was the shift to vertical virtual desktops from horizontal ones in gnome 2. This forced me to look for alternatives, and I was happy that I moved to <a href="https://awesomewm.org/">awesome-wm</a> and later to <a href="https://i3wm.org/">i3</a>. Now with gnome 40, I am intrigued to go back to gnome, on my personal laptop.</p><figure class="kg-card kg-embed-card"><iframe width="356" height="200" src="https://www.youtube.com/embed/xwI6rlMHicI?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></figure><h2 id="raspberry-pi-4">Raspberry Pi 4</h2><p>A Couple of months back I gifted myself a Pi4 4gb, plan was to set up a local server and run all sorts of things I used to run from an older laptop.</p><figure class="kg-card kg-image-card"><img src="https://blog.j15h.nu/content/images/2021/02/PXL_20200913_130022388.MP.jpg" class="kg-image" alt="Hardware Updates - MacBook 1 Year later, Raspberry Pi and GNOME40" loading="lazy" width="1531" height="2042" srcset="https://blog.j15h.nu/content/images/size/w600/2021/02/PXL_20200913_130022388.MP.jpg 600w, https://blog.j15h.nu/content/images/size/w1000/2021/02/PXL_20200913_130022388.MP.jpg 1000w, https://blog.j15h.nu/content/images/2021/02/PXL_20200913_130022388.MP.jpg 1531w" sizes="(min-width: 720px) 720px"></figure><p>Right now, I am running a <a href="https://pi-hole.net/">Pi-hole</a>, Samba NAS server and a <a href="https://jellyfin.org/">Jellyfin</a> server. I have plans to configure more things there.</p>]]></content:encoded></item><item><title><![CDATA[What not to do when you are a new joiner]]></title><description><![CDATA[Here are some of mistakes I did in the past and found others repeating the same.]]></description><link>https://blog.j15h.nu/beginner/</link><guid isPermaLink="false">5e2724c45f7d3231d83ed355</guid><category><![CDATA[Ramblings]]></category><dc:creator><![CDATA[Jishnu]]></dc:creator><pubDate>Wed, 07 Oct 2020 13:22:17 GMT</pubDate><media:content url="https://blog.j15h.nu/content/images/2020/10/blog-2.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.j15h.nu/content/images/2020/10/blog-2.png" alt="What not to do when you are a new joiner"><p>In my short engineering career, I got the opportunity to work with people of different levels of experience, from fresh out of college, to people with greater than 15 years of technical working history.</p><p>Here are a couple of traits I have seen with people who lack experience. This is not in any way a bad thing, everyone will get a chance to realize their mistakes and correct it.</p><p>I found these because I have made some of these mistakes in the past and when I saw other people doing it, I was able to experience d&#xE9;j&#xE0; vu.</p><p>Keep in mind, someone showing one or more of these traits doesn&apos;t always mean ill experienced, it just gives a higher chance. Some times it means that they haven&apos;t learned from their past. Also, there will be outliers for sure. I am just listing down the common traits I have noticed.</p><h2 id="simplifying-the-code-base">Simplifying the code base</h2><p>You may be having a code base which has been worked for a couple of years, but still when they start looking at the code, think the db, structure, and logic can be simplified, or they think the program itself is simple, current engineers just made it complex.</p><p>Most of the time, what will happen is, they lack the full understanding of the project - they will understand the intricacies when they work on the project for a couple of months. </p><p>Once they prematurely start simplifying, either reach the same level of understanding that you are or they may reach a worse code structure than what you are having right now.</p><h2 id="assuming-that-current-team-doesn-t-know-better">Assuming that current team doesn&apos;t know better</h2><p>This is especially common among fresh out of college engineers who learns a couple of new technologies and assume that the existing team is not up to date, informed about it. &#xA0;It can be new frameworks it can be libraries.</p><p>With experience, you get to learn that everything doesn&apos;t need to be using the bleeding edge technology or bleeding edge framework. Also experience gives you better understanding of the newer things, and you&apos;ll be able to make a decision when it needs to be adopted.</p><h2 id="assuming-that-current-team-doesn-t-know-the-flaws">Assuming that current team doesn&apos;t know the flaws</h2><p>A team who actively worked on the project for a longer period of time, will be aware of most of the flaws in the system, but they don&apos;t want to fix everything right away because of certain reasons. A person coming from outside, might assume that these things were never came to notice of the team.<br><br>What experience gives you is, the understanding of priority of each flaw in the system. If you are running a program for 100 rows of data, you don&apos;t have to write a complex algorithm to handle millions of rows. A priority for that might be lower when several new important features or higher priority tasks need to be worked on. </p><h2 id="believing-design-choices-are-incorrect">Believing design choices are incorrect</h2><p>Another common trait I have seen is blindly believing whatever design choices made are incorrect. It is also because of lack of working with wide variety of projects.</p><p>Not all project needs to have the same kind of structure/design that you have seen in the past.</p><h2 id="trying-to-apply-familiar-project-structure">Trying to apply familiar project structure</h2><p>Each project can have its own structure, some projects can use functional structure, some can use object-oriented. Like that, people can use the same framework and can have different project structure.<br><br>Someone with lack of experience might assume that everything needs to be done the same way as he/she has worked in the past. This happens especially when they start reading the code and find that it is not similar to other projects they have worked on, assume this way is incorrect and starts converting into the form they have been doing in earlier projects.</p><p>Reading more code from a wide variety of projects help you to avoid making this mistake.</p><h1 id="what-you-should-do">What you should do</h1><p>Here are my suggestions on how to handle the situation when you are beginer and find that current design choices and code structure are in fact bad. </p><ul><li>Don&apos;t introduce your points in a confrontational way.</li><li>Try to ask existing engineers what went into making a particular design decision.</li><li>If something is bad, instead of blaming it, ask why this particular issue was missed, or ask whether it came into others notice in the past.</li><li> Try to understand current teams point of view before making any judgments.<br><br></li></ul><p></p><p>Icon Attribution: <a href="https://thenounproject.com/term/teacher/1484729 ">Teacher</a> by glyph.faisalovers from the Noun Project</p>]]></content:encoded></item><item><title><![CDATA[Indic Keyboard v3.2]]></title><description><![CDATA[Announcing Indic Keyboard v3.2 with couple of new features and themes. ]]></description><link>https://blog.j15h.nu/indic-keyboard-v3-2/</link><guid isPermaLink="false">5f428e6ad1de78301e542e02</guid><category><![CDATA[indic keyboard]]></category><category><![CDATA[Projects]]></category><dc:creator><![CDATA[Jishnu]]></dc:creator><pubDate>Sun, 23 Aug 2020 16:54:50 GMT</pubDate><media:content url="https://blog.j15h.nu/content/images/2020/08/blog.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.j15h.nu/content/images/2020/08/blog.png" alt="Indic Keyboard v3.2"><p>This weekend, I worked on a new release of Indic Keyboard. Here are the new additions.</p><ul><li>Swipe gestures for basic operations</li><li>New bordered themes</li><li>UI fix for Inscript layouts</li></ul><p></p><h1 id="new-themes">New Themes</h1><p>New release includes 3 new themes. These looks really good. Auto switching of dark theme is in the works, should be available in the next release.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.j15h.nu/content/images/2020/08/Screenshot_20200823-212624.png" class="kg-image" alt="Indic Keyboard v3.2" loading="lazy" width="1080" height="2160" srcset="https://blog.j15h.nu/content/images/size/w600/2020/08/Screenshot_20200823-212624.png 600w, https://blog.j15h.nu/content/images/size/w1000/2020/08/Screenshot_20200823-212624.png 1000w, https://blog.j15h.nu/content/images/2020/08/Screenshot_20200823-212624.png 1080w" sizes="(min-width: 720px) 720px"><figcaption>All themese now have fancy names.</figcaption></figure><figure class="kg-card kg-gallery-card kg-width-wide kg-card-hascaption"><div class="kg-gallery-container"><div class="kg-gallery-row"><div class="kg-gallery-image"><img src="https://blog.j15h.nu/content/images/2020/08/Screenshot_20200823-203104-1.png" width="1080" height="1045" loading="lazy" alt="Indic Keyboard v3.2" srcset="https://blog.j15h.nu/content/images/size/w600/2020/08/Screenshot_20200823-203104-1.png 600w, https://blog.j15h.nu/content/images/size/w1000/2020/08/Screenshot_20200823-203104-1.png 1000w, https://blog.j15h.nu/content/images/2020/08/Screenshot_20200823-203104-1.png 1080w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://blog.j15h.nu/content/images/2020/08/Screenshot_20200823-203125-1.png" width="1080" height="1041" loading="lazy" alt="Indic Keyboard v3.2" srcset="https://blog.j15h.nu/content/images/size/w600/2020/08/Screenshot_20200823-203125-1.png 600w, https://blog.j15h.nu/content/images/size/w1000/2020/08/Screenshot_20200823-203125-1.png 1000w, https://blog.j15h.nu/content/images/2020/08/Screenshot_20200823-203125-1.png 1080w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://blog.j15h.nu/content/images/2020/08/Screenshot_20200823-203156-1.png" width="1080" height="907" loading="lazy" alt="Indic Keyboard v3.2" srcset="https://blog.j15h.nu/content/images/size/w600/2020/08/Screenshot_20200823-203156-1.png 600w, https://blog.j15h.nu/content/images/size/w1000/2020/08/Screenshot_20200823-203156-1.png 1000w, https://blog.j15h.nu/content/images/2020/08/Screenshot_20200823-203156-1.png 1080w" sizes="(min-width: 720px) 720px"></div></div></div><figcaption>Moderd Dark Bordered - Modern Light Bordered - Pure Black Bordered</figcaption></figure><p></p><h1 id="basic-swipe-operations">Basic swipe operations</h1><p>Supporting basic swipe operations is one of the frequently requested features. Thanks to <a href="https://github.com/dslul/openboard/">Openboard</a>, new release includes some swipe operations in all Indic Keyboard variants.</p><h3 id="swipe-to-delete-">Swipe to delete.</h3><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.j15h.nu/content/images/2020/08/swipe_delete.gif" class="kg-image" alt="Indic Keyboard v3.2" loading="lazy" width="952" height="858"><figcaption>swipe to delete</figcaption></figure><h3 id="swipe-to-navigate">Swipe to Navigate</h3><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.j15h.nu/content/images/2020/08/swipe_space.gif" class="kg-image" alt="Indic Keyboard v3.2" loading="lazy" width="952" height="858"><figcaption>swipe to navigate</figcaption></figure><h3 id="swipe-to-shift">Swipe to Shift</h3><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.j15h.nu/content/images/2020/08/swipe_shift.gif" class="kg-image" alt="Indic Keyboard v3.2" loading="lazy" width="952" height="858"><figcaption>swipe to shift</figcaption></figure><p></p><h1 id="inscript-ui-fix">Inscript UI Fix</h1><p>Characters now fit within the key for Insript layouts.</p><figure class="kg-card kg-image-card"><img src="https://blog.j15h.nu/content/images/2020/08/Screenshot_20200823-212837.png" class="kg-image" alt="Indic Keyboard v3.2" loading="lazy" width="2000" height="1682" srcset="https://blog.j15h.nu/content/images/size/w600/2020/08/Screenshot_20200823-212837.png 600w, https://blog.j15h.nu/content/images/size/w1000/2020/08/Screenshot_20200823-212837.png 1000w, https://blog.j15h.nu/content/images/size/w1600/2020/08/Screenshot_20200823-212837.png 1600w, https://blog.j15h.nu/content/images/2020/08/Screenshot_20200823-212837.png 2048w" sizes="(min-width: 720px) 720px"></figure><h1 id="download">Download</h1><p>The release will be available in all the usual places. F-Droid release for v3.0 and v3.1 got merged recently, so it should also be available in a day or two.</p>]]></content:encoded></item><item><title><![CDATA[Indic Keyboard v3.1 and Prime]]></title><description><![CDATA[Announcing v3.1 of Indic Keyboard with new branding, several bug fixes and improvements. Also an update for Prime after 5 long years.]]></description><link>https://blog.j15h.nu/indic-keyboard-v3-1-and-prime/</link><guid isPermaLink="false">5f2653786a9bc53e1c4d065b</guid><category><![CDATA[indic keyboard]]></category><category><![CDATA[Projects]]></category><dc:creator><![CDATA[Jishnu]]></dc:creator><pubDate>Sun, 02 Aug 2020 06:04:47 GMT</pubDate><media:content url="https://blog.j15h.nu/content/images/2020/08/16_9.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://blog.j15h.nu/content/images/2020/08/16_9.jpg" alt="Indic Keyboard v3.1 and Prime"><p>Last week, I uploaded v3.1 of Indic Keyboard with new icons several bug fixes and improvements over v3.0 release.</p><figure class="kg-card kg-image-card"><img src="https://blog.j15h.nu/content/images/2020/08/ic_launcher-playstore-1.png" class="kg-image" alt="Indic Keyboard v3.1 and Prime" loading="lazy"></figure><p>New icons are designed by <a href="http://hiran.in/">Hiran Venugopalan</a> and I like them, it looks different from other Android keyboard projects around.</p><h3 id="v3-1-important-changes">v3.1 important changes</h3><ul><li>Fix setup wizard - now this will work in all text and display sizes</li><li>Removed hint from qwerty layout&apos;s top row. This was no longer needed as we now have ability to turn on number row.</li><li>Fixes for Bengali Avro layout (Thanks to <a href="https://learnlearn.in/">Akshay</a>)</li></ul><h1 id="indic-keyboard-prime">Indic Keyboard Prime</h1><figure class="kg-card kg-image-card"><img src="https://blog.j15h.nu/content/images/2020/08/ic_launcher-playstore.png" class="kg-image" alt="Indic Keyboard v3.1 and Prime" loading="lazy"></figure><p>This is our variant with proprietary binaries to support Gesture Typing. It has almost 2 million downloads.</p><p>Last update to the project was on June 2015, so it took more than 5 years for a new release. Several people used to ping me and ask about update. Finally I was able to deliver. <br><br>Latest release includes all the changes and improvements from v3.1 of our fully open source keyboard.<br><br>Source code of these keyboards are available in both gitlab and github.</p><h2 id="download-links">Download Links</h2><ul><li><a href="https://play.google.com/store/apps/details?id=org.smc.inputmethod.indic">Indic Keyboard</a></li><li><a href="https://play.google.com/store/apps/details?id=in.androidtweak.inputmethod.indic">Indic Keyboard Prime</a></li><li><a href="https://j15h.nu/downloads/releases/">Direct Downloads</a><br></li></ul>]]></content:encoded></item><item><title><![CDATA[Stock Splits in GNU Cash]]></title><description><![CDATA[<p>This is 5th video of our GNUCash video series. In this video, lets see how we can handle stock splits. <br><br>Stock splits are tricky to handle because, most of the time, split happens in 1:2, 1:3 kind of ratio, without any payment needed. Since GNUCash is double entry</p>]]></description><link>https://blog.j15h.nu/stock-splits-in-gnu-cash/</link><guid isPermaLink="false">5f198a1d6a9bc53e1c4d0642</guid><dc:creator><![CDATA[Jishnu]]></dc:creator><pubDate>Thu, 23 Jul 2020 13:27:00 GMT</pubDate><media:content url="https://blog.j15h.nu/content/images/2020/07/gnucash.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.j15h.nu/content/images/2020/07/gnucash.png" alt="Stock Splits in GNU Cash"><p>This is 5th video of our GNUCash video series. In this video, lets see how we can handle stock splits. <br><br>Stock splits are tricky to handle because, most of the time, split happens in 1:2, 1:3 kind of ratio, without any payment needed. Since GNUCash is double entry accounting, this is tricky.<br><br>Luckily GNUCash has a built in option to handle stock splits. This can be used for Mutual Fund segregated portfolios as well. Watch the video for more.</p><figure class="kg-card kg-embed-card"><iframe width="459" height="344" src="https://www.youtube.com/embed/R787iQYVdE8?feature=oembed" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></figure>]]></content:encoded></item><item><title><![CDATA[Indic Keyboard v3.0]]></title><description><![CDATA[Announcing Indic Keyboard v3.0 with several new features and bug fixes.]]></description><link>https://blog.j15h.nu/indic-keyboard-v3-0/</link><guid isPermaLink="false">5f154a836a9bc53e1c4d05ce</guid><category><![CDATA[indic keyboard]]></category><category><![CDATA[Projects]]></category><dc:creator><![CDATA[Jishnu]]></dc:creator><pubDate>Mon, 20 Jul 2020 07:58:38 GMT</pubDate><media:content url="https://blog.j15h.nu/content/images/2020/07/FB.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.j15h.nu/content/images/2020/07/FB.png" alt="Indic Keyboard v3.0"><p>With almost 3 million downloads, Indic Keyboard is one of the most popular Free and Open Source keyboard for Indic languages. With 3.0, I am updating it with new features and bug fixes.</p><p>Originally, I planned for several new layouts and languages before tagging for 3.0 release, but we are loosing users because the way google is showing warning for our app in the newer version of Android.</p><p>Current plan is to do frequent releases with previously planned features. So you should expect more releases, faster updates.</p><p>v3.0 has a new logo, setup wizard UI changes and several new features.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.j15h.nu/content/images/2020/07/indic_keyboard.png" class="kg-image" alt="Indic Keyboard v3.0" loading="lazy"><figcaption>New Logo by Hiran Venugopalan - http://hiran.in/</figcaption></figure><h2 id="short-list-of-changes-include">Short list of changes include</h2><ul><li>Separate versions for armv7 and armv8</li><li>Support run-time permissions</li><li>Updated set of emojis</li><li>Option to set permanent emoji key</li><li>Option to turn on number row</li><li>Option to resize keyboard</li><li>New dictionaries for Kashmiri, Marathi, Maithili, Odia, Sanskrit, Santali, Assamese</li><li>Several bugfixes</li></ul><h2 id="demo">Demo</h2><p>I created a short video, rundown of features</p><figure class="kg-card kg-embed-card"><iframe width="480" height="270" src="https://www.youtube.com/embed/xLfVJ4ifJHs?feature=oembed" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></figure><h2 id="acknowledgement">Acknowledgement </h2><p>Finally, I would like to thank Mozilla and <a href="https://www.mozilla.org/en-US/moss/">Mozilla Open Source Support award</a> for motivating me to continue working on this project.</p><h2 id="download">Download</h2><p>Updates will be live soon on both Google Play and on F-Droid.</p><!--kg-card-begin: markdown--><p><a href="https://play.google.com/store/apps/details?id=org.smc.inputmethod.indic"><img src="https://play.google.com/intl/en_us/badges/images/generic/en-play-badge.png" alt="Indic Keyboard v3.0" height="80"></a><a href="https://f-droid.org/packages/org.smc.inputmethod.indic/"><img src="https://f-droid.org/badge/get-it-on.png" alt="Indic Keyboard v3.0" height="80"></a></p>
<!--kg-card-end: markdown--><p>If you want direct links, you can get apks from <a href="https://j15h.nu/downloads/releases/">here</a>.</p>]]></content:encoded></item><item><title><![CDATA[Reconciliation in GNUCash]]></title><description><![CDATA[<p>This is the fourth video in the GNUCash series. Here lets see how we can reconcile an account.</p><p>I use reconcile option for my credit card accounts. This will help me to make sure there are no unexpected charges or transactions in the bill. When ever I get a bill,</p>]]></description><link>https://blog.j15h.nu/reconciliation-in-gnucash/</link><guid isPermaLink="false">5ec87a686a9bc53e1c4d058b</guid><category><![CDATA[Video]]></category><category><![CDATA[Tutorial]]></category><dc:creator><![CDATA[Jishnu]]></dc:creator><pubDate>Sat, 23 May 2020 01:46:14 GMT</pubDate><media:content url="https://blog.j15h.nu/content/images/2020/05/gnucash4.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.j15h.nu/content/images/2020/05/gnucash4.png" alt="Reconciliation in GNUCash"><p>This is the fourth video in the GNUCash series. Here lets see how we can reconcile an account.</p><p>I use reconcile option for my credit card accounts. This will help me to make sure there are no unexpected charges or transactions in the bill. When ever I get a bill, I match it with the transactions recorded in GNUCash, and verify they are correct.</p><p>Reconciliation will also help you to mark the transaction as permanent, making sure you won&apos;t edit it by mistake in the future.</p><figure class="kg-card kg-embed-card"><iframe width="480" height="270" src="https://www.youtube.com/embed/W9LZ9M3Pv-k?feature=oembed" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></figure>]]></content:encoded></item><item><title><![CDATA[VinnieTalks Podcast]]></title><description><![CDATA[Interview with a popular Malayalam podcast - VinnieTalks.]]></description><link>https://blog.j15h.nu/vinnie-talks/</link><guid isPermaLink="false">5ebeb7986a9bc53e1c4d0540</guid><category><![CDATA[Video]]></category><dc:creator><![CDATA[Jishnu]]></dc:creator><pubDate>Fri, 15 May 2020 15:51:59 GMT</pubDate><media:content url="https://blog.j15h.nu/content/images/2020/05/IMG_20200511_231057_025.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://blog.j15h.nu/content/images/2020/05/IMG_20200511_231057_025.jpg" alt="VinnieTalks Podcast"><p>I had another live Instagram chat with Vineeth, who was my batch mate at MES College. </p><p>I recently came to know about his Malayalam podcast VinnieTalks - <a href="https://anchor.fm/vinnietalks">https://anchor.fm/vinnietalks</a>. His podcast is well produced, and I really liked the fact that he edited, rather than dumping full length audio of his interviews. When I congratulated him over twitter, he invited me as a guest. I may be the least intellectual person who came in his show.</p><p>Here is the video version of it. It is in Malayalam</p><figure class="kg-card kg-embed-card"><iframe width="459" height="344" src="https://www.youtube.com/embed/Eqjtm6763nM?feature=oembed" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></figure>]]></content:encoded></item><item><title><![CDATA[TinkerHub Live]]></title><description><![CDATA[<p><a href="https://tinkerhub.org/">TinkerHub</a> foundation recently did a cover of SMC project members via instagram live. I was also part of it, I had a live call with Hrishi on Thursday.<br><br>My call was around Indic Keyboard. In order to prepare for that, I looked at the code commits history - it is</p>]]></description><link>https://blog.j15h.nu/tinkerhub-live/</link><guid isPermaLink="false">5eb6374c6a9bc53e1c4d048e</guid><category><![CDATA[indic keyboard]]></category><category><![CDATA[Video]]></category><dc:creator><![CDATA[Jishnu]]></dc:creator><pubDate>Mon, 11 May 2020 04:10:56 GMT</pubDate><media:content url="https://blog.j15h.nu/content/images/2020/05/2020-05-09-10.37.45.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://blog.j15h.nu/content/images/2020/05/2020-05-09-10.37.45.jpg" alt="TinkerHub Live"><p><a href="https://tinkerhub.org/">TinkerHub</a> foundation recently did a cover of SMC project members via instagram live. I was also part of it, I had a live call with Hrishi on Thursday.<br><br>My call was around Indic Keyboard. In order to prepare for that, I looked at the code commits history - it is interesting to know that the projects has been active for almost 8 years now.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.j15h.nu/content/images/2020/05/Screen-Shot-2020-05-07-at-4.34.39-PM.png" class="kg-image" alt="TinkerHub Live" loading="lazy"><figcaption>First day of the project</figcaption></figure><p>Here is the video of my call, it is in Malayalam.</p><figure class="kg-card kg-embed-card"><iframe width="480" height="270" src="https://www.youtube.com/embed/oTblh2cjwnE?feature=oembed" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></figure>]]></content:encoded></item><item><title><![CDATA[Split Transactions in GNUCash]]></title><description><![CDATA[<p>This is the third video on GNUCash series. Here, lets dive deeper and see how to use an advance feature - split transactions. </p><p>With split transactions, &#xA0;you can do multiple subtractions under one. Allowing you to record a single transaction between more than 2 accounts.</p><figure class="kg-card kg-embed-card"><iframe width="480" height="270" src="https://www.youtube.com/embed/qq4rgedqix8?feature=oembed" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></figure>]]></description><link>https://blog.j15h.nu/split-transactions-in-gnucash/</link><guid isPermaLink="false">5eb20dc46a9bc53e1c4d045f</guid><category><![CDATA[Video]]></category><category><![CDATA[Tutorial]]></category><dc:creator><![CDATA[Jishnu]]></dc:creator><pubDate>Wed, 06 May 2020 02:32:08 GMT</pubDate><media:content url="https://blog.j15h.nu/content/images/2020/05/gnucash3.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.j15h.nu/content/images/2020/05/gnucash3.png" alt="Split Transactions in GNUCash"><p>This is the third video on GNUCash series. Here, lets dive deeper and see how to use an advance feature - split transactions. </p><p>With split transactions, &#xA0;you can do multiple subtractions under one. Allowing you to record a single transaction between more than 2 accounts.</p><figure class="kg-card kg-embed-card"><iframe width="480" height="270" src="https://www.youtube.com/embed/qq4rgedqix8?feature=oembed" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></figure>]]></content:encoded></item><item><title><![CDATA[Tracking Stocks and Mutual funds using GNUCash]]></title><description><![CDATA[<p>In this second part of my GNUCash tutorial series, lets see how we can save and track your stock and mutual fund investments.</p><figure class="kg-card kg-embed-card"><iframe width="480" height="270" src="https://www.youtube.com/embed/Pq5zlxEx3fk?feature=oembed" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></figure>]]></description><link>https://blog.j15h.nu/tracking-stocks-and-mutual-funds-using-gnucash/</link><guid isPermaLink="false">5eaa4e376a9bc53e1c4d0442</guid><category><![CDATA[Video]]></category><category><![CDATA[Tutorial]]></category><dc:creator><![CDATA[Jishnu]]></dc:creator><pubDate>Thu, 30 Apr 2020 04:28:26 GMT</pubDate><media:content url="https://blog.j15h.nu/content/images/2020/05/gnucash2.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.j15h.nu/content/images/2020/05/gnucash2.png" alt="Tracking Stocks and Mutual funds using GNUCash"><p>In this second part of my GNUCash tutorial series, lets see how we can save and track your stock and mutual fund investments.</p><figure class="kg-card kg-embed-card"><iframe width="480" height="270" src="https://www.youtube.com/embed/Pq5zlxEx3fk?feature=oembed" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></figure>]]></content:encoded></item><item><title><![CDATA[Introduction to GNUCash]]></title><description><![CDATA[<p>I have been using GNUCash to track my personal finances for more than a year now. GNU cash has a steep learning curve, but once to get the knack of it, you&apos;ll understand that it is the most flexible and powerful finance tracking tool that you can get.</p>]]></description><link>https://blog.j15h.nu/introduction-to-gnucash/</link><guid isPermaLink="false">5ea912cb6a9bc53e1c4d0419</guid><category><![CDATA[Video]]></category><category><![CDATA[Tutorial]]></category><dc:creator><![CDATA[Jishnu]]></dc:creator><pubDate>Wed, 29 Apr 2020 06:37:32 GMT</pubDate><media:content url="https://blog.j15h.nu/content/images/2020/05/gnucash.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.j15h.nu/content/images/2020/05/gnucash.png" alt="Introduction to GNUCash"><p>I have been using GNUCash to track my personal finances for more than a year now. GNU cash has a steep learning curve, but once to get the knack of it, you&apos;ll understand that it is the most flexible and powerful finance tracking tool that you can get.</p><p>When I was getting started, even though there is a good documentation on <a href="https://www.gnucash.org/docs/v3/C/gnucash-help/help.html">GNUCash website</a>, I couldn&apos;t find answers for several of my questions from there. I thought of creating a video documentation from then, but it took more than a year to finally do it.</p><p>Here is my first try at a video lecture, if you can call it. </p><figure class="kg-card kg-embed-card"><iframe width="480" height="270" src="https://www.youtube.com/embed/6OuwUdhsYf0?feature=oembed" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></figure>]]></content:encoded></item><item><title><![CDATA[Akshara Mazha v2.0]]></title><description><![CDATA[അക്ഷര മഴ - Akshara Mazha is an Android live wallpaper which I created back in 2017. It didn't get enough traction to keep it maintained. This weekend, I was trying it on my phone and found that Android is showing warning on installation, so I thought of updating it.]]></description><link>https://blog.j15h.nu/akshara-mazha-v2/</link><guid isPermaLink="false">5ea2e8f76a9bc53e1c4d02e3</guid><category><![CDATA[Projects]]></category><category><![CDATA[android]]></category><dc:creator><![CDATA[Jishnu]]></dc:creator><pubDate>Fri, 24 Apr 2020 14:11:51 GMT</pubDate><media:content url="https://blog.j15h.nu/content/images/2020/04/feature.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.j15h.nu/content/images/2020/04/feature.png" alt="Akshara Mazha v2.0"><p>This is basically a Matrix Rain, but with Malayalam alphabets, numbers and symbols. </p><p>You have an option to choose between Malayalam letters, numbers or Malayalam binary. Malayalam numbers are no longer in use. I never learned it, schools doesn&apos;t even teach, so I thought it will be cool it see it in my phone.</p><figure class="kg-card kg-image-card"><img src="https://blog.j15h.nu/content/images/2020/04/ic_launcher-web.png" class="kg-image" alt="Akshara Mazha v2.0" loading="lazy"></figure><p>In v2.0, I made several improvements more than just updating Android support to latest.</p><h3 id="less-distracting">Less Distracting</h3><p>Even I didn&apos;t use the previous version for long because the constant flashing of characters were distracting. In this version, I made adjustments to the peak brightness of characters. This may reduce &#xA0;the overall matrix effect, but I think it is needed for avoiding distraction when you are on your home screen.</p><h3 id="better-settings-ui">Better Settings UI</h3><p>Re-arranged settings and improved setting page. Also, I did some tricks and hard-coded my favorite font, Manjari as the default font for the page, irrespective of what your Android system uses.</p><figure class="kg-card kg-image-card"><img src="https://blog.j15h.nu/content/images/2020/04/Screenshot_20200424-183154.png" class="kg-image" alt="Akshara Mazha v2.0" loading="lazy"></figure><h3 id="text-adjustments">Text Adjustments</h3><p>Characters in the rain now are center aligned and anti aliased. This gives overall a better visual appeal than previous release.</p><figure class="kg-card kg-image-card"><img src="https://blog.j15h.nu/content/images/2020/04/Screenshot_20200424-183321.png" class="kg-image" alt="Akshara Mazha v2.0" loading="lazy"></figure><h3 id="more-fonts">More Fonts</h3><p>Previous version had only 4 fonts. I added 6 more fonts in this version. Here are all the fonts.</p><ul><li>Manjari</li><li>Meera</li><li>Rachana</li><li>Gayathri</li><li>Keraleeyam</li><li>Chilanka</li><li>Uroob</li><li>Dyuthi</li><li>Ishtika</li><li>Karumbi</li></ul><p>All except Ishtika are from SMC - <a href="https://smc.org.in/fonts/">https://smc.org.in/fonts/</a>. Ishtika is from Kailash Nadh - <a href="https://nadh.in/code/ishtika/">https://nadh.in/code/ishtika/</a>.</p><figure class="kg-card kg-image-card"><img src="https://blog.j15h.nu/content/images/2020/04/Screenshot_20200424-183532.png" class="kg-image" alt="Akshara Mazha v2.0" loading="lazy"></figure><h3 id="newer-android-support">Newer Android support</h3><p>Upgraded SDK support to API level 28 of Android.</p><h2 id="download">Download</h2><p>You can download newest version from</p><ul><li>Google Playstore - <a href="https://play.google.com/store/apps/details?id=in.androidtweak.rain">https://play.google.com/store/apps/details?id=in.androidtweak.rain</a>.</li><li>Direct download - <a href="https://j15h.nu/downloads/mazha/mazha-v2.0.apk">https://j15h.nu/downloads/mazha/mazha-v2.0.apk</a></li><li>Source code - <a href="https://gitlab.com/jishnu7/Akshara-Mazha">https://gitlab.com/jishnu7/Akshara-Mazha</a></li></ul>]]></content:encoded></item><item><title><![CDATA[Configuring VPC for Google App Engine]]></title><description><![CDATA[<p>This is the second post regarding VPC. In the <a href="https://blog.j15h.nu/configuring-vpc-for-aws-elastic-beanstalk/">previous post </a> we saw how to create VPC and configure network in AWS. This one is about Google Cloud and App Engine.</p><h3 id="creating-a-network">Creating a network</h3><p>If you have created an app Engine Flexible instance, you should automatically get a default VPC</p>]]></description><link>https://blog.j15h.nu/configuring-vpc-for-google-app-engine/</link><guid isPermaLink="false">5e96a006c78eb05b933444f9</guid><category><![CDATA[cloud]]></category><category><![CDATA[network]]></category><category><![CDATA[Guides]]></category><dc:creator><![CDATA[Jishnu]]></dc:creator><pubDate>Tue, 21 Apr 2020 05:32:36 GMT</pubDate><media:content url="https://blog.j15h.nu/content/images/2020/04/Screen-Shot-2020-04-21-at-10.55.08-AM.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.j15h.nu/content/images/2020/04/Screen-Shot-2020-04-21-at-10.55.08-AM.png" alt="Configuring VPC for Google App Engine"><p>This is the second post regarding VPC. In the <a href="https://blog.j15h.nu/configuring-vpc-for-aws-elastic-beanstalk/">previous post </a> we saw how to create VPC and configure network in AWS. This one is about Google Cloud and App Engine.</p><h3 id="creating-a-network">Creating a network</h3><p>If you have created an app Engine Flexible instance, you should automatically get a default VPC network. You can either use that default network, or create a new one, if you want only select app engine services to be under it.</p><p>In order to create a custom network, visit <a href="https://console.cloud.google.com/networking/networks/">https://console.cloud.google.com/networking/networks/</a> </p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://blog.j15h.nu/content/images/2020/04/Screen_Shot_2020-04-10_at_8.11.40_PM--2-.png" class="kg-image" alt="Configuring VPC for Google App Engine" loading="lazy"></figure><p>Fill-in necessary details. If you select automatic for subnet creation, Google will go ahead and create subnets for each region it has. If you want more control, select custom. Custom will also allow you to have your own specified IP ranges.</p><h3 id="connecting-a-service-to-vpc-">Connecting a service to VPC.</h3><p>Once you have created a network, for connecting our App Engine service to this VPC, add the following network configuration to your project&apos;s <code>app.yaml</code> file.</p><pre><code>network:
  instance_tag: custom-tag // this can be used for firewall configuration
  name: custom-vpc // name of our vpc
  subnetwork_name: private // name of the subnet that we created.</code></pre><figure class="kg-card kg-image-card"><img src="https://blog.j15h.nu/content/images/2020/04/Screen_Shot_2020-04-10_at_8.16.56_PM.png" class="kg-image" alt="Configuring VPC for Google App Engine" loading="lazy"></figure><p>Once this is done, deploy your changes.</p><h3 id="all-set">All Set</h3><p>Google doesn&apos;t give the same level of flexibility and control like Amazon does. It may feel like this is more easy, but you are creating a VPC to have a tighter control over your network, so Google&apos;s options are pretty limited to be honest.</p>]]></content:encoded></item><item><title><![CDATA[Configuring VPC for AWS Elastic Beanstalk]]></title><description><![CDATA[Virtual Private cloud is virtual network that you can define among your server instances. This provides logical isolation and will give you complete control over your network.]]></description><link>https://blog.j15h.nu/configuring-vpc-for-aws-elastic-beanstalk/</link><guid isPermaLink="false">5e969f80c78eb05b933444f2</guid><category><![CDATA[cloud]]></category><category><![CDATA[network]]></category><category><![CDATA[Guides]]></category><dc:creator><![CDATA[Jishnu]]></dc:creator><pubDate>Mon, 20 Apr 2020 08:58:41 GMT</pubDate><media:content url="https://blog.j15h.nu/content/images/2020/04/image-asset.png" medium="image"/><content:encoded><![CDATA[<img src="https://blog.j15h.nu/content/images/2020/04/image-asset.png" alt="Configuring VPC for AWS Elastic Beanstalk"><p></p><p>I looked into VPC because I wanted to configure all the outgoing traffic from Elastic beanstalk instances via a single public IP address. This allows me to identify TCP requests coming out of AWS EBs.</p><h2 id="configuring-elastic-bean-to-have-a-static-outgoing-ip-address">Configuring Elastic bean to have a static outgoing IP address</h2><p>In order to configure this, we need to create a VPC in AWS and attach our EB environment to it. You cannot change/configure VPC for an existing environment, you&apos;ll have to create a new EB environment in your project.</p><h3 id="configuring-the-network">Configuring the network</h3><h3 id="1-vpc">1. VPC</h3><p>Go to VPC page under aws console and create a new VPC</p><p><a href="https://us-west-1.console.aws.amazon.com/vpc/hom">https://us-west-1.console.aws.amazon.com/vpc/hom</a>e</p><p>give a name tag and for CIDR block, give 10.0.0.0/16. this will allow us to use IP addresses from 10.0.0.0 to 10.0.255.255.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://blog.j15h.nu/content/images/2020/04/Screen_Shot_2020-04-10_at_7.37.08_PM.png" class="kg-image" alt="Configuring VPC for AWS Elastic Beanstalk" loading="lazy"></figure><h3 id="2-subnet">2. Subnet</h3><p>Now, we need to create at least 4 subnets. We&apos;ll be creating both private and public ones. Public ones will be used for load balancers and Private for EB instances. Private subnets won&apos;t be exposed and will use NAT gateway for outgoing traffic. Public ones will be connected to Internet Gateway.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://blog.j15h.nu/content/images/2020/04/Screen_Shot_2020-04-10_at_7.44.49_PM.png" class="kg-image" alt="Configuring VPC for AWS Elastic Beanstalk" loading="lazy"></figure><ul><li>10.0.1.0/24</li><li>10.0.2.0/24</li><li>10.0.3.0/24</li><li>10.0.4.0/24</li></ul><p>Each one can have 256 IP addresses under it.</p><p>We&apos;ll be using 10.0.1.x and 10.0.2.x for public and 10.0.3.x and 10.0.4.x for private. Give name tag according so that you can identify easily.</p><p>Make sure you select 2 different availability zones for private and same way for public. If you don&apos;t have multiple zones, load balancer will throw error during EB environment creation.</p><h3 id="3-internet-gateway">3. Internet Gateway</h3><p>You just need to give a name tag here. Nothing to configure. Internet Gateway is what allows public traffic for the devices in the network. We&apos;ll be connecting public subnets to this gateway allowing load balancer to handle incoming traffic.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://blog.j15h.nu/content/images/2020/04/Screen_Shot_2020-04-10_at_7.48.29_PM.png" class="kg-image" alt="Configuring VPC for AWS Elastic Beanstalk" loading="lazy"></figure><h3 id="5-nat-gateway">5. NAT Gateway</h3><p>NAT Gateway is what allows internet access for the devices in the private subnet. For this, you need to have an elastic IP address. Make sure your account has EIP available. This will be the IP from which all the internet outgoing calls will be happening.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://blog.j15h.nu/content/images/2020/04/Screen_Shot_2020-04-10_at_7.55.50_PM.png" class="kg-image" alt="Configuring VPC for AWS Elastic Beanstalk" loading="lazy"></figure><h3 id="6-route-table">6. Route Table</h3><p>We need 2 route tables. One for public subnets and one for private subnets.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://blog.j15h.nu/content/images/2020/04/Screen_Shot_2020-04-10_at_7.53.41_PM.png" class="kg-image" alt="Configuring VPC for AWS Elastic Beanstalk" loading="lazy"></figure><p>Give a name tag and select your VPC here.</p><ul><li>Connect Public route table to Internet Gateway that we created.</li><li>Connect Private route table to NAT Gateway</li></ul><figure class="kg-card kg-image-card kg-width-wide"><img src="https://blog.j15h.nu/content/images/2020/04/Screen_Shot_2020-04-10_at_8.00.45_PM.png" class="kg-image" alt="Configuring VPC for AWS Elastic Beanstalk" loading="lazy"></figure><h3 id="7-add-route-tables-to-subnets">7. Add Route Tables to Subnets</h3><p>Now we need to connect private subnets to private route table and public subnets to public gateway.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://blog.j15h.nu/content/images/2020/04/Screen_Shot_2020-04-10_at_8.02.37_PM.png" class="kg-image" alt="Configuring VPC for AWS Elastic Beanstalk" loading="lazy"></figure><h3 id="8-all-set-">8. All set.</h3><p>You should be seeing something similar to following. If you notice some of the available IPs out of 256 would&apos;ve been already used.</p><figure class="kg-card kg-image-card kg-width-wide"><img src="https://blog.j15h.nu/content/images/2020/04/Screen_Shot_2020-04-10_at_8.05.57_PM.png" class="kg-image" alt="Configuring VPC for AWS Elastic Beanstalk" loading="lazy"></figure><h3 id="9-go-ahead-and-create-your-eb-instance-">9. Go ahead and create your EB instance.</h3><p>We are done configuring the network. Now we just need to select our new VPC during the creation of EB environment. You can follow this guideline to attach our configured VPC to EB environment</p><p><a href="https://aws.amazon.com/premiumsupport/knowledge-center/elastic-beanstalk-static-IP-address/">https://aws.amazon.com/premiumsupport/knowledge-center/elastic-beanstalk-static-IP-address/</a></p>]]></content:encoded></item></channel></rss>