<?xml version="1.0" encoding="UTF-8"?>
<rss  xmlns:atom="http://www.w3.org/2005/Atom" 
      xmlns:media="http://search.yahoo.com/mrss/" 
      xmlns:content="http://purl.org/rss/1.0/modules/content/" 
      xmlns:dc="http://purl.org/dc/elements/1.1/" 
      version="2.0">
<channel>
<title>Himel Mallick</title>
<link>https://www.himelmallick.org/post/</link>
<atom:link href="https://www.himelmallick.org/post/index.xml" rel="self" type="application/rss+xml"/>
<description>Himel Mallick is a statistical scientist and Principal Investigator at Cornell University, with broad research interests in AI and medicine, working on problems at the intersection of computational biology and machine learning.</description>
<image>
<url>https://www.himelmallick.org/assets/share-card.jpg</url>
<title>Himel Mallick</title>
<link>https://www.himelmallick.org/post/</link>
</image>
<generator>quarto-1.10.19</generator>
<lastBuildDate>Sun, 11 Oct 2026 00:00:00 GMT</lastBuildDate>
<item>
  <title>The key word in data science is still science</title>
  <link>https://www.himelmallick.org/post/keyword_still_science/</link>
  <description><![CDATA[ 





<div class="post-lead">
<img src="https://www.himelmallick.org/post/keyword_still_science/featured.jpg" class="post-lead-image img-fluid" alt="The 2x2 table of data science, 2026 edition: near-perfect or imperfect data against near-perfect or imperfect science, with an AI assistant at work in every cell">
</div>
<p>My last post before starting my lab went up in October 2022. It was a revisit of a famous commentary by Jeff Leek, so now that I am writing again, it seems fitting to pick up where I left off.</p>
<p>In 2013, Jeff Leek wrote a now-famous <a href="https://simplystatistics.org/posts/2013-12-12-the-key-word-in-data-science-is-not-data-it-is-science">blog post</a> arguing that the key word in “data science” is science. In that 2022 post, I <a href="../../post/keyword_data_science/index.html">revisited it</a> with a simple 2x2 table: near-perfect or imperfect data on one side, near-perfect or imperfect science on the other. Good data with good science is a win-win, bad data with bad science is a lose-lose, and the two cells in between are where a data scientist earns their keep.</p>
<p>I wrote that a few weeks before large language models became everyday tools. Four years on, an AI assistant can clean a dataset, fit a dozen models, and write up the results in the time it takes to make a coffee. So it is fair to ask whether the 2x2 table still holds. I think it does, and I think its off-diagonal cells matter more than they did.</p>
<section id="what-got-cheaper" class="level2">
<h2 data-anchor-id="what-got-cheaper">What got cheaper</h2>
<p>The mechanics of analysis: code, pipelines, standard models, the first draft of a report. In the “near-perfect data” column this is all gain. A simple model was already enough there, and now it arrives faster.</p>
</section>
<section id="what-did-not-get-cheaper" class="level2">
<h2 data-anchor-id="what-did-not-get-cheaper">What did not get cheaper</h2>
<p>Knowing whether the answer is right. An AI system that is handed imperfect data still returns a fluent, well-formatted, confident result. “Garbage in, garbage out” has acquired a more dangerous cousin: garbage in, polished prose out. The lose-lose cell of the table now looks like a win on the surface, which makes the combination of imperfect data and imperfect science harder to spot than it was in 2013 or in 2022.</p>
</section>
<section id="an-example-from-the-microbiome-field" class="level2">
<h2 data-anchor-id="an-example-from-the-microbiome-field">An example from the microbiome field</h2>
<p>Microbiome research makes the point concrete. In a <a href="https://blekhman.substack.com/p/ai-keeps-failing-at-microbiome-prediction">recent essay</a>, Ran Blekhman reviews why AI keeps failing at microbiome prediction. In the largest benchmark he discusses, 156 modeling pipelines were compared across 83 gut microbiome cohorts and 20 diseases, and ridge regression and random forest came out on top, ahead of neural networks. In another study, a transformer trained on American Gut Project data was outperformed by a plain random forest on nearly every task. The reasons are scientific ones: the typical study has about 160 samples, more than half of the entries in an abundance table are zeros, and the signal linking microbes to disease is modest. In Blekhman’s words, “the bottleneck is biological, not algorithmic.”</p>
<p>The same essay shows where deep learning does help: generalizing across studies, and integrating the microbiome with metabolomics, host gene expression or clinical data. Knowing which of the two situations you are in is the science.</p>
</section>
<section id="the-2026-edition-of-the-table" class="level2">
<h2 data-anchor-id="the-2026-edition-of-the-table">The 2026 edition of the table</h2>
<ul>
<li>Near-perfect data + AI: the win-win, only faster.</li>
<li>Imperfect data + AI without scientific direction: the new lose-lose, and a well-disguised one.</li>
<li>Imperfect data + AI directed by science: still the real test of a data scientist, and now within reach of many more people.</li>
</ul>
<p>Thirteen years after Jeff Leek’s post, the key word in data science is still science.</p>


</section>

 ]]></description>
  <category>Statistics</category>
  <category>Biostatistics</category>
  <category>Data Science</category>
  <category>AI</category>
  <guid>https://www.himelmallick.org/post/keyword_still_science/</guid>
  <pubDate>Sun, 11 Oct 2026 00:00:00 GMT</pubDate>
  <media:content url="https://www.himelmallick.org/post/keyword_still_science/featured.jpg" medium="image" type="image/jpeg"/>
</item>
<item>
  <title>How I built a low-maintenance Quarto website over a weekend with an AI assistant</title>
  <link>https://www.himelmallick.org/post/quarto_website_weekend/</link>
  <description><![CDATA[ 





<div class="post-lead">
<img src="https://www.himelmallick.org/post/quarto_website_weekend/featured.jpg" class="post-lead-image img-fluid" alt="After: the new home page of this site, built with Quarto">
</div>
<p>This is my first blog post as a faculty member, and my first in almost four years. The last one went up in October 2022, a few months before I started my lab at Cornell, and the blog had been quiet ever since. So for my birthday this year, I gave myself a gift that was long overdue: a complete rebuild of this site, done over one weekend with an AI assistant.</p>
<p>This post is the story of that weekend: why I left Hugo, how the work was divided between me and the assistant, what went wrong, and how you can reuse the result.</p>
<section id="why-now" class="level2">
<h2 data-anchor-id="why-now">Why now</h2>
<p><img src="https://www.himelmallick.org/post/quarto_website_weekend/before.jpg" class="img-fluid" alt="Before: the old home page, built with Hugo. The site title reads Hello, World! and the menu has two items."></p>
<p>My old site ran on <a href="https://gohugo.io/">Hugo</a> with the Academic theme, through the <a href="https://pkgs.rstudio.com/blogdown/">blogdown</a> package in R. It served me well for years. By 2026, it had three problems.</p>
<p><strong>The theme was frozen in time.</strong> My copy of the Academic theme dated from 2019 and was written for a version of Hugo from that year. The theme has since been renamed twice, and Hugo itself has moved far ahead. The site could be built only with old tools, and upgrading it meant redoing it.</p>
<p><strong>It was heavy for what it did.</strong> The generated site had 1,078 files and weighed 48 MB. The home page fetched 16 files from third-party servers, including icon sets, a search library and a maps library, to display a biography. The menu had two items, and the site title still read “Hello, World!”.</p>
<p><strong>Publishing was manual.</strong> Every change meant building the site on my laptop and pushing the generated pages by hand. That is enough friction to postpone a small edit for months, and months became years.</p>
<p>I am far from the first to make this move. <a href="https://robjhyndman.com/hyndsight/quarto.html">Rob Hyndman</a>, <a href="https://nrennie.rbind.io/blog/hugo-quarto-website/">Nicola Rennie</a> and <a href="https://robinlovelace.net/posts/2026-04-10-quarto-website-update/">Robin Lovelace</a> have each described their own, and their posts make the case for Quarto well. In short, Quarto is the better tool for a site that is mostly writing, code and a CV, and that one person has to keep alive for years; Hugo remains faster and more flexible for large or highly customized sites. What I can add is an account of doing it in 2026, with an AI assistant doing most of the typing.</p>
</section>
<section id="what-i-wanted" class="level2">
<h2 data-anchor-id="what-i-wanted">What I wanted</h2>
<p>Four things: a site that looks good, loads fast, works on every device, and takes minutes to update.</p>
</section>
<section id="what-changed-over-the-weekend" class="level2">
<h2 data-anchor-id="what-changed-over-the-weekend">What changed over the weekend</h2>
<ul>
<li><strong>The engine.</strong> The site is now a folder of plain text files built by <a href="https://quarto.org/">Quarto</a>. GitHub rebuilds and publishes it after every push, so updating the site takes three commands in a terminal.</li>
<li><strong>The design.</strong> One typeface, six colors, a dark mode, and a Laplace density curve under my name. The new site has about 100 files, and the home page loads its fonts and styles from the site itself.</li>
<li><strong>The pages.</strong> About, Experience, Papers, Software, Awards and Posts. Every published post kept its web address.</li>
<li><strong>The CV and the resume.</strong> Both are now built with Quarto, the same way as the site.</li>
<li><strong>The older posts.</strong> Several were refreshed, including the two tutorials on <a href="../../post/automate_citation_metrics_resume/index.html">automating citation metrics</a> and the <a href="../../post/travel_grant_resource/index.html">list of student paper awards and travel grants</a>, which grew from 17 awards to 74.</li>
</ul>
</section>
<section id="who-did-what" class="level2">
<h2 data-anchor-id="who-did-what">Who did what</h2>
<p>I used <a href="https://claude.com">Claude</a>, with access to the site folder on my computer.</p>
<p>My part was the content and every decision: what the site says, how it reads, what stays, what goes, and when something is finished. The assistant’s part was the conversion from Hugo, the styling, the build scripts and the checking.</p>
<p>The habit that mattered most was asking for proof. Each page was rendered and checked at phone, tablet and desktop widths. The new CV was compared word for word against the old one before I retired the old files. An assistant that reports “done” is making a claim, and the claim is cheap to verify.</p>
</section>
<section id="what-went-wrong" class="level2">
<h2 data-anchor-id="what-went-wrong">What went wrong</h2>
<p>This is the part a tutorial leaves out.</p>
<p><strong>1. The live site showed the README.</strong> After the first push, my domain displayed the repository’s README file. GitHub Pages was still set to publish from a branch. The fix is one setting: under Settings, then Pages, the Source must be “GitHub Actions”.</p>
<p><strong>2. My phone showed the desktop layout.</strong> The new design was responsive, and my phone still displayed a shrunken desktop page. The cause had nothing to do with the site. My domain registrar was forwarding the address with a “masked” redirect, which wraps the site in a frame. Replacing it with proper DNS records for GitHub Pages solved it, and the security certificate arrived after a short wait.</p>
<p><strong>3. The images lost quality.</strong> During the move, the assistant had resized and recompressed the pictures in my posts. I noticed that some looked soft. The fix was to restore 27 originals from the archived copy of the old site and to re-save six more from their sources. Keep your originals.</p>
<p><strong>4. My CV disappeared from the internet.</strong> Quarto deletes the old PDF at the start of a build. My first build on my own computer failed, and the PDF behind the public CV link was gone until I restored it from the archive. If a public link points to a file that your build produces, a failed build takes it down.</p>
<p><strong>5. The link preview cut my head off.</strong> When I shared the new site, the preview showed my shirt. Social networks crop preview images to a wide rectangle, and my home page was offering them a tall portrait. A dedicated wide image for link previews fixed it.</p>
<p><strong>6. The assistant edited too much.</strong> Asked to refresh an old post, it rewrote my text. Asked to update a chart, it redesigned the chart. In both cases I had it restore my original and limit itself to what I had asked for. An assistant that edits fast also edits freely, and it helps to say at the start which parts are yours and must stay as they are.</p>
<p><strong>7. Google Scholar turned the assistant away.</strong> The citation counts could not be fetched from the assistant’s cloud workspace. The script therefore runs on my own computer, saves the numbers it receives, and reuses them on days when Google Scholar declines to answer.</p>
</section>
<section id="what-i-would-tell-a-colleague" class="level2">
<h2 data-anchor-id="what-i-would-tell-a-colleague">What I would tell a colleague</h2>
<ul>
<li><strong>Keep an archive of the old site.</strong> Several of the problems above were solved from it.</li>
<li><strong>Review every change before it goes live.</strong> A local preview takes seconds.</li>
<li><strong>Protect your own voice.</strong> Let the assistant handle the machinery, and keep the writing yours.</li>
<li><strong>Ask for proof.</strong> A check that fluent writing cannot get around is the best instruction you can give.</li>
</ul>
</section>
<section id="use-it-yourself" class="level2">
<h2 data-anchor-id="use-it-yourself">Use it yourself</h2>
<p>The source of this site is a <a href="https://github.com/himelmallick/himelmallick.github.io">public template on GitHub</a>. The README explains how to make it yours, with step-by-step prompts for doing so with Claude: replacing the content, changing the look, bringing old posts along, checking the result and publishing.</p>
<p>And yes, since every piece of text is now allegedly AI-written: the assistant helped me draft this post too. The weekend, the decisions and the mistakes are mine.</p>
<p>Feedback and pull requests are welcome :)</p>


</section>

 ]]></description>
  <category>Quarto</category>
  <category>AI</category>
  <category>Career</category>
  <guid>https://www.himelmallick.org/post/quarto_website_weekend/</guid>
  <pubDate>Sun, 04 Oct 2026 00:00:00 GMT</pubDate>
  <media:content url="https://www.himelmallick.org/post/quarto_website_weekend/featured.jpg" medium="image" type="image/jpeg"/>
</item>
<item>
  <title>A re-visit to the famous Jeff Leek commentary</title>
  <link>https://www.himelmallick.org/post/keyword_data_science/</link>
  <description><![CDATA[ 





<div class="post-lead">
<img src="https://www.himelmallick.org/post/keyword_data_science/featured.jpg" class="post-lead-image img-fluid" alt="A 2x2 table of data science: near-perfect or imperfect data against near-perfect or imperfect science">
</div>
<p><em>Update, October 2026: this post has a follow-up, <a href="../../post/keyword_still_science/index.html">The key word in data science is still science</a>.</em></p>
<p>In 2013, I came across this famous <a href="https://simplystatistics.org/posts/2013-12-12-the-key-word-in-data-science-is-not-data-it-is-science">blog post</a> by Jeff Leek. Little did I know that I would revisit this post 9 years down the lane. As it turns out, it’s not a bad idea to revisit old work with fresh eyes and new perspectives, which is what I have attempted to do here based on personal experience.</p>
<p>Without further ado, let’s talk about a typical data science project and let’s break it down into a few possible scenarios and their consequences (hint: the reality is always in between).</p>
<p>Let’s first look at the diagonal elements of the oversimplified 2x2 table above:</p>
<ul>
<li><p>Perfect data + perfect science: Win-win</p></li>
<li><p>Imperfect data + imperfect science: Lose-lose</p></li>
</ul>
<p>It’s a no brainer that the combination of perfect data and perfect science is the most desirable scenario for most data scientists and decision-makers. You don’t need a sophisticated method or model when your data is near-perfect (at least most of the time) - a simple visualization or a simple model might reveal what you are looking for (or a lack thereof).</p>
<p>In a similar vein, the least desirable scenario is the combination of near-garbage data and near-garbage science - not much to say here except that it’s unfortunate when that happens and a lose-lose scenario for everyone involved.</p>
<p>Note that the above ‘garbage in garbage out’ concept is possibly one of the most discussed topics in the <a href="https://www.google.com/search?q=garbage+in+garbage+out+data+science&amp;rlz=1C5GCEM_enIN970IN970&amp;source=lnms&amp;tbm=isch&amp;sa=X&amp;ved=2ahUKEwiWsqKJ09v6AhXFkokEHTu7CfoQ_AUoAXoECAIQAw&amp;biw=1680&amp;bih=816&amp;dpr=2">data science community</a>. Yet, this concept is often overused with misleading practical implications.</p>
<p>Quite naturally, when a dataset is 100% garbage, the ‘garbage in garbage out’ concept clearly stands out. Period. No further discussion is necessary. In reality, however, a dataset is never 100% garbage - it can be imperfect and noisy but not 100% garbage, which is when this concept gets tricky and ends up being misconstrued.</p>
<p>To understand this, let’s look at the other two scenarios (off-diagonal elements in the 2x2 table above) which is typically harder than the previous ones where the ‘science’ or the ‘statistical’ aspect of ‘data science’ can no longer be taken out of the equation unlike the ‘diagonal’ use cases discussed before:</p>
<ul>
<li><p>Perfect data + Imperfect science: Highly undesirable. The damage might be less visible given the rich amount of information but it’s hard to justify the missed opportunity.</p></li>
<li><p>Imperfect data + perfect science: Real test of a data scientist as uncertainty quantification is no longer optional. When successful, it’s a near-win for everyone involved.</p></li>
</ul>
<p>As a data scientist, I thrive for a scenario when the data is imperfect which lets me test my mettle and let me break out of my comfort zone albeit at the expense of complexity, which can act as a barrier to wide acceptance and recognition. On the other hand, I have remained equally enthusiastic when the associated data is near-perfect which provided me an extra layer of cushion to posit a simpler but more impactful data science solution.</p>
<p>This brings me to the central point of this post. Amidst the natural human tendency to be safe, certain, and stress-free, it’s possible to forget the key word in data science which is not ‘data’ but ‘science’ even in the situation when the data is imperfect.</p>
<p>In many cases, this ‘science’ entails ‘advanced statistics and machine learning’ (and sometimes mathematical and computational innovations) and doing science on imperfectly collected data is astronomically harder than any of the above-mentioned ‘perfect data’ scenarios. This is when it becomes difficult to resist the temptation to oversimplify, which is exacerbated by the fact that stakeholders tend to be distrustful of the results (regardless of whether this is warranted) given the complexity of the methods involved.</p>
<p>To conclude, while it is necessary to err on the side of caution in light of the potential pitfalls of a premature conclusion, an exploratory and open mind outside of the ‘comfort zone’ might be necessary to answer a particularly hard question especially when the ‘data’ is imperfect which brings me to re-iterate the main point of the 2013 Jeff Leek blog post:</p>
<p>‘The key word in “Data Science” is not Data, it is Science’.</p>
<p>It is the science that can either break or make your data not the other way around :)</p>



 ]]></description>
  <category>Statistics</category>
  <category>Biostatistics</category>
  <category>Data Science</category>
  <guid>https://www.himelmallick.org/post/keyword_data_science/</guid>
  <pubDate>Thu, 20 Oct 2022 00:00:00 GMT</pubDate>
  <media:content url="https://www.himelmallick.org/post/keyword_data_science/featured.jpg" medium="image" type="image/jpeg"/>
</item>
<item>
  <title>Yearender: Looking back at 2021</title>
  <link>https://www.himelmallick.org/post/yearender_2021/</link>
  <description><![CDATA[ 





<div class="post-lead">
<img src="https://www.himelmallick.org/post/yearender_2021/featured.jpg" class="post-lead-image img-fluid" alt="Wooden blocks showing 2020, with the last block turning over to 21">
</div>
<p>Every year a set of memes is circulated widely on social media, the 2022 version of which goes along the lines of:</p>
<p><code>My goal for 2022 is to accomplish the goals of 2021 which I should have done in 2020 because I made a promise in 2019 and planned in 2018.</code></p>
<p>Over the years, this remained my most favorite ‘new year’ meme for no real reason other than that it was hilarious, funny, and relatable, but in 2021, the actuality of these lines hit me hard as it tested my mettle out and out by bestowing a series of unfinished businesses and frequent hiccups throughout the year!</p>
<p>The timeline of this blog post spans approximately two pandemic years (2020-2021) as it dates back to my planned month-long India trip when the COVID-19 situation in India was better than what it was in the US (Fall, 2020). A chain of abrupt COVID cancellations later, my much-awaited India trip finally materialized in April 2021 - little did I know that my spring sojourn was on the verge of becoming a lengthy nightmare.</p>
<p>A few weeks into my arrival, <a href="https://en.wikipedia.org/wiki/Timeline_of_the_COVID-19_pandemic_in_April_2021">a second wave of the global disease outbreak</a> wreaked havoc across the nation. With a nearly collapsed health care system, India’s pandemic suddenly turned into a human tragedy in quick succession. As the difficult days unfolded, it was just a matter of time that the COVID-19 pandemic disrupted the normal living, and I was no exception.</p>
<p>The unprecedented consequences of the pandemic have been widely reported in the media but there are a few things that personally affected me more than anything, which broadly manifested as a general decrease in productivity at the expense of regular mental and emotional breakdowns, including but not limited to:</p>
<ul>
<li><p><strong>Insurmountable personal losses</strong> (It’s one thing to read the news or track the worldometer, but it’s a whole different ballgame to witness personal losses up close and personal and hear individual stories that are <a href="https://www.reuters.com/world/india/situation-india-beyond-heartbreaking-who-chief-says-2021-04-26/">beyond heartbreaking</a>.)</p></li>
<li><p><strong>Delayed academic collaborations</strong> (As much as I wanted to keep the <a href="../../post/year_end_reflection_2020/index.html">2020 momentum</a> going, <a href="https://www.nature.com/articles/d41586-021-00663-2">pandemic burnout</a> turned out to be real, which slowly but surely led to an inevitable slowdown in productiveness.)</p></li>
<li><p><strong>COVID diagnosis with moderate-to-severe symptoms</strong> (A massive turning point was testing postive for COVID-19 with fairly severe symptoms. Although I was fortunate to escape a visit to the hospital (thanks to <a href="https://en.wikipedia.org/wiki/Favipiravir">Favipiravir</a>), the experience of end-to-end recovery was gruesome.)</p></li>
<li><p><strong>Immigration uncertainty and travel ban</strong> (An icing on the cake was immigration uncertainty induced by closures of consulates and embassies and the subsequent travel ban (not to forget the curfews and lockdown measures from time to time). I mean nothing more painful than having a confirmed interview appointment, and then finding out that it was cancelled only after traveling 1000 miles. All in all, it took 5 months, several round-trip flights, and multiple letters and email exchanges to finally secure a VISA interview in the capital.)</p></li>
<li><p><strong>Aftermath of Hurricane Ida</strong> (The final nail in the coffin came in the form of Hurricane Ida when I was able to finally return to the US in September 2021. In case you are wondering, life without a car in New Jersey is not as manageable as in other states, which is precisely why the experience of becoming a victim of a flooded out car (declared total loss by insurance) is not a great one. This was further exacerbated by an expired driver’s license and <a href="https://nj1015.com/car-shopping-in-nj-right-now-is-a-nightmare-my-story-and-some-advice-opinion/">shortage of new cars in the area</a>, adding to the worry and already-mounting anxiety).</p></li>
</ul>
<p>As I come in terms with a particularly difficult year and reflect, there are a number of positive things that I am grateful for, which in turn made the journey a lot more easier:</p>
<ul>
<li>A long overdue family reunion and precious quality time with the extended family</li>
<li>Completion of a six-month-long <a href="https://www.ccl.org/leadership-programs/leadership-development-program/">leadership course</a></li>
<li>&gt;10K <a href="https://bioconductor.org/packages/stats/bioc/Maaslin2/">official downloads</a> of our software tool (<a href="https://huttenhower.sph.harvard.edu/maaslin/">MaAsLin 2</a>)</li>
<li>&gt;100 <a href="https://publons.com/researcher/1190507/himel-mallick/">Publons-verified reviews</a> and &gt;2500 <a href="https://scholar.google.com/citations?user=twbXG-wAAAAJ&amp;hl=en">Google Scholar citations</a></li>
<li>Back-to-back keynote presentations including an extremely fulfilling <a href="https://www.youtube.com/watch?v=YV_KRtMfqr0">BVCN featured talk</a></li>
<li>Promotion to Associate Principal Scientist at work</li>
</ul>
<p>To sum it up, instead of dwelling on the negatives, I made a solemn pledge this year to embrace things that didn’t go well in 2021, which in retrospect, was precisely what I needed to press that reset button and start the new year on a high note! Welcome, 2022!</p>
<p>Featured image source: <a href="https://www.istockphoto.com/" class="uri">https://www.istockphoto.com/</a>.</p>



 ]]></description>
  <category>Research</category>
  <category>Career</category>
  <category>Statistics</category>
  <category>Biostatistics</category>
  <category>Data Science</category>
  <category>Academic Service</category>
  <category>Peer Review</category>
  <guid>https://www.himelmallick.org/post/yearender_2021/</guid>
  <pubDate>Fri, 31 Dec 2021 00:00:00 GMT</pubDate>
  <media:content url="https://www.himelmallick.org/post/yearender_2021/featured.jpg" medium="image" type="image/jpeg"/>
</item>
<item>
  <title>Year-end reflection: My 2020 highlights</title>
  <link>https://www.himelmallick.org/post/year_end_reflection_2020/</link>
  <description><![CDATA[ 





<div class="post-lead">
<img src="https://www.himelmallick.org/post/year_end_reflection_2020/featured.jpg" class="post-lead-image img-fluid" alt="A road through fields toward the horizon, with 2020 written across the sky">
</div>
<p>The last day of 2020 is finally here. To bring this decade to a close, I thought I would take a moment to share some of the highlights from this year in the form of pictures and anecdotes.</p>
<p>As much as I would love to remember this year as a year of <code>setbacks and bottlenecks</code>, in retrospect, it has been packed with some very surprising yet noteworthy moments.</p>
<p>On a personal level, 2020 has been a year of many firsts, much as has been the case for the society in general where we have together achieved incredible things as a community despite challenging circumstances. From delivering vaccines in record time to abiding by the social distancing guidelines to adjusting to the <code>new normal</code>, we have come a stunningly long way in a short period of time, which I believe, prepares us well for a pandemic-proof future in 2021 and beyond.</p>
<p>Here are some things that went surprisingly well during the entire thriving process:</p>
<section id="new-year-resolutions" class="level2">
<h2 data-anchor-id="new-year-resolutions">New year resolutions</h2>
<p>One of my new year resolutions in 2020 was to write at least one piece of writing every month (technical or non-technical). This seemed like a lofty goal at the outset but I am glad that I was able to break this seemingly hard-to-attain goal into manageable chunks to make it a reality. In my mind, this was a monumental personal milestone as it allowed me to build a decent writing habit which has been difficult historically.</p>
<p><img src="https://www.himelmallick.org/post/year_end_reflection_2020/Image_1.jpg" class="img-fluid" alt="List of the blog posts published in 2020"></p>
</section>
<section id="steps-per-day" class="level2">
<h2 data-anchor-id="steps-per-day">&gt;10000 steps per day</h2>
<p>Another seemingly unattainable habit (based on past experiences) was consistently hitting an average &gt;10,000 steps a day for an extended period of time (i.e.&nbsp;more than a few weeks or months), which I was able to achieve despite the almost year round lockdown. Considering all the obstacles that stood in the way this year, it was a truly transformative experience to start 2021 on a <code>lighter</code> note!</p>
<p><img src="https://www.himelmallick.org/post/year_end_reflection_2020/Image_2.jpg" class="img-fluid" alt="Step counter summary: 12,251 steps per day in 2020 compared with 7,700 in 2019"></p>
</section>
<section id="getting-back-into-creative-writing" class="level2">
<h2 data-anchor-id="getting-back-into-creative-writing">Getting back into creative writing</h2>
<p>Towards the end of the year, I was fortunate to enroll in a <code>screenwriting</code> class. Among other things, this was my best chance at getting back into creative writing. As a result of this experience, I was able to write a few short scripts in addition to a few amateur poems which was enough to eventually claw my way to get my writer’s groove back :)</p>
<p><img src="https://www.himelmallick.org/post/year_end_reflection_2020/Image_3.jpg" class="img-fluid" alt="Sidewalk sign advertising NJ Film School classes"></p>
</section>
<section id="personal-commit-record" class="level2">
<h2 data-anchor-id="personal-commit-record">Personal commit record</h2>
<p>In the meantime, almost accidentally, I broke my own record of GitHub commits, which was more than all the previous years combined. I couldn’t be more happy about this <code>unexpected</code> milestone!</p>
<p><img src="https://www.himelmallick.org/post/year_end_reflection_2020/Image_4.png" class="img-fluid" alt="GitHub contribution chart showing 452 contributions in the last year"></p>
</section>
<section id="personal-peer-review-record" class="level2">
<h2 data-anchor-id="personal-peer-review-record">Personal peer-review record</h2>
<p>By the same token, I couldn’t be more appreciative of the opportunity to give back to the scientific community through voluntary contributions in the form of peer-review activities. Consequently, I was able to break my own record of <a href="https://publons.com/researcher/1190507/himel-mallick/metrics/">Publons-verified peer-reviews</a>, which was again <code>accidentally</code> more than all previous years.</p>
<p><img src="https://www.himelmallick.org/post/year_end_reflection_2020/Image_5.png" class="img-fluid" alt="Bar chart of peer reviews per year, rising to 34 in 2020"></p>
<p>Apart from these, there have been a few <code>first-of-its-kind</code> professional highlights this year as well:</p>
<ul>
<li>Completed my first internship as a mentor</li>
<li>Edited my first <a href="../../post/guest_editing_reflection/index.html">special issue</a> as a lead editor</li>
<li>Published my first <a href="https://www.bioconductor.org/packages/release/bioc/html/Maaslin2.html">Bioconductor package</a></li>
<li>Delivered my first <a href="https://twitter.com/Mallick_Himel/status/1260271590320885764">keynote presentation</a></li>
<li>Organized my first <a href="https://ww2.amstat.org/meetings/jsm/2021/invitedsessions.cfm">JSM invited session</a> (scheduled for JSM 2021)</li>
</ul>
<p>With that note, I would love to hear your highlights from the year, so be sure to leave a comment :)</p>
<p>Wishing you and yours a safe, healthy, and prosperous new year! Onwards and upwards!</p>
<p>Featured image source: <a href="https://www.the-scientist.com/news-opinion/what-to-expect-in-the-publishing-world-in-2020--66882" class="uri">https://www.the-scientist.com/news-opinion/what-to-expect-in-the-publishing-world-in-2020--66882</a></p>


</section>

 ]]></description>
  <category>Research</category>
  <category>Career</category>
  <category>Statistics</category>
  <category>Biostatistics</category>
  <category>Data Science</category>
  <category>Academic Service</category>
  <category>Peer Review</category>
  <guid>https://www.himelmallick.org/post/year_end_reflection_2020/</guid>
  <pubDate>Thu, 31 Dec 2020 00:00:00 GMT</pubDate>
  <media:content url="https://www.himelmallick.org/post/year_end_reflection_2020/featured.jpg" medium="image" type="image/jpeg"/>
</item>
<item>
  <title>A paper that changed my life - The Bayesian LASSO</title>
  <link>https://www.himelmallick.org/post/most_influential_paper/</link>
  <description><![CDATA[ 





<div class="post-lead">
<img src="https://www.himelmallick.org/post/most_influential_paper/featured.png" class="post-lead-image img-fluid" alt="The hierarchical model of the Bayesian LASSO, written as equations">
</div>
<p>As tough as this year has been, it goes without saying that 2020 is a particularly good year to be thankful for science, which happens to be one of the many things that are often <a href="https://www.linkedin.com/pulse/why-im-thankful-science-jeffrey-simmons">taken for granted</a>. While similar <a href="https://www.sciencemag.org/careers/2011/11/what-scientists-can-be-grateful-thanksgiving">thankfulness posts</a> have appeared <a href="https://www.criver.com/eureka/good-year-be-thankful-scientists">elsewhere</a>, I want to share a different take as a computational scientist.</p>
<p>As the title suggests, I am shamelessly borrowing idea from the so-called <code>most influential</code> series that are widespread in the popular culture. A quick Google search with <code>_____ that changed my life</code> (fill in the blank with your favorite) reveals that there is a growing list of such curated lists separately for <a href="https://www.nytimes.com/2020/01/18/opinion/letters/influential-books.html">books</a>, <a href="https://deadline.com/2020/05/imdb-movies-that-changed-my-life-podcast-jeffrey-wright-1202927877/">movies</a>, and what not but not too many dedicated to <a href="https://arxiv.org/abs/1108.0216">research papers</a>.</p>
<p>This Thanksgiving, I want to take this opportunity to express my gratitude to the authors of the <a href="https://www.tandfonline.com/doi/abs/10.1198/016214508000000337">most influential paper</a> (snapshotted below) that changed my life in one way or another.</p>
<p>Here are the Five Ws that form the crux of the story:</p>
<p><strong>Who?</strong></p>
<p>Yours truly - A freshly minted PhD candidate of Biostatistics desperately seeking a dissertation topic that has sufficient methodological challenges but at the same time is motivated by real-world problems.</p>
<p><strong>When?</strong></p>
<p>January 2011 - just after passing the PhD qualifying examination, with no prior research experience under my belt and only a vague idea of what <code>Bayesian statistics</code> is.</p>
<p><strong>Where?</strong></p>
<p><a href="https://www.uab.edu/soph/home/departments/biostatistics">Department of Biostatistics, University of Alabama at Birmingham</a> - this is the place where I shopped for research topics across disciplines ranging from statistical genetics to clinical trials methodology and survival analysis to nonparametric inference.</p>
<p><strong>What?</strong></p>
<p><a href="https://en.wikipedia.org/wiki/Plot_point">Plot point</a> - Thanks to my advisor, I came across <code>The Bayesian LASSO</code> paper by Park and Casella which also happens to be the first paper that I read word by word multiple times.</p>
<p><strong>Why?</strong></p>
<p><a href="https://en.wikipedia.org/wiki/Eureka_effect">The eureka effect</a> - Such was the impact of this paper that I ended up choosing <a href="https://search.proquest.com/openview/92eec79a977d0452b818c4b4871a0bf8/1?pq-origsite=gscholar&amp;cbl=18750&amp;diss=y">Bayesian regularization</a> as my dissertation topic. In hindsight, this is a decision that I am immensely proud of as it offered a right balance of theory and methods which was tricky in a predominantly applied and non-Bayesian department.</p>
<p>From a purely technical and objective standpoint, drawbacks and disadvantages aside, what makes the seminal work by Park and Casella (2008) an important paper in the literature is that it is the first successful (nontrivial) Bayesian hierarchical model formulation of the state-of-the-art <a href="https://en.wikipedia.org/wiki/Lasso_(statistics)">LASSO</a> method and it is the first Bayesian work that successfully demonstrated the advantage of doing Bayesian inference over the frequentist LASSO.</p>
<p>Thanks to the authors of this paper, we now have an exciting line of research (partially inspired by the methodological advances in this paper and a few other papers that followed), motivating researchers around the world to develop scalabale and interpretable Bayesian machine learning models that are able to accurately quantify <code>uncertainty</code>, a critical component of modern data-driven decision-making in the era of big data.</p>
<p><img src="https://www.himelmallick.org/post/most_influential_paper/Image_1.png" class="img-fluid" alt="Title and abstract of 'The Bayesian Lasso' by Trevor Park and George Casella"></p>
<p>Now it’s your turn! What are the papers that you are thankful for? What is that one <code>most influential</code> paper that has significantly shaped your research life?</p>
<p>Featured image source: <a href="https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0120017" class="uri">https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0120017</a></p>



 ]]></description>
  <category>Career</category>
  <category>Research</category>
  <category>Statistics</category>
  <category>Biostatistics</category>
  <category>Data Science</category>
  <guid>https://www.himelmallick.org/post/most_influential_paper/</guid>
  <pubDate>Wed, 25 Nov 2020 00:00:00 GMT</pubDate>
  <media:content url="https://www.himelmallick.org/post/most_influential_paper/featured.png" medium="image" type="image/png" height="82" width="144"/>
</item>
<item>
  <title>Student paper awards and travel grants - A resource for students and early-career researchers in data science</title>
  <link>https://www.himelmallick.org/post/travel_grant_resource/</link>
  <description><![CDATA[ 





<div class="post-lead">
<img src="https://www.himelmallick.org/post/travel_grant_resource/featured.jpg" class="post-lead-image img-fluid" alt="The Google logo at the center of a network of colored nodes">
</div>
<p><em>Updated on October 4, 2026. The list has been rebuilt: every entry was checked against its official page, it has grown from 17 awards to 74, and there are now three ways to contribute, including a short form that needs no Git. Each award also now carries a student level, and the list names the 17 awards open to undergraduates.</em></p>
<p>This post is motivated by the growing list of <code>awesome</code> public repositories that curate a list of resources dedicated to a specific topic (such as <a href="https://github.com/dangkhoasdc/awesome-ai-residency">this</a>, <a href="https://github.com/academic/awesome-datascience">this</a>, and <a href="https://github.com/josephmisiti/awesome-machine-learning">this</a>, among others).</p>
<p>As a graduate student, I often struggled to find such a centralized resource, especially when it comes to student paper awards and travel grants, geared towards data science graduate students and postdocs (broadly defined). On the surface, these awards help you save a few hundred dollars of registration and other out-of-pocket travel expenses but they are also worth the effort to go the extra mile in getting a nice gold star for a CV.</p>
<p>Both the <a href="https://www.amstat.org/your-career/student-paper-competitions">ASA</a> and the <a href="https://imstat.org/ims-awards/">IMS</a> have already done a great job in gathering a subset of these opportunities in their respective websites. However, it has been difficult to quickly sort through the information with respect to several desirable aspects such as eligibility, deadline, coverage, and scope, because the details are spread across many separate websites.</p>
<p>Based on these factors, I have assembled this <a href="https://github.com/himelmallick/awesome_datascience_travel_grants">public repository</a> (the top of the list is snapshotted below) as an attempt to aggregate and synthesize information related to statistics/biostatistics/data science travel awards and grants with a special emphasis on those geared towards early career researchers.</p>
<p><img src="https://www.himelmallick.org/post/travel_grant_resource/Image_1.png" class="img-fluid" alt="The top of the 'Awesome Data Science Travel Grants' list: 74 awards, last verified on October 4, 2026, followed by the first rows of the table of student paper awards"></p>
<section id="what-is-new-in-2026" class="level2">
<h2 data-anchor-id="what-is-new-in-2026">What is new in 2026</h2>
<p>The first version of this list had 17 entries and was last touched in 2021. Award pages move and deadlines shift every year, so by 2026 most of its entries pointed to an old page or an old date. The new version starts over:</p>
<ul>
<li><strong>74 awards in five groups:</strong> student paper awards and student travel awards (19), the ASA section competitions for JSM (20), early-career awards and travel grants (12), conference support in mathematics, machine learning, computational biology and R (17), and scholarships and other support (6).</li>
<li><strong>Three facts for every award:</strong> who can apply, what it covers, and when the call usually closes. The deadlines are general (for example “November 15” or “mid-October”), so the list stays useful from one year to the next.</li>
<li><strong>A student level for every award</strong> (undergraduate, master’s, PhD or early career), taken from the official page, and a separate list of the 17 awards open to undergraduates.</li>
<li><strong>A month-by-month calendar</strong> of deadlines at the bottom.</li>
<li><strong>The date of the last check</strong>, so you know how fresh the information is.</li>
</ul>
<p>If you saved dates from the 2020 version, please check your calendar. Several have moved:</p>
<ul>
<li>The ENAR Distinguished Student Paper Awards now close on <strong>October 15</strong>.</li>
<li>Most ASA section competitions now close on <strong>November 15</strong>, a student may enter at most two sections, and winners hear by January 15.</li>
<li>The WNAR student paper competition now closes in <strong>early February</strong>.</li>
<li>The ICSA student paper awards now close in <strong>mid-April</strong>.</li>
<li>The IMS Lawrence D. Brown Ph.D.&nbsp;Student Award now closes on <strong>July 1</strong>.</li>
</ul>
<p>The refresh itself was done with <a href="https://claude.com">Claude</a>, which checked each award against its official page and recorded the date of the check. I mention it because it changes what is realistic for a volunteer-run list: a full re-check of every entry is now an evening’s work, so the list can be kept current once a year.</p>
</section>
<section id="how-to-contribute" class="level2">
<h2 data-anchor-id="how-to-contribute">How to contribute</h2>
<p>While this is not intended to be a comprehensive overview of such opportunities, I would like this public repository to be an ongoing community effort with the hope that it serves the early-career data science community at large. There are now three ways to help, from quickest to most hands-on:</p>
<ol type="1">
<li><strong>Fill in a short form.</strong> <a href="https://github.com/himelmallick/awesome_datascience_travel_grants/issues/new?template=new-award.yml">Suggest an award</a> or <a href="https://github.com/himelmallick/awesome_datascience_travel_grants/issues/new?template=correction.yml">report a correction</a>. No Git knowledge is needed.</li>
<li><strong>Edit the table in your browser.</strong> The whole list lives in one spreadsheet-like file, <a href="https://github.com/himelmallick/awesome_datascience_travel_grants/blob/master/awards.csv"><code>awards.csv</code></a>. Click the pencil icon, change or add a row, and GitHub walks you through the rest.</li>
<li><strong>Open a pull request</strong> the usual way.</li>
</ol>
<p>Any of the following is welcome from the community members:</p>
<ul>
<li>New information you’d like to add (such as a new award not already listed)</li>
<li>Inaccuracies in the content (e.g.&nbsp;deadline, eligibility, etc.)</li>
<li>Information gaps in the content that need more details to be complete (e.g.&nbsp;broken links)</li>
<li>Awards from societies outside North America, which the list barely covers today</li>
</ul>
<p>The repository also has a “Help wanted” section with leads that could not be confirmed on an official page. If you know one of those awards, that is the most useful place to start.</p>
<p>I look forward to your suggestions and pull requests :)</p>
<p>Featured image source: <a href="https://www.perforce.com/blog/vcs/why-did-google-choose-centralized-repository">perforce</a></p>


</section>

 ]]></description>
  <category>Career</category>
  <category>Research</category>
  <category>Statistics</category>
  <category>Biostatistics</category>
  <category>Data Science</category>
  <category>Computational Biology</category>
  <guid>https://www.himelmallick.org/post/travel_grant_resource/</guid>
  <pubDate>Sat, 31 Oct 2020 00:00:00 GMT</pubDate>
  <media:content url="https://www.himelmallick.org/post/travel_grant_resource/featured.jpg" medium="image" type="image/jpeg"/>
</item>
<item>
  <title>Celebrating milestones as a scientist</title>
  <link>https://www.himelmallick.org/post/on_celebrating_milestones/</link>
  <description><![CDATA[ 





<div class="post-lead">
<img src="https://www.himelmallick.org/post/on_celebrating_milestones/featured.jpg" class="post-lead-image img-fluid" alt="A green arrow leaping over three hurdles and rising">
</div>
<p>As scientists, we rarely celebrate <a href="https://www.sciencemag.org/careers/2018/12/what-s-milestone-reflecting-life-scientist">milestones</a> be it a certain number of citations we have received or a certain number of impactful papers/patents we have co-authored. This is in sharp contrast to other professions where it is customary to celebrate even the tiniest bit of success in numbers. Be it how many runs a Cricketer has scored (yes I am an ardent Cricket fan!) or the number of box office successes a filmmaker has delivered.</p>
<p>Most of us who are in a research scientist track know very well that peer-reviewed&nbsp;publications&nbsp;constitute the&nbsp;bread and butter&nbsp;of a researcher’s career. Of course, how much weight it carries varies from sector to sector, which can range from anywhere between 0% to 100%. Regardless of whether we are at the lower end of the spectrum (which is possibly true for many industry scientists) or the upper end of the spectrum (e.g.&nbsp;academics in research institutes), it is undeniable that much of the reputation a scientist builds is derived from their publications/patents/products and the associated impact they have on the greater scientific community.</p>
<p>I don’t want to delve into the philosophical discussion of whether publications/patents/products are the only yardsticks to measure a scientist’s success. In stead, through this post, I want to embrace the importance of celebrating such milestones (however small that might seem) that define the trajectory of a scientist’s career. I truly hope that ‘celebration of milestones’ becomes widespread in the science community.</p>
<p>Personally, September 2020 marks the milestone of 1000 Google Scholar citations which I believe is an important landmark for me even though it’s minuscule in the big scheme of things and I have miles to go before I sleep! This tiny feat wouldn’t be possible without my excellent collaborators, colleagues, friends, and mentors and I want to thank them all from the bottom of my heart!</p>
<p><img src="https://www.himelmallick.org/post/on_celebrating_milestones/Image_1.jpg" class="img-fluid" alt="Google Scholar profile showing 1003 citations, an h-index of 14 and an i10-index of 18"></p>
<p>Featured image source: <a href="https://clipart-library.com/milestone-cliparts.html">Clipart Library</a></p>



 ]]></description>
  <category>Research</category>
  <category>Career</category>
  <category>Academics</category>
  <guid>https://www.himelmallick.org/post/on_celebrating_milestones/</guid>
  <pubDate>Tue, 15 Sep 2020 00:00:00 GMT</pubDate>
  <media:content url="https://www.himelmallick.org/post/on_celebrating_milestones/featured.jpg" medium="image" type="image/jpeg"/>
</item>
<item>
  <title>Early-career setback - A throwback to my first paper</title>
  <link>https://www.himelmallick.org/post/early_career_setback/</link>
  <description><![CDATA[ 





<div class="post-lead">
<img src="https://www.himelmallick.org/post/early_career_setback/featured.jpg" class="post-lead-image img-fluid" alt="Bar chart of the field-weighted citation impact of ‘A New Bayesian LASSO’ by year, above the world average of 1 in every year from 2017 to 2025">
</div>
<p><em>Note: the figure above was regenerated on October 4, 2026. It now runs through 2025 and uses Google Scholar’s yearly citation counts as they are, self-citations included. The text below is unchanged from 2020.</em></p>
<p>This 15th August marked 7 years since I submitted my <a href="https://www.intlpress.com/site/pub/pages/journals/items/sii/content/vols/0007/0004/a012/">first paper</a> (first-authored research article). Coincidentally, it also completed five calendar years last December, which gave me a chance to measure it’s <a href="https://support.clarivate.com/ScientificandAcademicResearch/s/article/Journal-Citation-Reports-5-Year-Impact-Factors?language=en_US">5-year impact</a> (erring on the conservative side of course).</p>
<p>I am very happy to see that it has been well-received as shown in the figure above (the R code to generate the plot is <a href="https://github.com/himelmallick/himelmallick.github.io/tree/master/post/early_career_setback">publicly available</a>). To interpret it more accurately in plain English, it has performed significantly better than an average paper in the same journal or same discipline (Statistics).</p>
<p>Yet, the journey to get this work published was a bit bumpy, which happened to be an instance of early-career setback (broadly defined), an almost-unheard-of phenomenon until recently.</p>
<p>Here is the overall roadmap of the paper (inspired by a <a href="https://simplystatistics.tumblr.com/post/26977029850/my-worst-recent-experience-with-peer-review">similar post</a> in a different context):&nbsp;</p>
<ul>
<li><p><a href="https://projecteuclid.org/euclid.ba"><strong>Bayesian Analysis</strong></a>: Submitted 08/30/2012, rejected 09/16/2012. Not much to say here, except that I am grateful for the rapid decision that helped me move on to the next journal.</p></li>
<li><p><a href="https://www.journals.elsevier.com/computational-statistics-and-data-analysis"><strong>Computational Statistics and Data Analysis</strong></a>: Submitted 09/20/2012, rejected 04/30/2013. This substantial delay was mentally agonizing.</p></li>
<li><p><a href="https://www.jmlr.org/"><strong>Journal of Machine Learning Research</strong></a>: Submitted 04/30/2013, rejected 08/15/2013 with some constructive and legitimate reviews that led to a substantive improvement of the manuscript later on.</p></li>
<li><p><a href="https://www.intlpress.com/site/pub/pages/journals/items/sii/_home/_main/index.php"><strong>Statistics and Its Interface</strong></a>: Submitted 08/15/2013, first review 12/09/2013, resubmitted 05/20/2014 (got delayed by a few other dissertation projects), second revision requested 06/27/2014, revised version submitted 06/30/2014, accepted 06/30/2014, published in final edited form 12/23/2014 (as snapshotted below).</p></li>
</ul>
<p><img src="https://www.himelmallick.org/post/early_career_setback/Image_1.png" class="img-fluid" alt="First page of the paper 'A new Bayesian lasso' by Mallick and Yi in Statistics and Its Interface"></p>
<p>As a graduate student, it was very hard not to take unreasonable reviews personally, especially in the absence of <a href="https://www.pnas.org/content/114/48/12708">big names and prior experience in the author list</a>, possibly more so as it felt like a never-ending process - both figuratively and literally!</p>
<p>As an aside, I used a rather generous denominator of 4.2 while calculating the <a href="http://help.prod-incites.com/inCites2Live/indicatorsGroup/aboutHandbook/usingCitationIndicatorsWisely/normalizedCitationImpact.html">FWCI</a> (excluding self-citations), <a href="https://www.sciencedirect.com/science/article/pii/S2405844016322800">which is only based on a handful of top journals in the field</a>. Even going by the current impact factor of the <a href="https://www.intlpress.com/site/pub/pages/journals/items/sii/_home/_main/index.php">publishing journal</a> (~0.5), this is a gross overestimate.</p>
<p>Regardless, I could not be more appreciative of how it has turned out despite appearing in a relatively low-impact journal in challenging circumstances. In hindsight, this early-career setback prepared me well for my future endeavors, consistent with the aphorism that <a href="https://www.nature.com/articles/s41467-019-12189-3">“what doesn’t kill you makes you stronger”</a>.</p>
<p>OK - that was my story. What is your early-career setback story?</p>



 ]]></description>
  <category>Peer Review</category>
  <category>Career</category>
  <category>Research</category>
  <category>Statistics</category>
  <category>Biostatistics</category>
  <category>Data Science</category>
  <guid>https://www.himelmallick.org/post/early_career_setback/</guid>
  <pubDate>Thu, 20 Aug 2020 00:00:00 GMT</pubDate>
  <media:content url="https://www.himelmallick.org/post/early_career_setback/featured.jpg" medium="image" type="image/jpeg"/>
</item>
<item>
  <title>A reflection on my first guest editorial experience</title>
  <link>https://www.himelmallick.org/post/guest_editing_reflection/</link>
  <description><![CDATA[ 





<div class="post-lead">
<img src="https://www.himelmallick.org/post/guest_editing_reflection/featured.png" class="post-lead-image img-fluid" alt="The Frontiers logo">
</div>
<p>Recently, I had a chance to wrap up a <a href="https://www.frontiersin.org/research-topics/8604/statistical-and-computational-methods-for-microbiome-multi-omics-data">special issue</a> at the journal <a href="https://www.frontiersin.org/">Frontiers in Genetics</a>. This is my first-hand experience as a lead Guest Associate Editor.</p>
<p>Ironically, this opportunity came to me at a time when I was exponentially busy as a postdoctoral fellow juggling research, occasional teaching and other administrative duties while also preparing my transition to a new role. I am so glad I took the chance when the Frontiers editorial office reached out to me in 2018.</p>
<p>The experience of (i) proposing a research topic, (ii) putting together a team of co-editors, (iii) reaching out to potential contributors, (iv) handling manuscripts on a shared basis, (v) assigning reviewers, (vi) collectively deciding the fate of the manuscripts often over multiple rounds, and (vii) finally closing the special issue with an <a href="https://www.frontiersin.org/articles/10.3389/fgene.2020.00927/full">editorial</a> - it has been a long and fulfilling journey.</p>
<p>There are 11 articles in this research topic including an editorial, where we have curated high-quality articles published between April 2019 and July 2020 on various topics in microbiome and multi-omics data science (snapshotted below).</p>
<p><img src="https://www.himelmallick.org/post/guest_editing_reflection/Image_1.jpg" class="img-fluid" alt="Cover of the Frontiers in Genetics Research Topic 'Statistical and Computational Methods for Microbiome Multi-Omics Data'"></p>
<p>Some of the papers have already been highly shared over the last year or so and they have together generated <a href="https://www.frontiersin.org/research-topics/8604/statistical-and-computational-methods-for-microbiome-multi-omics-data#impact">&gt;60K</a> views within a short amount of time. Many thanks to all the authors and editorial contributors for your support.</p>
<p>I am looking forward to the <a href="https://www.frontiersin.org/research-topics/13026/methods-for-single-cell-and-microbiome-sequencing-data">second round</a> of this Research Topic which is currently open for new research, methodology, review, and comment articles.</p>
<p>I hope you all have a chance to catch up on some of the progress made in the field :)</p>



 ]]></description>
  <category>Academic Service</category>
  <category>Peer Review</category>
  <category>Editing</category>
  <category>Guest Editing</category>
  <category>Microbiome</category>
  <category>Multi-omics</category>
  <category>Research</category>
  <guid>https://www.himelmallick.org/post/guest_editing_reflection/</guid>
  <pubDate>Thu, 30 Jul 2020 00:00:00 GMT</pubDate>
  <media:content url="https://www.himelmallick.org/post/guest_editing_reflection/featured.png" medium="image" type="image/png" height="40" width="144"/>
</item>
<item>
  <title>Automatically update citation metrics in your CV with a bare minimum script - Part II</title>
  <link>https://www.himelmallick.org/post/automate_citation_metrics_resume_2/</link>
  <description><![CDATA[ 





<div class="post-lead">
<img src="https://www.himelmallick.org/post/automate_citation_metrics_resume_2/featured.jpg" class="post-lead-image img-fluid" alt="The Google Scholar logo next to the LaTeX logo">
</div>
<p><em>Updated on October 4, 2026. The Sweave steps now come with a small example you can run, there is a second route through Quarto that also puts a citation count next to each paper, the automation script has been replaced with one that has been run, and there is a new section on doing all of this with Claude.</em></p>
<p>Following my previous post (<a href="../../post/automate_citation_metrics_resume/index.html">Part I</a>), I received a few requests from my fellow mathematical and physical scientist colleagues who prepare their CVs and resumes in the popular typesetting system <a href="https://en.wikipedia.org/wiki/LaTeX">LaTeX</a>. In this post, I will go over the steps required to automatically import Google Scholar citation metrics in a LaTeX document without any hassle or compromise.</p>
<section id="motivation" class="level2">
<h2 data-anchor-id="motivation">Motivation</h2>
<p>Similar to <a href="../../post/automate_citation_metrics_resume/index.html">Part I</a>, here are just a few things I would like to maintain:</p>
<ol type="1">
<li>Ability to edit CVs and resumes in LaTeX,</li>
<li>Without the need to learn a new language or markup syntax, and</li>
<li>Without falling back to a manual update which can be inconvenient.</li>
</ol>
<p>As before, here are a few things we will need: (i) A CV or resume written in LaTeX (.tex), (ii) <a href="https://cran.r-project.org/">R</a>, and (iii) <a href="https://posit.co/download/rstudio-desktop/">RStudio</a> (both are free, and the RStudio page walks you through installing them). This tutorial also assumes that you have an up-to-date <a href="https://scholar.google.com/">Google Scholar</a> profile. All files described in this tutorial, including a small example resume for each route, are <a href="https://github.com/himelmallick/himelmallick.github.io/tree/master/post/automate_citation_metrics_resume_2">publicly available</a>.</p>
<p>Compared to the previous post, this tutorial is more straightforward, thanks to the well-developed <a href="https://en.wikipedia.org/wiki/Sweave">Sweave function</a>, that enables effortless integration of R code into LaTeX documents, allowing one to execute and embed the results of R computations and graphics within a LaTeX document.</p>
<p>Without further ado, here goes the quick 3-step solution.</p>
</section>
<section id="step-1-customizing-the-latex-document" class="level2">
<h2 data-anchor-id="step-1-customizing-the-latex-document">Step 1: Customizing the LaTeX Document</h2>
<p>First step is to convert the existing LaTeX (.tex) document into a Sweave file (.Rnw) by simply changing the extension.</p>
</section>
<section id="step-2-adding-a-minimal-r-code" class="level2">
<h2 data-anchor-id="step-2-adding-a-minimal-r-code">Step 2: Adding a minimal R code</h2>
<p>Next, add the following R chunk in your <code>.Rnw</code> document (anywhere between <code>\begin{document}</code> and <code>\end{document}</code>):</p>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb1" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb1-1"><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&lt;</span><span class="er" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;</span>echo<span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">=</span><span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">FALSE</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&gt;</span><span class="er" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;=</span></span>
<span id="cb1-2"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">library</span>(scholar)</span>
<span id="cb1-3">my_Google_Scholar<span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">get_profile</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'twbXG-wAAAAJ'</span>)</span>
<span id="cb1-4">a<span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span>my_Google_Scholar<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>total_cites</span>
<span id="cb1-5">b<span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span>my_Google_Scholar<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>h_index</span>
<span id="cb1-6">c<span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span>my_Google_Scholar<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>i10_index</span>
<span id="cb1-7"><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">@</span></span></code></pre></div></div>
<p>In the above code, I have used my own Google Scholar ID <code>twbXG-wAAAAJ</code>. Please don’t forget to modify to yours. You also need to call out these extracted values (<code>a</code>, <code>b</code>, and <code>c</code>) using the <code>\Sexpr</code> command in the LaTeX document as follows:</p>
<pre><code>Citations = \Sexpr{a}
h-index = \Sexpr{b}
i-10 index = \Sexpr{c}</code></pre>
<p>That’s it. Now you can compile this file directly from RStudio by simply executing the <code>Compile PDF</code> button on the right:</p>
<p><img src="https://www.himelmallick.org/post/automate_citation_metrics_resume_2/Image_1.png" class="img-fluid" alt="RStudio editor showing the Sweave chunk, the Sexpr calls and the Compile PDF button"></p>
<p>For your reference, the snapshot above is from my own resume which can be downloaded from <a href="../../index.html">here</a>.</p>
<p>One caveat I have learned since 2020: Google Scholar sometimes refuses automated requests for a few hours, and on such days the chunk above stops the whole document from compiling. A slightly longer chunk keeps a copy of the last numbers it received and uses that copy when a request fails:</p>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb3" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb3-1"><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&lt;</span><span class="er" style="color: #AD0000;
background-color: null;
font-style: inherit;">&lt;</span>echo<span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">=</span><span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">FALSE</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&gt;</span><span class="er" style="color: #AD0000;
background-color: null;
font-style: inherit;">&gt;=</span></span>
<span id="cb3-2"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">library</span>(scholar)</span>
<span id="cb3-3">saved <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"scholar_metrics.rds"</span></span>
<span id="cb3-4">gs <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">tryCatch</span>(<span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">get_profile</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"twbXG-wAAAAJ"</span>), <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">error =</span> <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">function</span>(e) <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">NULL</span>)</span>
<span id="cb3-5"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">if</span> (<span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">is.list</span>(gs) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&amp;&amp;</span> <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">!</span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">is.na</span>(gs<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>total_cites)) <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">saveRDS</span>(gs, saved) <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">else</span> gs <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">readRDS</span>(saved)</span>
<span id="cb3-6">a <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> gs<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>total_cites</span>
<span id="cb3-7">b <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> gs<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>h_index</span>
<span id="cb3-8">c <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> gs<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>i10_index</span>
<span id="cb3-9"><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">@</span></span></code></pre></div></div>
<p>A complete small resume with this chunk is in the <a href="https://github.com/himelmallick/himelmallick.github.io/tree/master/post/automate_citation_metrics_resume_2/_example/sweave"><code>_example/sweave</code></a> folder.</p>
</section>
<section id="optional-step-3-automating-with-cron" class="level2">
<h2 data-anchor-id="optional-step-3-automating-with-cron">(Optional) Step 3: Automating with cron</h2>
<p>Once the Steps 1 and 2 are in place, it’s as easy as pie to automate this further. In particular, you can follow the exact same steps from <a href="../../post/automate_citation_metrics_resume/index.html">Part I</a> tutorial to set up a cron job, using the following script (<code>Update_Resume.R</code>) in place of the one from Part I:</p>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb4" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb4-1">route <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"sweave"</span>   <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># "sweave" or "quarto"</span></span>
<span id="cb4-2"></span>
<span id="cb4-3"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">if</span> (route <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">==</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"sweave"</span>) {</span>
<span id="cb4-4">  <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># Runs the R chunk, then LaTeX. Needs a LaTeX installation</span></span>
<span id="cb4-5">  <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># (the quickest one to set up: install.packages("tinytex"); tinytex::install_tinytex()).</span></span>
<span id="cb4-6">  utils<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">::</span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">Sweave</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Resume_Master.Rnw"</span>)</span>
<span id="cb4-7">  tools<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">::</span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">texi2pdf</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Resume_Master.tex"</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">clean =</span> <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">TRUE</span>)</span>
<span id="cb4-8">} <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">else</span> {</span>
<span id="cb4-9">  <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># Needs Quarto (it comes with RStudio).</span></span>
<span id="cb4-10">  status <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">system2</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"quarto"</span>, <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">c</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"render"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Resume_Master.qmd"</span>))</span>
<span id="cb4-11">  <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">if</span> (status <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">!=</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>) <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">stop</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Quarto could not build the resume. Read the message above."</span>)</span>
<span id="cb4-12">}</span>
<span id="cb4-13"></span>
<span id="cb4-14"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">invisible</span>(<span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">file.copy</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Resume_Master.pdf"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Resume_Final.pdf"</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">overwrite =</span> <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">TRUE</span>))</span>
<span id="cb4-15"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">message</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Wrote Resume_Final.pdf"</span>)</span></code></pre></div></div>
<p>The code above assumes that <code>Resume_Master</code> is the master file that you intend to update and <code>Resume_Final</code> is the final document. After you execute these steps, a PDF named <code>Resume_Final.pdf</code> with the appended Google Scholar citation metrics will be produced. This script replaces the one in the 2020 version of this post, which I had not tested at the time. This one has been run on the example files for both routes.</p>
</section>
<section id="the-quarto-route-with-a-citation-count-for-each-paper-new-in-2026" class="level2">
<h2 data-anchor-id="the-quarto-route-with-a-citation-count-for-each-paper-new-in-2026">The Quarto route, with a citation count for each paper (new in 2026)</h2>
<p><a href="https://quarto.org">Quarto</a> is the successor to the Sweave and R Markdown family, and in October 2026 I moved my own CV and resume to it. The idea is the same as before: your LaTeX stays LaTeX, and a few lines of R fetch the numbers each time the PDF is built. Two things get better. The build survives the days when Google Scholar does not answer, and each paper can carry its own citation count.</p>
<p>The <a href="https://github.com/himelmallick/himelmallick.github.io/tree/master/post/automate_citation_metrics_resume_2/_example/quarto"><code>_example/quarto</code></a> folder has three small files:</p>
<ul>
<li><code>Resume_Master.qmd</code>: the text of the resume, still in LaTeX</li>
<li><code>resume-template.latex</code>: the LaTeX preamble (everything above <code>\begin{document}</code>)</li>
<li><code>scholar.R</code>: the helper that talks to Google Scholar</li>
</ul>
<p>To convert your own document, move your preamble into the template, and paste the rest between the two fences of the <code>{=latex}</code> block. The top of <code>Resume_Master.qmd</code> looks like this:</p>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb5" style="background: #f1f3f5;"><pre class="sourceCode markdown code-with-copy"><code class="sourceCode markdown"><span id="cb5-1"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">---</span></span>
<span id="cb5-2"><span class="an" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">format:</span></span>
<span id="cb5-3"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">  pdf:</span></span>
<span id="cb5-4"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">    template: resume-template.latex</span></span>
<span id="cb5-5"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">    pdf-engine: pdflatex</span></span>
<span id="cb5-6"><span class="an" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">engine:</span><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"> knitr</span></span>
<span id="cb5-7"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">---</span></span>
<span id="cb5-8"></span>
<span id="cb5-9"><span class="in" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">```{r}</span></span>
<span id="cb5-10"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">#| echo: false</span></span>
<span id="cb5-11"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">source</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"scholar.R"</span>)</span>
<span id="cb5-12"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">scholar_setup</span>(</span>
<span id="cb5-13">  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">id =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"twbXG-wAAAAJ"</span>,                  <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># your Google Scholar profile</span></span>
<span id="cb5-14">  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">min_citations =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">30</span>,                   <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># papers with at least this many citations show a count</span></span>
<span id="cb5-15">  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">citation_format =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"[Citations: %s]"</span>   <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># how the count is written; %s is the number</span></span>
<span id="cb5-16">)</span>
<span id="cb5-17"><span class="in" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">```</span></span>
<span id="cb5-18"></span>
<span id="cb5-19"><span class="in" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">```{=latex}</span></span>
<span id="cb5-20"><span class="in" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">\section*{Publications}</span></span>
<span id="cb5-21"></span>
<span id="cb5-22"><span class="in" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">Google Scholar citations = \GSCitations{}, h-index = \GSHIndex{}, i10-index = \GSIIndex{}</span></span>
<span id="cb5-23"></span>
<span id="cb5-24"><span class="in" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">\begin{enumerate}</span></span>
<span id="cb5-25"><span class="in" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">%% citation counts: on</span></span>
<span id="cb5-26"><span class="in" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">\item \textbf{Mallick H}, Yi N (2014). \href{https://www.ncbi.nlm.nih.gov/pubmed/27570577}{A New Bayesian Lasso}. \textit{Statistics and Its Interface} 7(4):571--581.</span></span>
<span id="cb5-27"><span class="in" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">%% citation counts: off</span></span>
<span id="cb5-28"><span class="in" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">\end{enumerate}</span></span>
<span id="cb5-29"><span class="in" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">```</span></span></code></pre></div></div>
<p>Three names replace the <code>\Sexpr</code> calls of the Sweave route: <code>\GSCitations{}</code>, <code>\GSHIndex{}</code> and <code>\GSIIndex{}</code>. Every paper between the two <code>%% citation counts</code> lines is looked up on your Google Scholar profile by its title (the text inside <code>\href{}{}</code>), and its count is added at the end of the entry when it reaches the threshold. Click <code>Render</code> in RStudio and you get this:</p>
<p><img src="https://www.himelmallick.org/post/automate_citation_metrics_resume_2/Image_3.png" class="img-fluid" alt="Example resume produced by the Quarto route: Google Scholar totals under the Publications heading, and a citation count in square brackets after each paper with at least 30 citations"></p>
<p>The third paper has fewer than 30 citations, so it shows no count. Change <code>min_citations</code> to move that line.</p>
<p>A few details that make this pleasant to live with:</p>
<ul>
<li>The numbers are saved in a small file (<code>scholar-cache.json</code>) after every successful request and reused for 12 hours, so building a CV and a resume one after the other asks Google Scholar once.</li>
<li>When Google Scholar does not answer, the saved numbers are used and the build log says so, with their date.</li>
<li>Titles are matched with some tolerance, since the same paper is often worded a little differently on Google Scholar. Running <code>scholar_check("Resume_Master.qmd")</code> in the R console lists the well-cited papers on your profile that matched nothing in the document, which is how I caught two papers whose titles differed.</li>
</ul>
</section>
<section id="doing-this-with-claude-new-in-2026" class="level2">
<h2 data-anchor-id="doing-this-with-claude-new-in-2026">Doing this with Claude (new in 2026)</h2>
<p>I did the conversion of my own 30-page CV with <a href="https://claude.com">Claude</a>. These are the prompts I would start from. Attach your <code>.tex</code> file (or point Claude at the folder) and send them one at a time.</p>
<p><strong>1. Convert, and prove that nothing changed.</strong></p>
<pre><code>Attached is my CV in LaTeX. Convert it to a Quarto document that produces the
same PDF: keep my preamble in a template file and keep the text as LaTeX. Then
build both versions and confirm that the new PDF matches the old one word for
word, with the same number of pages and the same fonts.</code></pre>
<p><strong>2. Add the totals.</strong></p>
<pre><code>Show my Google Scholar citation count, h-index and i10-index in the heading of
the Publications section, fetched with the R scholar package each time the PDF
is built. My profile is &lt;paste the address of your profile&gt;. Save the numbers
after every successful request and fall back on them when Google Scholar does
not answer, so the document always builds.</code></pre>
<p><strong>3. Add a count to each paper.</strong></p>
<pre><code>After each paper with at least 30 citations, add its Google Scholar count as
[Citations: N]. Match papers by title, allow for small differences in wording,
and give me a list of the papers on my profile that you could not match.</code></pre>
<p><strong>4. Put it on a schedule.</strong></p>
<pre><code>I use a &lt;Mac / Windows PC&gt;. Give me the exact steps to rebuild the PDF once a
week and save it to my Dropbox folder under the same file name.</code></pre>
<p>Three pieces of advice from doing this myself:</p>
<ul>
<li><strong>Ask for the comparison in the first prompt.</strong> “Matches word for word” is a claim that a program can check, and that check is what makes a 30-page conversion trustworthy without rereading every line.</li>
<li><strong>Expect the first real numbers to arrive on your own computer.</strong> Claude’s cloud workspace could not reach Google Scholar when I tried. The matching was tested there on made-up numbers, and the real ones came in the first time I rendered the document myself.</li>
<li><strong>Read the list of unmatched papers.</strong> Mine had three entries. Two were my own papers under slightly different titles, which a looser match fixed. The third was a book I had contributed a chapter to, which is a judgment call a script should leave to you.</li>
</ul>
<p>Happy Tuesday! I hope you find this tutorial useful :)</p>


</section>

 ]]></description>
  <category>R</category>
  <category>Resume</category>
  <category>Career</category>
  <category>AI</category>
  <guid>https://www.himelmallick.org/post/automate_citation_metrics_resume_2/</guid>
  <pubDate>Tue, 03 Mar 2020 00:00:00 GMT</pubDate>
  <media:content url="https://www.himelmallick.org/post/automate_citation_metrics_resume_2/featured.jpg" medium="image" type="image/jpeg"/>
</item>
<item>
  <title>Automatically update citation metrics in your CV with a bare minimum script - Part I</title>
  <link>https://www.himelmallick.org/post/automate_citation_metrics_resume/</link>
  <description><![CDATA[ 





<div class="post-lead">
<img src="https://www.himelmallick.org/post/automate_citation_metrics_resume/featured.jpg" class="post-lead-image img-fluid" alt="The Google Scholar logo next to a Microsoft Word document">
</div>
<p><em>Updated on October 4, 2026. The script can now be copied straight from this page, it falls back on saved numbers when Google Scholar does not answer, the links are refreshed, and there is a new section on doing all of this with Claude.</em></p>
<p>The inspiration behind this post comes from my non-computational scientist colleagues who simply wanted to import <a href="https://en.wikipedia.org/wiki/Google_Scholar">Google Scholar</a> citation metrics in their CVs and resumes with as little overhead as possible. After a few quick searches, several solutions popped up that used either <a href="https://en.wikipedia.org/wiki/Markdown">Markdown</a> or <a href="https://en.wikipedia.org/wiki/LaTeX">LaTeX</a>. While I appreciate these more sophisticated maneuvers, they did not serve any useful purpose for my specific motivation as described below.</p>
<section id="motivation" class="level2">
<h2 data-anchor-id="motivation">Motivation</h2>
<p>There are just a few things my scientist colleagues wanted to achieve:</p>
<ol type="1">
<li>Ability to edit their CVs and resumes in Microsoft Word,</li>
<li>Without the need to learn a new language or markup syntax, and</li>
<li>Without falling back to a manual update which can be inconvenient.</li>
</ol>
<p>Fortunately, the <a href="https://blog.revolutionanalytics.com/2017/06/r-community.html">R community</a> has already done much of the hard work, thanks to the awesome <a href="https://cran.r-project.org/package=officer"><code>officer</code></a> and <a href="https://cran.r-project.org/package=scholar"><code>scholar</code></a> packages. Briefly, the <code>officer</code> package lets users manipulate Word documents without altering the contents, styles, and properties of the original document, while the <code>scholar</code> package provides handy functions to extract citation data from Google Scholar.</p>
<p>Among other things, I wanted this solution to be a bit more robust without being too complicated for future expansion. In particular, the possibility of adding other elements above and beyond citation metrics such as images, tables, and text from R as well as portability to other documents such as PowerPoint (*.pptx) was on the top of my list. Beyond everything, I wanted to make this exercise as seamless and efficient as possible for my scientist colleagues irrespective of their coding background.</p>
<p>Before getting started, here are a few things we will need: (i) A CV or resume written in Word (.docx), (ii) <a href="https://cran.r-project.org/">R</a>, and (iii) <a href="https://posit.co/download/rstudio-desktop/">RStudio</a> (both are free, and the RStudio page walks you through installing them). This tutorial also assumes that you have an up-to-date <a href="https://scholar.google.com/">Google Scholar</a> profile. All files described in this tutorial are <a href="https://github.com/himelmallick/himelmallick.github.io/tree/master/post/automate_citation_metrics_resume">publicly available</a>.</p>
<p>So, here goes the simple 3-step solution.</p>
</section>
<section id="step-1-customizing-the-word-document" class="level2">
<h2 data-anchor-id="step-1-customizing-the-word-document">Step 1: Customizing the Word Document</h2>
<p>For illustration purposes, I will use a template resume named <code>Resume_Master.docx</code> which is mostly empty at this point:</p>
<p><img src="https://www.himelmallick.org/post/automate_citation_metrics_resume/Image_1.png" class="img-fluid" alt="The blank CV template used in this tutorial" width="470"></p>
<p>The first step is to add a bookmark where you want to insert your citation metrics. If you are unfamiliar with bookmarks in Word documents, I suggest reading the <a href="https://support.microsoft.com/en-us/office/add-or-delete-bookmarks-in-a-word-document-or-outlook-message-f68d781f-0150-4583-a90e-a4009d99c2a0">Microsoft Office tutorial</a> which is pretty concise and hence skipped here. For our specific task, I want to define three bookmarks right after the <code>Publications</code> section as follows:</p>
<p><img src="https://www.himelmallick.org/post/automate_citation_metrics_resume/Image_2.png" class="img-fluid" alt="Word bookmark dialog listing the bookmarks GS_a, GS_b and GS_c placed after the Publications heading"></p>
<p>In particular, I intend to import total citation counts, h-index, and i10 index on these pre-defined bookmarks <code>GS_a</code>, <code>GS_b</code>, and <code>GS_c</code> respectively, as verified by the bookmark window on the right.</p>
</section>
<section id="step-2-running-a-minimal-r-script" class="level2">
<h2 data-anchor-id="step-2-running-a-minimal-r-script">Step 2: Running a minimal R script</h2>
<p>This step is actually pretty simple as long as you know <a href="https://www.dummies.com/programming/r/how-to-source-a-script-in-r/">how to run a script in RStudio</a> (open the file and click <code>Source</code>). Here is the bare minimum script (<code>Update_Resume.R</code>):</p>
<div class="code-copy-outer-scaffold"><div class="sourceCode" id="cb1" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb1-1">scholar_id  <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"twbXG-wAAAAJ"</span>        <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># the id in the address of your Google Scholar profile</span></span>
<span id="cb1-2">input_file  <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Resume_Master.docx"</span>  <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># the resume you edit</span></span>
<span id="cb1-3">output_file <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Resume_Final.docx"</span>   <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># the copy with the numbers filled in</span></span>
<span id="cb1-4"></span>
<span id="cb1-5"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> (pkg <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">c</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"officer"</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"scholar"</span>)) {</span>
<span id="cb1-6">  <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">if</span> (<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">!</span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">requireNamespace</span>(pkg, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">quietly =</span> <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">TRUE</span>)) <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">install.packages</span>(pkg)</span>
<span id="cb1-7">}</span>
<span id="cb1-8"></span>
<span id="cb1-9"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># 1. Get the numbers. If Google Scholar does not answer, reuse the last saved ones.</span></span>
<span id="cb1-10">saved <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"scholar_metrics.rds"</span></span>
<span id="cb1-11">profile <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">tryCatch</span>(scholar<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">::</span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">get_profile</span>(scholar_id), <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">error =</span> <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">function</span>(e) <span class="cn" style="color: #8f5902;
background-color: null;
font-style: inherit;">NULL</span>)</span>
<span id="cb1-12">answered <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">is.list</span>(profile) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&amp;&amp;</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">length</span>(profile<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>total_cites) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">==</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span> <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&amp;&amp;</span> <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">!</span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">is.na</span>(profile<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>total_cites)</span>
<span id="cb1-13"></span>
<span id="cb1-14"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">if</span> (answered) {</span>
<span id="cb1-15">  metrics <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">c</span>(<span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">GS_a =</span> profile<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>total_cites, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">GS_b =</span> profile<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>h_index, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">GS_c =</span> profile<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">$</span>i10_index)</span>
<span id="cb1-16">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">saveRDS</span>(metrics, saved)</span>
<span id="cb1-17">} <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">else</span> <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">if</span> (<span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">file.exists</span>(saved)) {</span>
<span id="cb1-18">  metrics <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">readRDS</span>(saved)</span>
<span id="cb1-19">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">message</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Google Scholar did not answer. Using the numbers saved on "</span>,</span>
<span id="cb1-20">          <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">format</span>(<span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">file.mtime</span>(saved), <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"%B %d, %Y"</span>), <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"."</span>)</span>
<span id="cb1-21">} <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">else</span> {</span>
<span id="cb1-22">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">stop</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Google Scholar did not answer and there are no saved numbers yet. Try again later."</span>)</span>
<span id="cb1-23">}</span>
<span id="cb1-24"></span>
<span id="cb1-25"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># 2. Write them at the bookmarks GS_a, GS_b and GS_c.</span></span>
<span id="cb1-26">doc <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> officer<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">::</span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">read_docx</span>(input_file)</span>
<span id="cb1-27">absent <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">setdiff</span>(<span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">names</span>(metrics), officer<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">::</span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">docx_bookmarks</span>(doc))</span>
<span id="cb1-28"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">if</span> (<span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">length</span>(absent) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&gt;</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">0</span>) {</span>
<span id="cb1-29">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">stop</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Add these bookmarks to "</span>, input_file, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">" first: "</span>, <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">paste</span>(absent, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">collapse =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">", "</span>))</span>
<span id="cb1-30">}</span>
<span id="cb1-31"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">for</span> (bookmark <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">in</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">names</span>(metrics)) {</span>
<span id="cb1-32">  number <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">format</span>(metrics[[bookmark]], <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">big.mark =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">","</span>)</span>
<span id="cb1-33">  doc <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> officer<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">::</span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">body_replace_text_at_bkm</span>(doc, bookmark, number)</span>
<span id="cb1-34">}</span>
<span id="cb1-35"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">print</span>(doc, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">target =</span> output_file)</span>
<span id="cb1-36"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">message</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Wrote "</span>, output_file)</span></code></pre></div></div>
<p>A quick breakdown of what it does is as follows. First, it installs the required packages if they are missing. In the second chunk of the code, it extracts the relevant Google Scholar citation metrics (make sure you have an internet connection while executing this part). Here I have used my own Google Scholar ID <code>twbXG-wAAAAJ</code> (don’t forget to change to yours). Finally, it inserts these metrics into your input Word document (in this case <code>Resume_Master.docx</code>) and outputs an updated document called <code>Resume_Final.docx</code>.</p>
<p>Two things are new in the 2026 version of the script. Google Scholar sometimes refuses automated requests for a few hours, so the script keeps a copy of the last numbers it received (<code>scholar_metrics.rds</code>) and uses that copy on such days. It also checks that the three bookmarks exist and tells you which one is missing.</p>
<p>With my own humble contribution to science, the resulting file looks something like this (numbers retrieved on October 4, 2026):</p>
<p><img src="https://www.himelmallick.org/post/automate_citation_metrics_resume/Image_4.png" class="img-fluid" alt="Updated resume showing Google Scholar citations = 13,040, h-index = 26, i10 index = 38" width="520"></p>
<p>When this post first appeared in February 2020, the same line read <code>citations = 581, h-index = 12, i10 index = 14</code>.</p>
<p>Please note that, this script assumes that all the associated files are co-located in the same directory. Please make sure to change the names of your input and output files in the first three lines as desired before executing.</p>
<p>The cool thing is that you can seamlessly edit your master file as you would normally do and run this script as frequently as you want to get the citations metrics inserted automatically.</p>
<p>That’s it! You have the exact same resume with the citation metrics inserted.</p>
</section>
<section id="optional-step-3-automating-with-cron" class="level2">
<h2 data-anchor-id="optional-step-3-automating-with-cron">(Optional) Step 3: Automating with cron</h2>
<p>Now, if you would like to further fine-tune this process <a href="https://ideophone.org/how-often-does-google-scholar-update/">without the hassle of running the script every other day</a>, you can optionally do that thanks to the amazing <a href="https://cran.r-project.org/package=cronR"><code>cronR</code></a> package (Mac and Linux; on Windows the sister package <a href="https://cran.r-project.org/package=taskscheduleR"><code>taskscheduleR</code></a> does the same job). Fortunately, this step is dead easy as well, especially if you are already familiar with R.</p>
<p>In particular, once you are able to install the <code>cronR</code> package following instructions <a href="https://github.com/bnosac/cronR">here</a>, you can jump right into the <code>RStudio add-in</code> section of that tutorial.</p>
<p>As an example, if you want to execute the <code>Update_Resume.R</code> script hourly, all you have to do is the following before pressing the <code>Create job</code> button:</p>
<p><img src="https://www.himelmallick.org/post/automate_citation_metrics_resume/Image_5.png" class="img-fluid" alt="cronR add-in in RStudio scheduling the R script to run every hour"></p>
<p>Once you schedule the job above, it will update every hour whenever your computer is switched on (you can change the schedule any time). Citation counts change slowly, so a daily or weekly schedule is plenty, and a gentler schedule also makes it less likely that Google Scholar turns your requests away. You can also save the resulting file in a shared or publicly accessible folder (such as Dropbox, Google Drive, and OneDrive) and easily embed it on your personal website if you would like.</p>
</section>
<section id="doing-this-with-claude-new-in-2026" class="level2">
<h2 data-anchor-id="doing-this-with-claude-new-in-2026">Doing this with Claude (new in 2026)</h2>
<p>When I wrote this post in 2020, the three steps above were the shortest path I could offer a colleague who does not code. In 2026 there is a shorter one: hand the job to an AI assistant. I use <a href="https://claude.com">Claude</a>, and the prompts below are the ones I would give a colleague today. Attach your resume and send them one at a time.</p>
<p><strong>1. Set it up.</strong></p>
<pre><code>Attached is my resume in Word. I want my Google Scholar citation count, h-index
and i10-index to appear on one line under the Publications heading and to update
automatically. My Google Scholar profile is &lt;paste the address of your profile&gt;.
Add the three bookmarks to the document for me, write an R script that fills
them in with the officer and scholar packages, and tell me step by step how to
run it in RStudio. I have never used R.</code></pre>
<p><strong>2. Make it sturdy.</strong></p>
<pre><code>Google Scholar sometimes refuses automated requests. Change the script so that
it saves the last numbers it received and uses them when a request fails, and
so that it tells me in plain words when a bookmark is missing.</code></pre>
<p><strong>3. Put it on a schedule.</strong></p>
<pre><code>I use a &lt;Mac / Windows PC&gt;. Give me the exact steps to run this script once a
week without opening RStudio.</code></pre>
<p>Three pieces of advice from doing this myself:</p>
<ul>
<li><strong>Ask Claude for the code, and let the code fetch the numbers.</strong> A language model’s memory of your citation count was already out of date on the day it was trained. The script asks Google Scholar every time.</li>
<li><strong>Expect to run the script on your own computer.</strong> Claude’s cloud workspace could not reach Google Scholar when I tried, and the first real numbers arrived when the script ran on my own machine.</li>
<li><strong>Check the first result against your profile.</strong> It takes ten seconds, and after that the script has earned your trust.</li>
</ul>
<p>The same approach carries over to LaTeX and Quarto documents, including a citation count next to each paper. That is the subject of <a href="../../post/automate_citation_metrics_resume_2/index.html">Part II</a>.</p>
<p>Happy automating! It’s not that difficult after all :)</p>


</section>

 ]]></description>
  <category>R</category>
  <category>Resume</category>
  <category>Career</category>
  <category>AI</category>
  <guid>https://www.himelmallick.org/post/automate_citation_metrics_resume/</guid>
  <pubDate>Sun, 16 Feb 2020 00:00:00 GMT</pubDate>
  <media:content url="https://www.himelmallick.org/post/automate_citation_metrics_resume/featured.jpg" medium="image" type="image/jpeg"/>
</item>
<item>
  <title>Predicting the diverse metabolic activities of the microbiome</title>
  <link>https://www.himelmallick.org/post/metabolite_prediction/</link>
  <description><![CDATA[ 





<div class="post-lead">
<img src="https://www.himelmallick.org/post/metabolite_prediction/featured.jpg" class="post-lead-image img-fluid" alt="Diagram: microbe abundances lead to gene and pathway abundances through PICRUSt, and to metabolite abundances through MelonnPan">
</div>
<p>This is a repost backdated to match the original post that appeared in <a href="https://naturemicrobiologycommunity.nature.com/">Nature Research Microbiology Community</a> in <a href="https://naturemicrobiologycommunity.nature.com/users/78027-himel-mallick/posts/49662-predicting-the-diverse-metabolic-activities-of-the-microbiome">July 2019</a>. It represents the backstory behind the <a href="https://www.nature.com/articles/s41467-019-10927-1">following publication</a>:</p>
<p><img src="https://www.himelmallick.org/post/metabolite_prediction/Image_1.png" class="img-fluid" alt="Title and abstract of the Nature Communications article 'Predictive metabolomic profiling of microbial communities using amplicon or metagenomic sequences'"></p>
<p>I hope you enjoy the read. Comments and feedback are always welcome :)</p>



 ]]></description>
  <category>Metagenomics</category>
  <category>Metabolomics</category>
  <category>Microbiome</category>
  <category>Multi-omics</category>
  <category>Data Science</category>
  <category>Research</category>
  <guid>https://www.himelmallick.org/post/metabolite_prediction/</guid>
  <pubDate>Wed, 17 Jul 2019 00:00:00 GMT</pubDate>
  <media:content url="https://www.himelmallick.org/post/metabolite_prediction/featured.jpg" medium="image" type="image/jpeg"/>
</item>
<item>
  <title>Nontraditional Collaboration: A Success Story at JSM 2016</title>
  <link>https://www.himelmallick.org/post/nontraditional_collaboration/</link>
  <description><![CDATA[ 





<div class="post-lead">
<img src="https://www.himelmallick.org/post/nontraditional_collaboration/featured.jpg" class="post-lead-image img-fluid" alt="Cover of the August 2018 issue of AMSTAT News">
</div>
<p>This is a repost backdated to match the original post that appeared in <a href="https://magazine.amstat.org/">AMSTAT News</a> in <a href="https://magazine.amstat.org/blog/2018/08/01/nontraditional-collaboration/">August 2018</a>. I hope you enjoy reading it :)</p>
<p><img src="https://www.himelmallick.org/post/nontraditional_collaboration/Image_1.jpg" class="img-fluid" alt="The AMSTAT News article 'Nontraditional Collaboration: A Success Story at JSM 2016'"></p>



 ]]></description>
  <category>Conference</category>
  <category>JSM</category>
  <category>Collaboration</category>
  <category>Research</category>
  <guid>https://www.himelmallick.org/post/nontraditional_collaboration/</guid>
  <pubDate>Wed, 01 Aug 2018 00:00:00 GMT</pubDate>
  <media:content url="https://www.himelmallick.org/post/nontraditional_collaboration/featured.jpg" medium="image" type="image/jpeg"/>
</item>
<item>
  <title>And they lived happily ever after - a microbial fairy tale of DNA and RNA</title>
  <link>https://www.himelmallick.org/post/happily_ever_after/</link>
  <description><![CDATA[ 





<div class="post-lead">
<img src="https://www.himelmallick.org/post/happily_ever_after/featured.png" class="post-lead-image img-fluid" alt="Cartoon of DNA and RNA as two characters standing under spotlights on a stage">
</div>
<p>This is a repost backdated to match the original post that appeared in <a href="https://naturemicrobiologycommunity.nature.com/">Nature Research Microbiology Community</a> in <a href="https://naturemicrobiologycommunity.nature.com/users/78027-himel-mallick/posts/29027-and-they-lived-happily-ever-after-a-microbial-fairy-tale-of-dna-and-rna">January 2018</a>. In case you are wondering, this post is a prelude to the <a href="https://www.nature.com/articles/s41564-017-0084-4">following publication</a>:</p>
<p><img src="https://www.himelmallick.org/post/happily_ever_after/Image_1.png" class="img-fluid" alt="Title and abstract of the Nature Microbiology article 'Metatranscriptome of human faecal microbial communities in a cohort of adult men'"></p>
<p>I hope you enjoy reading my first ever technical blog post as much as I enjoyed writing it :)</p>



 ]]></description>
  <category>Metagenomics</category>
  <category>Metatranscriptomics</category>
  <category>Microbiome</category>
  <category>Multi-omics</category>
  <category>Data Science</category>
  <category>Research</category>
  <guid>https://www.himelmallick.org/post/happily_ever_after/</guid>
  <pubDate>Mon, 15 Jan 2018 00:00:00 GMT</pubDate>
  <media:content url="https://www.himelmallick.org/post/happily_ever_after/featured.png" medium="image" type="image/png" height="81" width="144"/>
</item>
</channel>
</rss>
