Thoughts on parameter passing through the RTDB within NWChem. Background Despite a plethora of publications (Aprà et al. 2020; Mejia-Rodriguez et al. 2023), NWChem has little to nothing in terms of developer documentation 1. For better integration over sockets with EON (described elsewhere), I ended up having to add user defined parameters, from which this short note stems. Inputs in NWChem The input file format in NWChem, like most codes of the era, consist of a keyword driven, whitespace ...| Rohit Goswami
Usage notes for data storage within university constraints. Background The University of Iceland has an “unlimited” OneDrive setup for staff / graduate students. This is generally not very helpful, but in conjunction with rclone 1 and dvc can be made to be of more use. Baseline Like most of my newer projects, pixi is used to manage the tooling required, along with git-subrepo for handling local changes to projects. 1pixi add dvc rclone As before, we will assume gnome-keyring is present, a...| Rohit Goswami
Leveraging containers for streamlined remote interactive and mounted file access to intranet machines Background Most academic or corporate networks gate access to internal resources (like clusters or services) via their local intranet, requiring a VPN connection (e.g., using Cisco AnyConnect, FortiGate). Connecting to such a VPN on a personal machine typically routes all your internet traffic through that VPN. This is useful for certain tasks like accessing paywalled journal articles via uni...| Rohit Goswami
Background Recently I found myself writing a bunch of search and replace one-liners. 1export FROM='Matrix3d'; export TO='Matrix3S'; ag -l $FROM | xargs -I {} sd $FROM $TO {} Which works, especially since both ag and sd are rather good, but it is still: Slightly non-ergonomic to type Difficult to keep track of Modulo dumping everything in a .sh file These reminded me of the rich set of alternate shells1. Reaching for xonsh Although nushell, elvish and even oil seemed promising, I settled on th...| Rohit Goswami
A meta-post on a presentation at the Scientific Computing in Rust 2024 annual workshop Background Details Title bless : transparently logging program outputs bless repo (Github) Workshop listing conference site Blurb: We introduce bless, a tool geared towards multiple runs of codes in flux. The key idea is to use Rust’s logging libraries to transparently annotate outputs and additionally use a MongoDB database to store the output and metadata. We find this raises interesting problems while ...| rgoswami.me
Melding systemd and foot for rapid configuration updates and reduced memory consumption in sway with persistent tmux state Background Since I often work in strong sunlight, I often want to reconfigure my terminal to use a light or a dark scheme depending on the time of day. In the process, I decided to fiddle around with custom systemd targets, since sway isn’t really good at managing long running processes like my terminal (foot) server.| Posts on Rohit Goswami
Minimally expanding my existing layouts for supporting Icelandic orthography.1 Background Life outside Emacs can be daunting for a lot of reasons, the lack of auctex and org-latex being a major one. Additionally, for the purposes of my (somewhat current) country of residence2, it is often useful to be able to type Icelandic characters without resorting to something like typeit. Compositional Choices I already use klfc to generate a very portable (in a Unix sense) customized VIM based Colemak ...| rgoswami.me
Some thoughts on melding R with lower level languages and package management Background I like plotting with ggplot2. It makes more sense to me than the other plotting systems. These notes arose while binding readCon and potlib for cuh2vizR. However, for best practices, my fastMatMR project should be consulted. Idiosyncracies I find it odd that R packages commit so much generated code Can be simplified with a CI bot Repo setup pixi with renv turns out to be surprisingly robust.| rgoswami.me
Where I consider digitizing colored content. Background It so happened that I recently acquired a rather unique book which (somewhat oddly) had no corresponding digital variant 1. I’ve discussed how I modify books and papers for consumption on my Kobo Aura HD in the past, but this comes before that. Much of this is essentially a plug for Scantailor Advanced 2. Goals Starting with the initial output pdf files from a scanner’s “scan to me” function 3 the goal is to have all the bells...| rgoswami.me
Thoughts on laptop configurations for ArchLinux in 2023, with btrfs and sway Warning This post is a little less complete than most, it has been dated to roughly the correct time chronologically. Background I split this post from the previous one, to make each more self contained. Since the installation media has more features one might perhaps use gparted for resizing disks, use the GUI for managing networks, etc. Personally I generally allocate a chunk from whatever other OS is present in gp...| rgoswami.me
A short plug for hzArchiso, and general thoughts on archiso Background I recently had to switch server boxes, due to a cascade of hardware errors stemming from a remodeling of my home. The new box, however, did not see fit to include a WiFi card, which meant I had to add one of my own, a Realtek 88XXau, the kernel module for which is on the AUR. This meant the official ArchLinux ISO would not be able to connect to the internet, and short of copying over files from PC to PC manually with a USB...| rgoswami.me
An exploration of the opaque object and pointer interface approach to unleash more modern features than those offered by the ISO Fortran standard. Background Since this has been covered a few times before, just some quick pointers1. The ultimate context is to be able take nice, modern Fortran code with derived types and generate equally nice, user friendly, efficient Python wrappers via f2py. Why? Where the last post (and the test implementation in f2py) left off, the type shadowing approach ...| rgoswami.me
Ruminations on cross-cloud library management Background I have a set of different devices across which I need to sync my library (described in an earlier post). Ideally this should be a lazy synchronization mechanism and be as general as possible. Constraints calibre should never be modifying the files while they are being synced, not only because it creates and removes a lot of temporary files and folders which will cause churn, but also because it actually locks files during modification a...| rgoswami.me
Design guidelines for thin Python wrappers to C++ libraries Background I recently ended up writing and rewriting a series of libraries to essentially get them to a point where I could write bindings to them. In doing so, some thoughts on design have evolved into this post. False starts Originally, I had the library and bindings in one repository, which was easier to hack on, and had fewer moving parts.| rgoswami.me
A meta-post on a talk I was to give at SERI'21 Background Much the same as the rationale behind my other presentation meta-posts, that is: I would like to preserve questions I would like to collect the video, slides and other miscellaneous stuff in one location 1 It would be nice to have my own thoughts here afterwards Details SERI or the Software Engineering Research in India meeting is the only informal event dedicated to software engineering in the subcontinent, so it was rather gratifyin...| rgoswami.me
A meta-post on the workshop I held for the IOP CAPS'21 student conference on Web Development for Physicists Background Much the same as the rationale behind my other presentation meta-posts, that is: I would like to preserve questions I would like to collect the video, slides and other miscellaneous stuff in one location 1 It would be nice to have my own thoughts here afterwards Details Workshop listing on conference site Blurb:| rgoswami.me
A meta-post on my lightning talk at NixCon 2020 Background Much the same as the rationale behind my meta-post on my talk at PyCon India 2020, that is: I would like to preserve questions I would like to collect the video, slides and other miscellaneous stuff in one location 1 It would be nice to have my own thoughts here afterwards Details Title Nix from the dark ages (without Root) Proposal See the cfp response here Abstract Short comments from the trenches of High Performance Clusters on wo...| rgoswami.me
A post on a surprisingly heartwarming community appreciation effort. Background As probably anyone who has asked me about my programming experience has heard, my first real foray into the FOSS community was being a LineageOS co-maintainer (as HaoZeke) for the Xperia Z5 Dual. I haven’t thought about the community all that much for a few years, mostly since XDA became pretty toxic, and Android development just got, less exciting.| rgoswami.me
Background I recently had the opportunity to take part in an AMA (ask me anything) session for the CS106A students on Machine Learning for the Physical Sciences. This is a post about the technical issues, and also includes a video if you read through. Zoom and LosslessCut Zoom recordings are one of the nicer ways to deal with switching windows and screen sharing, especially after fixing the dark screen glitch. However, though LosslessCut works really well to get cut-points, exporting and merg...| rgoswami.me
Background As I mentioned earlier, I’m leading a section for Stanford CS106A: Code in Place. I did also mention I’d try to keep a set of short notes on the process. I finally had my first section meeting! Preparation I went through the following: Sent out a welcome message Detailed the workflow Set up a HackMD instance Set up some slides in beamer1 However, after that, I was still concerned since I didn’t get much of a response on the ice-breakers for EdStem.| rgoswami.me
Background As I mentioned in my last post, I’m leading a section for Stanford CS106A: Code in Place. I did also mention I’d try to keep a set of short notes on the process. So there1. The Training Given the overwhelming number of students, and section leaders, the small groups are for fostering a community of teachers. Consider allowing for daisy chaining during introductions Discussions are the primary take-away Only the instructor should be coding during the session Core components Clar...| rgoswami.me
Background A few weeks ago, I ended up recording a video for the Stanford CS106A: Code in Place initiative (which can be found here). I heard back a while ago, and am now to lead a section for the course! I’ll probably be making a series of short posts as this process continues. On-Boarding This was very reminiscent of the Carpentries instructor training, which makes sense, given how well thought out that experience was.| rgoswami.me
Background Like a lot of my tech based rants, this was brought on by a recent Hacker News post. I won’t go into why the product listed there is a hollow faux FOSS rip-off. I won’t discuss how the ‘free’ analytics option, like many others are just hobby projects taking pot shots at other projects. Or how insanely overpriced most alternatives are. I will however discuss why and how I transitioned to using the awesome Goat Counter.| rgoswami.me
Background I have had a lot of discussions regarding the teaching of git This is mostly as a part of the SoftwareCarpentries, or in view of my involvement with univ.ai, or simply in every public space I am associated with Without getting into my views, I just wanted to keep this resource in mind The site Learning git is a highly contentious thing People seem to be fond of GUI tools, especially since on non *nix systems, it seems that there is a lot of debate surrounding obtaining the git util...| rgoswami.me
Quick notes on variables, dart-sass and hugo Background Recently I decided that it was annoying for me as a user to not know which links on my site were internal and which led off to an external site. Figure 1: The desired end-result, blue for internal links, purple for external links, colors chosen with ColorHexa However, since hugo requires baseurl for generating meaningful rss and sitemap files, this meant either hardcoding the variable into my theme, or figuring out how to pass variables ...| rgoswami.me
A meta-post on my in-person attendance of the 2022 SciPy Conference Background I hadn’t been in an in-person conference for quite a long while now. There were multiple things going for SciPyCon. Collaborators at UT Austin (from the EON project). The prospect of meeting folks from Quansight. Meeting other members of the NumPy community I’d been working with virtually for a year. I had the pleasure of being the recipient of a SciPy Scholarship for my poster and conference proceeding on Wail...| rgoswami.me
A post on configuring a user account for heavy interactive HPC usage with Spack, Nix and self-hosted applications. Background I have in the past written a few posts about configuring my HPC setup. Since the Research and University Network of Iceland hf. (RHnet) recently recieved funding for a new machine, called Elja 1, I decided to jot down my notes from my setup as part of the user interaction team.| rgoswami.me
Background Sometime this year, I realized that I no longer have access to a lot of my older communication. This included, a lot of resources I enjoyed and shared with the people who were around me at that point in time. To counter this, I have decided to opt for shorter posts, even if they don’t always include the same level of detail I would prefer to provide. Alternatives I have an automated system based around IFTTT combined with Twitter, Diigo, and even Pocket However, that doesn’t re...| rgoswami.me
A short pseudo-tutorial post on working with inherited Fortran. Background In-spite of the many claims by upper management (e.g. at LANL) regarding the death of Fortran, most people with even a passing interest in academic research within STEM fields will interact with Fortran code, and the community has only been improving with time Kedward et al. (2022). Rewriting is not typically an option, or a good use of time. This set of posts should be applicable to any blackbox legacy fortran code, ...| rgoswami.me
pytorch local development environments without tears, root access or spack dev-build Background Build systems are a bit of a nightmare. I spend most of my time SSH’ed into more powerful CPU machines, and sometimes on machines with more exotic compute devices. micromamba is typically my poison of choice where nix is not an option. However, micromamba doesn’t allow a whole lot in the way of setting up environments which do not use packages already on conda-forge.| rgoswami.me
Explorations of object oriented Fortran with bind(c) derived types for representations generated by F2PY Background Derived types are easily one of the most visible of the modern Fortran (post-F90) features and are central to object oriented programming paradigms in Fortarn. For those new to the language, a rough guide to some terminology: Fortran Closest C/C++ equivalent derived type struct extends type inherited class final destructor not standard conforming undefined behaviour Only the fir...| rgoswami.me
Rootless SSH servers with TinySSH for local GitPod containers Background act works well enough for most Github Actions workflows, until something fails in the pipeline, or interactive debugging is required. Naturally this is beyond the purview of act itself, but it is easy enough to set up shop with a project’s GitPod docker image being used. For the purposes of the post we’ll consider numpy. 1docker run -v $(pwd):/home/gitpod/f2py_skel --name f2py_npdev -it numpy/numpy-dev:latest docker ...| rgoswami.me
Ruminating on wayland and sway for daily use with ArchLinux Background Many years ago, I found time to make an attempt to switch away from the X11 Window system to Wayland. At the time, I ended up switching back to Xorg, but I did want to revisit it. Since I returned from home recently and was gifted a Gen 6 ThinkPad X1 Carbon, I had a perfect opportunity to do so 1.| rgoswami.me
A closer look at the standard Fortran C compatibility layer by exploring objects and linkers Background Derived types and their interoperability have been covered previously in the context of usage from Python. However, much of the focus of the previous approach revolved around the iso_c_binding intrinsic module. A closer inspection of the functionality provided therein is the first step towards extending beyond the standards to support calling type bound procedures.| rgoswami.me
Moving simple Fortran derived types to Python and back via C Background Object oriented programming has been part of Fortran for longer than I have been alive 1. Fortran has derived types now. They’ve been around for around for over three decades. The standards at the same time, have been supporting more and more interoperable operations. Details of these pleasant historical improvements are pretty much the most the Fortran standards committee have managed to date in the 21st century.| rgoswami.me
A meta-post on twin presentations on F2PY and LFortran at FortranCon'21 Background I had the honor and pleasure to have two presentations at the second annual FortranCon in 2021. The fun part was both talks featured the language standard prominently, but were meant to form two sides of a coin. f2py: Two Decades Later Co-Authors Dr. Ralf Gommers (Quansight Labs), Dr. Melissa Mendonca (Quansight Labs), Dr. Pearu Peterson (Quansight Labs) Duration 20 minutes (15 + 5) Abstract f2py is the gold st...| rgoswami.me
Exploring meson for interfacing fortran and python via f2py and standard techniques, with benchmarks. Background A recent post gauging community interest in f2py brought to light (among other aspects) the fact that the build systems of f2py are rather opaque to the end user. There are good reasons for this, since many of the tools discussed in this post were not around / in any shape to be used during the active development of f2py1.| rgoswami.me
A meta-post on an oral presentation around Fortran and languages Background I was a participant at the 2021 Les Houches school of physics on “Green’s function approach to multiple scattering theory in electronic structure and spectroscopies”. I opted to give a student talk on programming languages and elementary functions as a cautionary tale for IEEE 754. Details Title Programming Language Interstices Abstract In this short talk I will discuss the changing landscape of programming lang...| rgoswami.me
Towards sustainable FOSS with Quansight Labs Background Rumors of my affiliation with Quansight Labs are indeed true. I have had the pleasure of joining the Labs division as a software engineer 1, whose philosophy is fantastically and succintly described by their director Dr. Ralf Gommers. This means, in nutshell, that in my spare time I will be able to contribute to the continued maintenance of key FOSS projects. Why? A reasonable question.| rgoswami.me
Directed recollections of the GSoC21 timeline Background If the last ten weeks of weekly posts have not made it clear; as a student developer in the Google Summer of Code in the year 2021; I was privileged to work on the LFortran compiler alongside Gagandeep Singh and Thirumalai Shaktivel under the fantastic mentorship of Ondřej Čertík under the Fortran-Lang organization. Pencil Pushing This section describes the overall work done in a manner designed to delight minds enamoured by brevity ...| rgoswami.me
The road to accurate elementary intrinsic functions is paved with IEEE/ISO standards Background Serialized update for the 2021 Google Summer of Code under the fortran-lang organization, mentored by Ondrej Certik. Logistics Met with Ondrej daily from Sunday till Friday On Sunday we finished the compile time evaluation design (partially) Ondrej finished the rest overnight On Monday, we started co working on runtime implemenations Also added some more compile time stuff and pointers to clean thi...| rgoswami.me
A meta-post on social events and my presentation at TUG21 Background Much the same as the rationale behind my other presentation meta-posts, but with some added shilling; since TUG is fantastic. Plus like the last year, I was gven the opportunity to coordiate social events with Jennifer Claudio. Social Events Since the 41st TUG in 2020; there is a Zulip instance which is active all year round 1 Can be joined here This year there was a Topia instance for more “pseudo-real” interactions De...| rgoswami.me
Continuing compile time intrinsic functions, ASR passes, and testing LAPACK Background Serialized update for the 2021 Google Summer of Code under the fortran-lang organization, mentored by Ondrej Certik. Logistics Daily checkins over Zulip Code reviews on Gitlab Met with Ondrej and Thirumalai on Thursday Discussed comments and how to attach them Decided that it would make sense to possibly store the comments in the ASR to make sure that the comments are attached to the right nodes We discusse...| rgoswami.me
Language standardese and implementations Background Serialized update for the 2021 Google Summer of Code under the fortran-lang organization, mentored by Ondrej Certik. Logistics Discussed more refactors over MRs and Zulip Overview Intrinsic functions and more bug hunting. A lot of starts in different directions, but I will need to trim these down a bit. A major goal was working through the compile time evaluation of some intrinsic functions. New Merge Requests Split ast_to_asr An MR started ...| rgoswami.me
Leveraging better machines for Jupyter-Julia workshops Background I haven’t ever actually worked with julia before, however, some of the talks and workshops at this year’s Juliacon'21 were of great (applied) interest to me so I decided to follow along. In doing so, since my laptop is woefully inadequate for working through some of the materials (DFT), I decided to augment the installation instructions with remote machine usage notes. Assumptions The following gentle assumptions should not...| rgoswami.me
Revisiting minidftatom and a birds eye view of lfortran Background Serialized update for the 2021 Google Summer of Code under the fortran-lang organization, mentored by Ondrej Certik. Logistics Met with Ondrej on Tuesday Went over the debugging workflow Discussed the design of the SymbolTableVisitor and BodyVisitor Fixed a symbol scoping bug and discussed implementing value for kind Kept in touch asynchrously over Zulip and MRs Overview This week focused on implementing features and cleaning ...| rgoswami.me
Struggling to emulate klfc for VIM Colemak bindings on Darwin (macOS) systems with Hammerspoon and Karabiner Background I have mentioned in the past my customized Colemak dotfiles which I used with a customized keyboard layout. Unfortunately, the .keylayout system of MacOS is far more primitive than the elegant klfc setup 1. For an understanding of what we are trying to get at, the following poorly made video will suffice.| rgoswami.me
A short exploration of multi-user nix and interacting with the Nix User Repository without root Background For multi-user nix installations 1, the NIX_PATH variable is empty. Here I briefly go over two approaches to mitigate this, one with nix-channel and the other by manual pinning. Note that this post will eventually be superseded for most cases by a better flake workflow. Channels The idea behind using a channel is essentially that the tar at a particular commit / tag will be downloaded a...| rgoswami.me
doom-emacs as an ssh IDE with TRAMP using eglot and language servers. Background For most of my emacs configuration1, there normally isn’t very much to write about which isn’t immediately evident from my configuration site. However, since my shift to a MacBook, I have needed to fine tune my existing lsp-mode default setup for TRAMP and this post will cover a little bit of that. Though most of the post is about doom-emacs, it is also applicable to vanilla emacs after porting the snippets o...| rgoswami.me
Enriching ASR nodes at compile time Background Serialized update for the 2021 Google Summer of Code under the fortran-lang organization, mentored by Ondrej Certik. Logistics Met with Ondrej on Monday and Wednesday Discussed the design choices w.r.t. class hierarchies (and the lack thereof) Overview Note that the title is rather misleading, this post has nothing to do with the values of the LFortran project (which are by the way, fantastic), but instead is about adding more detail to the ASR n...| rgoswami.me
Project scaffolding and compiler design Background Serialized update for the 2021 Google Summer of Code under the fortran-lang organization, mentored by Ondrej Certik. Logistics Met with Ondrej on Tuesday, Wednesday and Thursday Discussed the AST, ASR and backends in more detail Zeroed in on several alternate designs implementations of intrinsic functions We have prototype calls for the two kinds of compile evaluation My sin implementation (pre-GSoC21) is pretty unwieldy and a cleaner method ...| rgoswami.me
Towards the mid-summer evaluation and redirecting efforts Background Serialized update for the 2021 Google Summer of Code under the fortran-lang organization, mentored by Ondrej Certik. Overview This week was a bit of a sticky wicket. My unfamiliarity with the LLVM backend and its internals caught up with me just around the same time I ran into several fixture and rent related idiosyncrasies which led to yet another shift in my weekly meeting.| rgoswami.me
Standard practice pragmatic approaches to kind for dftatom Background Serialized update for the 2021 Google Summer of Code under the fortran-lang organization, mentored by Ondrej Certik. Logistics Met with Ondrej on Tuesday Went over my kind implementation Merged older approved MRs Worked on generating tests Talked about the test methodology in general Most of the tests are better off in their integration form (discussed below) Some aspects of the passes may be tested using the doctest setup ...| rgoswami.me
Delving into language standards and back-ends for lfortran Background As discussed in a previous post in this series, I have been spending roughly half of each working day with LFortran as part of the 2021 Google Summer of Code under the fortran-lang organization, mentored by Ondrej Certik. Logistics Some of the meeting points are to be expanded on below. Met with Ondrej on Tuesday, as discussed previously Talked about language server implementations Looked into rtags and generating a compila...| rgoswami.me
Charting paths towards concrete lfortran usage Background As mentioned in an earlier post, I have had the immense pleasure of continuing development of the disruptive lfortran compiler under the aegis of the Fortran Lang organization, financed by the Google Summer of Code and mentored ably by Ondrej Certik. A rather interesting consequence of this is that we are strongly encouraged to write a precis of our activities each week. This is mine, given that the clock starting winding down (full ti...| rgoswami.me
A meta-post on the workshop I held for the Section Leaders of Code in Place 2021 entitled “Wrangling Pythons with Nix for Reproducible Purity” Background Much the same as the rationale behind my other presentation meta-posts, that is: I would like to preserve questions I would like to collect the video, slides and other miscellaneous stuff in one location 1 It would be nice to have my own thoughts here afterwards Details Blurb verbatim from the spreadsheet.| rgoswami.me
Background Transitioning from biblatex to bibtex with biber for sphinx I recently started a set of notes using jupyter-book. However, in the process I ran into a horrific bibliography related SNAFU. sphinx in its infinite wisdom only accepts a rather odd subset of bibtex. I have been happily exporting my giant bibliography with Zotero (and better bibtex) exporting my references as biblatex while sphinx started choking dreadfully. This post describes attempts to reconcile the biblatex sources ...| rgoswami.me
Reminisces and prophecies brought upon by LFortran and GSoC 2021 Background I know not what the language of the future will look like, but I know it will be called FORTRAN… — Charles Anthony Richard Hoare, circa 1982 – Daan Frenkel, 2020 This post is a little belated, given that the GSoC announcements were a few days ago. Therein lies the future, and much digital ink, sweat and blood shall be spilled towards accomplishing the goals outlined in my accepted project proposal.| rgoswami.me
Short recollections of the second iteration of CIP; the course with the largest teaching (and voluntary) staff bringing the joy of programming to thousands Background Last year in 2020, as a section leader for the Stanford Code in Place initiative (which generated a series of posts), I was able to hone my teaching skills and bask in the reflected glory of many talented students who were in my Code in Place section.| rgoswami.me
Discussion on dotfile management, a meandering path to my current setup from dotgit to bombadil. EDIT: Superseded by my chezmoi configuration described here Background No one gets very far working with stock one-size fits all tools in any discipline but it is especially true of working with computers. The right set of dotfiles have been compared to priming spells for invocation later, and this is probably true. More than anything else, dotfiles offer familiarity where there is none, be it fro...| rgoswami.me
A meta-post on the workshop I held for the IOP student community on Intermediate C++ Background Much the same as the rationale behind my other presentation meta-posts, that is: I would like to preserve questions I would like to collect the video, slides and other miscellaneous stuff in one location 1 It would be nice to have my own thoughts here afterwards Details Blurb verbatim from the workshop announcement.| rgoswami.me
Thoughts about the FSF, toxicity, and Stallman First a disclaimer. Comments are not enabled for this post. This is very personal, and it is in my online space so I reserve the right to not talk about this. This is not a conversation. It is a protracted comment on recent, disappointing, news about the “tech community”. It is unlike anything I have normally published; and is hopefully the last time I will publish something like this.| rgoswami.me
An overview of documentation complexity and an analysis of incentives. Background As mentioned a few times before, last year a proposal of mine to improve the documentation for the SymEngine organization was accepted under the Google Season of Docs 2020 initiative. This is a more personal and expanded discussion on the report submitted on the SymEngine Wiki regarding the goals and completion metrics. Figure 1: Promotional image Google seemed to strongly suggest| rgoswami.me
Collection of odds and ends relating to e-readers including personal reminisces Background Reading has been a huge part of my life. The written word has had arguably more of an impact on my life than anything I have experienced in person. As a kid back in early 2000’s; this meant a lot of library trips and saving for paperbacks. I also caught the first wave of the e-ink revolution. Nothing beats a real book, in terms of textures and scents; but e-ink devices and the fantastic tools outlined...| rgoswami.me
Migrating Imap, Gmail and Exchange, mail accounts from GUI clients to Astroid Background Initially, I had planned this post to start with a brief history of the decline of email clients for Linux. That quickly got out of hand, and was therefore spun out into a post of its own (TBD). To keep things brief. Thanks to the incredible ineptitude of the Thunderbird steering committee, I ended up requiring a new mail client.| rgoswami.me
A workflow for managing private submodules in a private repository without personal access tokens for Github actions Background Ever since Travis CI decided to drink corporate kool-aid, the search for a new CI has been brought to the fore again. Github Actions seem uniquely suited for private repositories, since most CIs bill for private repos. However, the basic authentication setup for the checkout action involves using one SSH key, effectively a personal access token, for both the main pro...| rgoswami.me
Short post on making minimal changes to derivations in nixpkgs at a project level using callPackage() along with GH-Actions for deployment of sphinx documentation. Background As part of my work on the Symengine documentation1, I had originally thought of leveraging nix for reproducible builds for each of the language bindings with GH-Actions. There exists a derivation in the upstream package repository, but it was outdated (v6.0.0 instead of v6.0.1) 2.| rgoswami.me
An introduction to hacking keyboard layouts with X keyboard extension (XKB) and klfc, focused on Colemak and vim bindings Background In-spite of maximizing ergonomic bindings for most common software (e.g. Vimium, doom-emacs), every operation with the arrow keys still trouble me. Here I will lay out my experiments transitioning to a stable, uniquely defined setup with the X keyboard extension. Keyboard Basics Some terms to keep in mind for this post are1:| rgoswami.me
Setting up unicode math and orgmode for painless Anki deck building Background A recent Hacker News post reminded me of Anki, and that brought back memories of my Anki orgmode setup. I thought I’d re-create and immortalize it. The standard way of working with Anki, is with a pretty awkward GUI. There are changes to be made here, which make life a little easier, including the setup of custom cards, but the inherent concerns of the WYSIWYG editor are basically insurmountable.| rgoswami.me
Dual screen workflows without screens across operating systems Background My X380 sadly has been having port issues. This meant that my M14 was no longer a viable option for my second screen needs. Outline The general form of the solution works in one of two ways: VNC Viewer Where the (second-screen) laptop connects to a VNC server on the primary laptop Peripheral Shares Where the secondary laptop runs a server to enable proxying mouse and keyboard access from the primary laptop VNC and Windo...| rgoswami.me
A post on local recordings Background Since the advent of the COVID-19 situation, there has been an increase in the demand for recorded materials. Standard approaches involve Zoom, which is not only proprietary, but also quite a bit of a privacy nightmare. The last straw was the random placement of my speaker bauble head. Figure 1: Zoom webcam placement At this point, given that I was to set up a pre-recorded video for PyCon India 2020, I decided to look into alternatives.| rgoswami.me
A meta-post on my talk at PyCon India 2020 Background I am to present at PyCon IN 2020. Some of the motivating reasons for having a post are: I would like to preserve questions I would like to collect the video, slides and other miscellaneous stuff in one location 1 It would be nice to have my own thoughts here afterwards Details of this happy circumstance are reproduced below from the CFP here.| rgoswami.me
Automating documentation deployment with Travis, rake and nix Background In the previous post we generated documentation using Doxygen with Exhale to handle Sphinx. Now we will clean up the earlier workflow with rake and ensure the environment is reproducible with nix while deploying to Travis CI. Setup A quick reminder of the setup we generated in the last post: 1tree -d $prj/ -L 2 . ├── docs │ ├── Doxygen │ └── Sphinx ├── nix │ └── pkgs ├── proje...| rgoswami.me
This post outlines a basic workflow for C++ projects using Doxygen, Sphinx, and Exhale. Background My project proposal for documenting Symengine was recently accepted for the Google Summer of Docs initiative. In the past I have been more than happy to document C++ code using only Doxygen (with pretty fantastic results), while keeping example usage separate (d-SEAMS wiki). Though this is still a feasible method, a monolithic multi-project setup might benefit from Sphinx, which is what will be ...| rgoswami.me
Monkeying around with nix for HPC systems which have no root access and NFS filesystems. Background Nix is not well known for being friendly to users without root access. This is typically made worse by the “exotic” filesystem attributes common to HPC networks (this also plagues hermes). An earlier post details how and why proot failed. The short pitch is simply: Figure 1: Does your HPC look like this?| rgoswami.me
Short post on using mach-nix with niv. Background In previous posts, there was a discussion on a ground up approach to adding packages which aren’t on the core nixpkgs channels using GitHub or PyPi sources. However, this lacked a way to do so programmatically, and also a way to convert existing python projects. Python Dependency Management This time, instead of the more pedagogical approach of building packages from PyPi or GitHub, we will use overlays and the excellent mach-nix to speed up...| rgoswami.me
Background As a prelude to writing up the details of how this site is generated, I realized I should write up a nix oriented workflow for node packages. Tooling and Idea The basic concepts are: Use npm to generate a package-lock.json file Use node2nix in a shell to generate a set of nix derivations Enter a shell environment with the nix inputs Profit However, the nuances of this are a bit annoying at first.| rgoswami.me
Brief introduction to a nix based project workflow. Background For CarpentryCon@Home 2020, along with Amrita Goswami, I am to prepare and deliver a workshop on “Reproducible Environments with the Nix Packaging System”. In particular, as a community of practice lesson, the focus is not on packaging (as is typical of most Nix tutorials) nor on the Nix expression language itself, but instead on the use of Nix as a replacement for virtual environments using mkShell.| rgoswami.me
Background My move away from the powerful, but unimaginatively named HPC clusters of IITK 1 brought me in close contact with the Lua based 2 lmod module system. Rather than fall into the rabbit hole of brew we will leverage the existing system to add our new libraries. Not finding any good collections of these composable environments, and having failed once before to install Nix as a user without admin access, I decided to start my own collection of Lmod recipies.| rgoswami.me
A short post detailing the many trials and tribulations of setting brightness on multiple monitors in tandem. Background As regular readers might know, I have a multi-screen setup, which accounts for having touch enabled on my primary laptop screen (detailed here). A failing of this setup was that I was not able to control the brightness of both monitors at the same time. Existing Stack Since I use i3, my brightness control is simply done with bindsym lines as follows1:| rgoswami.me
A meta post introducing my solutions to the fantastic excellent second edition of “Statistical Rethinking” by Richard McElreath, a.k.a. Statistical Rethinking². Also discusses strategies to keep up with the material, mostly meant for self-study groups. Background As detailed previously, I recently was part of a course centered around Bayesian modeling for the Icelandic COVID-19 pandemic. The Bayesian mindset needs no introduction, and this post is completely inadequete to explain why any...| rgoswami.me
Personal recollections of the academic grant writing process. Background Of the many types of writing one undertakes in a typical academic career, grant writing stands out as a rather large anomaly. For the purposes of this post, we will note that an academic writing taxonomy would consist of roughly: Coursework and Assignments These are more or less comparative writing exercises, where the only main thing which is enforced is (or should be) plagiarism checks.| rgoswami.me
A short tutorial post on multiple screens for laptops with touch-support and ArchLinux. Also evolved into a long rant, with an Easter egg. Background Of late, I have been attempting to move away from paper, for environmental reasons1. Years of touch typing in Colemak (rationale, config changes) and a very customized Emacs setup (including mathematica, temporary latex templates, Nix, and org-roam annotations) have more or less kept me away from analog devices.| rgoswami.me
A follow up to my earlier post on analytics, and on migrating from Goat Counter to Clicky. Background A few days ago I recieved the following email: Hi there! I made some changes to the GoatCounter plans/pricing: GoatCounter now has a “Starter” plan, this is €5/month, limited to 100k pageviews/month, comes with a custom domain, and allow commercial use. This is mostly the same as the “personal plus” plan there was before, except that it allows commercial use.| rgoswami.me
Setup details are described here, and the meta-post about these solutions is here. Materials The summmer course1 is based off of the second edition of Statistical Rethinking by Richard McElreath. Chapter 13 E{1,2,3,4,5} Chapter 14 E{1,2,3} Packages A colophon with details is provided at the end, but the following packages and theme parameters are used throughout. 1libsUsed<-c("tidyverse","tidybayes","orgutils","dagitty", 2 "rethinking","tidybayes.rethinking", 3 "ggplot2","kableExtra","dplyr",...| rgoswami.me
Setup details are described here, and the meta-post about these solutions is here. Materials The summmer course1 is based off of the second edition of Statistical Rethinking by Richard McElreath. This submission covers the following exercise questions: Chapter 9 E{3,4,5,6} M{1,2,3} Chapter 11 E{1,2,3,4} M{2,3,4,5,6,8} Chapter 12 E{4} H{1,2} Packages A colophon with details is provided at the end, but the following packages and theme parameters are used throughout.| rgoswami.me
A post on working with transient TeX templates in orgmode without modifying global configurations. This will also serve as a rudimentary introduction to TeX in orgmode. Background The sad reality of working in a field dominated by institutional actors which do not care for recognizing software development as a skill is that there are often a lot of ugly LaTeX templates1. In particular, often Universities have arbitrary LaTeX templates from the the dark days of 2010 something, which include gr...| rgoswami.me
Setup details are described here, and the meta-post about these solutions is here. Materials The summmer course1 is based off of the second edition of Statistical Rethinking by Richard McElreath. This post covers the following exercise questions: Chapter 5 E{1,2,3,4} M{1,2,3,5} Chapter 6 E{1,2,3,4} M{1,2,3} Chapter 7 E{1,2,3,4} M{1,2,3,4,5,6} Packages A colophon with details is provided at the end, but the following packages and theme parameters are used throughout.| rgoswami.me
A short post on my current set-up for R with nixpkgs and emacs to auto-compile my system configuration. Background This is my third post on working with nixpkgs and R. Part I covered ways of working effectively with R and nixpkgs Part II dealt with composing dependent devtools packages in a per-package environment, with a focus on rethinking and tidybayes.rethinking This final part is about automating the system-wide configuration using emacs.| rgoswami.me
This post describes how to set up a transparent automated setup for reproducible R workflows using nixpkgs, niv, and lorri. The explanatory example used throughout the post is one of setting up the rethinking package and running some examples from the excellent second edition of “Statistical Rethinking” by Richard McElreath. Background As detailed in an earlier post1, I had set up Nix to work with non-CRAN packages. If the rest of this section is unclear, please refer back to the earlier ...| rgoswami.me
Setup details are described here, and the meta-post about these solutions is here. Materials The summmer course1 is based off of the second edition of Statistical Rethinking by Richard McElreath. This post covers the following exercise questions: Chapter 2 Easy {1,2,3,4} Medium {1,2,4} Chapter 3 Easy {1,2,3,4,5} Medium {1,2,3,4,6} Chapter 4 Easy {1,2,3,4,5} Medium {1,2,3,4,5,6,7} Packages 1libsUsed<-c("tidyverse","tidybayes","orgutils", 2 "rethinking","tidybayes.rethinking", 3 "ggplot2","kabl...| rgoswami.me
This post discusses briefly, the nix-shell environment for reproducible programming. In particular, there is an emphasis on extensions for installing and working with packages not in CRAN, i.e. packages off Github which are normally installed with devtools. Background The entire nix ecosystem is fantastic, and is the main packaging system used by d-SEAMS as well. Recently I began working through the excellent second edition of “Statistical Rethinking” by Richard McElreath1.| rgoswami.me
Background I have been leading the fantastic section 881 as a virtual section leader for the Stanford CS106A: Code in Place initiative for the past four weeks. I have also spent a lot of time on Zoom, sharing my screen. Fun fact. My screen shares look like this: Figure 1: Zoom screen share with weird overlay This post is about hunting down what caused this amazing zoom glitch1 and how I finally fixed it.| rgoswami.me
Background One of the main reasons to use orgmode is definitely to get a better note taking workflow. Closely related to blogging or writing, the ideal note workflow is one which lets you keep a bunch of throwaway ideas and also somehow have access to them in a coherent manner. This will be a long post, and it is a work-in-progress, so, keep that in mind. Since this is mainly me1 work-shopping my technique, the philosophy will come in a later post probably.| rgoswami.me
A more actionable follow up to my personal recollections relating to my switch to Colemak. Background I have, in the past written about how I made the switch to Colemak. However, until recently, I was still trying to mimic the VIM keybindings from QWERTY. This is a post where I discuss the changes I made to ensure that I never have to stretch my fingers in odd ways again. The main idea is expressed well by vim-colemak.| rgoswami.me
Background One of the best things about writing in orgmode is that we can embed and execute arbitrary code snippets. However, not all languages have an exporter, for obvious reasons. Somewhat surprisingly, there is no way to call pandoc on embedded snippets, which feels like a waste, especially when a whole bunch of documentation formats can be converted to orgmode with it. Consider the following beautifully highlighted snippet of an rst (ReStructured Text) list table.| rgoswami.me
Background I have been wanting to find a workflow which allows me to bypass writing a lot of TeX by hand for a while now. To that end I looked into using a computer algebra system (CAS). Naturally, my first choice was the FOSS Maxima (also because it uses Lisp under the hood). However, for all the reasons listed here, relating to its accuracy, which have not been fixed even though the post was over 5 years ago, I ended up having to go with the closed source Mathematica.| rgoswami.me
Background As I mentioned earlier, I’m leading a section for Stanford CS106A: Code in Place. This post relates to the notes and thoughts garnered during the small group training session1. Reflections Demographics Redacted. Did not use breakout meetings due to privacy issues. Engagement and Participation Some people were more active (skewed responses) Some of the more rudimentary questions might have been suppressed Highlighted Moments Covering multiple perspectives Different mental models C...| rgoswami.me
Explain why using bagging for prediction trees generally improves predictions over regular prediction trees. Introduction Bagging (or Bootstrap Aggregation) is one of the most commonly used ensemble method for improving the prediction of trees. We will broadly follow a historical development trend to understand the process. That is, we will begin by considering the Bootstrap method. This in turn requires knowledge of the Jacknife method, which is understandable from a simple bias variance per...| rgoswami.me
Background I recently read this post written by the now deceased Prof. David MacKay 1 It should be read widely, however, given that it is distributed as a ps.gz which is then a .ps file, and thus probably inaccessible to many of the people who should read it, I decided to rework it for native online consumption (there is also a pdf) THIS IS NOT MY CONTENT 2 Now, enjoy the post Everyone Should Get an A Imagine a University – call it Camwick – where all students arrive with straight A gra...| rgoswami.me