605 private links
- Signal app and protocol (end-to-end encrypted by default, but centralized server, no federation)
- Matrix protocol (end-to-end encrypted, decentralized, federated, user gets to choose app to use)
- Delta Chat (I am not sure about this one, I know too little at the moment)
- Simplex Chat
Medfarm Play är en videoportal som skapats i samarbete mellan pedagoger och MedfarmDoIT.
Här kan du hitta tusetals undervisningsfilmer, många av dem indelade i ämnesspecifika kanaler.
Video recordings on many subjects from Uppsala University, such as Nobel lectures, doctoral conferment ceremonies, etc. Use the search function or browse the channels.
Let's say you are looking for old Ansible code dealing with multiple distros (meaning multiple files in the ./vars/
directory) to draw inspiration from. How can we quickly identify the roles with vars
directories containing more than a single file?
$ cd /media/bay/taha/projects/ansible && find . -not -path "*/archived/*" -not -path "*/testing/*" -path "*/vars/*" -printf "%h\n" | sort | uniq -d && cd $OLDPWD
./pub/roles/apache/vars
./pub/roles/common-systools/vars
./pub/roles/desktop-environment/vars
./pub/roles/digikam/vars
./pub/roles/graphics-driver-nvidia/vars
./pub/roles/php/vars
./pub/roles/php-versions/vars
./pub/roles/python2/vars
./pub/roles/python3/vars
./pub/roles/R/vars
./pub/roles/sioyek-pdf/vars
./pub/roles/wallabag/vars
All of the returned paths indeed contain at least two files.
Note how we limited find
to only directories named vars
.
The Research Software Directory is designed to show the impact research software has on research and society. We stimulate the reuse of research software and encourage proper citation of research software to ensure researchers and RSEs get credit for their work.
Arabic language library for Python, provides basic functions to manipulate Arabic letters and text
Note to self: please come back to this post with links on R, its packages and related resources.
Grammar of graphics
- https://github.com/tidyverse/ggplot2
- https://exts.ggplot2.tidyverse.org/gallery community-maintained list of extensions
Integration with reference manager Zotero
- https://github.com/oeysan/c2z (manipulate your Zotero collections, items from R; can be integrated with other tools such as cronR, mailR, or even HomeAssistant)
PDF tools
- https://ropensci.org/blog/2016/03/01/pdftools-and-jeroen (pdftools - A fast and portable PDF extractor)
Integration with GPG
- https://ropensci.org/technotes/2016/10/19/gpg-release (Encryption and Digital Signatures in R using GPG)
Web scraping
- https://blog.rsquaredacademy.com/web-scraping Introduction to web scraping with
rvest
, 2019 - https://www.brodrigues.co/blog/2018-11-01-nethack Scraping with
rvest
and building a data package, 2018 - My own package periodicdata uses
rvest
to create a data package
Email from R
- https://github.com/rstudio/blastula send great-looking HTML email messages from R
- https://github.com/datawookie/emayili send email messages from R
- https://github.com/rpremraj/mailR utility to send emails from R
Integration with MS Office (yes, yes, I know...)
- https://ardata-fr.github.io/officeverse
- https://github.com/davidgohel/officer
- https://github.com/davidgohel/flextable
Interfacing with Google Docs
Resources
- https://emilyriederer.netlify.app/post/team-of-packages (post of Emily Riederer's rstudio::global 2020 talk)
- https://indrajeetpatil.github.io/awesome-r-pkgtools Awesome R Package Development Tools, compiled by Indrajeet Patil, 2024
- https://win-vector.com/2017/02/05/evolving-r-tools-and-practices John Mount, 2017
- https://github.com/nanxstats/awesome-shiny-extensions
- https://zenodo.org/record/7023492#.YwnwHuxBxhH R from Zero to Hero, slides from talk by Batool Almarzouq (in Arabic)
Tools to consider
- https://alexioannides.com/2016/11/02/asynchronous-and-distributed-programming-in-r-with-the-future-package (the
futures
package: distributed computation, non-blocking async input/output, and more) - https://cran.r-project.org/web/packages/geomtextpath/vignettes/geomtextpath.html
The Open Knowledge Network connects specialists of the open movement and promotes them through the Open Knowledge Global Directory.
CKAN is an open-source DMS (data management system) for powering data hubs and data portals. CKAN makes it easy to publish, share and use data.
CKAN is a free open source Data Management System (DMS) to build open data portals, and its code is held in trust by the Open Knowledge Foundation.
This is a one-liner that I find useful when deciding a free IPv4 address to assign a new container:
$ lxc network list-leases lxdbr0 | grep STATIC | sort -t "." -n -k4
| taipei | 00:16:3e:9c:dd:28 | 10.252.116.3 | STATIC |
| hunan | 00:16:3e:f7:4f:b2 | 10.252.116.4 | STATIC |
| xian | 00:16:3e:b0:54:12 | 10.252.116.5 | STATIC |
| samarkand | 00:16:3e:e8:79:60 | 10.252.116.6 | STATIC |
| karachi | 00:16:3e:e5:4c:47 | 10.252.116.7 | STATIC |
| lahore | 00:16:3e:f1:73:ab | 10.252.116.8 | STATIC |
| muscat | 00:16:3e:9a:89:05 | 10.252.116.9 | STATIC |
| antioch | 00:16:3e:92:79:ca | 10.252.116.11 | STATIC |
| delhi | 00:16:3e:22:9c:d0 | 10.252.116.13 | STATIC |
| bahrain | 00:16:3e:4b:b6:ee | 10.252.116.14 | STATIC |
| lusail | 00:16:3e:fd:1f:49 | 10.252.116.15 | STATIC |
| pergamon | 00:16:3e:0e:9c:82 | 10.252.116.16 | STATIC |
The one-liner is simplified by the fact that only the IP address field contains dots, so we can use them as delimiters for sort
without first having to sort
on the column delimiters.
Non-spherical nanostructures explain the fruit’s colour.
I never reflected on the colour of blueberries, and just assumed it was pigment-based. Turns out it is more interesting than that!
R Middleton et al, Sci. Adv., 2024, https://dx.doi.org/10.1126/sciadv.adk4219
I suppose this should be seen in light of the official endorsement of Matrix by eSam over a year ago, which I noted at the time.
Sweden’s public sector is keen to adopt open source and open standards to ensure data sovereignty and protection against vendor lock-in
As a part of Tele2 Collaborate, Element is seen as a natural Skype for Business (S4B) replacement for Sweden’s public sector, and an alternative to US-based Big Tech vendors.
Stöd
- https://www.slutarokalinjen.se (samtal eller chatt på svenska, även samtal på arabiska)
- https://www.1177.se/Stockholm/liv--halsa/tobak-och-alkohol/tobak/hjalp-att-sluta-roka
- https://www.1177.se/Stockholm/undersokning-behandling/behandling-med-lakemedel/lakemedel-utifran-diagnos/lakemedel-mot-rokning
Kunskap
Keep code, data, containers under control with git and git-annex
Built in Python.
- https://doi.org/10.21105/joss.03262 (paper)
- https://github.com/datalad/datalad (repo)
- https://www.datalad.org
- http://docs.datalad.org (docs)
- http://handbook.datalad.org (crash course)
Best way to write and share your knowledge in markdown.
Pretty neat!
You do not need to master every aspect of git to make use of it in your daily work.
Even a little bit of git will take you a long way towards best practice with regards to reproducibility!
Enjoy these videos
- https://youtu.be/s3JldKoA0zw (science setting, also awesome soundtrack!)
- https://www.youtube.com/watch?v=CvbLVVRzJF8 (business setting)
Git introductions or tutorials
- The missing semester of your CS education, online classes on the command-line, Git, the shell and more from MIT
- Git Magic, by Ben Lynn
- Become a Git pro in just one blog. A thorough guide to Git architecture and command line interface, by Uday Hiwarale
- How To Make Life Easier When Using Git, by Shane Hudson
- Confusing git terminology, Julia Evans, 2023-11-01
- How Git Works!, Julia Evans, 2024-06-03
- Inside .git, Julia Evans, 2024
- Git en välskriven guide på svenska från IT-institutionen vid Uppsala universitet
- Beej's Guide to Git, very thorough tutorial, offered in various HTML and PDF formats. Via https://links.kalvn.net/shaare/0n4qig.
Opinions or comments
- How to be a 'good' git evangelist?, by Sunniva Indrehus, 2021-09-02
- Git is my buddy: Effective Git as a solo developer, Mikkel Paulson, 2021. Via https://www.eamoncaddigan.net/posts/git-links
- Nobody cares about your Git history, Dan Kelch, 2024
- https://matklad.github.io/2023/12/31/git-things.html
- Nordic RSE
- RSSE Africa
- RSE Asia Association rse-asia.github.io
Countries
- Germany: de-rse.org
- Netherlands: Community of Research Software Engineers in the Netherlands
- Belgium: be-rse.org
- UK: Society of RSE Engineering
- France: DEVLOG French RSEs
- USA: us-rse.org
- AUS/NZ: RSE Association of Australia and New Zealand
- Canadian Research Software Community
- Swiss RSE
Links and notes
Via Github.
- FAIR principles for Research Software, released in May 2022 as an endorsed recommendation of the Research Data Alliance
- FAIR software checklist - if you are a researcher who writes software, check it out! Via Netherlands e-Science Center
- Research Software Engineers International
- RSE Worldwide: Opportunities to Strengthen the Global RSE Community - ReSA, Sep 2024. With notes on the state of country-based RSE associations.
WireHole is a combination of WireGuard, Pi-hole, and Unbound in a docker-compose project with the intent of enabling users to quickly and easily create a personally managed full or split-tunnel WireGuard VPN with ad blocking capabilities thanks to Pi-hole, and DNS caching, additional privacy options, and upstream providers via Unbound.
Interesting... Via Awesome Wireguard.
With frequent changes to my Ansible roles it often becomes tricky to keep track of which version of a particular role was executed for a particular play.
This is not thoroughly tested yet, but my approach is simple: each role contains a task that writes its git repo state (a git log formatted one-liner containing last commit hash, date, author, etc.).
These tasks are set to write to a log-file per inventory host, which is for two reasons: to avoid drowning in the default log file defined by log_path
in ansible.cfg
, and because log_path
cannot be overridden by a play or role.
This results in a log-file (one per inventory host) looking something like this:
Started playbook execution at 2024-02-22 12:34:32.327042
Role 'locales' last commit caa6355 2024-02-21 23:38:31 +0100 by solarchemist
Role 'digikam' last commit 16f0643 2024-02-21 22:50:49 +0100 by solarchemist
Playbook 'workstation' last commit 4775cf7 2024-02-20 22:53:56 +0100 by solarchemist
Ended playbook execution at 2024-02-22 12:34:55.913856
My implementation illustrated in code below.
In a role:
- name: Log the last commit and git repo status to playbook log-file
local_action: >
shell git -C {{ role_path }} log
--pretty="Role '{{ role_name }}' last commit %h %ci by %cn" -1 >>
logbook-{{ inventory_hostname }}.log
args: { chdir: "{{ playbook_dir }}" }
become: true
become_user: "{{ local_user }}"
In the playbook:
vars:
local_user: "{{ lookup('env', 'USER') }}"
pre_tasks:
- name: Write a start message to the playbook log
ansible.builtin.shell: >
printf "\nStarted playbook execution at {{ now() }}\n" >> logbook-{{ inventory_hostname }}.log
run_once: true
delegate_to: localhost
args: { chdir: "{{ playbook_dir }}" }
become: true
become_user: "{{ local_user }}"
changed_when: true
tags: always
tasks: [...]
post_tasks:
- name: Log the current commit of this playbook
local_action: >
shell git log
--pretty="Playbook '{{ playbook_dir | basename }}' last commit %h %ci by %cn" -1
>> logbook-{{ inventory_hostname }}.log
args: { chdir: "{{ playbook_dir }}" }
become: true
become_user: "{{ local_user }}"
tags: always
- name: Write an end message to the playbook log
ansible.builtin.shell: >
echo "Ended playbook execution at {{ now() }}" >> logbook-{{ inventory_hostname }}.log
run_once: true
delegate_to: localhost
args: { chdir: "{{ playbook_dir }}" }
become: true
become_user: "{{ local_user }}"
changed_when: true
tags: always
https://www.berrycells.com/how-to-make-a-berry-cell
According to professor Michael Grätzel the best "berry" to use for this kind of demonstrator cells is hibiscus tea (known as karkadè in Arabic).
- https://en.wikipedia.org/wiki/Hibiscus_tea
- https://en.wikipedia.org/wiki/Roselle_(plant) Hibiscus sabdariffa
ReproHack is a sandbox environment for practicing research reproducibility-
Why have I not heard about this before!
I should consider submitting my own paper to their general list of papers.