<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.9.0">Jekyll</generator><link href="https://open-research.gemmadanks.com/feed.xml" rel="self" type="application/atom+xml" /><link href="https://open-research.gemmadanks.com/" rel="alternate" type="text/html" /><updated>2026-06-05T09:20:51+01:00</updated><id>https://open-research.gemmadanks.com/feed.xml</id><title type="html">Gemma’s Open Research</title><subtitle>Gemma Danks' open research lab book including tutorials, articles and tips for programming, data science, machine learning and the research lifecycle.</subtitle><author><name>Gemma Danks</name></author><entry><title type="html">Extraterrestrial Intelligence: An International Petition</title><link href="https://open-research.gemmadanks.com/literature/eti-petition/" rel="alternate" type="text/html" title="Extraterrestrial Intelligence: An International Petition" /><published>2025-11-24T21:29:00+00:00</published><updated>2025-11-24T21:29:00+00:00</updated><id>https://open-research.gemmadanks.com/literature/eti-petition</id><content type="html" xml:base="https://open-research.gemmadanks.com/literature/eti-petition/">&lt;p&gt;In a paper in 1982 &lt;a class=&quot;citation&quot; href=&quot;#saganExtraterrestrialIntelligenceInternational1982&quot;&gt;[1]&lt;/a&gt;, astronomer and science communicator &lt;a href=&quot;https://en.wikipedia.org/wiki/Carl_Sagan&quot;&gt;Carl Sagan&lt;/a&gt;, together with 68 other leading scientists in the fields of astronomy and biology, published &lt;a href=&quot;https://www.science.org/doi/10.1126/science.218.4571.426.b&quot;&gt;a letter&lt;/a&gt; in the prestigious research journal &lt;a href=&quot;https://www.science.org&quot;&gt;Science&lt;/a&gt; petitioning for an international coordinated systematic search for extraterrestrial intelligence (ETI) to begin immediately.&lt;/p&gt;

&lt;p&gt;Here are my notes on this letter. You can find my notes on other classic SETI papers in my &lt;a href=&quot;https://open-research.gemmadanks.com/literature/technosignatures-literature-roundup/&quot;&gt;roundup of the technosignatures literature&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&quot;the-result-of-a-thorough-search-for-eti-would-be-profound&quot;&gt;The result of a thorough search for ETI would be profound&lt;/h2&gt;
&lt;p&gt;Sagan et al. argued that public support existed for a search for ETI and that either a positive or negative result would have profound implications for our view of the universe. A systematic international effort would be low cost and a million times more thorough than any search done thus far.&lt;/p&gt;

&lt;h2 id=&quot;the-technology-for-detecting-eti-is-already-available&quot;&gt;The technology for detecting ETI is already available&lt;/h2&gt;
&lt;p&gt;Technology in the 80s was already able to detect radio signals from extraterrestrial civilisations, with an equivalent level of technology to our own, 1000s of light years away.&lt;/p&gt;

&lt;p&gt;This is still true today and when the square kilometer array (SKA) is operational it will &lt;a href=&quot;https://www.skao.int/en/explore/science-goals/145/seeking-origins-life&quot;&gt;increase the searchable volume of our galaxy by a factor of 1,000&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&quot;the-absence-of-evidence-for-advanced-extraterrestrial-civilisations-is-not-enough&quot;&gt;The absence of evidence for advanced extraterrestrial civilisations is not enough&lt;/h2&gt;
&lt;p&gt;By 1982, there were several publications that argued that because intelligent extraterrestrial beings were not already here, they do not exist &lt;a class=&quot;citation&quot; href=&quot;#hartExplanationAbsenceExtraterrestrials1975&quot;&gt;[2,3]&lt;/a&gt;. Sagan et al. argued that this line of reasoning relies heavily on extrapolation of technological capabilities. A radio search, however, assumes technology no more advanced than our own. The authors concluded that a priori arguments are not a substitute for an observational program.&lt;/p&gt;

&lt;h2 id=&quot;the-search-should-begin-now-in-the-80s&quot;&gt;The search should begin now (in the 80s)&lt;/h2&gt;
&lt;p&gt;The authors argued that detecting radio signals from ETI will become harder as time goes on due to increasing radio frequency interference (RFI) generated by humanity. They petitioned for an observational program to begin immediately.&lt;/p&gt;

&lt;p&gt;Certain radio frequency bands are still protected for radio astronomy (including bands 1400–1427 MHz and 1660.6–1670.0 MHz that sit in &lt;a href=&quot;https://open-research.gemmadanks.com/literature/water-hole-rationale/&quot;&gt;the ‘water hole’&lt;/a&gt;, which is 1420 to 1662 MHz and argued to be a strong candidate band for beacons from ETI). This protection is orchestrated by the &lt;a href=&quot;https://www.itu.int/en/Pages/default.aspx&quot;&gt;International Telecommunication Union (ITU)&lt;/a&gt;. The increase in RFI has nevertheless certainly come to pass and, unforeseen in the 80s, has been exacerbated by the deployment of satellite constellations in low Earth orbit (you can see a 3D visualisation at &lt;a href=&quot;https://satellitetracker3d.com/track&quot;&gt;this tracking site&lt;/a&gt;) – there are over 10,000 currently in orbit with many more planned. These have intentional transmissions in the unprotected radio bands as well as unintentional emissions in the low radio frequency range &lt;a class=&quot;citation&quot; href=&quot;#vrunoUnintendedElectromagneticRadiation2023&quot;&gt;[4]&lt;/a&gt; – both can interfere with detecting faint radio signals from space.&lt;/p&gt;

&lt;h2 id=&quot;summary&quot;&gt;Summary&lt;/h2&gt;
&lt;p&gt;This short letter petitioned for a systematic international search effort to detect radio signals from extraterrestrial intelligence. It summarised the main arguments and was signed by leading scientists across the globe.&lt;/p&gt;

&lt;h2 id=&quot;references&quot;&gt;References&lt;/h2&gt;

&lt;ol class=&quot;bibliography&quot;&gt;&lt;li&gt;&lt;span id=&quot;saganExtraterrestrialIntelligenceInternational1982&quot;&gt;1. Sagan C: &lt;b&gt;Extraterrestrial Intelligence: An International Petition&lt;/b&gt;. &lt;i&gt;Science&lt;/i&gt; 1982, &lt;b&gt;218&lt;/b&gt;:426–426.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span id=&quot;hartExplanationAbsenceExtraterrestrials1975&quot;&gt;2. Hart MH: &lt;b&gt;Explanation for the Absence of Extraterrestrials on Earth&lt;/b&gt;. &lt;i&gt;Quarterly Journal of the Royal Astronomical Society&lt;/i&gt; 1975, &lt;b&gt;16&lt;/b&gt;:128.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span id=&quot;tiplerExtraterrestrialIntelligentBeings1980&quot;&gt;3. Tipler FJ: &lt;b&gt;Extraterrestrial Intelligent Beings Do Not Exist&lt;/b&gt;. &lt;i&gt;Quarterly Journal of the Royal Astronomical Society&lt;/i&gt; 1980, &lt;b&gt;21&lt;/b&gt;:267–281.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span id=&quot;vrunoUnintendedElectromagneticRadiation2023&quot;&gt;4. Vruno FD, Winkel B, Bassa CG, Józsa GIG, Brentjens MA, Jessner A, Garrington S: &lt;b&gt;Unintended Electromagnetic Radiation from Starlink Satellites Detected with LOFAR between 110 and 188 MHz&lt;/b&gt;. &lt;i&gt;Astronomy &amp;amp; Astrophysics&lt;/i&gt; 2023, &lt;b&gt;676&lt;/b&gt;:A75.&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;

&lt;script id=&quot;MathJax-script&quot; async=&quot;&quot; src=&quot;https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js&quot;&gt;&lt;/script&gt;</content><author><name>Gemma Danks</name></author><category term="literature" /><category term="research" /><category term="astrobiology" /><category term="technosignatures" /><category term="literature" /><category term="summary" /><category term="seti" /><summary type="html">In a paper in 1982 [1], astronomer and science communicator Carl Sagan, together with 68 other leading scientists in the fields of astronomy and biology, published a letter in the prestigious research journal Science petitioning for an international coordinated systematic search for extraterrestrial intelligence (ETI) to begin immediately.</summary></entry><entry><title type="html">Technosignatures literature roundup</title><link href="https://open-research.gemmadanks.com/literature/technosignatures-literature-roundup/" rel="alternate" type="text/html" title="Technosignatures literature roundup" /><published>2025-11-24T21:20:00+00:00</published><updated>2025-11-24T21:20:00+00:00</updated><id>https://open-research.gemmadanks.com/literature/technosignatures-literature-roundup</id><content type="html" xml:base="https://open-research.gemmadanks.com/literature/technosignatures-literature-roundup/">&lt;p&gt;Reviewing the literature is an important part of the &lt;a href=&quot;https://open-research.gemmadanks.com/planning/my-research-process/&quot;&gt;research process&lt;/a&gt;. It gives you a deeper knowledge of the field and prevents you re-inventing the wheel. As part of my open research project (currently &lt;a href=&quot;https://open-research.gemmadanks.com/planning/my-next-research-topic-technosignatures/&quot;&gt;focussed on exoplanet technosignatures&lt;/a&gt;) I am documenting my review of the literature by writing summaries of important concepts and interesting papers I come across.&lt;/p&gt;

&lt;p&gt;It is a good idea to read some historical papers when getting to know a new field. Early papers put more recent studies into context and ensure that you are not relying on citations that may or may not accurately represent previous research. There are always key references that are cited over and over again. It is also interesting to see how attitudes to different ideas change over time.&lt;/p&gt;

&lt;p&gt;After reading a few modern studies, I decided to refocus my efforts on some classic SETI papers to get a better grounding in how the field began.&lt;/p&gt;

&lt;p&gt;This post tracks the papers I and have read together with my core “to-read” list. This list is incomplete and dynamic since there will always be new citation trails to follow as I read more papers.&lt;/p&gt;

&lt;p&gt;For each paper I’ve read I include links to the publication followed by links to my notes and/or notebooks.&lt;/p&gt;

&lt;h1 id=&quot;technosignature-papers-read&quot;&gt;Technosignature papers read&lt;/h1&gt;

&lt;ul&gt;
  &lt;li&gt;Kaltenegger L, Faherty JK: &lt;a href=&quot;https://www.nature.com/articles/s41586-021-03596-y&quot;&gt;Past, Present and Future Stars That Can See Earth as a Transiting Exoplanet.&lt;/a&gt; Nature 2021, 594:505–507
    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;https://open-research.gemmadanks.com/literature/what-exoplanets-can-see-earth/&quot;&gt;What exoplanets can see technosignatures from Earth?&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Cocconi G, Morrison P: &lt;a href=&quot;https://www.nature.com/articles/184844a0&quot;&gt;Searching for Interstellar Communications.&lt;/a&gt; Nature 1959, 184:844–846.
    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;https://open-research.gemmadanks.com/literature/search-for-interstellar-communications/&quot;&gt;The search for interstellar communications&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;https://github.com/gemmadanks/technosignatures/blob/main/radio-seti/interstellar-communications/interstellar-communications.ipynb&quot;&gt;Jupyter notebook&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Bracewell RN: &lt;a href=&quot;https://www.nature.com/articles/186670a0&quot;&gt;Communications from Superior Galactic Communities.&lt;/a&gt; Nature 1960, 186:670–671.
    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;https://open-research.gemmadanks.com/literature/communications-superior-galactic-communities/&quot;&gt;Communications from superior galactic communities&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Drake FD: &lt;a href=&quot;https://physicstoday.scitation.org/doi/10.1063/1.3057500&quot;&gt;Project Ozma.&lt;/a&gt; Physics Today 1961, 14:40–46.
    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;https://open-research.gemmadanks.com/literature/project-ozma/&quot;&gt;Project Ozma&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Dyson FJ: &lt;a href=&quot;https://www.science.org/doi/10.1126/science.131.3414.1667&quot;&gt;Search for Artificial Stellar Sources of Infrared Radiation.&lt;/a&gt; Science 1960, 131:1667–1668.
    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;https://open-research.gemmadanks.com/literature/dyson-spheres/&quot;&gt;Dyson spheres&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Schwartz RN, Townes CH: &lt;a href=&quot;https://www.nature.com/articles/190205a0&quot;&gt;Interstellar and Interplanetary Communication by Optical Masers.&lt;/a&gt; Nature 1961, 190:205–208.
    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;https://open-research.gemmadanks.com/literature/origins-of-optical-seti/&quot;&gt;Interstellar communications by optical masers&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Kardashev NS: &lt;a href=&quot;https://adsabs.harvard.edu/full/1964SvA.....8..217K&quot;&gt;Transmission of Information by Extraterrestrial Civilizations.&lt;/a&gt; Soviet Astronomy 1964, 8:217.
    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;https://open-research.gemmadanks.com/literature/kardashev-civilisations/&quot;&gt;Kardashev classification scheme for extraterrestrial civilisations&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Drake FD: &lt;a href=&quot;https://www.elsevier.com/books/current-aspects-of-exobiology/mamikunian/978-1-4832-0047-7&quot;&gt;THE RADIO SEARCH FOR INTELLIGENT EXTRATERRESTRIAL LIFE.&lt;/a&gt; In Current Aspects of Exobiology. Elsevier; 1965:323–345.
    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;https://open-research.gemmadanks.com/literature/drake-equation/&quot;&gt;The Drake Equation&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Hoerner SV: &lt;a href=&quot;http://www.jstor.org/stable/1707703&quot;&gt;The Search for Signals from Other Civilizations.&lt;/a&gt; Science, New Series 1961, 134:1839–1843.
    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;https://open-research.gemmadanks.com/literature/waiting-times-and-longevity/&quot;&gt;Waiting times and longevity&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://ntrs.nasa.gov/citations/19730010095&quot;&gt;Project Cyclops: a Design Study of a System for Detecting Extraterrestrial Intelligent Life.&lt;/a&gt; 1972.
    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;https://open-research.gemmadanks.com/literature/project-cyclops-part-i&quot;&gt;Project Cyclops Part I&lt;/a&gt;&lt;/li&gt;
      &lt;li&gt;&lt;a href=&quot;https://open-research.gemmadanks.com/literature/project-cyclops-part-ii&quot;&gt;Project Cyclops Part II&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Dixon RS: &lt;a href=&quot;https://www.sciencedirect.com/science/article/abs/pii/001910357390050X&quot;&gt;A search strategy for finding extraterrestrial radio beacons.&lt;/a&gt; Icarus 1973, 20:187–199.
    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;https://open-research.gemmadanks.com/literature/radio-seti-search-strategy/&quot;&gt;A search strategy for finding extraterrestrial radio beacons&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Hart MH: &lt;a href=&quot;https://adsabs.harvard.edu/full/1975QJRAS..16..128H&quot;&gt;Explanation for the Absence of Extraterrestrials on Earth.&lt;/a&gt; Quarterly Journal of the Royal Astronomical Society 1975, 16:128.
    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;https://open-research.gemmadanks.com/literature/why-extraterrestrials-are-not-on-earth/&quot;&gt;Why are extraterrestrials not on Earth?&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;The Staff at the National Astronomy: &lt;a href=&quot;https://doi.org/10.1016/0019-1035(75)90116-5&quot;&gt;The Arecibo message of November, 1974.&lt;/a&gt; Icarus 1975, 26:462–466.
    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;https://open-research.gemmadanks.com/literature/arecibo&quot;&gt;The Arecibo message of 1974&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Oliver B M: &lt;a href=&quot;https://www.sciencedirect.com/science/article/abs/pii/0094576579901486?via%3Dihub&quot;&gt;Rationale for the water hole.&lt;/a&gt; Acta Astronautica 1979, 6:71–79.
    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;https://open-research.gemmadanks.com/literature/water-hole-rationale/&quot;&gt;Rationale for the water hole&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Tipler FJ: &lt;a href=&quot;https://doi.org/10.1063/1.2914542&quot;&gt;Extraterrestrial intelligent beings do not exist.&lt;/a&gt; Quarterly Journal of the Royal Astronomical Society 1980, 21:267–281.
    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;https://open-research.gemmadanks.com/literature/eti-does-not-exist/&quot;&gt;ETI does not exist&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Sagan C: &lt;a href=&quot;https://www.science.org/doi/10.1126/science.218.4571.426.b&quot;&gt;Extraterrestrial Intelligence: An International Petition&lt;/a&gt;. Science 1982, 218:426–426.
    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;https://open-research.gemmadanks.com/literature/eti-petition&quot;&gt;Extraterrestrial Intelligence: An International Petition&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h1 id=&quot;technosignature-papers-currently-reading&quot;&gt;Technosignature papers currently reading&lt;/h1&gt;
&lt;ul&gt;
  &lt;li&gt;Lord S, Dixon R, Healy T: &lt;a href=&quot;https://ntrs.nasa.gov/citations/19820016111&quot;&gt;Project OASIS: The Design of a Signal Detector for the Search for Extraterrestrial Intelligence&lt;/a&gt;. 1981.
    &lt;ul&gt;
      &lt;li&gt;&lt;a href=&quot;https://open-research.gemmadanks.com/literature/project-oasis-part-i/&quot;&gt;Project Oasis - part I&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h1 id=&quot;technosignature-papers-to-read&quot;&gt;Technosignature papers to-read&lt;/h1&gt;
&lt;ol&gt;
  &lt;li&gt;Sagan C, Newman WI: The Solipsist Approach to Extraterrestrial Intelligence. Quarterly Journal of the Royal Astronomical Society 1983, 24:113.&lt;/li&gt;
  &lt;li&gt;Townes CH: At what wavelengths should we search for signals from extraterrestrial intelligence? 1983, doi:https://doi.org/10.1073/pnas.80.4.1147.&lt;/li&gt;
  &lt;li&gt;Horowitz P, Sagan C, Horowitz P, Sagan C: Five Years of Project META: an All-Sky Narrow-Band Radio Search for Extraterrestrial Signals. ApJ 1993, 415:218.&lt;/li&gt;
  &lt;li&gt;Tarter J: THE SEARCH FOR EXTRATERRESTRIAL INTELLIGENCE (SETI). 2001.&lt;/li&gt;
  &lt;li&gt;Tarter JC, Agrawal A, Ackermann R, Backus P, Blair SK, Bradford MT, Harp GR, Jordan J, Kilsdonk T, Smolek KE, et al.: SETI turns 50: five decades of progress in the search for extraterrestrial intelligence. 2010, 7819:781902.&lt;/li&gt;
  &lt;li&gt;Shuch HP: Searching for Extraterrestrial Intelligence: SETI Past, Present, and Future. Springer Berlin Heidelberg; 2011.&lt;/li&gt;
  &lt;li&gt;Isaacson H, Siemion APV, Marcy GW, Lebofsky M, Price DC, MacMahon D, Croft S, DeBoer D, Hickish J, Werthimer D, et al.: The Breakthrough Listen Search for Intelligent Life: Target Selection of Nearby Stars and Galaxies. PASP 2017, 129:054501.&lt;/li&gt;
  &lt;li&gt;Worden SP, Drew J, Siemion A, Werthimer D, DeBoer D, Croft S, MacMahon D, Lebofsky M, Isaacson H, Hickish J, et al.: Breakthrough Listen – A new search for life in the universe. Acta Astronautica 2017, 139:98–101.&lt;/li&gt;
  &lt;li&gt;Wright JT, Kanodia S, Lubar E: How Much SETI Has Been Done? Finding Needles in the n-dimensional Cosmic Haystack. AJ 2018, 156:260.&lt;/li&gt;
  &lt;li&gt;Lebofsky M, Croft S, Siemion APV, Price DC, Enriquez JE, Isaacson H, MacMahon DHE, Anderson D, Brzycki B, Cobb J, et al.: The Breakthrough Listen Search for Intelligent Life: Public Data, Formats, Reduction and Archiving. PASP 2019, 131:124505.&lt;/li&gt;
  &lt;li&gt;Price DC, Enriquez JE, Brzycki B, Croft S, Czech D, DeBoer D, DeMarines J, Foster G, Gajjar V, Gizani N, et al.: The Breakthrough Listen Search for Intelligent Life: Observations of 1327 Nearby Stars Over 1.10–3.45 GHz. The Astronomical Journal 2020, 159:86.&lt;/li&gt;
  &lt;li&gt;Sheikh SZ, Siemion A, Enriquez JE, Price DC, Isaacson H, Lebofsky M, Gajjar V, Kalas P: The Breakthrough Listen Search for Intelligent Life: A 3.95-8.00 GHz Search for Radio Technosignatures in the Restricted Earth Transit Zone. AJ 2020, 160:29.&lt;/li&gt;
  &lt;li&gt;Wright J: Dyson spheres. Serb Astron J 2020, doi:10.2298/SAJ2000001W.&lt;/li&gt;
  &lt;li&gt;Traas R, Croft S, Gajjar V, Isaacson H, Lebofsky M, MacMahon DHE, Perez K, Price DC, Sheikh S, Siemion APV, et al.: The Breakthrough Listen Search for Intelligent Life: Searching for Technosignatures in Observations of TESS Targets of Interest. AJ 2021, 161:286.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id=&quot;online-lists-of-technosignature-papers&quot;&gt;Online lists of technosignature papers&lt;/h2&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://technosearch.seti.org/&quot;&gt;Technosearch&lt;/a&gt; is an online tool tracking SETI papers since 1960.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://sites.psu.edu/seticourse/the-papers/&quot;&gt;List of SETI papers from a Penn State graduate course in SETI&lt;/a&gt;. I am planning to read as many of these as possible. A talk by &lt;a href=&quot;https://sites.psu.edu/astrowright/jason-t-wright-assistant-professor-of-astronomy-and-astrophysics/&quot;&gt;Jason Wright&lt;/a&gt; from &lt;a href=&quot;https://www.psu.edu/&quot;&gt;Pennsylvania State University&lt;/a&gt; as part of a &lt;a href=&quot;https://seec.gsfc.nasa.gov/Events/technosignatureSeminars.html&quot;&gt;technosignature seminar series&lt;/a&gt; hosted by the &lt;a href=&quot;https://seec.gsfc.nasa.gov/about.html&quot;&gt;Sellers Exoplanet Environments Collaboration (SEEC)&lt;/a&gt; at &lt;a href=&quot;https://www.nasa.gov/goddard&quot;&gt;NASA’s Goddard Space Flight Center&lt;/a&gt; gives a nice overview of SETI research and points towards the course site for further resources. There is also some nice perspectives on some of these papers by previous students there.&lt;/li&gt;
&lt;/ul&gt;

&lt;ol class=&quot;bibliography&quot;&gt;&lt;/ol&gt;

&lt;script id=&quot;MathJax-script&quot; async=&quot;&quot; src=&quot;https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js&quot;&gt;&lt;/script&gt;</content><author><name>Gemma Danks</name></author><category term="literature" /><category term="research" /><category term="astrobiology" /><category term="technosignatures" /><category term="literature" /><category term="seti" /><category term="planning" /><summary type="html">Reviewing the literature is an important part of the research process. It gives you a deeper knowledge of the field and prevents you re-inventing the wheel. As part of my open research project (currently focussed on exoplanet technosignatures) I am documenting my review of the literature by writing summaries of important concepts and interesting papers I come across.</summary></entry><entry><title type="html">My software development process</title><link href="https://open-research.gemmadanks.com/planning/my-software-engineering-process/" rel="alternate" type="text/html" title="My software development process" /><published>2025-11-07T09:47:00+00:00</published><updated>2025-11-07T09:47:00+00:00</updated><id>https://open-research.gemmadanks.com/planning/my-software-engineering-process</id><content type="html" xml:base="https://open-research.gemmadanks.com/planning/my-software-engineering-process/">&lt;p&gt;I am a big fan of process mapping. I used it a lot in my role as a consultant in machine learning and have previously written about &lt;a href=&quot;https://open-research.gemmadanks.com/planning/my-research-process/&quot;&gt;mapping out my research process&lt;/a&gt;. It helps to clarify muddy waters when it comes to how things are done in practice. Lately I have been thinking about the software development process and wanted to map this too. This will give me a handy reference for when I am starting new projects and encourage me to reflect on how I can improve my software development process, how it relates to my research process and how best to integrate the two.&lt;/p&gt;

&lt;p&gt;This post is a summary of my software development process. I will use it for working on my first software package for technosignatures research. As I execute each step I will document more details on the process as well as my results and reflections.&lt;/p&gt;

&lt;p&gt;I am also experimenting with (&lt;a href=&quot;https://mermaid.js.org/intro/&quot;&gt;mermaid&lt;/a&gt;) for creating the final flow chart.&lt;/p&gt;

&lt;h2 id=&quot;my-software-development-process&quot;&gt;My software development process&lt;/h2&gt;

&lt;p&gt;Here is the result of a few evenings mapping my software development process using the mermaid live editor. I have used a flow diagram that starts with the event ‘Domain chosen’ and ends with ‘Continuous Delivery Cycle’. It results in working software that can be iterated upon in endless opportunites for development! For the steps inbetween, I have cherry-picked the practices that I have found most useful in my career so far, new practices I want to try and practices I want more practice in. As I follow this process, I will refine it and reflect on what worked and what didn’t.&lt;/p&gt;

&lt;p&gt;I have outlined more details on the main steps below.&lt;/p&gt;

&lt;pre class=&quot;mermaid&quot;&gt;
flowchart TD
  START@{ shape: circle, label: &quot;Domain chosen&quot; }
  DDD@{ label: &quot;Explore Domain&quot; }
  OUT_DM@{ shape: lean-r, label: &quot;Domain map&quot; }
  OUT_GL@{ shape: lean-r, label: &quot;Glossary&quot;}

  PRIORITISE_PROB@{ label: &quot;Identify Key Problems&quot; }

  IM@{ label: &quot;Map Impacts&quot; }
  OUT_IM@{ shape: lean-r, label: &quot;Impact map&quot;}

  PRIORITISE_DEL@{ label: &quot;Prioritise Deliverables&quot; }

  REQ@{ label: &quot;Elicit Requirements&quot; }
  LIST_BDD@{ shape: lean-r, label: &quot;BDD scenarios&quot; }
  OUT_UT@{ shape: lean-r, label: &quot;Utility tree&quot; }

  DOCS@{ label: &quot;Outline Docs&quot; }
  PROTO@{ label: &quot;Prototype&quot; }
  ARCH@{ label: &quot;Evolve Architecture&quot; }
  
  ARCH_VIEWS@{ shape: lean-r, label: &quot;Architecture Views&quot; }
  ARCH_DECISIONS@{ shape: lean-r, label: &quot;ADRs&quot;}

  CD@{label: &quot;Continuous Delivery Cycle&quot;}

  OUT_SW@{ shape: lean-r, label: &quot;Working Software&quot; } 

  START --&amp;gt; DDD --&amp;gt; OUT_DM &amp;amp; OUT_GL 
  DDD &amp;amp; OUT_DM  --&amp;gt; PRIORITISE_PROB --&amp;gt; IM --&amp;gt; OUT_IM
  IM &amp;amp; OUT_IM --&amp;gt; PRIORITISE_DEL --&amp;gt; REQ
  REQ --&amp;gt; LIST_BDD &amp;amp; OUT_UT
  REQ --&amp;gt; DOCS &amp;amp; PROTO
  PROTO &amp;amp; DOCS &amp;amp; REQ &amp;amp; OUT_UT--&amp;gt; ARCH
  ARCH --&amp;gt; ARCH_VIEWS &amp;amp; ARCH_DECISIONS
  ARCH &amp;amp; ARCH_VIEWS &amp;amp; ARCH_DECISIONS --&amp;gt; CD 
  LIST_BDD --&amp;gt; CD
  
  CD -.-&amp;gt; |Learn| DDD
  CD -.-&amp;gt; |Evolve| ARCH
  CD -.-&amp;gt; |Refine| REQ
  CD -.-&amp;gt; |Evaluate| IM
  OUT_GL --&amp;gt; REQ
  OUT_GL --&amp;gt; ARCH
  OUT_GL --&amp;gt; CD
  CD --&amp;gt; OUT_SW --&amp;gt; CD
&lt;/pre&gt;
&lt;script src=&quot;https://cdn.jsdelivr.net/npm/mermaid@11.12.1/dist/mermaid.min.js&quot;&gt;&lt;/script&gt;

&lt;h3 id=&quot;explore-domain-ddd&quot;&gt;Explore Domain (DDD)&lt;/h3&gt;
&lt;p&gt;The first step is to identify what problem to solve. I have previously described the &lt;a href=&quot;http://127.0.0.1:4000/planning/choosing-research-topic/&quot;&gt;method I used to choose a research topic&lt;/a&gt;. I will use a similar approach to choosing a problem to solve (by developing software) within that topic. This means first exploring the domain, creating a domain map and then prioritising any problems identified by ranking them by a) impact b) tractability c) neglectedness and d) personal fit. That way I will develop something that: solves an important problem; is within my capabilities and interest; and not many others are working on.&lt;/p&gt;

&lt;p&gt;As part of this &lt;a href=&quot;https://martinfowler.com/bliki/DomainDrivenDesign.html&quot;&gt;domain-driven design (DDD)&lt;/a&gt; approach, I will also generate a glossary of terms that I will use for aligning to the domain language when designing and coding my software. This will make communication with domain experts and users much easier (this is one of the hardest parts of developing software in a domain you are not expert in yourself and can make or break a project).&lt;/p&gt;

&lt;h3 id=&quot;map-impacts&quot;&gt;Map Impacts&lt;/h3&gt;
&lt;p&gt;After identifying the key problems, the next step involves formulating them into a set of goals and mapping these to &lt;strong&gt;actors&lt;/strong&gt; (the people or entities affected), &lt;strong&gt;impacts&lt;/strong&gt; (behavioural changes) and &lt;strong&gt;deliverables&lt;/strong&gt; (the solutions that will define user stories – see below). This map provides many routes to tackling a problem with measures of success (defined by the impacts) that can be used to evaluate progress towards the goals. This is an approach I would like to gain more experience in.&lt;/p&gt;

&lt;h3 id=&quot;prioritise-deliverables&quot;&gt;Prioritise deliverables&lt;/h3&gt;
&lt;p&gt;I will prioritise deliverables by mapping them onto a value vs. effort chart and rank by value/effort, taking quick wins (high value, low effort) first to build momentum.&lt;/p&gt;

&lt;h3 id=&quot;elicit-requirements&quot;&gt;Elicit Requirements&lt;/h3&gt;
&lt;p&gt;Once I have a set of top deliverables, I will spend some time specifying requirements for each. These will include:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Functional requirements&lt;/strong&gt; (what should the software do?) that I’ll formulate as &lt;strong&gt;user stories&lt;/strong&gt; (“As a &lt;em&gt;user role&lt;/em&gt;, I want &lt;em&gt;some capability&lt;/em&gt; so that &lt;em&gt;reason or benefit&lt;/em&gt;”) that I can use to derive &lt;strong&gt;behaviour driven development (bdd) scenarios&lt;/strong&gt; (“Given I have &lt;em&gt;something&lt;/em&gt; when I &lt;em&gt;do something&lt;/em&gt; then &lt;em&gt;something happens&lt;/em&gt;”) that will form the basis for BDD tests. I have used the BDD approach before and found it very useful.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Non-functional requirements&lt;/strong&gt; (how should the software do it?) that define &lt;strong&gt;quality attributes&lt;/strong&gt; (such as maintainability or scalability) that I can use to derive &lt;strong&gt;quality attribute scenarios&lt;/strong&gt; (“When &lt;em&gt;stimulus&lt;/em&gt; occurs, and the system is in &lt;em&gt;context&lt;/em&gt;, the system shall &lt;em&gt;response&lt;/em&gt; with &lt;em&gt;measure&lt;/em&gt;” for standard use cases and cases covering both expected and unexpected changes), some of which can be used to derive automated tests. As part of this step I will create a &lt;strong&gt;utility tree&lt;/strong&gt;. This maps quality attributes to concrete testable quality attribute scenarios. This is one of the practices in the &lt;a href=&quot;https://en.wikipedia.org/wiki/Architecture_tradeoff_analysis_method&quot;&gt;Architecture Tradeoff Analysis Method&lt;/a&gt; that I want to practice and learn more about.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;outline-documentation&quot;&gt;Outline documentation&lt;/h2&gt;
&lt;p&gt;This is where the process gets a little unconventional compared to what, in my experience, is the usual way of developing software. In most projects I’ve worked on in the past, we’ve taken user stories and gone straight to coding. But this sometimes led to implementing something that wasn’t quite what the users wanted and having to refactor, rewrite or build in unnecessary complexity later. I want to try documentation-driven development as a way of clarifying what the final result should be and streamlining the implementation.&lt;/p&gt;

&lt;p&gt;This mirrors the &lt;a href=&quot;https://open-research.gemmadanks.com/planning/my-research-process/&quot;&gt;research process&lt;/a&gt; that I landed on as I gained experience as a postdoc – I started to outline the paper before doing any experiments. So, for my software projects, I will first write the README, then outline the docs. I will use the &lt;a href=&quot;https://diataxis.fr/&quot;&gt;diataxis&lt;/a&gt; framework and start with some explanation followed by tutorials and how-to guides. That way, all I have to do is design the software to do what the documentation says it does. I will iterate on these docs, ideally getting feedback from users, until they represent what I have to implement at a high level.&lt;/p&gt;

&lt;h3 id=&quot;prototype&quot;&gt;Prototype&lt;/h3&gt;
&lt;p&gt;Inspired by design thinking I will also do some prototyping alongside writing the documentation outline. This will ensure that the final outcome will have the desired impact – i.e. it will be something that a) solves a problem that people care about and b) people actually want to use.&lt;/p&gt;

&lt;p&gt;I will sketch some designs for the user-interface and generate example outputs to check that this is what a user actually needs and wants to use. This might include the design for a dashboard with mock plots, the outline of a notebook, a mock log file or a simple script that includes a call to a CLI.&lt;/p&gt;

&lt;h3 id=&quot;evolve-architecture&quot;&gt;Evolve Architecture&lt;/h3&gt;
&lt;p&gt;By this stage I’ll have a clear idea of what the software will do and how a user will interact with it. I’ll have an outline for the documentation and some basic prototypes for the user interface and outputs. The next step is to decide how the software will achieve this functionality given all the forces at play and the quality attribute scenarios I defined earlier in the process. For this I will research and select candidate architectural pattern that seem to best fit then I’ll create architecture views using the &lt;a href=&quot;https://c4model.com/&quot;&gt;C4 model&lt;/a&gt; (Context → Container → Component → Code) for each. I’ll then identify sensitivities, tradeoffs, and risks to create a tradeoff matrix that I can use to make decisions, documented in &lt;a href=&quot;https://open-research.gemmadanks.com/planning/architectural-decision-records/&quot;&gt;Architectural Decision Records&lt;/a&gt; and updated architectural views.&lt;/p&gt;

&lt;p&gt;I plan to learn more about evolutionary architecture to ensure that the architecture design an iterative process and in a feedback loop with the continuous delivery development cycle (i.e. it evolves along with the code) with automated tests using fitness functions to ensure the code aligns with architectural decisions.&lt;/p&gt;

&lt;h3 id=&quot;continuous-delivery-cycle&quot;&gt;Continuous Delivery Cycle&lt;/h3&gt;
&lt;p&gt;This step is where I write the code, starting with a minimal viable product (MVP) and creating a scaffold based on my architectural views.&lt;/p&gt;

&lt;p&gt;I plan to follow &lt;a href=&quot;http://www.extremeprogramming.org/rules.html&quot;&gt;Extreme Programming (XP)&lt;/a&gt; practices as far as possible, with test-driven development (TDD), short iterations, (AI) pair programming, continuous delivery and small, frequent releases. The whole process then becomes iterative in order to respond to change.&lt;/p&gt;

&lt;p&gt;I will evaluate progress based on my impact map, refine the requirements and evolve the architecture regularly. I will also add anything new I’ve learnt about the domain to my domain map and adjust the impact map as needed.&lt;/p&gt;

&lt;h3 id=&quot;reflections-on-using-mermaid&quot;&gt;Reflections on using Mermaid&lt;/h3&gt;
&lt;p&gt;I used the mermaid live editor to create my software development process map and found it a really nice tool to use and much more efficient than other tools I’ve used before (including miro, omnigraffle, powerpoint). There are lots of options in mermaid that I haven’t explored yet and there are some issues with the way the layout is rendered so I’ll continue experimenting with it (including for my software documentation and architecture views).&lt;/p&gt;

&lt;p&gt;There are also several advantages of having diagrams as code that I like, including how much easier it is to see changes using version control and how it makes them more AI-friendly and so can be used as context for AI assistants/agents that can both help improve the diagrams themselves and make better recommendations when assisting with code development (since you can point them to your process to show how you want to work).&lt;/p&gt;

&lt;h2 id=&quot;share-your-thoughts&quot;&gt;Share your thoughts&lt;/h2&gt;
&lt;p&gt;Do you have any thoughts on mapping processes or the software development process? Let me know in the comments below!&lt;/p&gt;</content><author><name>Gemma Danks</name></author><category term="planning" /><category term="about" /><category term="process" /><category term="planning" /><category term="software" /><summary type="html">I am a big fan of process mapping. I used it a lot in my role as a consultant in machine learning and have previously written about mapping out my research process. It helps to clarify muddy waters when it comes to how things are done in practice. Lately I have been thinking about the software development process and wanted to map this too. This will give me a handy reference for when I am starting new projects and encourage me to reflect on how I can improve my software development process, how it relates to my research process and how best to integrate the two. This post is a summary of my software development process. I will use it for working on my first software package for technosignatures research. As I execute each step I will document more details on the process as well as my results and reflections. I am also experimenting with (mermaid) for creating the final flow chart. My software development process Here is the result of a few evenings mapping my software development process using the mermaid live editor. I have used a flow diagram that starts with the event ‘Domain chosen’ and ends with ‘Continuous Delivery Cycle’. It results in working software that can be iterated upon in endless opportunites for development! For the steps inbetween, I have cherry-picked the practices that I have found most useful in my career so far, new practices I want to try and practices I want more practice in. As I follow this process, I will refine it and reflect on what worked and what didn’t. I have outlined more details on the main steps below. flowchart TD START@{ shape: circle, label: &quot;Domain chosen&quot; } DDD@{ label: &quot;Explore Domain&quot; } OUT_DM@{ shape: lean-r, label: &quot;Domain map&quot; } OUT_GL@{ shape: lean-r, label: &quot;Glossary&quot;} PRIORITISE_PROB@{ label: &quot;Identify Key Problems&quot; } IM@{ label: &quot;Map Impacts&quot; } OUT_IM@{ shape: lean-r, label: &quot;Impact map&quot;} PRIORITISE_DEL@{ label: &quot;Prioritise Deliverables&quot; } REQ@{ label: &quot;Elicit Requirements&quot; } LIST_BDD@{ shape: lean-r, label: &quot;BDD scenarios&quot; } OUT_UT@{ shape: lean-r, label: &quot;Utility tree&quot; } DOCS@{ label: &quot;Outline Docs&quot; } PROTO@{ label: &quot;Prototype&quot; } ARCH@{ label: &quot;Evolve Architecture&quot; } ARCH_VIEWS@{ shape: lean-r, label: &quot;Architecture Views&quot; } ARCH_DECISIONS@{ shape: lean-r, label: &quot;ADRs&quot;} CD@{label: &quot;Continuous Delivery Cycle&quot;} OUT_SW@{ shape: lean-r, label: &quot;Working Software&quot; } START --&amp;gt; DDD --&amp;gt; OUT_DM &amp;amp; OUT_GL DDD &amp;amp; OUT_DM --&amp;gt; PRIORITISE_PROB --&amp;gt; IM --&amp;gt; OUT_IM IM &amp;amp; OUT_IM --&amp;gt; PRIORITISE_DEL --&amp;gt; REQ REQ --&amp;gt; LIST_BDD &amp;amp; OUT_UT REQ --&amp;gt; DOCS &amp;amp; PROTO PROTO &amp;amp; DOCS &amp;amp; REQ &amp;amp; OUT_UT--&amp;gt; ARCH ARCH --&amp;gt; ARCH_VIEWS &amp;amp; ARCH_DECISIONS ARCH &amp;amp; ARCH_VIEWS &amp;amp; ARCH_DECISIONS --&amp;gt; CD LIST_BDD --&amp;gt; CD CD -.-&amp;gt; |Learn| DDD CD -.-&amp;gt; |Evolve| ARCH CD -.-&amp;gt; |Refine| REQ CD -.-&amp;gt; |Evaluate| IM OUT_GL --&amp;gt; REQ OUT_GL --&amp;gt; ARCH OUT_GL --&amp;gt; CD CD --&amp;gt; OUT_SW --&amp;gt; CD Explore Domain (DDD) The first step is to identify what problem to solve. I have previously described the method I used to choose a research topic. I will use a similar approach to choosing a problem to solve (by developing software) within that topic. This means first exploring the domain, creating a domain map and then prioritising any problems identified by ranking them by a) impact b) tractability c) neglectedness and d) personal fit. That way I will develop something that: solves an important problem; is within my capabilities and interest; and not many others are working on. As part of this domain-driven design (DDD) approach, I will also generate a glossary of terms that I will use for aligning to the domain language when designing and coding my software. This will make communication with domain experts and users much easier (this is one of the hardest parts of developing software in a domain you are not expert in yourself and can make or break a project). Map Impacts After identifying the key problems, the next step involves formulating them into a set of goals and mapping these to actors (the people or entities affected), impacts (behavioural changes) and deliverables (the solutions that will define user stories – see below). This map provides many routes to tackling a problem with measures of success (defined by the impacts) that can be used to evaluate progress towards the goals. This is an approach I would like to gain more experience in. Prioritise deliverables I will prioritise deliverables by mapping them onto a value vs. effort chart and rank by value/effort, taking quick wins (high value, low effort) first to build momentum. Elicit Requirements Once I have a set of top deliverables, I will spend some time specifying requirements for each. These will include: Functional requirements (what should the software do?) that I’ll formulate as user stories (“As a user role, I want some capability so that reason or benefit”) that I can use to derive behaviour driven development (bdd) scenarios (“Given I have something when I do something then something happens”) that will form the basis for BDD tests. I have used the BDD approach before and found it very useful. Non-functional requirements (how should the software do it?) that define quality attributes (such as maintainability or scalability) that I can use to derive quality attribute scenarios (“When stimulus occurs, and the system is in context, the system shall response with measure” for standard use cases and cases covering both expected and unexpected changes), some of which can be used to derive automated tests. As part of this step I will create a utility tree. This maps quality attributes to concrete testable quality attribute scenarios. This is one of the practices in the Architecture Tradeoff Analysis Method that I want to practice and learn more about. Outline documentation This is where the process gets a little unconventional compared to what, in my experience, is the usual way of developing software. In most projects I’ve worked on in the past, we’ve taken user stories and gone straight to coding. But this sometimes led to implementing something that wasn’t quite what the users wanted and having to refactor, rewrite or build in unnecessary complexity later. I want to try documentation-driven development as a way of clarifying what the final result should be and streamlining the implementation. This mirrors the research process that I landed on as I gained experience as a postdoc – I started to outline the paper before doing any experiments. So, for my software projects, I will first write the README, then outline the docs. I will use the diataxis framework and start with some explanation followed by tutorials and how-to guides. That way, all I have to do is design the software to do what the documentation says it does. I will iterate on these docs, ideally getting feedback from users, until they represent what I have to implement at a high level. Prototype Inspired by design thinking I will also do some prototyping alongside writing the documentation outline. This will ensure that the final outcome will have the desired impact – i.e. it will be something that a) solves a problem that people care about and b) people actually want to use. I will sketch some designs for the user-interface and generate example outputs to check that this is what a user actually needs and wants to use. This might include the design for a dashboard with mock plots, the outline of a notebook, a mock log file or a simple script that includes a call to a CLI. Evolve Architecture By this stage I’ll have a clear idea of what the software will do and how a user will interact with it. I’ll have an outline for the documentation and some basic prototypes for the user interface and outputs. The next step is to decide how the software will achieve this functionality given all the forces at play and the quality attribute scenarios I defined earlier in the process. For this I will research and select candidate architectural pattern that seem to best fit then I’ll create architecture views using the C4 model (Context → Container → Component → Code) for each. I’ll then identify sensitivities, tradeoffs, and risks to create a tradeoff matrix that I can use to make decisions, documented in Architectural Decision Records and updated architectural views. I plan to learn more about evolutionary architecture to ensure that the architecture design an iterative process and in a feedback loop with the continuous delivery development cycle (i.e. it evolves along with the code) with automated tests using fitness functions to ensure the code aligns with architectural decisions. Continuous Delivery Cycle This step is where I write the code, starting with a minimal viable product (MVP) and creating a scaffold based on my architectural views. I plan to follow Extreme Programming (XP) practices as far as possible, with test-driven development (TDD), short iterations, (AI) pair programming, continuous delivery and small, frequent releases. The whole process then becomes iterative in order to respond to change. I will evaluate progress based on my impact map, refine the requirements and evolve the architecture regularly. I will also add anything new I’ve learnt about the domain to my domain map and adjust the impact map as needed. Reflections on using Mermaid I used the mermaid live editor to create my software development process map and found it a really nice tool to use and much more efficient than other tools I’ve used before (including miro, omnigraffle, powerpoint). There are lots of options in mermaid that I haven’t explored yet and there are some issues with the way the layout is rendered so I’ll continue experimenting with it (including for my software documentation and architecture views). There are also several advantages of having diagrams as code that I like, including how much easier it is to see changes using version control and how it makes them more AI-friendly and so can be used as context for AI assistants/agents that can both help improve the diagrams themselves and make better recommendations when assisting with code development (since you can point them to your process to show how you want to work). Share your thoughts Do you have any thoughts on mapping processes or the software development process? Let me know in the comments below!</summary></entry><entry><title type="html">How to migrate from Poetry to uv</title><link href="https://open-research.gemmadanks.com/tutorials/poetry-to-uv/" rel="alternate" type="text/html" title="How to migrate from Poetry to uv" /><published>2025-10-27T21:34:00+00:00</published><updated>2025-10-27T21:34:00+00:00</updated><id>https://open-research.gemmadanks.com/tutorials/poetry-to-uv</id><content type="html" xml:base="https://open-research.gemmadanks.com/tutorials/poetry-to-uv/">&lt;p&gt;I have recently been working on a template for new Python projects and of the first decisions I had to make was which tool to use for packaging and dependency management. I initially chose &lt;a href=&quot;https://python-poetry.org/&quot;&gt;Poetry&lt;/a&gt; since I am already familiar with it: Poetry is a mature tool that is widely used and works well. But several people have recently recommended &lt;a href=&quot;https://docs.astral.sh/uv/&quot;&gt;uv&lt;/a&gt; as an alternative so I decided to try it. This post documents the steps I had to take to switch from Poetry to uv.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Read more about what decisions are involved in setting up a new Python project in &lt;a href=&quot;https://open-research.gemmadanks.com/tutorials/python-project-template/&quot;&gt;my post on the template&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Check out &lt;a href=&quot;https://github.com/gemmadanks/python-project-template&quot;&gt;my template on GitHub&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Read the &lt;a href=&quot;https://open-research.gemmadanks.com/planning/architectural-decision-records/&quot;&gt;ADR&lt;/a&gt; I created to &lt;a href=&quot;https://open-research.gemmadanks.com/python-project-template/architecture/adr/002-manage-dependencies-with-uv/&quot;&gt;document the rationale for my decision to switch to uv&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To summarise the outcome of my testing: &lt;strong&gt;uv is extremely fast (it is written in rust), manages python versions in addition to dependencies and is likely to become the new standard so I am adopting it for my new projects&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;From a google search, I saw that there are tools to automate this migration (e.g. &lt;a href=&quot;https://github.com/mkniewallner/migrate-to-uv&quot;&gt;migrate-to-uv&lt;/a&gt;) but for a simple Python repository there are not that many steps to do it manually so that is what I did.&lt;/p&gt;

&lt;p&gt;I also had to make additional changes to use uv in my CI/CD (GitHub workflow) pipelines, readthedocs configuration, dependabot configuration, pre-commit hooks and just recipes and to get &lt;a href=&quot;https://github.com/googleapis/release-please&quot;&gt;release-please&lt;/a&gt; (which I am using to automate releases) to bump the version number in the uv lock file.&lt;/p&gt;

&lt;p&gt;You can see the actual changes I made to some of the files in &lt;a href=&quot;https://github.com/gemmadanks/python-project-template/pull/16/files&quot;&gt;this pull request&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&quot;how-to-switch-from-poetry-to-uv&quot;&gt;How to switch from Poetry to uv&lt;/h2&gt;
&lt;p&gt;I was using Poetry version 2.2.0 and switched to uv version 0.9.4.&lt;/p&gt;

&lt;h3 id=&quot;pre-requisites&quot;&gt;Pre-requisites&lt;/h3&gt;
&lt;ul&gt;
  &lt;li&gt;A Python project managed using Poetry (with a pyproject.toml file &lt;a href=&quot;http://packaging.python.org/en/latest/guides/writing-pyproject-toml/#dependencies-and-requirements&quot;&gt;listing your dependencies&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;Access to a terminal&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;basic-steps&quot;&gt;Basic steps&lt;/h3&gt;

&lt;ol&gt;
  &lt;li&gt;Open a terminal and navigate to the root of your repository.&lt;/li&gt;
  &lt;li&gt;Create and switch to a new branch.&lt;/li&gt;
  &lt;li&gt;Delete the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;poetry.lock&lt;/code&gt; file:
    &lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nb&quot;&gt;rm &lt;/span&gt;poetry.lock
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;    &lt;/div&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://docs.astral.sh/uv/getting-started/installation/&quot;&gt;Install uv&lt;/a&gt;:
    &lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;curl &lt;span class=&quot;nt&quot;&gt;-LsSf&lt;/span&gt; https://astral.sh/uv/install.sh | sh
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;    &lt;/div&gt;
  &lt;/li&gt;
  &lt;li&gt;Check installation (should show usage details):
    &lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;uv
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;    &lt;/div&gt;
  &lt;/li&gt;
  &lt;li&gt;Create a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;uv.lock&lt;/code&gt; file:
    &lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;uv lock
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;    &lt;/div&gt;
  &lt;/li&gt;
  &lt;li&gt;Test uv run with a development tool in your repository (e.g. ruff, black, pytest):
    &lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;uv run ruff check &lt;span class=&quot;nb&quot;&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;    &lt;/div&gt;
  &lt;/li&gt;
  &lt;li&gt;Change the build backend in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;pyproject.toml&lt;/code&gt; to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;uv_build&lt;/code&gt; (or use another &lt;a href=&quot;https://packaging.python.org/en/latest/tutorials/packaging-projects/#choosing-a-build-backend&quot;&gt;build system to suit your needs&lt;/a&gt;):
    &lt;div class=&quot;language-toml highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nn&quot;&gt;[build-system]&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;requires&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;[&quot;uv-build&amp;gt;=0&quot;]&lt;/span&gt;    &lt;span class=&quot;c&quot;&gt;# or pin a version&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;build-backend&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;uv_build&quot;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;    &lt;/div&gt;
  &lt;/li&gt;
  &lt;li&gt;Add a module name for the build (replace &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;package_name&lt;/code&gt; with the name of your package):
    &lt;div class=&quot;language-toml highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;nn&quot;&gt;[tool.uv.build-backend]&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;module-name&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;package_name&quot;&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;module-root&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;&quot;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;    &lt;/div&gt;
  &lt;/li&gt;
  &lt;li&gt;Commit your changes.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3 id=&quot;additional-steps&quot;&gt;Additional steps&lt;/h3&gt;

&lt;p&gt;These will be different for different repositories. Test that everything works as expected after each change.&lt;/p&gt;

&lt;h4 id=&quot;change-poetry-run-to-uv-run&quot;&gt;Change &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;poetry run&lt;/code&gt; to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;uv run&lt;/code&gt;&lt;/h4&gt;

&lt;p&gt;Change all &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;poetry run&lt;/code&gt; commands to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;uv run&lt;/code&gt; in files that use them, e.g.:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;justfile&lt;/code&gt; (see &lt;a href=&quot;https://github.com/gemmadanks/python-project-template/blob/85438ed145b77c64328e22a7b9a044684f6dc6af/justfile&quot;&gt;my template’s justfile&lt;/a&gt; for examples)&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;makefile&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;devcontainer.json&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;GitHub workflows&lt;/li&gt;
  &lt;li&gt;Pre-commit configuration file&lt;/li&gt;
&lt;/ul&gt;

&lt;h4 id=&quot;add-a-pre-commit-hook-for-uv-sync&quot;&gt;Add a pre-commit hook for uv sync&lt;/h4&gt;

&lt;p&gt;You can add a pre-commit hook from uv to check that the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;uv.lock&lt;/code&gt; is up-to-date:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-yaml&quot; data-lang=&quot;yaml&quot;&gt;&lt;span class=&quot;na&quot;&gt;repos&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
  &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;repo&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;https://github.com/astral-sh/uv-pre-commit&lt;/span&gt;
    &lt;span class=&quot;c1&quot;&gt;# uv version.&lt;/span&gt;
    &lt;span class=&quot;na&quot;&gt;rev&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;0.9.4&lt;/span&gt;
    &lt;span class=&quot;na&quot;&gt;hooks&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
      &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;id&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;uv-lock&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;h4 id=&quot;use-uv-in-your-dockerfile&quot;&gt;Use uv in your Dockerfile&lt;/h4&gt;

&lt;p&gt;If you use a Dockerfile, you can install uv by adding the following:&lt;/p&gt;

&lt;div class=&quot;language-docker highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;COPY&lt;/span&gt;&lt;span class=&quot;s&quot;&gt; --from=ghcr.io/astral-sh/uv:latest /uv /bin/uv&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Then install your dependencies using uv instead of poetry:&lt;/p&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;uv &lt;span class=&quot;nb&quot;&gt;sync&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;--all-groups&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h4 id=&quot;use-uv-in-github-workflows&quot;&gt;Use uv in GitHub workflows&lt;/h4&gt;

&lt;p&gt;To use uv in GitHub workflows, replace your poetry setup with the following:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-yaml&quot; data-lang=&quot;yaml&quot;&gt;&lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;Install uv&lt;/span&gt;
  &lt;span class=&quot;na&quot;&gt;uses&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;astral-sh/setup-uv@v7&lt;/span&gt;
  &lt;span class=&quot;na&quot;&gt;with&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
    &lt;span class=&quot;na&quot;&gt;version&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;0.9.4&quot;&lt;/span&gt;
    &lt;span class=&quot;na&quot;&gt;enable-cache&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;true&lt;/span&gt;

&lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;Install dependencies&lt;/span&gt;
  &lt;span class=&quot;na&quot;&gt;run&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;uv sync --all-groups&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;h4 id=&quot;update-dependabot-config-file&quot;&gt;Update dependabot config file&lt;/h4&gt;

&lt;p&gt;If you use dependabot, update the config file:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-yaml&quot; data-lang=&quot;yaml&quot;&gt;&lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;na&quot;&gt;package-ecosystem&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;uv&quot;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;h4 id=&quot;edit-release-please-configuration&quot;&gt;Edit release-please configuration&lt;/h4&gt;

&lt;p&gt;If you use release-please, add &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;uv.lock&lt;/code&gt; as an extra file in the release-please-config.json so that the version number of your package listed there will be bumped:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-json&quot; data-lang=&quot;json&quot;&gt;&lt;span class=&quot;nl&quot;&gt;&quot;extra-files&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
    &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
      &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;jsonpath&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;$.package[?(@.name.value=='package-name')].version&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
      &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;path&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;uv.lock&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
      &lt;/span&gt;&lt;span class=&quot;nl&quot;&gt;&quot;type&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;toml&quot;&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
    &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
  &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;h4 id=&quot;edit-read-the-docs-configuration&quot;&gt;Edit Read the Docs configuration&lt;/h4&gt;

&lt;p&gt;If you are using Read the Docs to host your documentation, edit your &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;readthedocs.yaml&lt;/code&gt; to &lt;a href=&quot;https://docs.readthedocs.com/platform/stable/build-customization.html#install-dependencies-with-uv&quot;&gt;use uv to install docs dependencies&lt;/a&gt;:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-yaml&quot; data-lang=&quot;yaml&quot;&gt;&lt;span class=&quot;na&quot;&gt;jobs&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
  &lt;span class=&quot;na&quot;&gt;pre_create_environment&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
      &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;asdf plugin add uv&lt;/span&gt;
      &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;asdf install uv latest&lt;/span&gt;
      &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;asdf global uv latest&lt;/span&gt;
  &lt;span class=&quot;na&quot;&gt;create_environment&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
      &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;uv venv &quot;${READTHEDOCS_VIRTUALENV_PATH}&quot;&lt;/span&gt;
  &lt;span class=&quot;na&quot;&gt;install&lt;/span&gt;&lt;span class=&quot;pi&quot;&gt;:&lt;/span&gt;
      &lt;span class=&quot;pi&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;UV_PROJECT_ENVIRONMENT=&quot;${READTHEDOCS_VIRTUALENV_PATH}&quot; uv sync --frozen --group docs&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;h4 id=&quot;update-your-readme&quot;&gt;Update your README&lt;/h4&gt;

&lt;p&gt;Update your project &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;README&lt;/code&gt; with instructions for how to use &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;uv&lt;/code&gt; and optionally add the uv badge (&lt;a href=&quot;https://github.com/astral-sh/uv&quot;&gt;&lt;img src=&quot;https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/uv/main/assets/badge/v0.json&quot; alt=&quot;uv&quot; /&gt;&lt;/a&gt;
):&lt;/p&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;[![uv](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/uv/main/assets/badge/v0.json)](https://github.com/astral-sh/uv)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;</content><author><name>Gemma Danks</name></author><category term="tutorials" /><category term="setup" /><category term="packaging" /><category term="poetry" /><category term="tools" /><category term="uv" /><category term="python" /><summary type="html">I have recently been working on a template for new Python projects and of the first decisions I had to make was which tool to use for packaging and dependency management. I initially chose Poetry since I am already familiar with it: Poetry is a mature tool that is widely used and works well. But several people have recently recommended uv as an alternative so I decided to try it. This post documents the steps I had to take to switch from Poetry to uv.</summary></entry><entry><title type="html">The importance of documenting architectural decisions</title><link href="https://open-research.gemmadanks.com/planning/architectural-decision-records/" rel="alternate" type="text/html" title="The importance of documenting architectural decisions" /><published>2025-10-25T21:14:30+01:00</published><updated>2025-10-25T21:14:30+01:00</updated><id>https://open-research.gemmadanks.com/planning/architectural-decision-records</id><content type="html" xml:base="https://open-research.gemmadanks.com/planning/architectural-decision-records/">&lt;p&gt;Decision-making can be complex. It involves weighing up different options and considering various tradeoffs. The rationale for what is decided is not always documented. This makes decisions harder to understand and harder to change later and can determine the success or failure of a project.&lt;/p&gt;

&lt;p&gt;In my previous role as a consultant in machine learning and data engineering, I was generally hired to build something new in what was (at the time) unchartered territory. Machine learning was just taking off and many companies were unsure how to use it and had neither the infrastructure nor the data to support it.&lt;/p&gt;

&lt;p&gt;It was my job to design and build data pipelines for training and running machine learning models that would output useful information for use in making business or engineering decisions – either in real time or on a schedule.&lt;/p&gt;

&lt;p&gt;Unless the company was a brand new startup, there was already existing business logic in place to help with these decisions, which usually involved a lot of manual work to analyse data and create reports and/or dashboards. Part of the drive to implement machine learning was to automate a lot of this and free up time for working on other problems that could not be automated.&lt;/p&gt;

&lt;p&gt;While documentation existed for how things were currently done, what was often missing was documentation for &lt;strong&gt;why&lt;/strong&gt; things were done a certain way.&lt;/p&gt;

&lt;p&gt;There were usually two camps – one that wanted to stick with the current way of doing things and were deeply sceptical of “black box” models (often domain-experts who crafted the existing logic and analysed the data) and another that wanted to embrace these models, as long as they could be verified and validated (usually the people making the decisions). A lot of friction, miscommunication and politics resulted from this, which is a shame since domain expertise is critical for the success of machine learning projects.&lt;/p&gt;

&lt;p&gt;One thing that would have helped both sides reach a mutual understanding would have been a written record of why certain choices were made in the first place. Most likely, there were very good reasons for the choices that were made initially as well as risks and limitations that were accepted at the time. But technology evolves rapidly and those same people may have chosen differently in today’s technology landscape (or not – they may have specific knowledge that is not obvious to others).&lt;/p&gt;

&lt;p&gt;When the rationale (and pros and cons) for earlier choices are forgotten there is no way to know whether they are still good choices today. This means that in the worst case, people are either afraid of changing something in case it breaks (and risk the project becoming hard or cotstly to maintain, outdated and/or outcompeted) or change something that should not be changed and break it (and waste time and energy implementing and then reverting it, potentially putting the whole project in jeopardy).&lt;/p&gt;

&lt;p&gt;Inspired by the &lt;a href=&quot;https://developer.skao.int/en/latest/policies/decision-making.html&quot;&gt;decision-making process for software development at SKAO&lt;/a&gt; (where I now work), I’ve recently been learning about &lt;a href=&quot;https://adr.github.io/&quot;&gt;architectural decision records (ADRs)&lt;/a&gt;. ADRs have been around since the 90s and provide a solution to the problem of lost knowledge. They were popularised in &lt;a href=&quot;https://cognitect.com/blog/2011/11/15/documenting-architecture-decisions&quot;&gt;a 2011 blog post by Michael Nygard&lt;/a&gt;. An ADR is a structured way to document rationale for software design choices for your future self and future colleagues. It can include all the alternatives you considered and any known risks. When someone new to your project comes in and wonders why things are done a certain way you can point them to these records. If they disagree then they have the complete history available to them to confidently propose a new ADR to change the earlier decision. You can also use them as context for AI assistants to help them make better recommendations.&lt;/p&gt;

&lt;p&gt;As part of &lt;a href=&quot;https://github.com/gemmadanks/python-project-template&quot;&gt;my python project template&lt;/a&gt;, which I’ve created to streamline &lt;a href=&quot;https://open-research.gemmadanks.com/tutorials/python-project-template/&quot;&gt;starting new open source projects&lt;/a&gt;, I have an &lt;a href=&quot;https://open-research.gemmadanks.com/python-project-template/architecture/adr/001-use-architectural-decision-records/&quot;&gt;ADR on using ADRs&lt;/a&gt;, which lays out my rationale for using them, the alternative solutions I ruled out and how I will adopt them in practice. I have also added &lt;a href=&quot;https://open-research.gemmadanks.com/python-project-template/architecture/adr/template/&quot;&gt;a template for new ADRs&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Documenting decisions in this way would also be useful in other domains – I ran into similar problems when working in a molecular biology lab. Everyone followed a particular protocol and no one I worked with had tried to optimise any of the steps. Why it was done this way was knowledge that had been lost over time and no one wanted to change the way it had always been done… Deciding what research topic to work on is another example. I documented my rationale for using a decision matrix in &lt;a href=&quot;https://open-research.gemmadanks.com/planning/choosing-research-topic/&quot;&gt;an earlier post&lt;/a&gt; but I could have used something like an ADR for this.&lt;/p&gt;</content><author><name>Gemma Danks</name></author><category term="planning" /><category term="planning" /><category term="process" /><category term="architecture" /><summary type="html">Decision-making can be complex. It involves weighing up different options and considering various tradeoffs. The rationale for what is decided is not always documented. This makes decisions harder to understand and harder to change later and can determine the success or failure of a project. In my previous role as a consultant in machine learning and data engineering, I was generally hired to build something new in what was (at the time) unchartered territory. Machine learning was just taking off and many companies were unsure how to use it and had neither the infrastructure nor the data to support it. It was my job to design and build data pipelines for training and running machine learning models that would output useful information for use in making business or engineering decisions – either in real time or on a schedule. Unless the company was a brand new startup, there was already existing business logic in place to help with these decisions, which usually involved a lot of manual work to analyse data and create reports and/or dashboards. Part of the drive to implement machine learning was to automate a lot of this and free up time for working on other problems that could not be automated. While documentation existed for how things were currently done, what was often missing was documentation for why things were done a certain way. There were usually two camps – one that wanted to stick with the current way of doing things and were deeply sceptical of “black box” models (often domain-experts who crafted the existing logic and analysed the data) and another that wanted to embrace these models, as long as they could be verified and validated (usually the people making the decisions). A lot of friction, miscommunication and politics resulted from this, which is a shame since domain expertise is critical for the success of machine learning projects. One thing that would have helped both sides reach a mutual understanding would have been a written record of why certain choices were made in the first place. Most likely, there were very good reasons for the choices that were made initially as well as risks and limitations that were accepted at the time. But technology evolves rapidly and those same people may have chosen differently in today’s technology landscape (or not – they may have specific knowledge that is not obvious to others). When the rationale (and pros and cons) for earlier choices are forgotten there is no way to know whether they are still good choices today. This means that in the worst case, people are either afraid of changing something in case it breaks (and risk the project becoming hard or cotstly to maintain, outdated and/or outcompeted) or change something that should not be changed and break it (and waste time and energy implementing and then reverting it, potentially putting the whole project in jeopardy). Inspired by the decision-making process for software development at SKAO (where I now work), I’ve recently been learning about architectural decision records (ADRs). ADRs have been around since the 90s and provide a solution to the problem of lost knowledge. They were popularised in a 2011 blog post by Michael Nygard. An ADR is a structured way to document rationale for software design choices for your future self and future colleagues. It can include all the alternatives you considered and any known risks. When someone new to your project comes in and wonders why things are done a certain way you can point them to these records. If they disagree then they have the complete history available to them to confidently propose a new ADR to change the earlier decision. You can also use them as context for AI assistants to help them make better recommendations. As part of my python project template, which I’ve created to streamline starting new open source projects, I have an ADR on using ADRs, which lays out my rationale for using them, the alternative solutions I ruled out and how I will adopt them in practice. I have also added a template for new ADRs. Documenting decisions in this way would also be useful in other domains – I ran into similar problems when working in a molecular biology lab. Everyone followed a particular protocol and no one I worked with had tried to optimise any of the steps. Why it was done this way was knowledge that had been lost over time and no one wanted to change the way it had always been done… Deciding what research topic to work on is another example. I documented my rationale for using a decision matrix in an earlier post but I could have used something like an ADR for this.</summary></entry><entry><title type="html">My opinionated template for new Python projects</title><link href="https://open-research.gemmadanks.com/tutorials/python-project-template/" rel="alternate" type="text/html" title="My opinionated template for new Python projects" /><published>2025-10-21T12:54:30+01:00</published><updated>2025-10-21T12:54:30+01:00</updated><id>https://open-research.gemmadanks.com/tutorials/python-project-template</id><content type="html" xml:base="https://open-research.gemmadanks.com/tutorials/python-project-template/">&lt;p&gt;Over the years, I’ve experimented with different tools and learnt about various best practices in software engineering. These things are always in flux and so, in order to have a central place for collecting and updating the tools and practices I’ve found most useful for Python projects, and to help streamline starting future projects, I’ve created an opinionated template on GitHub that anyone can use:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/gemmadanks/python-project-template&quot;&gt;Python Project Template (GitHub)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Using this template will save time doing the initial set up and avoid decision fatigue and analysis paralysis that can consume time and energy which is better spent getting stuck straight into the software development process.&lt;/p&gt;

&lt;p&gt;This post briefly describes some of the decisions involved in setting up a modern Python project – starting with a minimal package, then adding tools that help ensure code quality and finally automating workflows for continuous integration and delivery.&lt;/p&gt;

&lt;p&gt;The template’s &lt;a href=&quot;https://github.com/gemmadanks/python-project-template/blob/main/README.md&quot;&gt;README&lt;/a&gt; and &lt;a href=&quot;https://github.com/gemmadanks/python-project-template/blob/main/docs/architecture/adr/index.md&quot;&gt;Architectural Decision Records (ADRs)&lt;/a&gt; have up-to-date details on the choices I’ve made.&lt;/p&gt;

&lt;h2 id=&quot;a-minimal-python-package&quot;&gt;A minimal Python package&lt;/h2&gt;

&lt;p&gt;Setting up a minimal Python project is fairly straightforward. You need a &lt;a href=&quot;https://packaging.python.org/en/latest/guides/writing-pyproject-toml/&quot;&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;pyproject.toml&lt;/code&gt;&lt;/a&gt; file (to specify dependencies and configuration for packaging), a licence file, a README file and the actual Python source code and tests. You can follow &lt;a href=&quot;https://packaging.python.org/en/latest/tutorials/packaging-projects/&quot;&gt;a tutorial from the python packaging site&lt;/a&gt; to learn more details. You’d end up with the following directory structure:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;my_project_name/
├── LICENSE
├── pyproject.toml
├── README.md
├── src/
│   └── my_package/
│       ├── __init__.py
│       └── example.py
└── tests/
    └── test_example.py
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;It is also useful to include a CITATION.cff file so that others can easily cite your work and a directory for Jupyter notebooks that you can use as tutorials or demos of your project.&lt;/p&gt;

&lt;p&gt;There are already some decisions you have to make when completing the steps to set up this basic structure:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;What licence to choose (e.g. MIT, BSD 3-Clause)&lt;/li&gt;
  &lt;li&gt;What build backend to use (e.g. hatchling, uv_build)&lt;/li&gt;
  &lt;li&gt;What Python versions to support (e.g. &amp;gt;=3.11)&lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id=&quot;documenting-your-project&quot;&gt;Documenting your project&lt;/h2&gt;

&lt;p&gt;There are several tools (e.g. sphinx, MkDocs) available to help you generate html documentation for your project. You also need to decide where to host the documentation (e.g. GitHub pages or Read The Docs), and how best to communicate the rationale for your design choices to your future self or other developers (e.g. using ADRs).&lt;/p&gt;

&lt;h2 id=&quot;tools-to-make-developing-python-code-easier&quot;&gt;Tools to make developing Python code easier&lt;/h2&gt;

&lt;p&gt;There are also many tools that make your life easier when developing your project. The main ones are:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Linters to check your code and flag any issues (e.g. pylint, flake8, ruff)&lt;/li&gt;
  &lt;li&gt;Formatters to ensure consistent code style (e.g. black, ruff)&lt;/li&gt;
  &lt;li&gt;Testing frameworks to run your tests (e.g. pytest)&lt;/li&gt;
  &lt;li&gt;Dependency managers (e.g. Poetry, uv, pipenv) to install and resolve other packages you want to use in your project (including the linters and formatters)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;automating-your-workflows&quot;&gt;Automating your workflows&lt;/h2&gt;

&lt;p&gt;Running your tests as well as the linters and formatters requires several steps that you may or may not remember to do when you commit your changes or merge to your main branch. Several ways exist to automate this, including:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;A Justfile or Makefile – allows you to create short commands to make it easier to run common tasks.&lt;/li&gt;
  &lt;li&gt;Pre-commit hooks – scripts that run automatically whenever you try to commit a change and can include running your linter and formatter and checking your dependencies are in sync.&lt;/li&gt;
  &lt;li&gt;GitHub workflows (or equivalent on other platforms) – these can be configured to run automatically on GitHub whenever you push your commits or open a merge request. They can run your pre-commit hooks, tests, publish your package, generate test coverage reports and build your documentation. This forms a key part of continuous integration, which is a practice that helps ensure new changes don’t introduce errors.&lt;/li&gt;
  &lt;li&gt;Dependabot (from GitHub) – automates updating dependencies.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;releasing-your-software&quot;&gt;Releasing your software&lt;/h2&gt;

&lt;p&gt;Creating a release of your project allows you to tag, package, document and distribute a specific version to a wider audience. There are a number of different approaches for when and how to release, and how to label each version. This can also be automated for continuous delivery (e.g. via release-please and using conventional commits and semantic versioning).&lt;/p&gt;

&lt;h2 id=&quot;managing-your-project&quot;&gt;Managing your project&lt;/h2&gt;

&lt;p&gt;Templates for GitHub issues and pull requests allow you to standardise processes when managing a project. This is useful when collaborating with others and when working alone (your future self may not remember all the details of a bug you found last week or a feature idea you had a few months ago and templates will help you document these in a more thorough and structured way).&lt;/p&gt;

&lt;h2 id=&quot;using-the-template&quot;&gt;Using the template&lt;/h2&gt;

&lt;p&gt;Follow the instructions in the template’s README if you’d like to use it – and feel free to leave a comment here or open an issue in the repository if you have any ideas for improvements.&lt;/p&gt;</content><author><name>Gemma Danks</name></author><category term="tutorials" /><category term="setup" /><category term="github" /><category term="python" /><category term="ci" /><category term="tools" /><summary type="html">Over the years, I’ve experimented with different tools and learnt about various best practices in software engineering. These things are always in flux and so, in order to have a central place for collecting and updating the tools and practices I’ve found most useful for Python projects, and to help streamline starting future projects, I’ve created an opinionated template on GitHub that anyone can use: Python Project Template (GitHub) Using this template will save time doing the initial set up and avoid decision fatigue and analysis paralysis that can consume time and energy which is better spent getting stuck straight into the software development process. This post briefly describes some of the decisions involved in setting up a modern Python project – starting with a minimal package, then adding tools that help ensure code quality and finally automating workflows for continuous integration and delivery. The template’s README and Architectural Decision Records (ADRs) have up-to-date details on the choices I’ve made. A minimal Python package Setting up a minimal Python project is fairly straightforward. You need a pyproject.toml file (to specify dependencies and configuration for packaging), a licence file, a README file and the actual Python source code and tests. You can follow a tutorial from the python packaging site to learn more details. You’d end up with the following directory structure: my_project_name/ ├── LICENSE ├── pyproject.toml ├── README.md ├── src/ │ └── my_package/ │ ├── __init__.py │ └── example.py └── tests/ └── test_example.py It is also useful to include a CITATION.cff file so that others can easily cite your work and a directory for Jupyter notebooks that you can use as tutorials or demos of your project. There are already some decisions you have to make when completing the steps to set up this basic structure: What licence to choose (e.g. MIT, BSD 3-Clause) What build backend to use (e.g. hatchling, uv_build) What Python versions to support (e.g. &amp;gt;=3.11) Documenting your project There are several tools (e.g. sphinx, MkDocs) available to help you generate html documentation for your project. You also need to decide where to host the documentation (e.g. GitHub pages or Read The Docs), and how best to communicate the rationale for your design choices to your future self or other developers (e.g. using ADRs). Tools to make developing Python code easier There are also many tools that make your life easier when developing your project. The main ones are: Linters to check your code and flag any issues (e.g. pylint, flake8, ruff) Formatters to ensure consistent code style (e.g. black, ruff) Testing frameworks to run your tests (e.g. pytest) Dependency managers (e.g. Poetry, uv, pipenv) to install and resolve other packages you want to use in your project (including the linters and formatters) Automating your workflows Running your tests as well as the linters and formatters requires several steps that you may or may not remember to do when you commit your changes or merge to your main branch. Several ways exist to automate this, including: A Justfile or Makefile – allows you to create short commands to make it easier to run common tasks. Pre-commit hooks – scripts that run automatically whenever you try to commit a change and can include running your linter and formatter and checking your dependencies are in sync. GitHub workflows (or equivalent on other platforms) – these can be configured to run automatically on GitHub whenever you push your commits or open a merge request. They can run your pre-commit hooks, tests, publish your package, generate test coverage reports and build your documentation. This forms a key part of continuous integration, which is a practice that helps ensure new changes don’t introduce errors. Dependabot (from GitHub) – automates updating dependencies. Releasing your software Creating a release of your project allows you to tag, package, document and distribute a specific version to a wider audience. There are a number of different approaches for when and how to release, and how to label each version. This can also be automated for continuous delivery (e.g. via release-please and using conventional commits and semantic versioning). Managing your project Templates for GitHub issues and pull requests allow you to standardise processes when managing a project. This is useful when collaborating with others and when working alone (your future self may not remember all the details of a bug you found last week or a feature idea you had a few months ago and templates will help you document these in a more thorough and structured way). Using the template Follow the instructions in the template’s README if you’d like to use it – and feel free to leave a comment here or open an issue in the repository if you have any ideas for improvements.</summary></entry><entry><title type="html">Project Oasis: Part I</title><link href="https://open-research.gemmadanks.com/literature/project-oasis-part-i/" rel="alternate" type="text/html" title="Project Oasis: Part I" /><published>2023-10-27T20:29:00+01:00</published><updated>2023-10-27T20:29:00+01:00</updated><id>https://open-research.gemmadanks.com/literature/project-oasis-part-i</id><content type="html" xml:base="https://open-research.gemmadanks.com/literature/project-oasis-part-i/">&lt;p&gt;Project Oasis was the second SETI-related Summer Faculty Fellowship Study in Engineering System Design funded by NASA in cooperation with the &lt;a href=&quot;https://www.asee.org/&quot;&gt;American Society for Engineering Education (ASEE)&lt;/a&gt; and was conducted at the University of Santa Clara and the &lt;a href=&quot;https://www.nasa.gov/ames&quot;&gt;NASA Ames Research Center&lt;/a&gt; in 1979, eight years after Project Cyclops in 1971 (I have notes on the Project Cyclops report &lt;a class=&quot;citation&quot; href=&quot;#ProjectCyclopsDesign1972&quot;&gt;[1]&lt;/a&gt; in two previous posts: &lt;a href=&quot;https://open-research.gemmadanks.com/literature/project-cyclops-part-i/&quot;&gt;part i&lt;/a&gt; and &lt;a href=&quot;https://open-research.gemmadanks.com/literature/project-cyclops-part-ii/&quot;&gt;part ii&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;The primary focus of this second project was on the design of a signal detection system for SETI and its name was inspired by the region of the radiomagnetic spectrum thought to be a prime target for finding signals from extraterrestrial intelligence: the “water hole” (proposed in the Project Cyclops report &lt;a class=&quot;citation&quot; href=&quot;#ProjectCyclopsDesign1972&quot;&gt;[1]&lt;/a&gt; and later &lt;a href=&quot;https://open-research.gemmadanks.com/literature/water-hole-rationale/&quot;&gt;expanded on in a paper&lt;/a&gt; &lt;a class=&quot;citation&quot; href=&quot;#oliverRationaleWaterHole1979&quot;&gt;[2]&lt;/a&gt; by one of its co-directors, Bernard Oliver).&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Oasis, a patch of green in a vast expanse of arid desert, with its water hole providing the source of life.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Project Oasis involved a group of 22 people who were tasked with solving the following two problems:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;How to process 1/2-terabits (\(10^{12}\) bits) of data in 1000 seconds (about 16 minutes)&lt;/li&gt;
  &lt;li&gt;How to detect a completely unspecified signal with acceptable sensitivity&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The group wrote a report &lt;a class=&quot;citation&quot; href=&quot;#lordProjectOASISDesign1981&quot;&gt;[3]&lt;/a&gt; detailing the design of a signal detection system to meet the needs of the SETI field at the time. This was published in 1981 and was digitised by NASA in 2013 – it is publicly available online:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://ntrs.nasa.gov/citations/19820016111&quot;&gt;Project Oaisis: The Design of a Signal Detector for the Search for Extraterrestrial Intelligence&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Since the Project Oasis report is 443 pages long, I am splitting my notes into multiple posts. Here are my notes from reading chapter one (of seven), which gives a nice overview of the state of the SETI field at the time and an outline of the proposed signal detection system.&lt;/p&gt;

&lt;p&gt;You can find my notes on other classic SETI papers in my &lt;a href=&quot;https://open-research.gemmadanks.com/literature/technosignatures-literature-roundup/&quot;&gt;roundup of the technosignatures literature&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&quot;progress-in-the-seti-field&quot;&gt;Progress in the SETI field&lt;/h2&gt;
&lt;p&gt;The introduction to the report highlights the progress and discoveries made in the previous decades that enables the search for extraterrestrial intelligence (SETI) to move from science fiction to science fact:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;The organic molecules necessary for life (on Earth) are found all over the universe.&lt;/li&gt;
  &lt;li&gt;The Sun and Earth are average members of the galaxy: there is nothing unique about them.&lt;/li&gt;
  &lt;li&gt;Technology has advanced enough that we are capable of interstellar communication.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;current-state-of-the-seti-field&quot;&gt;Current state of the SETI field&lt;/h2&gt;
&lt;p&gt;The rest of the first chapter summarises background information on the field, including the consensus at the time on:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Where to look&lt;/li&gt;
  &lt;li&gt;How to look&lt;/li&gt;
  &lt;li&gt;Why look&lt;/li&gt;
  &lt;li&gt;How to understand a signal&lt;/li&gt;
  &lt;li&gt;The current status of the search&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The authors also provide an outline for the design of the Oasis Signal Detection System, which would be able to find and recognise a signal emitted by extraterrestrial intelligence (ETI) using multi-channel spectrum analyzers (MCSAs).&lt;/p&gt;

&lt;h3 id=&quot;where-to-look&quot;&gt;Where to look&lt;/h3&gt;
&lt;p&gt;The most likely places to find life, and therefore the best candidate stars to search, are around parent stars that are:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Not too large (or it would burn out too quickly for intelligent life to evolve).&lt;/li&gt;
  &lt;li&gt;Not too small (or a planet must be so close to the star to have enough heat to be habitable that it would become tidally locked, causing the atmosphere on the dark side of the planet to freeze).&lt;/li&gt;
  &lt;li&gt;Rotating slowly, which indicates most of the initial angular momentum (98% in the case of our solar system) has been lost to a planetary system.&lt;/li&gt;
  &lt;li&gt;Second generation or later since the heavier elements needed for life are only found in the exploded debris of stars.&lt;/li&gt;
  &lt;li&gt;Single star systems, since the planets of multi star systems are less likely to have stable orbits.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There are around 20 million such stars in our galaxy.&lt;/p&gt;

&lt;h3 id=&quot;how-to-look&quot;&gt;How to look&lt;/h3&gt;

&lt;h4 id=&quot;radio-signals&quot;&gt;Radio signals&lt;/h4&gt;
&lt;p&gt;Signals using electromagnetic radiation are the most cost-effective (in time and energy) means of communication across interstellar distances. In the 70s the most popular view was that the radio region of the spectrum was the best place to search. Optical signals were seen to have two major short-comings in that they are likely to be:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Outshone by the parent star&lt;/li&gt;
  &lt;li&gt;Absorbed by interstellar dust&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Radio signals do not have these problems and the technology of the late 70s was already capable of transmitting and receiving radio signals over distances of 100,000 light years.&lt;/p&gt;

&lt;h4 id=&quot;anticryptography&quot;&gt;Anticryptography&lt;/h4&gt;

&lt;p&gt;Transmissions from ETI can be grouped into two categories and the Oasis signal detection system is designed to find both:&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;Internal transmissions that leak out into space (like our TV and radio broadcasts). These are weaker and harder to find.&lt;/li&gt;
  &lt;li&gt;Beacons that are intended for attracting the attention of other civilisations, which are likely to be optmised for easier detection.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If a signal is designed to be as easy as possible to decipher (anticryptography), then if a dimension of the search space can be reduced it will be. An optimal signal will therefore be:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Omni-directional&lt;/li&gt;
  &lt;li&gt;Transmitted continuously&lt;/li&gt;
  &lt;li&gt;Circularly polarised&lt;/li&gt;
  &lt;li&gt;Narrow band&lt;/li&gt;
  &lt;li&gt;Doppler corrected&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We can use this to focus the search.&lt;/p&gt;

&lt;h3 id=&quot;why-look&quot;&gt;Why look&lt;/h3&gt;
&lt;p&gt;We are more likely to detect signals from more advanced civilisations than our own (less advanced civilisations are not yet able to communicate and the chance of finding a civilisation at the same stage of development as us is small).&lt;/p&gt;

&lt;p&gt;If we found another civilisation, therefore, we would benefit from the following:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;We’d have evidence that not all civilisations destroy themselves before reaching maturity.
    &lt;ul&gt;
      &lt;li&gt;This might inspire us to work harder on reducing our own existential risks.&lt;/li&gt;
      &lt;li&gt;We may gain knowledge to help us achieve this goal ourselves.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;It would change our perspetive on the smaller problems we have.&lt;/li&gt;
  &lt;li&gt;New frontiers and challenges will prevent “cultural stagnation” of our civilisation.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;how-to-understand-messsages&quot;&gt;How to understand messsages&lt;/h3&gt;
&lt;p&gt;An initial message is likely to be built around the common knowledge or experiences of all civilisations in the galaxy in order to have the best possible chance of being understood. Numbers and counting would be one example. The report refers to Lingua Cosmica (&lt;a href=&quot;https://en.wikipedia.org/wiki/Lincos_language&quot;&gt;Lincos&lt;/a&gt;) to show that this is possible. Lincos, a language created by Hans Freudenthal in the 60s, uses messages with a counting sequence to define numbers and then introduces one new mathematical symbol at a time, which are then used to build more complex messages as a means of establishing communication with another civilisation.&lt;/p&gt;

&lt;h3 id=&quot;the-status-of-the-search&quot;&gt;The status of the search&lt;/h3&gt;
&lt;p&gt;Several studies and small scale searches had been conducted, using existing telescopes, from 1960 to 1979 (the &lt;a href=&quot;https://open-research.gemmadanks.com/literature/project-ozma/&quot;&gt;first, Project Ozma, by Drake&lt;/a&gt; looked at two stars for two weeks as a proof of concept). Most spent a few days or weeks searching. The longest was an ongoing 6 year all sky survey. Most observatories at the time did not look for extraterrestrial signals at all. The authors of the Oasis report likened this effort (compared to what was possible) to conducting a survey for earthquakes in California by standing outside for 10 minutes and noting any vibrations.&lt;/p&gt;

&lt;p&gt;Previous SETI projects searched for two types of signals:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Wideband pulsed signals (very few projects):
    &lt;ul&gt;
      &lt;li&gt;Widely separated receivers (thousands of km) with non-directional antennas used to record pulsed signals that are cross correlated to remove interference. Any signal that remains is likely to be of extraterrestrial origin.&lt;/li&gt;
      &lt;li&gt;Pulsar detection equipment were also being used to detect wideband pulses.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Narrowband continuous signals from specific targets (most projects)
    &lt;ul&gt;
      &lt;li&gt;Banks of analog filters for moderate bandwidth (10 kHz) and number of channels (50)&lt;/li&gt;
      &lt;li&gt;Autocorrelation receivers for more channels (1000) that digitally compute the &lt;a href=&quot;https://en.wikipedia.org/wiki/Fourier_transform&quot;&gt;Fourier Transform&lt;/a&gt; of the autocorrelation function of the incoming signal (either in real-time or later using computers or a laser and lens system)&lt;/li&gt;
      &lt;li&gt;The resulting power spectrum of the signal is then inspected for peaks&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The all sky survey in Ohio, which was ongoing at the time of Project Oasis, used the following strategy:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Ignore signals from large astronomical objects and short-time peaks by cross-correlating with the antenna pattern&lt;/li&gt;
  &lt;li&gt;Ignore that occur in more than one channel (i.e. wide-band signals)&lt;/li&gt;
  &lt;li&gt;Use a narrowband filter to re-examine any remaining signals at higher resolution&lt;/li&gt;
  &lt;li&gt;Ignore signals that are present in two different beams (beam-switching) to remove interference from radio sources on Earth&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Several other studies had re-examined data collected for different purposes or used “parasitic” receivers on telescopes to examine signals from wherever the telescope happened to be looking.&lt;/p&gt;

&lt;h3 id=&quot;the-next-step&quot;&gt;The next step&lt;/h3&gt;
&lt;p&gt;The authors of the report argue that further advances in the search require receiving equipment designed and constructed specifically for SETI. These new receivers can be used with existing radio telescope antennas.&lt;/p&gt;

&lt;p&gt;In order to design such receivers we need to:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Determine what type of signals to expect
    &lt;ul&gt;
      &lt;li&gt;Beacons as well as unpredictable signals (e.g. from leakage)&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Design optimum search algorithms to detect them&lt;/li&gt;
  &lt;li&gt;Plan for a full-time, long-term search at several observatories&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Since there is increasing radio interference, particularly from artificial satellites, that will eventually make the search impossible without moving into space or the moon it is urgent to start now.&lt;/p&gt;

&lt;h3 id=&quot;the-receiving-system&quot;&gt;The receiving system&lt;/h3&gt;
&lt;p&gt;The system designed as part of Project Oasis consists of:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;A radio telescope examining a target star for up to 1000 seconds
    &lt;ul&gt;
      &lt;li&gt;Two orthogonally polarised feed anntenas&lt;/li&gt;
      &lt;li&gt;Two separate receivers&lt;/li&gt;
      &lt;li&gt;Two separate Multi-Channel Spectrum Analyzers (MCSAs)
        &lt;ul&gt;
          &lt;li&gt;A device specially designed for SETI purposes that can analyse 8 MHz of bandwidth at 1 Hz resolution
            &lt;ul&gt;
              &lt;li&gt;The 8 MHz band is split into 120 bands using a digital bandpass filter bank&lt;/li&gt;
              &lt;li&gt;Each band is subdivided into 1 Hz bands by 120 microprocessors that compute the Discrete Fourier Transform of the filter outputs&lt;/li&gt;
              &lt;li&gt;Output data rate will be 16 Mb per second, requiring a total of 16 Gb of data storage&lt;/li&gt;
            &lt;/ul&gt;
          &lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;The Oasis Signal Detector that searches the final output for possible intelligence&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;the-purpose-of-project-oasis&quot;&gt;The purpose of Project Oasis&lt;/h3&gt;
&lt;p&gt;The purpose of the study was to begin the next step in the search for extraterrestrial intelligence: design the part of a specialised SETI receiver that finds and recognises a signal. The authors were confident that the system would eventually be constructed after some refinement.&lt;/p&gt;

&lt;h3 id=&quot;the-oasis-signal-detection-system&quot;&gt;The Oasis Signal Detection System&lt;/h3&gt;
&lt;p&gt;The Oasis system embodied three separate signal detection philosophies for seeking different types of signals:&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;Carrier Wave Signal Detector
    &lt;ul&gt;
      &lt;li&gt;Near zero bandwidth, may be drifting slowly with time (extreme case)&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Pulse Signal Detector
    &lt;ul&gt;
      &lt;li&gt;Broad bandwidth, may be pulsed in time (other extreme case)&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Battery of Tests
    &lt;ul&gt;
      &lt;li&gt;All signals in between the extreme cases (unpredictable cases). These include:&lt;/li&gt;
    &lt;/ul&gt;
    &lt;ul&gt;
      &lt;li&gt;Complex Coherence&lt;/li&gt;
      &lt;li&gt;Polarization&lt;/li&gt;
      &lt;li&gt;GCV by Row&lt;/li&gt;
      &lt;li&gt;ANOVA Row&lt;/li&gt;
      &lt;li&gt;ANOVA Column&lt;/li&gt;
      &lt;li&gt;ANOVA Interaction&lt;/li&gt;
      &lt;li&gt;Total Power&lt;/li&gt;
      &lt;li&gt;Goodness of Fit&lt;/li&gt;
      &lt;li&gt;Narrowband Pulse&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id=&quot;summary&quot;&gt;Summary&lt;/h2&gt;
&lt;p&gt;Following on from Project Cyclops eight years earlier, Project Oasis focussed on the design of a signal detection system that would find both intentional (beacons) and unintentional (leakage) signals from extraterrestrial civilisations. The first chapter of the 443-page long technical report from this project summarises the state of the SETI field as of 1979 and outlines the design of the Oasis signal detector. The authors were confident that the search was both feasible and urgent.&lt;/p&gt;

&lt;p&gt;The following chapters provide further details and I will document my notes on these in separate posts. Chapter two covers the characteristics of signals and noise and how to differentiate between them, which is the main task of the Oasis signal detector.&lt;/p&gt;

&lt;h2 id=&quot;references&quot;&gt;References&lt;/h2&gt;

&lt;ol class=&quot;bibliography&quot;&gt;&lt;li&gt;&lt;span id=&quot;ProjectCyclopsDesign1972&quot;&gt;1. &lt;i&gt;Project Cyclops: A Design Study of a System for Detecting Extraterrestrial Intelligent Life&lt;/i&gt;. 1972.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span id=&quot;oliverRationaleWaterHole1979&quot;&gt;2. Oliver B M: &lt;b&gt;Rationale for the Water Hole&lt;/b&gt;. &lt;i&gt;Acta Astronautica&lt;/i&gt; 1979, &lt;b&gt;6&lt;/b&gt;:71–79.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span id=&quot;lordProjectOASISDesign1981&quot;&gt;3. Lord S, Dixon R, Healy T: &lt;i&gt;Project OASIS: The Design of a Signal Detector for the Search for Extraterrestrial Intelligence&lt;/i&gt;. 1981.&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;

&lt;script id=&quot;MathJax-script&quot; async=&quot;&quot; src=&quot;https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js&quot;&gt;&lt;/script&gt;</content><author><name>Gemma Danks</name></author><category term="literature" /><category term="research" /><category term="astrobiology" /><category term="technosignatures" /><category term="literature" /><category term="summary" /><category term="seti" /><summary type="html">Project Oasis was the second SETI-related Summer Faculty Fellowship Study in Engineering System Design funded by NASA in cooperation with the American Society for Engineering Education (ASEE) and was conducted at the University of Santa Clara and the NASA Ames Research Center in 1979, eight years after Project Cyclops in 1971 (I have notes on the Project Cyclops report [1] in two previous posts: part i and part ii).</summary></entry><entry><title type="html">ETI does not exist</title><link href="https://open-research.gemmadanks.com/literature/eti-does-not-exist/" rel="alternate" type="text/html" title="ETI does not exist" /><published>2023-10-05T20:29:00+01:00</published><updated>2023-10-05T20:29:00+01:00</updated><id>https://open-research.gemmadanks.com/literature/eti-does-not-exist</id><content type="html" xml:base="https://open-research.gemmadanks.com/literature/eti-does-not-exist/">&lt;p&gt;In a paper in 1980 &lt;a class=&quot;citation&quot; href=&quot;#tiplerExtraterrestrialIntelligentBeings1980&quot;&gt;[1]&lt;/a&gt;, mathematical physicist &lt;a href=&quot;https://en.wikipedia.org/wiki/Frank_J._Tipler&quot;&gt;Frank Tipler&lt;/a&gt; presented his argument that if extraterrestrial intelligent beings exist they would already be in our solar system since they would inevitably develop technology that would explore the galaxy in less than 300 million years. As they are not here it follows that they don’t exist.&lt;/p&gt;

&lt;p&gt;This argument had been expressed before. Five years earlier, Michael Hart published &lt;a href=&quot;https://open-research.gemmadanks.com/literature/why-extraterrestrials-are-not-on-earth/&quot;&gt;his reasons for rejecting the many explanations for why extraterrestrials are not already on Earth&lt;/a&gt; &lt;a class=&quot;citation&quot; href=&quot;#hartExplanationAbsenceExtraterrestrials1975&quot;&gt;[2]&lt;/a&gt;, in a paper that was the first to formalise what is now famously called the Fermi Paradox (if there are so many extraterrestrial civilisations then where are they all?) Tipler felt that the force of the argument against the existence of extraterrestrial intelligence (ETI) had not been appreciated and wanted to give it more weight in his paper.&lt;/p&gt;

&lt;p&gt;Here are my notes on Tipler’s 1980 paper. You can find my notes on other classic SETI papers in my &lt;a href=&quot;https://open-research.gemmadanks.com/literature/technosignatures-literature-roundup/&quot;&gt;roundup of the technosignatures literature&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&quot;the-evolution-of-intelligence-is-rare&quot;&gt;The evolution of intelligence is rare&lt;/h2&gt;
&lt;p&gt;According to Tipler, in 1980, most leading experts in evolutionary biology thought that the evolution of intelligence in our galaxy was unique to Earth since there are many more alternate “pathways” evolution could take that do not lead to intelligence. He claimed that it was primarily astronomers that thought otherwise.&lt;/p&gt;

&lt;p&gt;Tipler agreed with the biologists and he put the probability of another technological civilisation emerging after 5 bilion years of evolution at less than \(10^{-10}\) (i.e. 1 planet in 10 billion: he estimated that there are 10 billion planets in our galaxy that host life and only one of these (Earth) has intelligent life).&lt;/p&gt;

&lt;h2 id=&quot;any-communicative-species-would-also-have-developed-rockets-and-computers&quot;&gt;Any communicative species would also have developed rockets and computers&lt;/h2&gt;
&lt;p&gt;If we assume another civilisation is capable of interstellar communication via radio waves, then we must also assume they are capable of interstellar space travel and are likely to use sophisticated computers. Tipler went one step further and proposed that they would be capable of exploring and/or colonising the galaxy within 300 million years using machines, with an initial cost less than operating a microwave beacon for several hundred years:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;They will also develop a self-replicating universal constructor with intelligence comparable to the human level&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2 id=&quot;maximum-information-for-the-lowest-cost&quot;&gt;Maximum information for the lowest cost&lt;/h2&gt;
&lt;p&gt;Minimising cost involves using:&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;“Off-the-shelf” technology to reduce research and development costs&lt;/li&gt;
  &lt;li&gt;Resources that would not otherwise be used (“useless” materials in other (uninhabited) stellar systems)&lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id=&quot;space-exporation-with-von-neumann-machines-and-extrasolar-resources&quot;&gt;Space exporation with von Neumann machines and extrasolar resources&lt;/h2&gt;
&lt;p&gt;Tipler proposed sending a probe to another stellar system with:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;An engine for slowing down&lt;/li&gt;
  &lt;li&gt;An engine for travelling within the target system&lt;/li&gt;
  &lt;li&gt;A self-reproducing universal constructor with human-level intelligence (a von Neumann machine) as a payload.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This probe would initiate galaxy exploration or colonisation in the following stages:&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;The von Neumann machine seeks out construction material (meteors, asteroids, comets etc.) it can use to make several copies of itself and the orignal probe and engines&lt;/li&gt;
  &lt;li&gt;Copies of the initial probe are launched at nearby stars&lt;/li&gt;
  &lt;li&gt;The von Neumann machine starts exploring (and, using available resources, conducting scientific research in) the stellar system it is in and relay information back to its system of origin&lt;/li&gt;
  &lt;li&gt;When new probes reach their target system the process is repeated until all stars in the galaxy have been covered&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Once in another system, a von Neumann machine can use resources there to conduct projects that would otherwise be too expensive. Some projects Tipler suggested include:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Building an &lt;a href=&quot;https://en.wikipedia.org/wiki/O%27Neill_cylinder&quot;&gt;O’Neill colony&lt;/a&gt; (a proposed construction for settlement in space comprising two rotating cylinders) in systems with no planets to colonise&lt;/li&gt;
  &lt;li&gt;Creating new inhabitants for the system by synthesising fertilised eggs and artificial wombs, together with robots to raise the children to adulthood (avoiding the problem of damage to living cells during interstellar travel)&lt;/li&gt;
  &lt;li&gt;Receiving updates, via microwave, with instructions for building the latest devices developed on the system of origin (particularly if the journey time is very long)&lt;/li&gt;
  &lt;li&gt;Constructing second generation probes with faster travel times&lt;/li&gt;
  &lt;li&gt;Constructing an artifact in the target system that would be detected by any technological civilisation present in order to initiate communication&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;getting-a-von-neumann-machine-to-another-stellar-system&quot;&gt;Getting a von Neumann machine to another stellar system&lt;/h3&gt;
&lt;p&gt;Tipler argued that the main problem is getting a von Neumann machine to another stellar system. This was already possible with rocket technology of the time, with journey times of \(10^4\) - \(10^5\) years. Faster travel times require more cost, almost all of which is rocket fuel.&lt;/p&gt;

&lt;p&gt;Tipler proposed sending an initial low speed probe with a von Neumann machine that could use resources at the target system to construct and fuel faster second generation probes to send to the next targets. This requires the species at the system of origin to wait a long time before it gets any information back but the cost would be minimised (since von Neumann machines would be developed anyway for other purposes). Tipler estimated the exploration of the galaxy in this way would cost about 3 billion dollars in 1970s money (one tenth the cost of the Apollo program).&lt;/p&gt;

&lt;h3 id=&quot;time-to-explore-the-galaxy&quot;&gt;Time to explore the galaxy&lt;/h3&gt;
&lt;p&gt;Tipler estimated a minimum time of 4 million years, given a high speed probe and 100 years for von Neumann machines to self-replicate. For rocket technology of the time he estimated a more conservative 300 million years.&lt;/p&gt;

&lt;h2 id=&quot;strategies-for-exploring-the-galaxy&quot;&gt;Strategies for exploring the galaxy&lt;/h2&gt;
&lt;p&gt;Applying the mathematical theory of island colonisation to galactic colonisation, Tipler argued there are two strategies for exploration:&lt;/p&gt;

&lt;h3 id=&quot;the-r-strategy&quot;&gt;The r-strategy&lt;/h3&gt;
&lt;p&gt;The net reproductive rate, r, is maximised at the expense of all else. This would be the strategy used in the early stages of colonisation.&lt;/p&gt;

&lt;h3 id=&quot;the-k-strategy&quot;&gt;The K-strategy&lt;/h3&gt;
&lt;p&gt;The carrying capacity of the environment, K, is used to secure the ecological niche in the target system. This would be the strategy used once the system had been colonised for some time. Fewer probes would be sent in this phase.&lt;/p&gt;

&lt;h2 id=&quot;we-are-the-only-communicative-intelligent-life-in-the-galaxy&quot;&gt;We are the only communicative intelligent life in the galaxy&lt;/h2&gt;
&lt;p&gt;Together with his argument for the inevitability of galactic exploration using von Neumann machines, Tipler used &lt;a href=&quot;https://open-research.gemmadanks.com/literature/drake-equation/&quot;&gt;the Drake equation&lt;/a&gt; to argue that we are the only technologically advanced civilisation in the galaxy.&lt;/p&gt;

&lt;p&gt;He used the following assumptions:&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;&lt;strong&gt;Any intelligent species that attempts interstellar communication will begin galactic exploration within 100 years after developing the technology required&lt;/strong&gt;&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;It takes 300 million years to explore the galaxy&lt;/strong&gt;&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;No probes from another civilisation are present in our solar system&lt;/strong&gt;&lt;/li&gt;
  &lt;li&gt;It takes 5 billion years to evolve intelligence and develop technology for interstellar travel (Earth is average)&lt;/li&gt;
  &lt;li&gt;The probabilities of the Drake equation (that a star has planets, that the planets are habitable, that life evolves, that intelligence evolves and that communicative civilisations evolve) do not vary with time / age of the galaxy&lt;/li&gt;
  &lt;li&gt;The galaxy is 11 - 18 billion years old and contains \(10^{11}\) stars&lt;/li&gt;
  &lt;li&gt;The rate of star formation has been decreasing exponentially since the initial burst of heavy element formation&lt;/li&gt;
  &lt;li&gt;The rate of earth-like planet formation is constant&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;From the above, Tipler argued, it follows that:&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;All stellar systems older than 5.3 billion years are candidates for hosting technological civilisations, which is around the number of stars in the galaxy (\(10^{11}\))&lt;/li&gt;
  &lt;li&gt;Of these \(10^{11}\) candidates, &lt;strong&gt;none have succeeded in colonising the galaxy&lt;/strong&gt;&lt;/li&gt;
  &lt;li&gt;The probability of an intelligent civilisation existing in our galaxy is less than 1/\(10^{11}\)&lt;/li&gt;
  &lt;li&gt;The number of existing communicating civilisations in our galaxy is less than or equal to this probability multiplied by the number of stars in our galaxy = \(10^{-11} \times 10^{11} = 1\) (i.e. us)&lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id=&quot;longevity-is-irrelevant&quot;&gt;Longevity is irrelevant&lt;/h2&gt;
&lt;p&gt;As long as a civilisation has time to construct and send its initial probe containing a von Neumann machine, Tipler argued, the exploration of the galaxy would happen automatically, regardless of the longevity of the original civilisation.&lt;/p&gt;

&lt;h2 id=&quot;there-is-no-good-reason-for-choosing-not-to-explore&quot;&gt;There is no good reason for choosing not to explore&lt;/h2&gt;
&lt;p&gt;Tipler argued that there is no good reason to believe an intelligent civilisation, interested in interstellar communication, would not explore the galaxy. Any argument for interstellar communication is an even stronger argument for galactic exploration, given the initial investment is for only one probe carrying a von Neumann machine.&lt;/p&gt;

&lt;h3 id=&quot;exploration-improves-long-term-survival-of-the-species&quot;&gt;Exploration improves long-term survival of the species&lt;/h3&gt;
&lt;p&gt;All life on Earth tends towards dispersal into new environments. For an intelligent species, this dispersal is limited only by the level of technology.&lt;/p&gt;

&lt;p&gt;Colonising the stars increases the probability that a species will survive the death of its star and other existential risks.&lt;/p&gt;

&lt;h3 id=&quot;keeping-control-of-the-machines&quot;&gt;Keeping control of the machines&lt;/h3&gt;
&lt;p&gt;Tipler proposed three ways of ensuring the machines don’t become independent from the species that created them:&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;Coding the control program such that its failure triggers failure of the entire program&lt;/li&gt;
  &lt;li&gt;Probes are programmed to form colonies of the species that created them, colonies which could destroy any machines that slipped out of control&lt;/li&gt;
  &lt;li&gt;The machines are an extension of the biological species and heir to their civilisation: losing control over them is accepted&lt;/li&gt;
&lt;/ol&gt;

&lt;h3 id=&quot;are-eti-already-here&quot;&gt;Are ETI already here?&lt;/h3&gt;
&lt;p&gt;Tipler considered the possibility that probes from extraterrestrial intelligence(s) are already in our solar system: we just haven’t detected them. He argued that if this was the case, it is most likely that they arrived a billion years ago and, since there was no intelligent life on Earth at that time, they would have no reason to hide and would already have used up the materials in the asteroid belt.&lt;/p&gt;

&lt;p&gt;Tipler equated a belief in the existence of extraterrestrial intelligence anywhere in the galaxy with the belief that UFOs are extraterrestrial spaceships.&lt;/p&gt;

&lt;h2 id=&quot;the-anthropic-principle&quot;&gt;The Anthropic Principle&lt;/h2&gt;

&lt;p&gt;He ended his paper by referring to the &lt;a href=&quot;https://en.wikipedia.org/wiki/Anthropic_principle&quot;&gt;Anthropic Principle&lt;/a&gt;. Original reasoning based on this principle went that because we are here, the Universe must be compatible with the existence of (intelligent) life. Tipler defined it as:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Many aspects of the Universe are determined by the requirement that intelligent life exists in it.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;He then argued that it follows that the Universe must contain \(10^{20}\) stars in order to contain a single intelligent species and that we should not therefore be surprised that it contains only one (us).&lt;/p&gt;

&lt;p&gt;This kind of argument for the fine-tuning of the Universe for intelligent life to exist is controversial because it reverses cause and effect. The Universe seems fine-tuned for life from our perspective only because we have evolved and adapted to (a very tiny part of) it (via natural selection). Tipler published more on this, together with John Barrow, in a book called The Anthropic Cosmological Principle.&lt;/p&gt;

&lt;h2 id=&quot;summary&quot;&gt;Summary&lt;/h2&gt;
&lt;p&gt;Tipler’s conclusion that intelligent extraterrestrials don’t exist is based on the assumption that any intelligent species interested in interstellar communication will also develop self-replicating machines that would be sent out to the nearest stars, at low cost, to rapidly and autonomously explore the entire galaxy. Given this assumption, these machines would already be in our solar system. His paper complemented the &lt;a href=&quot;https://open-research.gemmadanks.com/literature/why-extraterrestrials-are-not-on-earth/&quot;&gt;paper by Hart&lt;/a&gt;, published in 1975, that rejected a series of explanations for why technologically extraterrestrial civilisations aren’t already here.&lt;/p&gt;

&lt;p&gt;This was another paper expressing a pessimistic view of SETI and was an interesting read, especially given the current acceleration of progress in (and interest in risks from) artificial intelligence. Tipler perhaps underestimated the concern a biological species might have in sending von Neumann machines with human-level intelligence out into the Universe with the goal of colonisation.&lt;/p&gt;

&lt;h2 id=&quot;references&quot;&gt;References&lt;/h2&gt;

&lt;ol class=&quot;bibliography&quot;&gt;&lt;li&gt;&lt;span id=&quot;tiplerExtraterrestrialIntelligentBeings1980&quot;&gt;1. Tipler FJ: &lt;b&gt;Extraterrestrial Intelligent Beings Do Not Exist&lt;/b&gt;. &lt;i&gt;Quarterly Journal of the Royal Astronomical Society&lt;/i&gt; 1980, &lt;b&gt;21&lt;/b&gt;:267–281.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span id=&quot;hartExplanationAbsenceExtraterrestrials1975&quot;&gt;2. Hart MH: &lt;b&gt;Explanation for the Absence of Extraterrestrials on Earth&lt;/b&gt;. &lt;i&gt;Quarterly Journal of the Royal Astronomical Society&lt;/i&gt; 1975, &lt;b&gt;16&lt;/b&gt;:128.&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;

&lt;script id=&quot;MathJax-script&quot; async=&quot;&quot; src=&quot;https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js&quot;&gt;&lt;/script&gt;</content><author><name>Gemma Danks</name></author><category term="literature" /><category term="research" /><category term="astrobiology" /><category term="technosignatures" /><category term="literature" /><category term="summary" /><category term="seti" /><summary type="html">In a paper in 1980 [1], mathematical physicist Frank Tipler presented his argument that if extraterrestrial intelligent beings exist they would already be in our solar system since they would inevitably develop technology that would explore the galaxy in less than 300 million years. As they are not here it follows that they don’t exist.</summary></entry><entry><title type="html">Rationale for the water hole</title><link href="https://open-research.gemmadanks.com/literature/water-hole-rationale/" rel="alternate" type="text/html" title="Rationale for the water hole" /><published>2023-09-28T11:10:00+01:00</published><updated>2023-09-28T11:10:00+01:00</updated><id>https://open-research.gemmadanks.com/literature/water-hole-rationale</id><content type="html" xml:base="https://open-research.gemmadanks.com/literature/water-hole-rationale/">&lt;p&gt;Searching the ‘water hole’ for extraterrestrial signals had already been proposed nearly a decade earlier as a result of the &lt;a href=&quot;https://open-research.gemmadanks.com/literature/project-cyclops-part-i&quot;&gt;1971 Cyclops Project&lt;/a&gt; &lt;a class=&quot;citation&quot; href=&quot;#ProjectCyclopsDesign1972&quot;&gt;[1]&lt;/a&gt; but in 1979, several navigational satellites were planned that would create noise in this frequency band. In response, co-director of the Cyclops project, &lt;a href=&quot;https://www.seti.org/bernard-m-oliver-1916-1995&quot;&gt;Bernard Oliver&lt;/a&gt;, published a paper titled “Rationale for the water hole” &lt;a class=&quot;citation&quot; href=&quot;#oliverRationaleWaterHole1979&quot;&gt;[2]&lt;/a&gt; to make the case for keeping the water hole free from interference so that we are not “blind” to the signals from other technologically advanced civilisations.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;It would be a bitter irony if the desire to know exactly where we are at all times on Earth were to prevent us from ever knowing where we are with respect to other life in the Galaxy.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Here are my notes from reading this paper.&lt;/p&gt;

&lt;p&gt;You can find my notes on other classic SETI papers in my &lt;a href=&quot;https://open-research.gemmadanks.com/literature/technosignatures-literature-roundup/&quot;&gt;roundup of the technosignatures literature&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&quot;what-is-the-water-hole&quot;&gt;What is the ‘water hole’?&lt;/h2&gt;
&lt;p&gt;The water hole is a frequency band in the electromagnetic spectrum that lies between the hydrogen line (1420 MHz) and the hydroxyl radical emission line (1662 MHz): hydrogen (H) and hydroxyl (OH) are the dissociation products of water (H\(_2\)O), which is essential for all life that we know about.&lt;/p&gt;

&lt;p&gt;The hydrogen line is the frequency of radiation emitted by the reversal of the spin of the electron (a spin-flip transition) in neutral hydrogen atoms (corresponding to a wavelength of 21 cm). Radiation at this frequency can penetrate interstellar dust and since hydrogen is the most abundant element in the universe it is likely to be detected by any technologically advanced civilisation. It was the region around the hydrogen line that was originally proposed and targetted by early SETI researchers when other emission lines had not yet been discovered &lt;a class=&quot;citation&quot; href=&quot;#Cocconi1959&quot;&gt;[3,4,5]&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Bernard Oliver and the other members of the &lt;a href=&quot;https://open-research.gemmadanks.com/literature/project-cyclops-part-i&quot;&gt;Cyclops Project&lt;/a&gt; &lt;a class=&quot;citation&quot; href=&quot;#ProjectCyclopsDesign1972&quot;&gt;[1]&lt;/a&gt; later suggested that the region between the hydrogen and hydroxyl lines forms a poetic place for water-based life to meet: life on Earth gathers at water holes.&lt;/p&gt;

&lt;h2 id=&quot;why-focus-on-the-water-hole&quot;&gt;Why focus on the ‘water hole’?&lt;/h2&gt;
&lt;p&gt;Oliver argued that the basic premise leading to the water hole is that a civilisation wishing to make contact with others will choose the least expensive method that guarantees success.&lt;/p&gt;

&lt;h3 id=&quot;radio-waves-are-the-most-efficient-means-of-communication&quot;&gt;Radio waves are the most efficient means of communication&lt;/h3&gt;
&lt;p&gt;Like others before him &lt;a class=&quot;citation&quot; href=&quot;#Cocconi1959&quot;&gt;[3,6,7,1]&lt;/a&gt;, Oliver excluded communication via space travel or probes on account of the time and energy they would require. This left communication via radiation. Oliver listed two main requirements that this radiation must have in order to detect it as an artificial signal: it must be significantly stronger than background radiation and have some property that is not found naturally. He also listed seven other properties:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Requires the least radiated power&lt;/li&gt;
  &lt;li&gt;Not absorbed by the interstellar medium or atmospheres&lt;/li&gt;
  &lt;li&gt;Not deflected by galactic fields&lt;/li&gt;
  &lt;li&gt;Readily collected&lt;/li&gt;
  &lt;li&gt;Efficient generation and detection&lt;/li&gt;
  &lt;li&gt;High travel speed&lt;/li&gt;
  &lt;li&gt;Normally radiated by technological civilisations&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This ruled out any particles with mass (since they would travel slowly and require too much energy to generate) or charge (these would be absorbed and/or deflected). It also excluded gravitons and neutrinos since they are not readily collected nor efficiently or normally radiated. Only low energy photons (radio waves) met all the criteria (they can be modulated such that they are not confused with natural sources).&lt;/p&gt;

&lt;h3 id=&quot;maximising-the-signal-to-noise-ratio&quot;&gt;Maximising the signal to noise ratio&lt;/h3&gt;
&lt;p&gt;There are three contributions to background noise in received signals, which are similar everywhere in the galaxy:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Synchrotron radiation (produced by electrons travelling in spirals along magnetic field lines) (at frequencies &amp;lt; 1 GHz)&lt;/li&gt;
  &lt;li&gt;Cosmic microwave background radiation (produced just after the big bang)&lt;/li&gt;
  &lt;li&gt;Quantum noise (at frequencies &amp;gt; 60 GHz)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These define a quiet region from 1 - 60 GHz (the free-space microwave window).&lt;/p&gt;

&lt;p&gt;On the surface of an Earth-like planet there are additional sources of noise from molecules in the atmosphere re-radiating noise:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Water vapour (around 22 GHz)&lt;/li&gt;
  &lt;li&gt;Oxygen (around 60 GHz)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These further narrow the window to 1 - 10 GHz (the terrestrial microwave window). This is where the detectable received power is at its lowest.&lt;/p&gt;

&lt;h3 id=&quot;other-advantages-of-the-microwave-window&quot;&gt;Other advantages of the microwave window&lt;/h3&gt;
&lt;p&gt;Oliver listed further advantages of focussing the search in the (low) microwave region.&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Lower cost per unit of collecting area&lt;/li&gt;
  &lt;li&gt;Greater collecting area for the sharpest usable beam&lt;/li&gt;
  &lt;li&gt;Greater freedom from H\(_2\)O and O\(_2\) absorption&lt;/li&gt;
  &lt;li&gt;Higher beacon powers easier to achieve&lt;/li&gt;
  &lt;li&gt;Narrower bandwidths are possible&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;accounting-for-doppler-drift&quot;&gt;Accounting for Doppler drift&lt;/h3&gt;
&lt;p&gt;Planetary rotations and revolutions cause a change in the frequency of a signal. The motion at the receiver end can be corrected for but is more difficult at the transmitter end if the signal is omnidirectional (although ways to do this had been proposed &lt;a class=&quot;citation&quot; href=&quot;#dixonSearchStrategyFinding1973&quot;&gt;[4]&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;Oliver showed that the optimum bandwidth for a signal (too high and there is too much noise; too low and it will be not be received) increases in proportion to the square root of frequency. Correcting for this narrows the quietest region of the microwave window to a 2 GHz region containing the water hole.&lt;/p&gt;

&lt;h3 id=&quot;chauvinistic-and-romantic-nonsense&quot;&gt;Chauvinistic and romantic nonsense?&lt;/h3&gt;
&lt;p&gt;The minimum noise after correcting for Doppler drift occurs at 1.5 GHz but, Oliver argued, this does not increase much within a 2 GHz band. This is too wide to search or to keep free from interference and there is no technical reason to prefer a particular frequency over another. It does, however, include the water hole proposed by the Cyclops team due to water’s significance for life on Earth.&lt;/p&gt;

&lt;p&gt;Oliver admits that it is both romantic and “chauvinistic to water-based life” but argued that it is not nonsense. We can expect water to be a common feature of habitable planets and he stated that “water-based life is almost certainly the most common form and well may be the only (naturally occurring) form”. Today the search for life on other planets is largely driven by the presence of conditions suitable for liquid water.&lt;/p&gt;

&lt;p&gt;Oliver also argued that romance itself may be “a perception peculiar to intelligence” and that intelligent extraterrestrial life may also perceive it.&lt;/p&gt;

&lt;h2 id=&quot;summary&quot;&gt;Summary&lt;/h2&gt;
&lt;p&gt;In this 1979 paper, Bernard Oliver re-examined the case for focussing our search for signals from extraterrestrial intelligence on the ‘water hole’, a region of the electromagnetic spectrum bound by the emission lines of hydrogen and the hydroxyl radical. His main motivation was to argue for protecting this region against interference from e.g. navigational satellites. He concluded that, while there may be reasons for choosing another region of the spectrum or another method of communication that we don’t know about yet, this should not stop us from searching the water hole since “progress requires us to proceed on the basis of what we know, and not forever wait for something now unknown to be discovered”.&lt;/p&gt;

&lt;h2 id=&quot;references&quot;&gt;References&lt;/h2&gt;

&lt;ol class=&quot;bibliography&quot;&gt;&lt;li&gt;&lt;span id=&quot;ProjectCyclopsDesign1972&quot;&gt;1. &lt;i&gt;Project Cyclops: A Design Study of a System for Detecting Extraterrestrial Intelligent Life&lt;/i&gt;. 1972.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span id=&quot;oliverRationaleWaterHole1979&quot;&gt;2. Oliver B M: &lt;b&gt;Rationale for the Water Hole&lt;/b&gt;. &lt;i&gt;Acta Astronautica&lt;/i&gt; 1979, &lt;b&gt;6&lt;/b&gt;:71–79.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span id=&quot;Cocconi1959&quot;&gt;3. Cocconi G, Morrison P: &lt;b&gt;Searching for Interstellar Communications&lt;/b&gt;. &lt;i&gt;Nature&lt;/i&gt; 1959, &lt;b&gt;184&lt;/b&gt;:844–846.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span id=&quot;dixonSearchStrategyFinding1973&quot;&gt;4. Dixon RS: &lt;b&gt;A Search Strategy for Finding Extraterrestrial Radio Beacons&lt;/b&gt;. &lt;i&gt;Icarus&lt;/i&gt; 1973, &lt;b&gt;20&lt;/b&gt;:187–199.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span id=&quot;drakeProjectOzma1961&quot;&gt;5. Drake FD: &lt;b&gt;Project Ozma&lt;/b&gt;. &lt;i&gt;Physics Today&lt;/i&gt; 1961, &lt;b&gt;14&lt;/b&gt;:40–46.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span id=&quot;drakeRADIOSEARCHINTELLIGENT1965&quot;&gt;6. Drake FD: &lt;b&gt;THE RADIO SEARCH FOR INTELLIGENT EXTRATERRESTRIAL LIFE&lt;/b&gt;. In &lt;i&gt;Current Aspects of Exobiology&lt;/i&gt;. . Elsevier; 1965:323–345.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span id=&quot;hoernerSearchSignalsOther1961&quot;&gt;7. Hoerner SV: &lt;b&gt;The Search for Signals from Other Civilizations&lt;/b&gt;. &lt;i&gt;Science, New Series&lt;/i&gt; 1961, &lt;b&gt;134&lt;/b&gt;:1839–1843.&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;

&lt;script id=&quot;MathJax-script&quot; async=&quot;&quot; src=&quot;https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js&quot;&gt;&lt;/script&gt;</content><author><name>Gemma Danks</name></author><category term="literature" /><category term="research" /><category term="astrobiology" /><category term="technosignatures" /><category term="literature" /><category term="summary" /><category term="seti" /><summary type="html">Searching the ‘water hole’ for extraterrestrial signals had already been proposed nearly a decade earlier as a result of the 1971 Cyclops Project [1] but in 1979, several navigational satellites were planned that would create noise in this frequency band. In response, co-director of the Cyclops project, Bernard Oliver, published a paper titled “Rationale for the water hole” [2] to make the case for keeping the water hole free from interference so that we are not “blind” to the signals from other technologically advanced civilisations.</summary></entry><entry><title type="html">The Arecibo message of November, 1974</title><link href="https://open-research.gemmadanks.com/literature/arecibo/" rel="alternate" type="text/html" title="The Arecibo message of November, 1974" /><published>2023-08-29T15:44:00+01:00</published><updated>2023-08-29T15:44:00+01:00</updated><id>https://open-research.gemmadanks.com/literature/arecibo</id><content type="html" xml:base="https://open-research.gemmadanks.com/literature/arecibo/">&lt;p&gt;In 1974, the Arecibo Observatory became capable of transmitting radio signals at a maximum effective power that was twenty times the combined power of all power plants on Earth at the time (\(2 \times 10^{13}\) W). A transmission at 1 Hz bandwidth or less would have been detectable by similar radio telescopes all over the Milky Way.&lt;/p&gt;

&lt;p&gt;The first use of this transmitter (at 1700 GMT on November 16, 1974) was to send a brief message to the globular star cluster M13 (the Great Cluster in Hercules, NGC 6205), which lies 25,000 light years away and contains several hundred thousand stars. This was to demonstrate the advanced level of radio astronomy on Earth, rather than a realistic attempt to initiate interstellar communication with another civilisation. A paper published in 1975 by the staff of the Arecibo Observatory gives more details about the message &lt;a class=&quot;citation&quot; href=&quot;#thestaffatthenationalastronomyAreciboMessageNovember1975&quot;&gt;[1]&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Here are my notes from reading this paper. You can find my notes on other classic SETI papers in my &lt;a href=&quot;https://open-research.gemmadanks.com/literature/technosignatures-literature-roundup/&quot;&gt;roundup of the technosignatures literature&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&quot;message-transmission&quot;&gt;Message transmission&lt;/h2&gt;
&lt;p&gt;The message was transmitted by the Arecibo telescope at a frequency of 2380 MHz (a higher frequency than the 1420 - 1662 MHz ‘water hole’, a quiet region of the spectrum recommended by the authors of the &lt;a href=&quot;https://open-research.gemmadanks.com/literature/project-cyclops-part-i&quot;&gt;Cyclops report&lt;/a&gt; &lt;a class=&quot;citation&quot; href=&quot;#ProjectCyclopsDesign1972&quot;&gt;[2]&lt;/a&gt; as a convenient band for communication with extraterrestrial intelligences), a bandwidth of 10 Hz (which is broader than what &lt;a href=&quot;https://open-research.gemmadanks.com/literature/radio-seti-search-strategy/&quot;&gt;others had proposed&lt;/a&gt; &lt;a class=&quot;citation&quot; href=&quot;#dixonSearchStrategyFinding1973&quot;&gt;[3]&lt;/a&gt;) and at a rate of 10 characters per second. It took 169 seconds to send and 5 hours and 20 minutes to pass Pluto.&lt;/p&gt;

&lt;p&gt;The effective power in the direction of transmission was \(3 \times 10^{12}\) W and by the time it reaches M13 (in about 25,000 years) it will make the Sun appear to be the brightest star in the Milky Way.&lt;/p&gt;

&lt;h2 id=&quot;message-content&quot;&gt;Message content&lt;/h2&gt;
&lt;p&gt;Constructed primarily by Frank Drake, Richard Isaacman, Linda May and James Walker, with suggestions for improvement by others that included Carl Sagan, the message described characteristics of life on Earth with 1679 characters in binary format (using two transmission frequencies that were continuously corrected for the Doppler effect of the orbital motion and rotation of Earth). The message was laid out in a grid, arranged from top right to bottom left in 73 rows of 23 characters per row (two prime numbers were used to facilitate decoding the message).&lt;/p&gt;

&lt;h3 id=&quot;binary-number-system&quot;&gt;Binary number system&lt;/h3&gt;
&lt;p&gt;The first 4 rows give the numbers 1-10 in binary format. Each number is read from bottom to top, starting on the third row down (the 1s), followed by the second row (the 2s) then the top row (the 4s) (with the fourth row indicating a “number label”). A single column can represent numbers from 1-7 and an adjacent column to the left is used to continue the binary format (third row represents the 8s, second 16s and top 32s). A blank row was left between each number.&lt;/p&gt;

&lt;h2 id=&quot;terrestrial-biochemistry&quot;&gt;Terrestrial biochemistry&lt;/h2&gt;
&lt;p&gt;Using the binary number system described by the first four rows of the message, rows 6-10 (row 5 was blank) contains the numbers 1, 6, 7, 8 and 15, the atomic numbers of hydrogen, carbon, nitrogen, oxygen and phosphorus. Twelve groups of five numbers then give the numbers of each of these elements in the building blocks that make up a DNA double helix: four units of deoxyribose, four phosphate groups and an adenine, thymine, guanine and cytosine, arranged in the same configuration that they occur in DNA.&lt;/p&gt;

&lt;p&gt;The double helix conformation is illustrated in the next part of the message together with the number 4 billion (the approximate number of DNA base-pairs in the human genome) encoded in binary down the centre of the helix.&lt;/p&gt;

&lt;h2 id=&quot;human-form&quot;&gt;Human form&lt;/h2&gt;
&lt;p&gt;The DNA helix leads to the head in a picture of a human and to the left is the number 4 billion representing the size of the human population on Earth. To the right is a vertical line from the head to the feet of the human and a horizontal line, representing the number 14 when read right to left, which gives the number of units of length of a human (one unit being the wavelength of the transmission: 12.6 cm)&lt;/p&gt;

&lt;h2 id=&quot;planet-earth&quot;&gt;Planet Earth&lt;/h2&gt;
&lt;p&gt;Underneath the encoding of a human form is a diagram of the Solar System with the Sun to the right. Planet Earth is highlighted by displacing it upwards compared to the other eight planets (Pluto was still a planet back then).&lt;/p&gt;

&lt;h2 id=&quot;our-technology&quot;&gt;Our technology&lt;/h2&gt;
&lt;p&gt;A telescope is depicted underneath the Solar System together with a number indicating its size (2430 units).&lt;/p&gt;

&lt;h2 id=&quot;summary&quot;&gt;Summary&lt;/h2&gt;
&lt;p&gt;The Arecibo message was never supposed to be a serious attempt at communicating with extraterrestrial intelligence, and has a very small chance of being detected, but it demonstrated that humans had reached a level of technological advancement that made this a possibility. We are capable of sending information out into the galaxy for the benefit of other civilisations or to respond to, or initiate, interstellar communication.&lt;/p&gt;

&lt;h2 id=&quot;references&quot;&gt;References&lt;/h2&gt;

&lt;ol class=&quot;bibliography&quot;&gt;&lt;li&gt;&lt;span id=&quot;thestaffatthenationalastronomyAreciboMessageNovember1975&quot;&gt;1. The Staff at the National Astronomy: &lt;b&gt;The Arecibo Message of November, 1974&lt;/b&gt;. &lt;i&gt;Icarus&lt;/i&gt; 1975, &lt;b&gt;26&lt;/b&gt;:462–466.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span id=&quot;ProjectCyclopsDesign1972&quot;&gt;2. &lt;i&gt;Project Cyclops: A Design Study of a System for Detecting Extraterrestrial Intelligent Life&lt;/i&gt;. 1972.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span id=&quot;dixonSearchStrategyFinding1973&quot;&gt;3. Dixon RS: &lt;b&gt;A Search Strategy for Finding Extraterrestrial Radio Beacons&lt;/b&gt;. &lt;i&gt;Icarus&lt;/i&gt; 1973, &lt;b&gt;20&lt;/b&gt;:187–199.&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;

&lt;script id=&quot;MathJax-script&quot; async=&quot;&quot; src=&quot;https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js&quot;&gt;&lt;/script&gt;</content><author><name>Gemma Danks</name></author><category term="literature" /><category term="research" /><category term="astrobiology" /><category term="technosignatures" /><category term="literature" /><category term="summary" /><category term="seti" /><summary type="html">In 1974, the Arecibo Observatory became capable of transmitting radio signals at a maximum effective power that was twenty times the combined power of all power plants on Earth at the time (\(2 \times 10^{13}\) W). A transmission at 1 Hz bandwidth or less would have been detectable by similar radio telescopes all over the Milky Way.</summary></entry></feed>