<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet href="/pretty-feed-v3.xsl" type="text/xsl"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Daniel Thedie | Blog</title><description>Personal blog of Daniel Thedie - Research Software Engineer at the University of Edinburgh</description><link>https://danielthedie.github.io/</link><language>en-gb</language><item><title>Welcome</title><link>https://danielthedie.github.io/blog/2026-01-21_welcome/</link><guid isPermaLink="true">https://danielthedie.github.io/blog/2026-01-21_welcome/</guid><pubDate>Wed, 21 Jan 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;My name is Daniel, welcome to my blog!&lt;/p&gt;
&lt;p&gt;I will use this space to post updates about my work - new software, publications, or takeaways from conferences.&lt;/p&gt;
&lt;p&gt;I am a Research Software Engineer (RSE) in the Biological Research Data Management team (BioRDM) at the University of Edinburgh. I have a multi-disciplinary background, ranging from biology, fluorescence and super-resolution microscopy, to data analysis and writing software. In my different roles, I have always enjoyed helping other researchers, whether by upgrading an in-house microscopy set-up, assisting with image acquisition, creating custom data analysis scripts, or teaching data management using git. I like transmitting knowledge, and I believe in hands-on teaching to empower researchers to be independent, from data collection to analysis and re-use.&lt;/p&gt;
&lt;p&gt;My current work includes being a maintainer and developer for &lt;a href=&quot;https://biodare2.ed.ac.uk&quot;&gt;BioDare2&lt;/a&gt;, and providing software support and data management training to the &lt;a href=&quot;https://ambientbd.com&quot;&gt;Ambient-BD&lt;/a&gt; project (including developing the &lt;a href=&quot;https://nocturn.bio.ed.ac.uk&quot;&gt;nocturn&lt;/a&gt; app for sleep data analysis).&lt;/p&gt;
&lt;p&gt;I am strongly supportive of free, open-source software, and enthusiastic about projects that help reduce our dependency to proprietary tools.&lt;/p&gt;
&lt;p&gt;I look forward to sharing more things here!&lt;/p&gt;
</content:encoded></item><item><title>Gave a workshop on git and GitHub!</title><link>https://danielthedie.github.io/blog/2026-02-19_git-workshop/</link><guid isPermaLink="true">https://danielthedie.github.io/blog/2026-02-19_git-workshop/</guid><pubDate>Thu, 19 Feb 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;This week, I gave a 2-hour workshop on the basics of using git and GitHub. 9 people attended, and I had a great time walking them through commits, branches and pull requests!&lt;/p&gt;
&lt;p&gt;You can find the &lt;a href=&quot;https://github.com/BioRDM/practical_git_workshop&quot;&gt;full workshop materials&lt;/a&gt;... on GitHub, and download the &lt;a href=&quot;https://github.com/BioRDM/practical_git_workshop/blob/main/Presentation/github_workshop.html&quot;&gt;presentation slides&lt;/a&gt; (in html format, opens in any web browser).&lt;/p&gt;
&lt;img src=&quot;https://danielthedie.github.io/resources/blog/git_workshop.jpg&quot; alt=&quot;the room for the git workshop. A title slide is projected, and sheets of paper are on the tables&quot; width=&quot;80%&quot; class=&quot;centre&quot; /&gt;
&lt;p&gt;Below are a few thoughts on how I designed the workshop, and how it was received by participants.&lt;/p&gt;
&lt;h2&gt;A git workshop with no git commands&lt;/h2&gt;
&lt;p&gt;For this workshop, I made the choice to not include &lt;em&gt;any&lt;/em&gt; git terminal commands. This is because I wanted participants to focus on &lt;em&gt;why&lt;/em&gt; they do things, rather than on memorising and typing a whole array of terminal commands. What&apos;s more, there are plenty of IDEs (Integrated Development Environments) and apps that provide a user-friendly interface to git, and I think they&apos;re a great way to get used to the basics: &lt;em&gt;pull&lt;/em&gt;, &lt;em&gt;stage&lt;/em&gt;, &lt;em&gt;commit&lt;/em&gt;, &lt;em&gt;push&lt;/em&gt;!&lt;/p&gt;
&lt;p&gt;Even when using a GUI, git comes with a whole range of specialised terms that can be offputting for newcomers - staging? Checkout? Clone? Pull request?, so I created my own &quot;git glossary&quot;. Again, no terminal commands (those are easily found online), but short definitions of some of the main git terms.&lt;/p&gt;
&lt;img alt=&quot;A4 sheet with a glossary of git terms&quot; src=&quot;https://danielthedie.github.io/resources/blog/git_glossary.png&quot; width=&quot;40%&quot; class=&quot;centre&quot; /&gt;
&lt;p&gt;For the practical parts of the workshop, I replaced lists of commands to be entered with screenshots of RStudio (which all participants already used) and GitHub.&lt;/p&gt;
&lt;p&gt;I think participants enjoyed the approach, and they showed it in their feedback! One of them wrote:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Good to know &lt;em&gt;why&lt;/em&gt; to do things, not just to be told that it is good practice&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;And another one:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Enjoyed the step by step process&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Code modularity makes git more meaningful&lt;/h2&gt;
&lt;p&gt;Another (maybe?) unusual topic for a git workshop was a section on &quot;code modularity&quot;. In this, I explained why it is useful to create functions in code, and to split code between different files. Many researchers create large analysis scripts in a single file with little structure, which makes it hard for collaborators to re-use, and limits the usefulness of git (because any change to the code will affect the same file...). Splitting code in functions and files helps with separation of concerns: parts of the code can be worked on without affecting the others, and the git history will clearly show which files were modified in a given commit. Further down the line, that ensures less merge conflicts, and allows re-using functions in different scripts.&lt;/p&gt;
&lt;p&gt;This part of the workshop was particularly well received, and although we did not have much time to work on it, it stoked interest in participants. Several of them mentioned it in their feedback:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;[I will] read up on functions + files!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Especially appreciated learning about modularity / creating functions&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Will look up functions&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I think if the workshop had lasted an extra hour, I would have let participants spend more time on getting to grips with functions, and experimenting on their own code.&lt;/p&gt;
&lt;h2&gt;Looking forward to next time!&lt;/h2&gt;
&lt;p&gt;I really enjoyed giving this workshop, and I am glad I had the opportunity to spend some time creating and delivering it. I think the &quot;no commands&quot; approach was successful, and I would definitely use it again in the future. The materials are available online for anyone to re-use, and I would be happy to deliver the workshop again when an occasion arises!&lt;/p&gt;
</content:encoded></item><item><title>nocturn published on CRAN!</title><link>https://danielthedie.github.io/blog/2026-06-23_nocturn-on-cran/</link><guid isPermaLink="true">https://danielthedie.github.io/blog/2026-06-23_nocturn-on-cran/</guid><pubDate>Tue, 23 Jun 2026 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;nocturn just got published on &lt;a href=&quot;https://cran.r-project.org/package=nocturn&quot;&gt;CRAN&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;nocturn is an online app and R package for sleep data analysis. It allows loading any type of data that is based on sleep sessions, whether it was produced by a radar device, actigraphy, sleep diary, or other.&lt;/p&gt;
&lt;p&gt;You can access the nocturn app online at &lt;a href=&quot;https://nocturn.bio.ed.ac.uk&quot;&gt;nocturn.bio.ed.ac.uk&lt;/a&gt; (no installation required). And if you want to write your own R scripts using nocturn, you can now install it directly from CRAN with:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;install.packages(&quot;nocturn&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;To use the package, load functions:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;library(nocturn)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And display the package manual:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;help(package = &quot;nocturn&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Next steps&lt;/h2&gt;
&lt;p&gt;The current nocturn version on CRAN is 1.1.3. I am currently working on version 1.2.0, with some exciting updates to come:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Comparison tool
&lt;ul&gt;
&lt;li&gt;Load multiple sessions files and compare them, e.g. with a &lt;a href=&quot;https://en.wikipedia.org/wiki/Bland%E2%80%93Altman_plot&quot;&gt;Bland-Altman plot&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;New sleep reports
&lt;ul&gt;
&lt;li&gt;Dataset comparison report&lt;/li&gt;
&lt;li&gt;Report for actigraphy data&lt;/li&gt;
&lt;li&gt;More customisation of text fields&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Save and load filter sets
&lt;ul&gt;
&lt;li&gt;Quickly apply a precise set of filters&lt;/li&gt;
&lt;li&gt;Share with collaborators&lt;/li&gt;
&lt;li&gt;Include with your data as documentation of your analysis process&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Enhanced in-app documentation
&lt;ul&gt;
&lt;li&gt;More tooltips explaining plots and options&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Interested in using nocturn with your own data? Let me know in &lt;a href=&quot;https://github.com/chronopsychiatry/AMBIENT-BD-nocturn/discussions&quot;&gt;Discussions&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;Found a bug in the app or R functions; or need help with a specific point? &lt;a href=&quot;https://github.com/chronopsychiatry/AMBIENT-BD-nocturn/issues&quot;&gt;Open an issue&lt;/a&gt;&lt;/p&gt;
</content:encoded></item></channel></rss>