<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Desmond Gilmour</title>
    <description>The latest articles on DEV Community by Desmond Gilmour (@dessygil).</description>
    <link>https://dev.to/dessygil</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1001318%2F27491975-c689-4a6e-b76b-cd60ba741d8b.JPEG</url>
      <title>DEV Community: Desmond Gilmour</title>
      <link>https://dev.to/dessygil</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/dessygil"/>
    <language>en</language>
    <item>
      <title>Your Antibody Barely Dissociates. How Much Can You Trust the Off-Rate?</title>
      <dc:creator>Desmond Gilmour</dc:creator>
      <pubDate>Mon, 02 Nov 2026 15:35:41 +0000</pubDate>
      <link>https://dev.to/dessygil/your-antibody-barely-dissociates-how-much-can-you-trust-the-off-rate-34ba</link>
      <guid>https://dev.to/dessygil/your-antibody-barely-dissociates-how-much-can-you-trust-the-off-rate-34ba</guid>
      <description>&lt;p&gt;An antibody binds its target. The dissociation phase starts. The curve barely moves.&lt;/p&gt;

&lt;p&gt;That can be encouraging. It also raises a question I keep returning to as I learn more about surface plasmon resonance, or SPR:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Did we observe enough dissociation to rank this antibody confidently?&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  A small off-rate needs a convincing curve
&lt;/h2&gt;

&lt;p&gt;SPR follows binding and dissociation in real time. The off-rate, written as &lt;code&gt;koff&lt;/code&gt;, describes how quickly a bound complex separates.&lt;/p&gt;

&lt;p&gt;A smaller value means slower dissociation under the conditions tested. The &lt;a href="https://www.ncbi.nlm.nih.gov/sites/books/NBK569501/" rel="noopener noreferrer"&gt;Assay Guidance Manual&lt;/a&gt; explains how these rates relate to binding affinity.&lt;/p&gt;

&lt;p&gt;Consider a hypothetical interaction with &lt;code&gt;koff = 0.00001 s⁻¹&lt;/code&gt;. Under a simple 1:1 model, the calculated loss of binding-specific signal after ten minutes is only &lt;strong&gt;about 0.6%&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That is a small change to build a candidate ranking around.&lt;/p&gt;

&lt;p&gt;The question becomes whether the assay can distinguish that movement from background drift, surface instability and measurement variability.&lt;/p&gt;

&lt;h2&gt;
  
  
  Check what is keeping the signal on the surface
&lt;/h2&gt;

&lt;p&gt;Before trusting a very slow off-rate, I would look at three things:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The background.&lt;/strong&gt; Reference and buffer-blank measurements help establish whether the small signal change belongs to the interaction. The captured material also needs to remain stable. &lt;a href="https://doi.org/10.1177/2472555220975358" rel="noopener noreferrer"&gt;Research on SPR surface design&lt;/a&gt; shows how loss of captured protein can complicate slow-dissociation measurements.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The binding arrangement.&lt;/strong&gt; A molecule can detach and bind again nearby. An antibody can also engage through both binding arms, creating avidity: the combined strength of multiple contacts. &lt;a href="https://pmc.ncbi.nlm.nih.gov/articles/PMC3307221/" rel="noopener noreferrer"&gt;Rebinding&lt;/a&gt; and &lt;a href="https://doi.org/10.1038/s41598-021-92280-2" rel="noopener noreferrer"&gt;bivalent binding&lt;/a&gt; can both slow apparent dissociation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The consistency.&lt;/strong&gt; Repeat the measurement, inspect the gaps between the data and fitted curve, and check whether a longer dissociation window supports the same result. Close candidates need differences large enough to stand above the assay’s variability.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A smooth fit becomes much more useful when the assay supports its assumptions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Temperature can reveal more of the interaction
&lt;/h2&gt;

&lt;p&gt;This is one reason I find the temperature flexibility of &lt;strong&gt;Alto Digital SPR&lt;/strong&gt; useful.&lt;/p&gt;

&lt;p&gt;In &lt;a href="https://nicoyalife.com/wp-content/uploads/2026/01/MM0074_01-Temperature-dependence-of-binding-kinetics-on-Alto.pdf" rel="noopener noreferrer"&gt;Nicoya’s temperature-dependence study&lt;/a&gt;, the tested antibody–antigen pair dissociated approximately &lt;strong&gt;5.6 times faster at 37°C than at 25°C&lt;/strong&gt;. Its measured affinity also weakened. These are manufacturer application data.&lt;/p&gt;

&lt;p&gt;That gives a scientist another useful measurement condition, especially when 37°C fits the biological question.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The temperature belongs with the result.&lt;/strong&gt; A value measured at 37°C describes that condition; it cannot replace an unresolved off-rate at 25°C. Candidate rankings should be compared under matched conditions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Equilibrium fitting gives you another route to affinity
&lt;/h2&gt;

&lt;p&gt;Alto also supports steady-state affinity fitting.&lt;/p&gt;

&lt;p&gt;This approach uses the binding response across concentrations after equilibrium has been reached to estimate &lt;code&gt;KD&lt;/code&gt;, the equilibrium dissociation constant. It provides another route to affinity without requiring separate estimates of both rate constants.&lt;/p&gt;

&lt;p&gt;The requirement is &lt;strong&gt;real equilibrium across an informative concentration range&lt;/strong&gt;. Tight-binding interactions can take a long time to get there, particularly at low concentrations, as &lt;a href="https://elifesciences.org/articles/57264" rel="noopener noreferrer"&gt;Jarmoskaite and colleagues demonstrate&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Equilibrium fitting can answer how tightly the partners bind. It does not, by itself, establish how quickly they separate.&lt;/p&gt;

&lt;h2&gt;
  
  
  Make confidence practical
&lt;/h2&gt;

&lt;p&gt;Nicoya lists &lt;a href="https://nicoyalife.com/alto/" rel="noopener noreferrer"&gt;16 parallel sensors, automated on-cartridge serial dilutions and sample volumes starting at 2 µL for Alto&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;What interests me is the room that creates for assay development: allocating material to replicates, checking surface loading and comparing candidates under matched conditions, with less manual dilution work.&lt;/p&gt;

&lt;p&gt;Before advancing a candidate on a tiny fitted off-rate, ask whether its ranking survives those checks. If two slow binders remain unresolved, report that clearly and choose the next experiment that can separate them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The goal is a candidate ranking you can defend with the measured data.&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Desmond Gilmour&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Email: &lt;a href="mailto:dgilmour@nicoyalife.com"&gt;dgilmour@nicoyalife.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Phone: +1 519-546-9876&lt;/p&gt;

&lt;p&gt;I work at Nicoya Lifesciences. The views expressed here are my own and do not necessarily reflect those of Nicoya. This is a personal publication, not an official company communication.&lt;/p&gt;

</description>
      <category>biophysics</category>
    </item>
    <item>
      <title>What Happens Before Your First HDX Time Point?</title>
      <dc:creator>Desmond Gilmour</dc:creator>
      <pubDate>Mon, 02 Nov 2026 03:51:50 +0000</pubDate>
      <link>https://dev.to/dessygil/what-happens-before-your-first-hdx-time-point-4oo3</link>
      <guid>https://dev.to/dessygil/what-happens-before-your-first-hdx-time-point-4oo3</guid>
      <description>&lt;p&gt;The first HDX time point shapes what you can learn about a protein.&lt;/p&gt;

&lt;p&gt;Once a region’s exchange has reached its plateau, collecting more late time points cannot recover the missing early kinetics.&lt;/p&gt;

&lt;p&gt;As I continue learning about protein dynamics, this is the question I keep coming back to: &lt;strong&gt;does the measurement window match the biology?&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Fast exchange deserves an earlier measurement
&lt;/h2&gt;

&lt;p&gt;Hydrogen–deuterium exchange mass spectrometry, or &lt;strong&gt;HDX-MS&lt;/strong&gt;, measures how certain hydrogens in a protein’s backbone exchange with deuterium, a heavier form of hydrogen.&lt;/p&gt;

&lt;p&gt;Researchers measure the resulting mass changes after different labeling periods. In a typical peptide-level workflow, digestion helps locate those changes along the protein’s sequence.&lt;/p&gt;

&lt;p&gt;Under matched experimental conditions, the exchange curves provide information about structural protection and flexibility. Weakly protected regions can exchange on the millisecond timescale, putting useful information ahead of measurements that begin several seconds later.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://doi.org/10.1021/acs.analchem.2c05310" rel="noopener noreferrer"&gt;Source: Kish et al., Analytical Chemistry, 2023&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Imagine two samples whose exchange curves differ early on but reach the same plateau. Start measuring after that plateau, and the difference is absent from the collected data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The experiment needs earlier measurements to resolve that early behavior.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Automation does not recover missing early data
&lt;/h2&gt;

&lt;p&gt;Automation makes complex experiments easier to run consistently. But an automated workflow can still collect its first measurement after the most informative part of a fast exchange curve has passed.&lt;/p&gt;

&lt;p&gt;For these regions, the important upgrade is access to an earlier observation window.&lt;/p&gt;

&lt;p&gt;A &lt;a href="https://doi.org/10.1021/acs.analchem.2c05310" rel="noopener noreferrer"&gt;2023 study by Kish and colleagues&lt;/a&gt; demonstrated this with &lt;strong&gt;ms2min&lt;/strong&gt;, an automated research system developed with Applied Photophysics/Nicoya which eventually become the FastHDX. The system measured labeling times from &lt;strong&gt;50 milliseconds to 300 seconds&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Measurements in the &lt;strong&gt;50–150 millisecond range&lt;/strong&gt; helped characterize weakly protected regions of glycogen phosphorylase, a large enzyme. The study showed how early sampling provides access to exchange behavior that is difficult to resolve at longer times.&lt;/p&gt;

&lt;p&gt;That is a concrete scientific reason to look beyond how smoothly a system runs and examine when it starts measuring.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bring the early time points into the workflow
&lt;/h2&gt;

&lt;p&gt;This is what draws my attention to &lt;strong&gt;FastHDX&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Nicoya’s &lt;a href="https://nicoyalife.com/fasthdx/" rel="noopener noreferrer"&gt;published specifications&lt;/a&gt; cover labeling times from &lt;strong&gt;50 milliseconds to 24 hours&lt;/strong&gt;. Researchers can investigate early exchange and follow more protected regions over longer periods using the same platform.&lt;/p&gt;

&lt;p&gt;Its automated quench-flow design controls labeling and quenching before transferring samples into compatible liquid chromatography–mass spectrometry workflows. That puts the early measurements into a controlled, automated process.&lt;/p&gt;

&lt;p&gt;The specified sample requirement is &lt;strong&gt;8 µL per time point&lt;/strong&gt;. For teams working with limited protein, that is a useful number for planning replicates, additional conditions, and a time course that covers the question properly.&lt;/p&gt;

&lt;p&gt;Together, those capabilities make millisecond HDX a practical part of experimental planning.&lt;/p&gt;

&lt;h2&gt;
  
  
  Choose the window that answers the question
&lt;/h2&gt;

&lt;p&gt;When evaluating an HDX workflow, I would start with the regions I need to understand and the exchange behavior I need to resolve.&lt;/p&gt;

&lt;p&gt;For rapidly exchanging regions, that means looking before the first second.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A well-run experiment starts measuring while the information you need is still distinguishable.&lt;/strong&gt; FastHDX brings that earlier window into an automated workflow, giving researchers more room to investigate the protein behavior that matters to their project.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Desmond Gilmour&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Email: &lt;a href="mailto:dgilmour@nicoyalife.com"&gt;dgilmour@nicoyalife.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Phone: +1 519-546-9876&lt;/p&gt;

&lt;p&gt;I work at Nicoya Lifesciences. The views expressed here are my own and do not necessarily reflect those of Nicoya. This is a personal publication, not an official company communication.&lt;/p&gt;

</description>
      <category>biophysics</category>
    </item>
    <item>
      <title>Could a Thermal Fingerprint Help Confirm Your Biologic’s Identity?</title>
      <dc:creator>Desmond Gilmour</dc:creator>
      <pubDate>Mon, 02 Nov 2026 03:47:47 +0000</pubDate>
      <link>https://dev.to/dessygil/could-a-thermal-fingerprint-help-confirm-your-biologics-identity-3ogm</link>
      <guid>https://dev.to/dessygil/could-a-thermal-fingerprint-help-confirm-your-biologics-identity-3ogm</guid>
      <description>&lt;p&gt;When a lab handles several biologic products, a simple question becomes important:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Does this sample match the material we expect?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;As I learn more about protein characterization, I’m seeing how much information sits inside a thermal unfolding curve. Alongside stability measurements, those profiles can help distinguish materials across a biologics portfolio.&lt;/p&gt;

&lt;p&gt;That makes &lt;strong&gt;SUPR-DSF&lt;/strong&gt; an interesting platform for this work: detailed fluorescence measurements, a 384-well format, and small sample volumes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Thermal fingerprints have already shown their value
&lt;/h2&gt;

&lt;p&gt;A &lt;a href="https://doi.org/10.1007/s11095-026-04220-2" rel="noopener noreferrer"&gt;recent peer-reviewed study in Pharmaceutical Research&lt;/a&gt; evaluated thermal-profile identity testing across 15 biopharmaceutical products.&lt;/p&gt;

&lt;p&gt;Its best-performing comparison method achieved &lt;strong&gt;100% specificity and 99.7% sensitivity&lt;/strong&gt;, excluding comparisons between the tested originator and its biosimilar, which the approach could not distinguish.&lt;/p&gt;

&lt;p&gt;The useful finding is that thermal unfolding profiles successfully separated a range of biologic products when compared against reference profiles using an objective scoring method and that is exactly what the SUPR-DSF can do.&lt;/p&gt;

&lt;h2&gt;
  
  
  Capture the information behind the melting temperature
&lt;/h2&gt;

&lt;p&gt;Intrinsic differential scanning fluorimetry, or DSF, follows a protein’s natural fluorescence as it is heated. Changes around fluorescent amino acids alter the measured signal as the protein unfolds.&lt;/p&gt;

&lt;p&gt;SUPR-DSF's software supports wavelength ratios and analysis of the spectrum’s average position.&lt;/p&gt;

&lt;p&gt;For method development, that flexibility matters. Teams can investigate which readout reveals useful differences between their samples and examine the unfolding profiles alongside melting temperatures.&lt;/p&gt;

&lt;p&gt;That is what interests me about full-spectrum acquisition: the experiment provides several ways to interrogate the fluorescence data.&lt;/p&gt;

&lt;h2&gt;
  
  
  Build a meaningful comparison into the plate
&lt;/h2&gt;

&lt;p&gt;Imagine a team evaluating several antibodies. They need reference materials, repeat measurements, and the other products that could realistically be confused.&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://nicoyalife.com/supr-dsf/" rel="noopener noreferrer"&gt;384-well format of SUPR-DSF&lt;/a&gt; provides room to organize those comparisons within a single plate.&lt;/p&gt;

&lt;p&gt;That capacity supports a stronger study design: multiple products alongside controls and replicates, with space to investigate relevant formulation conditions.&lt;/p&gt;

&lt;p&gt;For analytical-development scientists and teams working across several customer programs, the practical benefit is straightforward: more of the comparisons needed to assess a method can fit into the experiment.&lt;/p&gt;

&lt;h2&gt;
  
  
  Keep sample requirements manageable
&lt;/h2&gt;

&lt;p&gt;A broad comparison becomes easier to plan when each measurement uses a small amount of material.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.photophysics.com/product-pages/supr-dsf/" rel="noopener noreferrer"&gt;Applied Photophysics describes SUPR-DSF measurements using standard black 384-well PCR plates and seals, with volumes as low as 10 µL&lt;/a&gt;. Samples are prepared and measured in the same plate.&lt;/p&gt;

&lt;p&gt;That combines low sample-volume requirements with familiar consumables and avoids a separate transfer into individual measurement vessels.&lt;/p&gt;

&lt;p&gt;When materials are valuable or limited, those workflow details matter. They help make room in the sample budget for the repeat measurements and comparisons that build confidence in a result.&lt;/p&gt;

&lt;h2&gt;
  
  
  Start with the products you need to tell apart
&lt;/h2&gt;

&lt;p&gt;The next useful question is specific:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Which products or sample mix-ups would your method need to distinguish?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Use that answer to choose reference materials, assemble a representative sample panel, and define how matching profiles will be assessed.&lt;/p&gt;

&lt;p&gt;For me, the appeal of SUPR-DSF is clear: it brings together the fluorescence data, plate capacity, and sample efficiency needed to explore thermal fingerprinting in a practical workflow.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Desmond Gilmour&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Email: &lt;a href="mailto:dgilmour@nicoyalife.com"&gt;dgilmour@nicoyalife.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Phone: +1 519-546-9876&lt;/p&gt;

&lt;p&gt;I work at Nicoya Lifesciences. The views expressed here are my own and do not necessarily reflect those of Nicoya. This is a personal publication, not an official company communication.&lt;/p&gt;

</description>
      <category>biophysics</category>
    </item>
    <item>
      <title>Your RNA CD Spectrum Changed. What Does That Mean for Your Formulation?</title>
      <dc:creator>Desmond Gilmour</dc:creator>
      <pubDate>Mon, 02 Nov 2026 03:21:23 +0000</pubDate>
      <link>https://dev.to/dessygil/your-rna-cd-spectrum-changed-what-does-that-mean-for-your-formulation-363l</link>
      <guid>https://dev.to/dessygil/your-rna-cd-spectrum-changed-what-does-that-mean-for-your-formulation-363l</guid>
      <description>&lt;p&gt;Imagine changing the buffer around an RNA sample. Its circular dichroism spectrum shifts.&lt;/p&gt;

&lt;p&gt;What changed, and does it matter for the formulation?&lt;/p&gt;

&lt;p&gt;As I continue learning about nucleic-acid characterization, this is the question that keeps my attention. A changed curve can be a useful starting point. The next step is understanding what that change means for the sample and the decision in front of you.&lt;/p&gt;

&lt;h2&gt;
  
  
  A spectrum starts the conversation
&lt;/h2&gt;

&lt;p&gt;Circular dichroism, or &lt;strong&gt;CD&lt;/strong&gt;, measures the difference in absorption of left- and right-circularly polarized light. In DNA and RNA, it is sensitive to how the bases are arranged and stacked. That makes CD useful for examining structural changes in solution. &lt;a href="https://www.synchrotron-soleil.fr/en/news/deciphering-dna-and-rna-3d-structures-using-circular-dichroism" rel="noopener noreferrer"&gt;Synchrotron SOLEIL explains the underlying science here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Several structural contributions can overlap in one spectrum. Interpreting a change therefore takes more than spotting a shifted peak.&lt;/p&gt;

&lt;h2&gt;
  
  
  Following structure and stability together
&lt;/h2&gt;

&lt;p&gt;Consider a hypothetical buffer comparison. One condition gives a higher melting temperature, but it also changes the starting CD spectrum. I would want to understand whether it preserves the structure of interest before choosing it on thermal stability alone.&lt;/p&gt;

&lt;p&gt;This is where &lt;strong&gt;Chirascan V100&lt;/strong&gt; becomes relevant. It collects CD and absorbance together. I see that second signal as useful context when assessing strongly absorbing samples or buffers and deciding which parts of a spectrum are suitable for interpretation.&lt;/p&gt;

&lt;p&gt;With the appropriate temperature-control setup, Chirascan can also follow spectra during heating, connecting structural changes with thermal transitions. Comparing measurements before heating and after cooling can show whether the CD pattern returns. Biological activity would still need its own assessment.&lt;/p&gt;

&lt;p&gt;The practical appeal for a development team is being able to investigate the starting structure and its response to stress within the same platform.&lt;/p&gt;

&lt;h2&gt;
  
  
  Chirascan in published nucleic acid research
&lt;/h2&gt;

&lt;p&gt;In &lt;a href="https://pmc.ncbi.nlm.nih.gov/articles/PMC5320062/" rel="noopener noreferrer"&gt;a 2017 study by Vlasenok and colleagues&lt;/a&gt;, researchers used Chirascan for CD and absorbance measurements of imperfect G-quadruplex DNA: four-stranded structures with interruptions or defects. Their work included thermal measurements and studies involving small-molecule ligands.&lt;/p&gt;

&lt;p&gt;That is a concrete example of using the platform to investigate structure, stability, and interactions. An RNA formulation would need its own feasibility work, but the study illustrates the kinds of connected questions Chirascan can help researchers explore.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where NA-CDQuant fits
&lt;/h2&gt;

&lt;p&gt;A &lt;a href="https://doi.org/10.1073/pnas.2617882123" rel="noopener noreferrer"&gt;2026 PNAS paper&lt;/a&gt; introduces &lt;strong&gt;NA-CDQuant&lt;/strong&gt;, a research tool that estimates nucleic-acid structural contributions using 18 reference families derived mainly from synchrotron CD data. It points toward more quantitative interpretation of overlapping spectra.&lt;/p&gt;

&lt;p&gt;NA-CDQuant is separate research software. Its performance with Chirascan spectra and real formulations still needs validation. The authors also found reduced accuracy when restricting spectra to conventional CD wavelength ranges. For me, that reinforces the value of establishing usable spectral coverage before relying on a fitted result.&lt;/p&gt;

&lt;h2&gt;
  
  
  Start with the decision you need to make
&lt;/h2&gt;

&lt;p&gt;For a formulation comparison, I would start by establishing repeatable spectra, measuring the matching buffer, and accounting for concentration and cuvette path length. Those checks help separate a meaningful sample difference from a measurement problem. &lt;a href="https://pmc.ncbi.nlm.nih.gov/articles/PMC5334661/" rel="noopener noreferrer"&gt;Published guidance on nucleic-acid CD&lt;/a&gt; explains why these details matter.&lt;/p&gt;

&lt;p&gt;For teams working with RNA, antisense, or other oligonucleotides, that is the opportunity I see: build a structural comparison that helps decide which conditions deserve further investigation, supported by complementary measurements.&lt;/p&gt;

&lt;p&gt;If your formulation has changed and you want to understand the structural consequences, &lt;a href="https://nicoyalife.com/chirascan/" rel="noopener noreferrer"&gt;discuss whether your samples and spectral range are suitable for a Chirascan feasibility study&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;If you have questions about CD, protein stability and structure or how these systems could fit into your workflow, I’m happy to chat.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Desmond Gilmour&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Email: &lt;a href="mailto:dgilmour@nicoyalife.com"&gt;dgilmour@nicoyalife.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Phone: +1 519-546-9876&lt;/p&gt;

&lt;p&gt;I work at Nicoya Lifesciences. The views expressed here are my own and do not necessarily reflect those of Nicoya. This is a personal publication, not an official company communication.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>biophysics</category>
    </item>
    <item>
      <title>How I’m Using ChatGPT as My Personal Trainer</title>
      <dc:creator>Desmond Gilmour</dc:creator>
      <pubDate>Mon, 02 Nov 2026 00:30:52 +0000</pubDate>
      <link>https://dev.to/dessygil/how-im-using-chatgpt-as-my-personal-trainer-20ch</link>
      <guid>https://dev.to/dessygil/how-im-using-chatgpt-as-my-personal-trainer-20ch</guid>
      <description>&lt;p&gt;I’m using ChatGPT as my personal trainer, with Garmin, Tredict, and Hevy helping it work from my actual training data.&lt;/p&gt;

&lt;p&gt;I’m working toward a half-Ironman while continuing to build muscle and strength. It sounds like an impossible task but I'm hoping AI can help get me there. That means coordinating swimming, cycling, running, and lifting around real life.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;My goal is for AI to run the full training process: build my workouts, set progression targets, review what I complete, and adjust the next week.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  A ChatGPT Project holds the context
&lt;/h2&gt;

&lt;p&gt;I use a dedicated &lt;strong&gt;ChatGPT Project&lt;/strong&gt; for my training. Projects keep related chats, uploaded files, and instructions together, so I have somewhere to build an ongoing picture of my goals and progress.&lt;/p&gt;

&lt;p&gt;That includes my schedule, exercise preferences, training history, and feedback. I can also upload other records, such as bloodwork or guidance from a healthcare professional. It seems scary at first giving AI access to all this data but it's been very helpful thus far and I think worth sharing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Garmin, Tredict, and Hevy supply the training detail
&lt;/h2&gt;

&lt;p&gt;Each tool contributes something different:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;What it contributes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Garmin&lt;/td&gt;
&lt;td&gt;Recorded activities and available heart-rate, sleep, and recovery measurements.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tredict&lt;/td&gt;
&lt;td&gt;Supported Garmin data and endurance-training tools for AI review and planning communicating with ChatGPT.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hevy&lt;/td&gt;
&lt;td&gt;My exercises, sets, reps, weights, and workout notes and communicates with ChatGPT.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The whole idea is to have the data be accessible by my ChatGPT project while also have ChatGPT be able to write to these apps. At this point the ChatGPT project still needs to be prompted a few times to get exactly what I want but it's been great in developing a plan.&lt;/p&gt;

&lt;h2&gt;
  
  
  I want a trainer that adapts
&lt;/h2&gt;

&lt;p&gt;At the end of the week, I ask ChatGPT to review what I actually completed and build the next week around it.&lt;/p&gt;

&lt;p&gt;My feedback matters here. Recently, I skipped a Saturday session because it didn’t feel worth the gym trip based on the accessory exercises prescribed. I moved my Sunday leg day there in place of it, then ran and biked the following day.&lt;/p&gt;

&lt;p&gt;The next weekly plan will take into account for that change I made and spit out an entirely guided plan where I don't have a day of accessory work.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why I think more people should explore this
&lt;/h2&gt;

&lt;p&gt;Collecting useful health and training data gives me a record I can return to.&lt;/p&gt;

&lt;p&gt;Am I getting stronger? Am I completing the endurance work? Is the schedule realistic? What should change?&lt;/p&gt;

&lt;p&gt;AI can help organize those questions and propose a plan, but I want it to explain which records support each adjustment and flag missing information. I’m selective about sharing sensitive health records and checking app permissions.&lt;/p&gt;

&lt;p&gt;What excites me is having my goals, workout history, and feedback available in one ongoing training project.&lt;/p&gt;

&lt;p&gt;I hope this post can help get you on track! It's much cheaper to have an AI trainer and a few apps than to go to a personal training session once a week.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>chatgpt</category>
      <category>productivity</category>
    </item>
    <item>
      <title>AI-Designed Binders: From Predictions to Automated SPR Validation</title>
      <dc:creator>Desmond Gilmour</dc:creator>
      <pubDate>Mon, 26 Oct 2026 18:00:18 +0000</pubDate>
      <link>https://dev.to/dessygil/ai-designed-binders-from-predictions-to-automated-spr-validation-gij</link>
      <guid>https://dev.to/dessygil/ai-designed-binders-from-predictions-to-automated-spr-validation-gij</guid>
      <description>&lt;p&gt;If an AI model gives your team hundreds of promising protein designs, how quickly can you work out which ones deserve more attention?&lt;/p&gt;

&lt;p&gt;As I continue learning about protein design and biophysical analysis, I keep coming back to this question. Generating candidates is exciting. Building a practical way to evaluate them is what makes those predictions useful.&lt;/p&gt;

&lt;h2&gt;
  
  
  The prediction is where testing begins
&lt;/h2&gt;

&lt;p&gt;In its &lt;a href="https://www.anthropic.com/research/claude-scorpion-toxin-binder-design" rel="noopener noreferrer"&gt;October 20, 2026 report&lt;/a&gt;, Anthropic described a campaign that generated &lt;strong&gt;318,484 designs&lt;/strong&gt;, selected &lt;strong&gt;211 for experimental testing&lt;/strong&gt;, and identified &lt;strong&gt;17 that met its binder criteria&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Adaptyv Bio and Twist Bioscience used surface plasmon resonance, or &lt;strong&gt;SPR&lt;/strong&gt;, to investigate binding in different protein-production formats. The criteria included reproducibility, an affinity threshold and no detected binding to an unrelated control. One target was assessed by only one laboratory, so the evidence was not identical across all reported hits.&lt;/p&gt;

&lt;p&gt;The work explored possible antivenom research, but binding results did not establish neutralization or efficacy in living animals. It remains a company technical report and data release.&lt;/p&gt;

&lt;p&gt;The broader lesson for me is simple: &lt;strong&gt;a prediction becomes more useful when we can connect it to experimental evidence.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What SPR adds to the decision
&lt;/h2&gt;

&lt;p&gt;SPR follows binding near a sensor surface in real time. Its curves, called &lt;strong&gt;sensorgrams&lt;/strong&gt;, help show how quickly an interaction forms and how quickly it comes apart.&lt;/p&gt;

&lt;p&gt;That adds context to &lt;strong&gt;affinity&lt;/strong&gt;, often reported as KD: a lower value indicates tighter binding under the measured conditions.&lt;/p&gt;

&lt;p&gt;Before trusting a ranking, I would ask:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Does the binding result repeat?&lt;/li&gt;
&lt;li&gt;Do the controls support the claimed specificity?&lt;/li&gt;
&lt;li&gt;Do the curves support the fitted model and reported values?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Those questions matter because the measurement can also be influenced by the assay itself. For example, &lt;a href="https://doi.org/10.1006/abio.1996.0356" rel="noopener noreferrer"&gt;Schuck and Minton showed&lt;/a&gt; how molecular transport near a sensor can distort apparent binding rates.&lt;/p&gt;

&lt;p&gt;As candidate numbers grow, the practical challenge becomes collecting this evidence without creating an overwhelming preparation workload.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Alto’s cartridge design matters
&lt;/h2&gt;

&lt;p&gt;This is where I find the design of &lt;a href="https://nicoyalife.com/alto/" rel="noopener noreferrer"&gt;Alto digital SPR&lt;/a&gt; particularly relevant.&lt;/p&gt;

&lt;p&gt;Nicoya specifies &lt;strong&gt;16 channels&lt;/strong&gt;, sample inputs as low as &lt;strong&gt;2 µL&lt;/strong&gt;, and automated serial dilutions on the cartridge. Actual sample requirements depend on the assay. For teams working with limited protein, these capabilities can make it easier to plan comparisons, repeats and controls while keeping sample demands manageable.&lt;/p&gt;

&lt;p&gt;The automation advantage also starts with the consumable.&lt;/p&gt;

&lt;p&gt;Alto’s sensors, sample wells and assay fluid handling are integrated into a disposable cartridge. Its well spacing supports single- and eight-channel pipetting, and the cartridge is designed for robotic handling. That gives an automation team a defined unit to prepare, move and load. These features are described in the &lt;a href="https://nicoyalife.com/alto-automation-suite/" rel="noopener noreferrer"&gt;Alto Automation Suite documentation&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;For me, the useful benefit is the connection between sample preparation and measurement: the instrument can carry out programmed sample movements and dilutions after the cartridge is loaded.&lt;/p&gt;

&lt;h2&gt;
  
  
  Connecting SPR to a larger automated workflow
&lt;/h2&gt;

&lt;p&gt;The &lt;a href="https://nicoyalife.com/wp-content/uploads/2025/01/Alto-Automation-Suite-Product-Sheet.pdf" rel="noopener noreferrer"&gt;Alto Automation Suite&lt;/a&gt; adds an API—a software interface—for checking instrument status, starting runs and retrieving results. It follows SiLA 2 laboratory automation standards, and Nicoya provides preconfigured labware definitions and workflows for the Opentrons Flex.&lt;/p&gt;

&lt;p&gt;With the required liquid handling, robotic transfer and scheduling in place, the documented workcell supports unattended SPR operation.&lt;/p&gt;

&lt;p&gt;It also creates an interesting option for scaling: &lt;strong&gt;one shared liquid handler could prepare cartridges for multiple Alto instruments while those instruments run their assays.&lt;/strong&gt; The number it could support depends on preparation times, assay schedules, robotic access and sample-storage requirements, so that configuration needs to be validated during integration.&lt;/p&gt;

&lt;p&gt;The aim is to make experimental feedback easier to collect and connect to the original design.&lt;/p&gt;

&lt;h2&gt;
  
  
  Adding a stability check with SUPR-DSF
&lt;/h2&gt;

&lt;p&gt;Binding is one part of understanding a candidate. Its response to stress is another.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://nicoyalife.com/supr-dsf/" rel="noopener noreferrer"&gt;SUPR-DSF&lt;/a&gt; complements that workflow by measuring changes in a protein’s natural fluorescence during heating. Nicoya describes a &lt;strong&gt;384-well format&lt;/strong&gt;, &lt;strong&gt;10 µL sample volumes&lt;/strong&gt;, and standard qPCR plates and seals.&lt;/p&gt;

&lt;p&gt;That provides a practical way to compare thermal behaviour across suitable candidates or buffer conditions, using familiar consumables.&lt;/p&gt;

&lt;p&gt;Its plate format also supports automated sample preparation and robotic loading. A &lt;a href="https://nicoyalife.com/wp-content/uploads/2026/01/Protein-stability-screening-automation.pdf" rel="noopener noreferrer"&gt;manufacturer application note&lt;/a&gt; documents robotic loading and measurement of 16 plates, with sample preparation performed as separate modules.&lt;/p&gt;

&lt;p&gt;The methods answer different questions: SPR examines binding behaviour; DSF examines thermal unfolding behaviour. Intrinsic DSF needs a usable fluorescence signal, and a melting temperature alone does not establish shelf life or biological activity.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;These product capabilities describe potential workflows; the Anthropic campaign was not a demonstration of Alto or SUPR-DSF.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I’m taking from this
&lt;/h2&gt;

&lt;p&gt;For teams designing proteins with AI, I think the most useful next step is to plan the experimental feedback alongside the computational pipeline.&lt;/p&gt;

&lt;p&gt;Decide what evidence a candidate needs, then choose a workflow that makes collecting that evidence practical. Low sample requirements, automation-compatible consumables and connected instruments can help teams spend less time preparing samples and more time interpreting results.&lt;/p&gt;




&lt;p&gt;I work at Nicoya Lifesciences. The views expressed here are my own and do not necessarily reflect those of Nicoya. This is a personal publication, not an official company communication.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;These posts share my own perspective as I continue learning and are not official company statements.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;AI assisted with research and drafting.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;If you have questions about SPR, protein stability or how these systems could fit into your workflow, I’m happy to chat.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Desmond Gilmour&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Email: &lt;a href="mailto:dgilmour@nicoyalife.com"&gt;dgilmour@nicoyalife.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Phone: &lt;a href="tel:+15195469876"&gt;+1 519-546-9876&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>biotech</category>
      <category>machinelearning</category>
      <category>science</category>
    </item>
    <item>
      <title>Beyond Tm: What SUPR-DSF Adds to a Protein Stability Screen</title>
      <dc:creator>Desmond Gilmour</dc:creator>
      <pubDate>Mon, 19 Oct 2026 15:55:35 +0000</pubDate>
      <link>https://dev.to/dessygil/beyond-tm-what-supr-dsf-adds-to-a-protein-stability-screen-4lp</link>
      <guid>https://dev.to/dessygil/beyond-tm-what-supr-dsf-adds-to-a-protein-stability-screen-4lp</guid>
      <description>&lt;p&gt;If two formulations give your protein nearly the same melting temperature, how do you decide which one deserves further testing?&lt;/p&gt;

&lt;p&gt;As I continue learning about protein stability, I’m finding that &lt;strong&gt;what happens after heating can be just as useful as what happens during it.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That is what caught my attention about temperature cycling on SUPR-DSF.&lt;/p&gt;

&lt;h2&gt;
  
  
  What does melting temperature tell us?
&lt;/h2&gt;

&lt;p&gt;Intrinsic differential scanning fluorimetry, or &lt;strong&gt;intrinsic DSF&lt;/strong&gt;, tracks changes in a protein’s natural fluorescence as it heats up. These changes can reveal unfolding, the loss of its folded structure.&lt;/p&gt;

&lt;p&gt;The apparent melting temperature, &lt;strong&gt;Tm&lt;/strong&gt;, describes where an unfolding transition occurs. It is useful for comparing how proteins respond to heat under matched conditions. &lt;a href="https://doi.org/10.1021/acs.molpharmaceut.4c01496" rel="noopener noreferrer"&gt;Cohrs et al., 2025&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;However, a higher Tm does not automatically mean a better formulation. In one antibody study, Tm did not correlate with long-term aggregation rates during refrigerated or room-temperature storage. &lt;a href="https://doi.org/10.1016/j.xphs.2024.03.019" rel="noopener noreferrer"&gt;Rembert et al., 2024&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;So there is another question worth asking: &lt;strong&gt;does the protein recover when it cools down?&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What temperature cycling adds
&lt;/h2&gt;

&lt;p&gt;SUPR-DSF supports &lt;strong&gt;modulated scanning fluorimetry, or MSF&lt;/strong&gt;, which adds repeated heating and cooling cycles.&lt;/p&gt;

&lt;p&gt;After each heating step, the sample returns to a reference temperature. The instrument measures whether its fluorescence returns toward the starting signal. Increasing the heating temperature across successive cycles reveals when recovery begins to fail.&lt;/p&gt;

&lt;p&gt;This provides a &lt;strong&gt;nonreversibility onset temperature, Tnr&lt;/strong&gt;, alongside the unfolding information.&lt;/p&gt;

&lt;p&gt;There is research behind asking this question. In a study of 13 antibodies, those that resisted aggregation during storage at 40°C had higher nonreversibility onset temperatures. That makes reversibility a useful additional clue when choosing candidates for further testing. &lt;a href="https://doi.org/10.1021/acs.molpharmaceut.1c00017" rel="noopener noreferrer"&gt;Berner et al., 2021&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why the screening format matters
&lt;/h2&gt;

&lt;p&gt;A useful measurement also needs to fit the amount of protein, time, and budget available.&lt;/p&gt;

&lt;p&gt;SUPR-DSF uses as low as &lt;strong&gt;7 µL samples in plates with up to 384 wells&lt;/strong&gt;. Small sample volumes can help conserve material, while the plate capacity provides room for multiple buffers, additives, controls, and replicates.&lt;/p&gt;

&lt;p&gt;It also uses &lt;strong&gt;standard qPCR plates and seals&lt;/strong&gt;, which can help keep routine consumable costs down. For a lab comparing many conditions, those practical details can make a broader screen easier to manage.&lt;/p&gt;

&lt;h2&gt;
  
  
  How I would use the extra information
&lt;/h2&gt;

&lt;p&gt;Imagine two formulations with similar Tm values, but one loses fluorescence recovery earlier. That hypothetical result gives you a reason to investigate a difference that the melting temperatures alone missed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;My takeaway: use SUPR-DSF to compare both unfolding and recovery, then use those results to decide which formulations deserve the next round of testing.&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;I work at Nicoya Lifesciences. The views expressed here are my own and do not necessarily reflect those of Nicoya. This is a personal publication, not an official company communication.&lt;/p&gt;

</description>
      <category>learning</category>
      <category>science</category>
      <category>testing</category>
    </item>
    <item>
      <title>What Chirascan LD Reveals About Polymer Alignment</title>
      <dc:creator>Desmond Gilmour</dc:creator>
      <pubDate>Tue, 13 Oct 2026 02:23:24 +0000</pubDate>
      <link>https://dev.to/dessygil/what-chirascan-ld-reveals-about-polymer-alignment-2cb6</link>
      <guid>https://dev.to/dessygil/what-chirascan-ld-reveals-about-polymer-alignment-2cb6</guid>
      <description>&lt;p&gt;&lt;em&gt;By Desmond Gilmour&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;As part of my learning journey, I’ve been exploring how &lt;strong&gt;Chirascan linear dichroism, or LD, can help researchers understand polymers&lt;/strong&gt;. I wanted to share three papers that made this application clearer to me.&lt;/p&gt;

&lt;p&gt;What caught my attention was a simple idea: a material’s behaviour depends on how its parts are arranged. For polymer films and coatings, knowing whether those parts line up can help explain how the material interacts with light.&lt;/p&gt;

&lt;h2&gt;
  
  
  What LD measures
&lt;/h2&gt;

&lt;p&gt;LD compares how much light a sample absorbs in two directions of polarisation, set at right angles. Polarisation describes the direction in which light’s electric field vibrates.&lt;/p&gt;

&lt;p&gt;If the sample absorbs more strongly in one direction, that difference can reveal alignment among its light-absorbing parts. With a suitable absorption band, researchers can relate this to the arrangement of a polymer or its components.&lt;/p&gt;

&lt;p&gt;A Chirascan configured for LD measures that difference across wavelengths. This helps researchers investigate questions such as whether a coating process preserved alignment or how a polymer sits within a larger structure.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three papers that helped me understand the application
&lt;/h2&gt;

&lt;p&gt;The first two used Chirascan for LD. The third used its complementary CD capability to study polymer films.&lt;/p&gt;

&lt;h3&gt;
  
  
  1 Checking alignment in polymer coatings
&lt;/h3&gt;

&lt;p&gt;In &lt;a href="https://doi.org/10.1002/admi.202400608" rel="noopener noreferrer"&gt;a study published online in 2024&lt;/a&gt;, Khelifa and colleagues built coatings containing cellulose nanocrystals—tiny, rod-like particles—inside an acrylic polymer.&lt;/p&gt;

&lt;p&gt;They used &lt;strong&gt;Chirascan Plus LD&lt;/strong&gt; to study films with up to 50 layers. Turning the films changed the signal from positive to negative. Together with X-ray measurements, the results supported the conclusion that alignment was preserved as layers were added.&lt;/p&gt;

&lt;p&gt;For coating research, that is a useful contribution: Chirascan helped the team check whether their fabrication process maintained the internal structure they wanted.&lt;/p&gt;

&lt;h3&gt;
  
  
  2 Understanding how a polymer follows a template
&lt;/h3&gt;

&lt;p&gt;In &lt;a href="https://doi.org/10.1039/C5RA08302H" rel="noopener noreferrer"&gt;a 2015 paper in RSC Advances&lt;/a&gt;, Hanczyc and colleagues studied a polyfluorene derivative, a polymer with useful light-absorbing properties. They examined how it associated with thin protein fibres that acted as templates.&lt;/p&gt;

&lt;p&gt;Using &lt;strong&gt;Chirascan with an LD accessory&lt;/strong&gt;, they found evidence that the polymer backbones lined up along those fibres. The spectra also revealed differences between dissolved and aggregated forms attached to the fibres.&lt;/p&gt;

&lt;p&gt;LD added information about the polymer’s arrangement, helping the researchers interpret its optical behaviour. Separate laser measurements examined its ability to absorb two photons.&lt;/p&gt;

&lt;h3&gt;
  
  
  3 Exploring the optical behaviour of polymer films
&lt;/h3&gt;

&lt;p&gt;In &lt;a href="https://doi.org/10.1038/s41467-020-19951-y" rel="noopener noreferrer"&gt;a 2020 Nature Communications paper&lt;/a&gt;, Wade and colleagues used &lt;strong&gt;Chirascan CD&lt;/strong&gt; to study semiconducting polymer films.&lt;/p&gt;

&lt;p&gt;CD compares absorption of left- and right-handed circularly polarised light. The combined measurements linked the strong response in non-aligned films to local interactions within the material.&lt;/p&gt;

&lt;p&gt;This study shows another useful side of Chirascan for polymer research: investigating optical properties linked to handedness. LD and CD provide different pieces of information, and both can matter when developing materials that control light.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Chirascan stands out to me for this work
&lt;/h2&gt;

&lt;p&gt;What I find useful is the range of questions an appropriately configured Chirascan can address.&lt;/p&gt;

&lt;p&gt;Its &lt;a href="https://www.photophysics.com/product-pages/solid-sample-holder/" rel="noopener noreferrer"&gt;solid sample holder&lt;/a&gt; allows compatible films to be measured at different angles. For suitable elongated structures in liquid, the &lt;a href="https://www.photophysics.com/product-pages/couette-cell/" rel="noopener noreferrer"&gt;Couette cell for Chirascan VX and V100&lt;/a&gt; uses controlled flow to create alignment. Researchers can then measure how absorption changes with direction.&lt;/p&gt;

&lt;p&gt;That gives researchers ways to study both finished films and assemblies in liquid. The ability to investigate LD and CD also helps connect a material’s alignment with its wider optical behaviour.&lt;/p&gt;

&lt;p&gt;My takeaway from these papers is that &lt;strong&gt;Chirascan can help turn questions about polymer organisation into measurable evidence&lt;/strong&gt;. That is what makes this application interesting to me: understanding how a material’s structure contributes to what it does.&lt;/p&gt;

&lt;p&gt;I work at Nicoya Lifesciences. The views expressed here are my own and do not necessarily reflect those of Nicoya. This is a personal publication, not an official company communication.&lt;/p&gt;

</description>
      <category>learning</category>
      <category>science</category>
    </item>
    <item>
      <title>3D Spinning Molecule Using Avogadro, Blender and Three.js</title>
      <dc:creator>Desmond Gilmour</dc:creator>
      <pubDate>Sun, 30 Apr 2023 13:16:50 +0000</pubDate>
      <link>https://dev.to/dessygil/3d-spinning-molecule-using-avogadro-blender-and-threejs-2ai9</link>
      <guid>https://dev.to/dessygil/3d-spinning-molecule-using-avogadro-blender-and-threejs-2ai9</guid>
      <description>&lt;h1&gt;
  
  
  TL;DR
&lt;/h1&gt;

&lt;p&gt;In this blog post, we'll explore how to convert any molecule of interest into an .obj file, which will enable you to create and display molecular animations on your personal website.&lt;/p&gt;

&lt;h1&gt;
  
  
  Intro
&lt;/h1&gt;

&lt;p&gt;As a chemist and computer scientist, you might find your creativity expressed in various ways. When I come across well-designed tools or personal websites with engaging features, I tend to get excited about what they are doing. I imagine this might help you with the same.&lt;/p&gt;

&lt;h1&gt;
  
  
  What You Will build
&lt;/h1&gt;

&lt;p&gt;In this blog post, we'll guide you through adding a molecule to your personal site. The molecule displayed here is called epinephrine:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxcjkdun9r0j5arz4ob6j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxcjkdun9r0j5arz4ob6j.png" alt=" " width="350" height="558"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This will be done in two steps.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;We will create the object file based of this &lt;a href="https://www.youtube.com/watch?v=zXJKYvuCPYY" rel="noopener noreferrer"&gt;youtube video &lt;/a&gt;using Avogadro, OpenBabel and final blender.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Implement your new molecule object as a Next.js component.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h1&gt;
  
  
  Getting Started
&lt;/h1&gt;

&lt;p&gt;overing the entire process would result in an excessively long blog post, so we'll rely on a detailed YouTube video for the initial steps. This video will walk you through the creation of the .mol object, and its instructions can easily be adapted to different molecules.&lt;/p&gt;

&lt;p&gt;The only deviation from the video is that I exported the fully-created molecule as an '.fbx' file.&lt;/p&gt;

&lt;h1&gt;
  
  
  Building the component
&lt;/h1&gt;

&lt;p&gt;We'll briefly explain how to build this component before presenting the representative code.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Import necessary dependencies and a 3D model file in FBX format (Epinephrine.fbx).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create a functional component Molecule that uses the useRef hook to create a reference to a DOM element (the container for the 3D scene).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Use the useEffect hook to set up the Three.js scene when the component is mounted. This hook is called once when the component is mounted, and the clean-up function is called when the component is unmounted.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Inside the useEffect hook, create a new Three.js scene, camera, and renderer. The renderer is added to the container element (retrieved using the containerRef).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Load the 3D object (molecule) using the FBXLoader. Once the object is loaded, add it to the scene, set up lighting (ambient, directional, and point lights), and add the lights to the scene.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Define an animate function that animates the 3D object by rotating it around the Z-axis. The renderer then renders the scene, and the animate function is called again using requestAnimationFrame. This creates an animation loop.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;As a clean-up function, remove the renderer DOM element from the container and dispose of the renderer when the component is unmounted.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Render a div element with the reference to containerRef and a specified width and height, which serves as the container for the Three.js scene.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Full Code
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import React, { useRef, useEffect } from 'react';
import * as THREE from 'three';
import { FBXLoader } from 'three/examples/jsm/loaders/FBXLoader';
import molecule from "./Epinephrine.fbx";

export default function Molecule() {
    const containerRef = useRef();

    useEffect(() =&amp;gt; {

        const scene = new THREE.Scene();
        const camera = new THREE.PerspectiveCamera(
            75, 
            containerRef.current.clientWidth / containerRef.current.clientHeight,
            0.1, 
            2000 
        );
        camera.position.z = 625;


        // Create a Three.js renderer
        const renderer = new THREE.WebGLRenderer({ antialias: true, alpha: true });
        renderer.setClearColor(0x000000, 0);
        renderer.setSize(containerRef.current.clientWidth, containerRef.current.clientHeight);

        // Add the renderer to the container
        containerRef.current.appendChild(renderer.domElement);

        // Load the 3D object
        const loader = new FBXLoader();
        loader.load(molecule, (object) =&amp;gt; {
            object.rotation.x = Math.PI / 2;
            scene.add(object);
            const ambientLight = new THREE.AmbientLight(0xffffff, 0.5);
            scene.add(ambientLight);

            const directionalLight1 = new THREE.DirectionalLight(0xffffff, 0.5);
            directionalLight1.position.set(0, 1, 0);
            scene.add(directionalLight1);

            const directionalLight2 = new THREE.DirectionalLight(0xffffff, 0.5);
            directionalLight2.position.set(0, -1, 0);
            scene.add(directionalLight2);
            const directionalLight = new THREE.DirectionalLight(0xffffff, 1);
            directionalLight.position.set(-1, 1, 1);
            scene.add(directionalLight);

            const pointLight1 = new THREE.PointLight(0xffffff, 1, 100);
            pointLight1.position.set(-5, 5, 5);
            scene.add(pointLight1);

            const pointLight2 = new THREE.PointLight(0xffffff, 1, 100);
            pointLight2.position.set(5, -5, 5);
            scene.add(pointLight2);

            // Animate the object
            function animate() {
                object.rotation.z += 0.01;
                renderer.render(scene, camera);
                requestAnimationFrame(animate);
            }
            animate();
        });

    // Clean up
        return () =&amp;gt; {
            containerRef.current.removeChild(renderer.domElement);
            renderer.dispose();
        };
    }, []);

    return &amp;lt;div ref={containerRef} style={{
        width: '200px', 
        height: '300px',  
    }}/&amp;gt;;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you have any questions or want to discuss this further, feel free to reach out to me through the social media links available on my &lt;a href="https://desmondgilmour.com/" rel="noopener noreferrer"&gt;personal website&lt;/a&gt;. I'd be happy to help!&lt;/p&gt;

</description>
      <category>nextjs</category>
      <category>blender</category>
      <category>threej</category>
      <category>chemistry</category>
    </item>
    <item>
      <title>Lasso Highlighting In Datamol</title>
      <dc:creator>Desmond Gilmour</dc:creator>
      <pubDate>Mon, 17 Apr 2023 18:07:37 +0000</pubDate>
      <link>https://dev.to/dessygil/lasso-highlighting-in-datamol-36l3</link>
      <guid>https://dev.to/dessygil/lasso-highlighting-in-datamol-36l3</guid>
      <description>&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;p&gt;In this blog post, we'll explore the &lt;code&gt;lasso_highlight_image()&lt;/code&gt; function in Datamol, a Python library for scientists working with molecular data. We'll see how it can be used to highlight specific parts or features of a molecule quickly. We'll also provide some examples of how to use the function and discuss its limitations and areas for improvement for future contributors.&lt;/p&gt;

&lt;h2&gt;
  
  
  Intro
&lt;/h2&gt;

&lt;p&gt;If you work with chemical data and need to visualize it, you'll want to check out Datamol. This Python library has a new addition called lasso highlight, which was initially produced by &lt;a href="https://github.com/c-feldmann/lassohighlight" rel="noopener noreferrer"&gt;Christian W. Feldmann&lt;/a&gt;. The lasso highlighting function allows you to quickly identify and visualize specific parts or features of a molecule. It's useful for identifying functional groups, comparing and contrasting different molecules, and analyzing molecular structure and properties.&lt;/p&gt;

&lt;h2&gt;
  
  
  Examples
&lt;/h2&gt;

&lt;p&gt;To use the &lt;code&gt;lasso_highlight_image()&lt;/code&gt; function, you supply a molecule and specify the substructures you want to highlight. The function returns an image of the molecule with the specified substructures highlighted. You can provide the target and search molecules in SMILES format or as a rdkit.Chem.mol object. The function also takes parameters to specify the image type (PNG or SVG), size, and image characteristics.The details of each parameter can be found &lt;a href="https://github.com/datamol-io/datamol/blob/main/datamol/viz/_lasso_highlight.py#L375" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Here are two examples to help you get started: &lt;/p&gt;

&lt;p&gt;1.Lasso highlight with multiple substructures with PNG image&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import datamol as dm

target_molecule = "CO[C@@H](O)C1=C(O[C@H](F)Cl)C(C#N)=C1ONNC[NH3+]"
substructure = ["CONN", "N#CC~CO"]

dm.lasso_highlight_image(target_molecule, substructures, (400, 400), use_svg=False)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0n3wmykgj4jf9c5qbks4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0n3wmykgj4jf9c5qbks4.png" alt="Multi substructure highlighting" width="800" height="736"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Lasso highlight with single substructures with SVG image
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import datamol as dm

target_molecule = "CO[C@@H](O)C1=C(O[C@H](F)Cl)C(C#N)=C1ONNC[NH3+]"
substructure = dm.to_smarts("CONN")

dm.lasso_highlight_image(target_molecule, substructure, (300, 300))
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnvuzvwcyjfhe1phozcr9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnvuzvwcyjfhe1phozcr9.png" alt="Single substructure highlighting" width="744" height="478"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Limitations and What's Next
&lt;/h2&gt;

&lt;p&gt;Although the lasso_highlight_image() function is highly valuable, it does have a few limitations. To enhance its capabilities and overcome these constraints, the following features could be incorporated:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Add functionality to write to a file, similar to the &lt;code&gt;to_image()&lt;/code&gt; function in &lt;code&gt;Datamol/viz/viz.py&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Allow the analysis of multiple target molecules at once.&lt;/li&gt;
&lt;li&gt;Canonicalize search molecules to prevent duplicate highlighting.&lt;/li&gt;
&lt;li&gt;Update the documentation in &lt;code&gt;Visualization.ipynb&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you're interested in contributing to the project, check out the &lt;a href="https://datamol.io/" rel="noopener noreferrer"&gt;Datamol&lt;/a&gt; website and the &lt;a href="https://docs.datamol.io/stable/contribute.html" rel="noopener noreferrer"&gt;contribution guidelines&lt;/a&gt;. Alternatively, feel free to contact me from my social media on my &lt;a href="https://desmondgilmour.com/" rel="noopener noreferrer"&gt;personal website&lt;/a&gt; for any questions or feedback.&lt;/p&gt;

</description>
      <category>datamol</category>
      <category>rdkit</category>
      <category>python</category>
      <category>cheminformatics</category>
    </item>
    <item>
      <title>Contributing to RDKit</title>
      <dc:creator>Desmond Gilmour</dc:creator>
      <pubDate>Tue, 28 Mar 2023 19:26:06 +0000</pubDate>
      <link>https://dev.to/dessygil/contributing-to-rdkit-379b</link>
      <guid>https://dev.to/dessygil/contributing-to-rdkit-379b</guid>
      <description>&lt;p&gt;If you want to get into cheminformatics or AI/ML for drug discovery, you may have encountered RDKit. It is a great tool to help you analyze chemical information and is used in many labs, making it a great open-source tool to contribute to if you're looking to work in the biotech industry!&lt;/p&gt;

&lt;p&gt;I needed help figuring out how to contribute to the RDKit. However, one &lt;a href="https://greglandrum.github.io/rdkit-blog/posts/2020-03-30-setting-up-an-environment.html" rel="noopener noreferrer"&gt;tutorial&lt;/a&gt; explained it well, although I did need just a bit more help figuring out how to exactly to do it. I wrote this blog to provide an informal way to fill the gaps in case anyone else is missing a certain piece to building RDKit too. I was working on MacOS Ventura 13.1 when I built RDKit.&lt;/p&gt;

&lt;p&gt;The below steps will explain how to run, test, and ultimately contribute to the &lt;a href="https://github.com/rdkit/rdkit" rel="noopener noreferrer"&gt;RDKit&lt;/a&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  1. Fork and clone to your local machine
&lt;/h2&gt;

&lt;p&gt;You can do this a few different ways; choose whichever you like.&lt;/p&gt;

&lt;p&gt;Visit &lt;a href="https://github.com/rdkit/rdkit" rel="noopener noreferrer"&gt;RDkit's Github&lt;/a&gt; and fork the project.&lt;/p&gt;

&lt;p&gt;Once forked, go to the green button on the repo that says "&amp;lt;&amp;gt; Code" and copy the HTTPS URL from the dropdown.&lt;/p&gt;

&lt;p&gt;Open the folder you want to use and enter the command &lt;code&gt;git clone https://github.com/&amp;lt;YOURUSERNAME&amp;gt;/rdkit&lt;/code&gt; where  is replaced with your own.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Compile and Run RDKit on Your Machince
&lt;/h2&gt;

&lt;p&gt;Open the project folder in whichever source code editor you prefer. &lt;/p&gt;

&lt;p&gt;Make a conda environment using the below commands in your terminal...&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;conda create -c conda-forge -n my-rdkit-env rdkit
conda activate my-rdkit-env
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Followed by the commands below to help RDKit locate what it needs to...&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;export RDBASE=`pwd`
export DYLD_LIBRARY_PATH="$RDBASE/lib"
export PYTHONPATH="$RDBASE" 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You need to create your build folder and change the directory to it...&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mkdir cmake-build
cd cmake-build
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Use cmake called with the following flags. The &lt;code&gt;..&lt;/code&gt; after all the flags are essential for the command to navigate the files, do not exclude.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cmake -DPy_ENABLE_SHARED=1 -DBOOST_ROOT="$CONDA_PREFIX" -DBoost_NO_SYSTEM_PATHS=ON -DBoost_NO_BOOST_CMAKE=TRUE -DRDK_INSTALL_INTREE=ON -DRDK_INSTALL_STATIC_LIBS=OFF -DRDK_BUILD_CPP_TESTS=ON -DPYTHON_NUMPY_INCLUDE_PATH="$(python -c 'import numpy ; print(numpy.get_include())')" -DRDK_BUILD_CAIRO_SUPPORT=ON -DRDK_BUILD_FREETYPE_SUPPORT=ON ..
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now we will build the RDKit using the command below, don't be surprised if this takes 1 hour or longer. Luckily, you will only have to do this once, as CMake is smart enough to rebuild the files you have changed.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;(make -j 6 install ; find $RDBASE/rdkit -name \*.so -exec install_name_tool -add_rpath $RDBASE/lib {} \; -print )
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now you have a fully compiled and built RDKit you can use from here on out. You can use &lt;code&gt;ctest&lt;/code&gt; to ensure it runs and all test cases are successful. Typically you would like to run test from only one test file and to do that you would run something similar to &lt;code&gt;ctest -R &amp;lt;test_name&amp;gt;&lt;/code&gt; This way you can focus better on your own changes.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Finding an Issue and Making A Branch
&lt;/h2&gt;

&lt;p&gt;Now that everything is built, you can navigate to GitHub and pick an issue that interests you and branch to start working on this issue as such...&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git branch fixes-#&amp;lt;issue number&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Insert the issue number where  is; this way when your PR is merged, it automatically is linked to the issue so it can be removed.&lt;/p&gt;

&lt;p&gt;I hope this helps clarify building and contributing to RDKit. I would love feedback about potential changes I can add to this post, so please do not hesitate to share.&lt;/p&gt;

&lt;p&gt;Thanks for reading!&lt;/p&gt;

</description>
      <category>rdkit</category>
      <category>chemistry</category>
      <category>cpp</category>
      <category>python</category>
    </item>
    <item>
      <title>How to Automatically Update Resume On Your Personal Site From OverLeaf</title>
      <dc:creator>Desmond Gilmour</dc:creator>
      <pubDate>Mon, 27 Mar 2023 22:45:29 +0000</pubDate>
      <link>https://dev.to/dessygil/how-to-automatically-update-resume-on-your-personal-site-from-overleaf-1fld</link>
      <guid>https://dev.to/dessygil/how-to-automatically-update-resume-on-your-personal-site-from-overleaf-1fld</guid>
      <description>&lt;p&gt;I don't know about you, but I struggle with keeping track of the hundreds of iterations of my resume and keeping my website updated with the most recent one. So I thought to automate it.&lt;/p&gt;

&lt;p&gt;This post explains how to automatically update your resume from OverLeaf onto your personal website. This post is specific to paid users of OverLeaf since it is a paid feature to push from OverLeaf to GitHub&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open the drop-down where it says menu on the top left-hand side of your project. It will produce a drop-down, as shown in the picture below. Click sync to GitHub.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5k48iicvdnntufgkjqh3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5k48iicvdnntufgkjqh3.png" alt="Connect OverLeaf to Github" width="799" height="550"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Enter a repository name and a brief descriptions to and create the repository.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi9og48er0pesncdaqait.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi9og48er0pesncdaqait.png" alt="Create Repository" width="800" height="347"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Go to GitHub to see a new repository where only your latex file from OverLeaf should exist. In this repo, go to the Actions tab at the top, as shown in the picture below&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjvhr9yijtypv4vn41h7z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjvhr9yijtypv4vn41h7z.png" alt="Github actions tab" width="800" height="275"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create a new workflow, and then enter the code below. This code will create the PDF version of the latex file with every push into this repository. Each push will create a new release of your resume's latest iteration, and it will be an artifact attached to this. You may encounter an error based off the permission of the GitHub Action but this issue is explained well in this &lt;a href="https://github.com/softprops/action-gh-release/issues/236" rel="noopener noreferrer"&gt;post&lt;/a&gt;.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;name: Build LaTeX document
on: [push]
jobs:
  build_latex:
    runs-on: ubuntu-latest
    steps:
      - name: Set up Git repository
        uses: actions/checkout@v2
      - name: Compile LaTeX document
        uses: xu-cheng/latex-action@v2
        with:
          root_file: main.tex
      - name: Uploading artifact
        uses: actions/upload-artifact@v2
        with:
          name: PDF
          path: main.pdf
      - name: Get Time
        id: time
        uses: nanzm/get-time-action@v1.1
        with:
          timeZone: -5
          format: 'YYYY-MM-DD-HH-mm-ss'
      - name: Create Release
        id: create_release
        uses: softprops/action-gh-release@v1
        with:
          name: Resume compiled on ${{ steps.time.outputs.time }}
          tag_name: ${{ steps.time.outputs.time }}
      - name: Upload Release Asset
        id: upload-release-asset
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          upload_url: ${{ steps.create_release.outputs.upload_url }}
          asset_path: ./main.pdf
          asset_name:  resume-${{ steps.time.outputs.time }}.pdf
          asset_content_type: application/pdf
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Navigate to your program, where your download resume link exists. We will use GitHub's Graphql API to retrieve the download URL for the PDF version of your resume. &lt;a href="https://spacejelly.dev/posts/how-to-use-the-github-graphql-api-to-add-your-pinned-repositories-in-next-js-react/" rel="noopener noreferrer"&gt;Space Jelly&lt;/a&gt; explains the following code very well. This was placed at the top of Navbar React component of my personal project.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const [downloadableResume, setDownloadableResume] = useState();

  const baseUrl = "https://api.github.com/graphql";

  const httpLink = createHttpLink({
    uri: baseUrl,
  });

  const authLink = setContext((_, { headers }) =&amp;gt; {
    return {
      headers: {
        ...headers,
        authorization: `Bearer $${process.env.GITHUB_ACCESS_TOKEN}`,
      },
    };
  });

  const client = new ApolloClient({
    link: authLink.concat(httpLink),
    cache: new InMemoryCache(),
  });

  useEffect(() =&amp;gt; {
    client.query({
        query: gql`
        {
          viewer {
            login
          }
          repository(name: "resume", owner: "dessygil") {
            id
            releases(first: 1) {
              edges {
                node {
                  id
                  releaseAssets(first: 1) {
                    edges {
                      node {
                        downloadUrl
                      }
                    }
                  }
                }
              }
            }
          }
        }
        `,
      })
      .then((response) =&amp;gt; {
        setDownloadableResume(response.data.repository.releases.edges[0].node.releaseAssets.edges[0].node.downloadUrl);
      });
  }, []);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This should be all you need to build a fully automated pipeline for your personal website. If there is anything else that you would like to see added to this post, please don't hesitate to reach out.&lt;/p&gt;

</description>
      <category>graphql</category>
      <category>overleaf</category>
      <category>react</category>
      <category>resume</category>
    </item>
  </channel>
</rss>
