diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md
index 16024ced91..bcd753729a 100644
--- a/.github/CONTRIBUTING.md
+++ b/.github/CONTRIBUTING.md
@@ -1,7 +1,7 @@
Our [technical contributions wiki](https://github.com/programminghistorian/jekyll/wiki/Making-technical-contributions) describes best practices for modifying the code that generates _The Programming Historian_ itself.
-If you are interested in making a _content_ contribution like a new lesson, please see our [pages on contributing as an author or an editor](http://programminghistorian.org/contribute).
+If you are interested in making a _content_ contribution like a new lesson, please see our [pages on contributing as an author or an editor](https://programminghistorian.org/contribute).
## Anti-harassment Policy
-The *Programming Historian* is dedicated to providing an open scholarly environment that offers community participants the freedom to thoroughly scrutinize ideas, to ask questions, make suggestions, or to requests for clarification, but also provides a harassment-free space for all contributors to the project, regardless of gender, gender identity and expression, sexual orientation, disability, physical appearance, body size, race, age or religion, or technical experience. We do not tolerate harassment or ad hominem attacks of community participants in any form. Participants violating these rules may be expelled from the community at the discretion of the editorial board. If anyone witnesses or feels they have been the victim of the above described activity, please contact our ombudspeople (see the contact for each language on our Project Team page: ). Thank you for helping us to create a safe space.
+The *Programming Historian* is dedicated to providing an open scholarly environment that offers community participants the freedom to thoroughly scrutinize ideas, to ask questions, make suggestions, or to requests for clarification, but also provides a harassment-free space for all contributors to the project, regardless of gender, gender identity and expression, sexual orientation, disability, physical appearance, body size, race, age or religion, or technical experience. We do not tolerate harassment or ad hominem attacks of community participants in any form. Participants violating these rules may be expelled from the community at the discretion of the editorial board. If anyone witnesses or feels they have been the victim of the above described activity, please contact our ombudspeople (see the contact for each language on our Project Team page: ). Thank you for helping us to create a safe space.
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 917cf03e3c..ae4afad442 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -19,7 +19,7 @@ jobs:
if : github.event.action != 'closed'
uses: ruby/setup-ruby@v1
with:
- ruby-version: 2.6
+ ruby-version: 3.2.2
bundler-cache: true # runs 'bundle install' and caches installed gems automatically
# We then check if we can build our Jekyll site (all this logic is built-in with Jekyll and this prevents us from merging in any syntax errors).
- name: Jekyll build
@@ -29,12 +29,19 @@ jobs:
bundle exec jekyll build
# Next we check all the links in our site to make sure we aren't pushing up broken links.
- name: Check HTML
- uses: zoeleblanc/htmlproofer@master
- if : github.event.action != 'closed'
+ uses: chabad360/htmlproofer@master
+ if: github.event.action != 'closed'
with:
directory: "./_site"
- # The directory to scan
- arguments: --assume-extension --empty-alt-ignore --alt-ignore "/.*/" --file-ignore "/assets/,/retired/,/retirada/,/retrait/,/posts/" --timeframe "30d" --only-4xx --http-status-ignore 429,403,400 --url-ignore "/http://www.gutenberg.org/*/,/https://github.com/programminghistorian/*/,/https://github.com/orgs/programminghistorian/*/,/\#/,/espanol/,/deprecated/,/collection.britishmuseum.org/,/analytics.hathitrust.org/,/fr.wikipedia.org/wiki/,https://web.archive.org/web/20180831094856/http://www.dlsi.ua.es/~borja/riilua/6.TopicModeling_v02.pdf" --allow-hash-href
+ arguments: >
+ --assume-extension
+ --ignore-missing-alt
+ --ignore-empty-alt
+ --file-ignore "/assets/,/retired/,/retirada/,/retrait/,/posts/"
+ --only-4xx
+ --http-status-ignore 429,403,400
+ --url-ignore "/http://www.gutenberg.org/*/,/https://github.com/programminghistorian/*/,/https://github.com/orgs/programminghistorian/*/,/\#/,/espanol/,/deprecated/,/collection.britishmuseum.org/,/analytics.hathitrust.org/,/fr.wikipedia.org/wiki/,https://web.archive.org/web/20180831094856/http://www.dlsi.ua.es/~borja/riilua/6.TopicModeling_v02.pdf"
+ --allow-hash-href
# The arguments to pass to HTMLProofer
# Finally if we are successful in building, we trigger a rebuild of our search index in the search-index repository
- name: Trigger next workflow
diff --git a/.htmlproofer.yml b/.htmlproofer.yml
new file mode 100644
index 0000000000..24251030ea
--- /dev/null
+++ b/.htmlproofer.yml
@@ -0,0 +1,38 @@
+assume_extension: true
+only_4xx: true
+ignore_missing_alt: true
+ignore_empty_alt: true
+allow_hash_href: true
+check_external_hash: false
+http_status_ignore:
+ - 429
+ - 403
+ - 400
+url_ignore:
+ - /\/\/www.gutenberg.org\/.*?/
+ - /https:\/\/github.com\/programminghistorian\/.*?/
+ - /https:\/\/github.com\/orgs\/programminghistorian\/.*?/
+ - /\#/
+ - /espanol/
+ - /deprecated/
+ - /collection.britishmuseum.org/
+ - /analytics.hathitrust.org/
+ - /fr.wikipedia.org\/wiki/
+ - /https:\/\/web.archive.org\/web\/20180831094856\/http:\/\/www.dlsi.ua.es\/~borja\/riilua\/6.TopicModeling_v02.pdf/
+ - https://github.com/programminghistorian/jekyll/commits/gh-pages
+ - https://github.com/programminghistorian/jekyll/commits/gh-pages/.*
+directory_ignore:
+ - assets
+ - retired
+ - retirada
+ - retrait
+ - posts
+ignore_elements:
+ - pre
+ - code
+ - script
+typhoeus:
+ connecttimeout: 30
+ timeout: 60
+ max_concurrency: 2
+log_level: debug
\ No newline at end of file
diff --git a/.ruby-version b/.ruby-version
index d5724cd41b..acf9bf09db 100644
--- a/.ruby-version
+++ b/.ruby-version
@@ -1 +1 @@
-2.6.2
\ No newline at end of file
+3.2.2
\ No newline at end of file
diff --git a/FixingLinksNotebook.ipynb b/FixingLinksNotebook.ipynb
new file mode 100644
index 0000000000..4a7a35b104
--- /dev/null
+++ b/FixingLinksNotebook.ipynb
@@ -0,0 +1,691 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "id": "61f40e40",
+ "metadata": {},
+ "source": [
+ "# Fixing Links Notebook"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "fac6fe6c",
+ "metadata": {},
+ "source": [
+ "Before running this notebook, make sure to run the following command in the terminal to install the required packages:\n",
+ "\n",
+ "```bash\n",
+ "bundle install\n",
+ "bundle exec jekyll build\n",
+ "bundle exec htmlproofer _site --typhoeus-config='{\"connecttimeout\": 10, \"timeout\": 30, \"max_concurrency\": 2}' > htmlproofer-output.txt 2>&1\n",
+ "ruby parse_htmlproofer_log.rb \n",
+ "```\n",
+ "\n",
+ "Each command should be run separately and the final two commands create files for all the htmlproofer errors and warnings. This notebook loads the final csv file to help you see what links exists. You will also need to install the `pandas` library if you haven't already. You can do this by running:\n",
+ "\n",
+ "```bash\n",
+ "pip install pandas\n",
+ "```"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "ae22f5c9",
+ "metadata": {},
+ "source": [
+ "## Load Libraries and Data"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 16,
+ "id": "7106f439",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import pandas as pd"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 25,
+ "id": "6f0bb84a",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Number of errors: 4075\n"
+ ]
+ }
+ ],
+ "source": [
+ "df = pd.read_csv(\"htmlproofer-report.csv\")\n",
+ "# Lower case the column names\n",
+ "df.columns = df.columns.str.lower()\n",
+ "print(f\"Number of errors: {len(df)}\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 26,
+ "id": "f7e9ea41",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "message\n",
+ "'a' tag is missing a reference 2058\n",
+ "External link https://github.com/programminghistorian/jekyll/commits/gh-pages failed (status code 429) 502\n",
+ "External link https://www.oldbaileyonline.org/about/whats-new failed: Forbidden (status code 403) 24\n",
+ "internal image i/genericThumb.jpg does not exist 10\n",
+ "External link https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=7BGHUZRVS4LYL&source=url failed (status code 403) 9\n",
+ " ... \n",
+ "External link https://github.com/programminghistorian/jekyll/commits/gh-pages/en/lessons/visualizing-with-bokeh.md failed (status code 429) 1\n",
+ "External link https://github.com/programminghistorian/jekyll/commits/gh-pages/en/lessons/windows-installation.md failed (status code 429) 1\n",
+ "External link https://manpages.ubuntu.com/manpages/bionic/en/man1/grep.1.html#regular%20expressions failed: https://manpages.ubuntu.com/manpages/bionic/en/man1/grep.1.html exists, but the hash 'regular%20expressions' does not (status code 200) 1\n",
+ "External link https://github.com/programminghistorian/jekyll/commits/gh-pages/en/lessons/working-with-batches-of-pdf-files.md failed (status code 429) 1\n",
+ "script is empty and has no src attribute 1\n",
+ "Name: count, Length: 1084, dtype: int64"
+ ]
+ },
+ "execution_count": 26,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df.message.value_counts()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 27,
+ "id": "2677fc80",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "file\n",
+ "_site/assets/normaliser-donnees-textuelles-python/obo-t17800628-33.html 12\n",
+ "_site/assets/from-html-to-list-of-words-1/obo-t17800628-33.html 12\n",
+ "_site/en/lessons/retired/OCR-with-Tesseract-and-ScanTailor.html 8\n",
+ "_site/en/lessons/collaborative-blog-with-jekyll-github.html 7\n",
+ "_site/fr/lecons/introduction-a-heurist.html 6\n",
+ " ..\n",
+ "_site/es/acerca-de.html 4\n",
+ "_site/en/vacancies.html 4\n",
+ "_site/en/translator-guidelines.html 4\n",
+ "_site/en/supporters.html 4\n",
+ "_site/troubleshooting.html 4\n",
+ "Name: count, Length: 504, dtype: int64"
+ ]
+ },
+ "execution_count": 27,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df[df.message == \"'a' tag is missing a reference\"].file.value_counts()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 24,
+ "id": "46572ac7",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "[{'file': '_site/en/lessons/collaborative-blog-with-jekyll-github.html',\n",
+ " 'line': 121,\n",
+ " 'message': \"'a' tag is missing a reference\"},\n",
+ " {'file': '_site/en/lessons/collaborative-blog-with-jekyll-github.html',\n",
+ " 'line': 140,\n",
+ " 'message': \"'a' tag is missing a reference\"},\n",
+ " {'file': '_site/en/lessons/collaborative-blog-with-jekyll-github.html',\n",
+ " 'line': 177,\n",
+ " 'message': \"'a' tag is missing a reference\"},\n",
+ " {'file': '_site/en/lessons/collaborative-blog-with-jekyll-github.html',\n",
+ " 'line': 203,\n",
+ " 'message': \"'a' tag is missing a reference\"},\n",
+ " {'file': '_site/en/lessons/collaborative-blog-with-jekyll-github.html',\n",
+ " 'line': 588,\n",
+ " 'message': \"'a' tag is missing a reference\"},\n",
+ " {'file': '_site/en/lessons/collaborative-blog-with-jekyll-github.html',\n",
+ " 'line': 901,\n",
+ " 'message': \"'a' tag is missing a reference\"},\n",
+ " {'file': '_site/en/lessons/collaborative-blog-with-jekyll-github.html',\n",
+ " 'line': 1394,\n",
+ " 'message': \"'a' tag is missing a reference\"},\n",
+ " {'file': '_site/en/lessons/collaborative-blog-with-jekyll-github.html',\n",
+ " 'line': 1508,\n",
+ " 'message': \"External link https://github.com/scholarslab/scholarslab.org/blob/master/docs/authoring-and-editing.md#markdown--formatting failed: https://github.com/scholarslab/scholarslab.org/blob/master/docs/authoring-and-editing.md exists, but the hash 'markdown--formatting' does not (status code 200)\"},\n",
+ " {'file': '_site/en/lessons/collaborative-blog-with-jekyll-github.html',\n",
+ " 'line': 1521,\n",
+ " 'message': 'External link https://chronicle.com/blogs/profhacker/jekyll1/60913 failed (status code 403)'},\n",
+ " {'file': '_site/en/lessons/collaborative-blog-with-jekyll-github.html',\n",
+ " 'line': 1528,\n",
+ " 'message': 'External link https://jekyll-windows.juthilo.com/ failed with something very wrong.'},\n",
+ " {'file': '_site/en/lessons/collaborative-blog-with-jekyll-github.html',\n",
+ " 'line': 3030,\n",
+ " 'message': 'External link https://github.com/programminghistorian/jekyll/commits/gh-pages failed (status code 429)'},\n",
+ " {'file': '_site/en/lessons/collaborative-blog-with-jekyll-github.html',\n",
+ " 'line': 3040,\n",
+ " 'message': 'External link https://github.com/programminghistorian/jekyll/commits/gh-pages/en/lessons/collaborative-blog-with-jekyll-github.md failed (status code 429)'},\n",
+ " {'file': '_site/en/lessons/collaborative-blog-with-jekyll-github.html',\n",
+ " 'line': 515,\n",
+ " 'message': \"internally linking to #moving-an-existing-website-to-Jekyll; the file exists, but the hash 'moving-an-existing-website-to-Jekyll' does not\"},\n",
+ " {'file': '_site/en/lessons/collaborative-blog-with-jekyll-github.html',\n",
+ " 'line': 538,\n",
+ " 'message': \"internally linking to #workflow-recap; the file exists, but the hash 'workflow-recap' does not\"},\n",
+ " {'file': '_site/en/lessons/collaborative-blog-with-jekyll-github.html',\n",
+ " 'line': 950,\n",
+ " 'message': \"internally linking to /en/lessons/building-static-sites-with-jekyll-github-pages#writing-pages-and-posts-; the file exists, but the hash 'writing-pages-and-posts-' does not\"},\n",
+ " {'file': '_site/en/lessons/collaborative-blog-with-jekyll-github.html',\n",
+ " 'line': 1017,\n",
+ " 'message': \"internally linking to /en/lessons/building-static-sites-with-jekyll-github-pages#writing-pages-and-posts-; the file exists, but the hash 'writing-pages-and-posts-' does not\"},\n",
+ " {'file': '_site/en/lessons/collaborative-blog-with-jekyll-github.html',\n",
+ " 'line': 1114,\n",
+ " 'message': \"internally linking to /en/lessons/building-static-sites-with-jekyll-github-pages#hosting-on-github-pages-; the file exists, but the hash 'hosting-on-github-pages-' does not\"},\n",
+ " {'file': '_site/en/lessons/collaborative-blog-with-jekyll-github.html',\n",
+ " 'line': 1147,\n",
+ " 'message': \"internally linking to /en/lessons/building-static-sites-with-jekyll-github-pages#writing-pages-and-posts-; the file exists, but the hash 'writing-pages-and-posts-' does not\"},\n",
+ " {'file': '_site/en/lessons/collaborative-blog-with-jekyll-github.html',\n",
+ " 'line': 1305,\n",
+ " 'message': \"internally linking to #merging-as-an-owner; the file exists, but the hash 'merging-as-an-owner' does not\"},\n",
+ " {'file': '_site/en/lessons/collaborative-blog-with-jekyll-github.html',\n",
+ " 'line': 1305,\n",
+ " 'message': \"internally linking to #merging-as-an-owner; the file exists, but the hash 'merging-as-an-owner' does not\"},\n",
+ " {'file': '_site/en/lessons/collaborative-blog-with-jekyll-github.html',\n",
+ " 'line': 1310,\n",
+ " 'message': \"internally linking to #force-merge-checkbox-use; the file exists, but the hash 'force-merge-checkbox-use' does not\"},\n",
+ " {'file': '_site/en/lessons/collaborative-blog-with-jekyll-github.html',\n",
+ " 'line': 1491,\n",
+ " 'message': \"internally linking to #workflow-recap; the file exists, but the hash 'workflow-recap' does not\"},\n",
+ " {'file': '_site/en/lessons/collaborative-blog-with-jekyll-github.html',\n",
+ " 'line': 1507,\n",
+ " 'message': \"internally linking to /en/lessons/building-static-sites-with-jekyll-github-pages#where-and-what-is-everything-; the file exists, but the hash 'where-and-what-is-everything-' does not\"}]"
+ ]
+ },
+ "execution_count": 24,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df[df.file == \"_site/en/lessons/collaborative-blog-with-jekyll-github.html\"].to_dict(orient=\"records\")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "id": "7fbda16b",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
\n",
+ "
file
\n",
+ "
count
\n",
+ "
count_index
\n",
+ "
\n",
+ " \n",
+ " \n",
+ "
\n",
+ "
0
\n",
+ "
_site/assets/from-html-to-list-of-words-1/obo-...
\n",
+ "
53
\n",
+ "
0
\n",
+ "
\n",
+ "
\n",
+ "
1
\n",
+ "
_site/assets/normaliser-donnees-textuelles-pyt...
\n",
+ "
53
\n",
+ "
1
\n",
+ "
\n",
+ "
\n",
+ "
2
\n",
+ "
_site/en/lessons/sonification.html
\n",
+ "
27
\n",
+ "
2
\n",
+ "
\n",
+ "
\n",
+ "
3
\n",
+ "
_site/en/lessons/collaborative-blog-with-jekyl...
\n",
+ "
23
\n",
+ "
3
\n",
+ "
\n",
+ "
\n",
+ "
4
\n",
+ "
_site/pt/licoes/som-dados-sonificacao-historia...
\n",
+ "
22
\n",
+ "
4
\n",
+ "
\n",
+ "
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
...
\n",
+ "
\n",
+ "
\n",
+ "
509
\n",
+ "
_site/assets/mapping-with-python-leaflet/exerc...
\n",
+ "
2
\n",
+ "
509
\n",
+ "
\n",
+ "
\n",
+ "
510
\n",
+ "
_site/assets/mapping-with-python-leaflet/exerc...
\n",
+ "
2
\n",
+ "
510
\n",
+ "
\n",
+ "
\n",
+ "
511
\n",
+ "
_site/assets/mapping-with-python-leaflet/map/m...
\n",
+ "
2
\n",
+ "
511
\n",
+ "
\n",
+ "
\n",
+ "
512
\n",
+ "
_site/assets/mapping-with-python-leaflet/map/m...
\n",
+ "
2
\n",
+ "
512
\n",
+ "
\n",
+ "
\n",
+ "
513
\n",
+ "
_site/assets/interactive-text-games-using-twin...
\n",
+ "
1
\n",
+ "
513
\n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
514 rows × 3 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " file count count_index\n",
+ "0 _site/assets/from-html-to-list-of-words-1/obo-... 53 0\n",
+ "1 _site/assets/normaliser-donnees-textuelles-pyt... 53 1\n",
+ "2 _site/en/lessons/sonification.html 27 2\n",
+ "3 _site/en/lessons/collaborative-blog-with-jekyl... 23 3\n",
+ "4 _site/pt/licoes/som-dados-sonificacao-historia... 22 4\n",
+ ".. ... ... ...\n",
+ "509 _site/assets/mapping-with-python-leaflet/exerc... 2 509\n",
+ "510 _site/assets/mapping-with-python-leaflet/exerc... 2 510\n",
+ "511 _site/assets/mapping-with-python-leaflet/map/m... 2 511\n",
+ "512 _site/assets/mapping-with-python-leaflet/map/m... 2 512\n",
+ "513 _site/assets/interactive-text-games-using-twin... 1 513\n",
+ "\n",
+ "[514 rows x 3 columns]"
+ ]
+ },
+ "execution_count": 9,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "file_counts_df = df.file.value_counts().reset_index()\n",
+ "file_counts_df['count_index'] = file_counts_df.index\n",
+ "\n",
+ "file_counts_df"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "id": "6352df82",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "merged_df = df.merge(file_counts_df, on='file', how='outer').sort_values(by=\"count_index\", ascending=True)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "id": "05882ea5",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "message\n",
+ "'a' tag is missing a reference 12\n",
+ "internal image i/genericThumb.jpg does not exist 5\n",
+ "internally linking to static/Contact.jsp, which does not exist 2\n",
+ "internally linking to images.jsp?doc=178006280090, which does not exist 2\n",
+ "internally linking to images.jsp?doc=178006280088, which does not exist 2\n",
+ "internally linking to images.jsp?doc=178006280087, which does not exist 2\n",
+ "internally linking to images.jsp?doc=178006280089, which does not exist 2\n",
+ "internally linking to images.jsp?doc=178006280084, which does not exist 2\n",
+ "internally linking to forms/formMain.jsp, which does not exist 2\n",
+ "internally linking to browse.jsp?dir=ordinarysAccounts, which does not exist 1\n",
+ "internally linking to css/print.css, which does not exist 1\n",
+ "internal script reference a.js does not exist 1\n",
+ "internally linking to static/Crimes.jsp#riot, which does not exist 1\n",
+ "External link https://www.sheffield.ac.uk/hri/ failed (status code 403) 1\n",
+ "internally linking to index.jsp, which does not exist 1\n",
+ "External link https://markhadley.com failed with something very wrong. 1\n",
+ "internally linking to static/Site-map.jsp, which does not exist 1\n",
+ "internally linking to css/screen.css, which does not exist 1\n",
+ "internally linking to static/Legal-info.jsp, which does not exist 1\n",
+ "internally linking to browse.jsp?foo=bar&path=sessionsPapers/17800628.xml&div=t17800628-33&xml=yes, which does not exist 1\n",
+ "internally linking to static/Guides.jsp, which does not exist 1\n",
+ "internally linking to browse.jsp?dir=sessionsPapers, which does not exist 1\n",
+ "internally linking to static/History.jsp, which does not exist 1\n",
+ "internally linking to browse.jsp?div=t17800628-34, which does not exist 1\n",
+ "internally linking to browse.jsp?div=t17800628-32, which does not exist 1\n",
+ "internally linking to static/Punishment.jsp#death, which does not exist 1\n",
+ "internally linking to static/Verdicts.jsp#guilty, which does not exist 1\n",
+ "internally linking to static/Crimes.jsp#breakingpeace, which does not exist 1\n",
+ "internally linking to static/Proceedings.jsp, which does not exist 1\n",
+ "internally linking to static/Project.jsp, which does not exist 1\n",
+ "internally linking to a.css, which does not exist 1\n",
+ "Name: count, dtype: int64"
+ ]
+ },
+ "execution_count": 6,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "merged_df[merged_df.file.str.contains(\"_site/assets/from-html-to-list-of-words-1/\", na=False)].message.value_counts()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "id": "0857ae8b",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "file\n",
+ "_site/assets/from-html-to-list-of-words-1/obo-t17800628-33.html 5\n",
+ "_site/assets/normaliser-donnees-textuelles-python/obo-t17800628-33.html 5\n",
+ "Name: count, dtype: int64"
+ ]
+ },
+ "execution_count": 7,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "merged_df[merged_df.message == \"internal image i/genericThumb.jpg does not exist\"].file.value_counts()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "id": "03ad4a55",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
\n",
+ "
file
\n",
+ "
line
\n",
+ "
message
\n",
+ "
count
\n",
+ "
count_index
\n",
+ "
\n",
+ " \n",
+ " \n",
+ "
\n",
+ "
412
\n",
+ "
_site/en/lessons/building-static-sites-with-je...
\n",
+ "
1334
\n",
+ "
External link https://support.native-instrumen...
\n",
+ "
10
\n",
+ "
88
\n",
+ "
\n",
+ "
\n",
+ "
411
\n",
+ "
_site/en/lessons/building-static-sites-with-je...
\n",
+ "
66
\n",
+ "
External link https://maxcdn.bootstrapcdn.com/...
\n",
+ "
10
\n",
+ "
88
\n",
+ "
\n",
+ "
\n",
+ "
410
\n",
+ "
_site/en/lessons/building-static-sites-with-je...
\n",
+ "
57
\n",
+ "
External link https://maxcdn.bootstrapcdn.com/...
\n",
+ "
10
\n",
+ "
88
\n",
+ "
\n",
+ "
\n",
+ "
406
\n",
+ "
_site/en/lessons/building-static-sites-with-je...
\n",
+ "
117
\n",
+ "
'a' tag is missing a reference
\n",
+ "
10
\n",
+ "
88
\n",
+ "
\n",
+ "
\n",
+ "
413
\n",
+ "
_site/en/lessons/building-static-sites-with-je...
\n",
+ "
1474
\n",
+ "
External link https://jekyllthemes.org/ failed...
\n",
+ "
10
\n",
+ "
88
\n",
+ "
\n",
+ "
\n",
+ "
414
\n",
+ "
_site/en/lessons/building-static-sites-with-je...
\n",
+ "
1545
\n",
+ "
External link https://jekyll-windows.juthilo.c...
\n",
+ "
10
\n",
+ "
88
\n",
+ "
\n",
+ "
\n",
+ "
415
\n",
+ "
_site/en/lessons/building-static-sites-with-je...
\n",
+ "
1548
\n",
+ "
External link https://chronicle.com/blogs/prof...
\n",
+ "
10
\n",
+ "
88
\n",
+ "
\n",
+ "
\n",
+ "
407
\n",
+ "
_site/en/lessons/building-static-sites-with-je...
\n",
+ "
136
\n",
+ "
'a' tag is missing a reference
\n",
+ "
10
\n",
+ "
88
\n",
+ "
\n",
+ "
\n",
+ "
408
\n",
+ "
_site/en/lessons/building-static-sites-with-je...
\n",
+ "
173
\n",
+ "
'a' tag is missing a reference
\n",
+ "
10
\n",
+ "
88
\n",
+ "
\n",
+ "
\n",
+ "
409
\n",
+ "
_site/en/lessons/building-static-sites-with-je...
\n",
+ "
199
\n",
+ "
'a' tag is missing a reference
\n",
+ "
10
\n",
+ "
88
\n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " file line \\\n",
+ "412 _site/en/lessons/building-static-sites-with-je... 1334 \n",
+ "411 _site/en/lessons/building-static-sites-with-je... 66 \n",
+ "410 _site/en/lessons/building-static-sites-with-je... 57 \n",
+ "406 _site/en/lessons/building-static-sites-with-je... 117 \n",
+ "413 _site/en/lessons/building-static-sites-with-je... 1474 \n",
+ "414 _site/en/lessons/building-static-sites-with-je... 1545 \n",
+ "415 _site/en/lessons/building-static-sites-with-je... 1548 \n",
+ "407 _site/en/lessons/building-static-sites-with-je... 136 \n",
+ "408 _site/en/lessons/building-static-sites-with-je... 173 \n",
+ "409 _site/en/lessons/building-static-sites-with-je... 199 \n",
+ "\n",
+ " message count count_index \n",
+ "412 External link https://support.native-instrumen... 10 88 \n",
+ "411 External link https://maxcdn.bootstrapcdn.com/... 10 88 \n",
+ "410 External link https://maxcdn.bootstrapcdn.com/... 10 88 \n",
+ "406 'a' tag is missing a reference 10 88 \n",
+ "413 External link https://jekyllthemes.org/ failed... 10 88 \n",
+ "414 External link https://jekyll-windows.juthilo.c... 10 88 \n",
+ "415 External link https://chronicle.com/blogs/prof... 10 88 \n",
+ "407 'a' tag is missing a reference 10 88 \n",
+ "408 'a' tag is missing a reference 10 88 \n",
+ "409 'a' tag is missing a reference 10 88 "
+ ]
+ },
+ "execution_count": 8,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "merged_df[merged_df.file.str.contains(\"_site/en/lessons/building-static-sites-with-jekyll-github-pages\", na=False)]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 30,
+ "id": "95f87012",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "✅ Updated: ./_data/ph_authors.yml\n"
+ ]
+ }
+ ],
+ "source": [
+ "import os\n",
+ "import re\n",
+ "\n",
+ "EXTENSIONS = (\".yml\")\n",
+ "\n",
+ "def replace_links_preserving_code_blocks(file_path):\n",
+ " with open(file_path, \"r\", encoding=\"utf-8\") as f:\n",
+ " content = f.read()\n",
+ "\n",
+ " # Match code blocks (triple backticks) and inline code (`...`)\n",
+ " code_blocks = list(re.finditer(r\"(```.*?```|`[^`]*`)\", content, re.DOTALL))\n",
+ " modified = content\n",
+ " offset = 0\n",
+ "\n",
+ " for match in code_blocks:\n",
+ " start, end = match.span()\n",
+ " segment = content[start:end]\n",
+ "\n",
+ " # Temporarily mark this section to skip\n",
+ " placeholder = f\"%%CODEBLOCK{start}%%\"\n",
+ " modified = modified[:start + offset] + placeholder + modified[end + offset:]\n",
+ " offset += len(placeholder) - (end - start)\n",
+ "\n",
+ " # Replace all http:// with https://\n",
+ " modified = re.sub(r\"http://\", \"https://\", modified)\n",
+ "\n",
+ " # Restore code blocks untouched\n",
+ " for match in code_blocks:\n",
+ " start = match.start()\n",
+ " placeholder = f\"%%CODEBLOCK{start}%%\"\n",
+ " modified = modified.replace(placeholder, match.group(0))\n",
+ "\n",
+ " if content != modified:\n",
+ " print(f\"✅ Updated: {file_path}\")\n",
+ " with open(file_path, \"w\", encoding=\"utf-8\") as f:\n",
+ " f.write(modified)\n",
+ "\n",
+ "def process_all_files(root=\".\"):\n",
+ " for dirpath, _, filenames in os.walk(root):\n",
+ " for fname in filenames:\n",
+ " if fname.endswith(EXTENSIONS) and \"ph_authors\" in fname:\n",
+ " replace_links_preserving_code_blocks(os.path.join(dirpath, fname))\n",
+ "\n",
+ "process_all_files()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "66f11201",
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "wizened-old-wizard-lab-env",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.13.3"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}
diff --git a/Gemfile b/Gemfile
index 4779aebab5..4bbb9cb5f6 100644
--- a/Gemfile
+++ b/Gemfile
@@ -2,4 +2,4 @@ source 'https://rubygems.org'
gem 'github-pages'
gem 'jekyll-redirect-from'
gem 'jekyll-paginate'
-gem 'html-proofer', "~> 3.0", "< 3.18"
\ No newline at end of file
+gem 'html-proofer'
\ No newline at end of file
diff --git a/Gemfile.lock b/Gemfile.lock
index 4484dd0b56..d885dd0eba 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -1,47 +1,82 @@
GEM
remote: https://rubygems.org/
specs:
- activesupport (6.0.5.1)
- concurrent-ruby (~> 1.0, >= 1.0.2)
- i18n (>= 0.7, < 2)
- minitest (~> 5.1)
- tzinfo (~> 1.1)
- zeitwerk (~> 2.2, >= 2.2.2)
- addressable (2.8.0)
- public_suffix (>= 2.0.2, < 5.0)
+ Ascii85 (2.0.1)
+ activesupport (8.0.2)
+ base64
+ benchmark (>= 0.3)
+ bigdecimal
+ concurrent-ruby (~> 1.0, >= 1.3.1)
+ connection_pool (>= 2.2.5)
+ drb
+ i18n (>= 1.6, < 2)
+ logger (>= 1.4.2)
+ minitest (>= 5.1)
+ securerandom (>= 0.3)
+ tzinfo (~> 2.0, >= 2.0.5)
+ uri (>= 0.13.1)
+ addressable (2.8.7)
+ public_suffix (>= 2.0.2, < 7.0)
+ afm (0.2.2)
+ async (2.24.0)
+ console (~> 1.29)
+ fiber-annotation
+ io-event (~> 1.9)
+ metrics (~> 0.12)
+ traces (~> 0.15)
+ base64 (0.2.0)
+ benchmark (0.4.0)
+ bigdecimal (3.1.9)
coffee-script (2.4.1)
coffee-script-source
execjs
- coffee-script-source (1.11.1)
+ coffee-script-source (1.12.2)
colorator (1.1.0)
- commonmarker (0.23.5)
- concurrent-ruby (1.1.10)
- dnsruby (1.61.9)
- simpleidn (~> 0.1)
+ commonmarker (0.23.11)
+ concurrent-ruby (1.3.5)
+ connection_pool (2.5.3)
+ console (1.30.2)
+ fiber-annotation
+ fiber-local (~> 1.1)
+ json
+ csv (3.3.4)
+ dnsruby (1.72.4)
+ base64 (~> 0.2.0)
+ logger (~> 1.6.5)
+ simpleidn (~> 0.2.1)
+ drb (2.2.1)
em-websocket (0.5.3)
eventmachine (>= 0.12.9)
http_parser.rb (~> 0)
- ethon (0.15.0)
+ ethon (0.16.0)
ffi (>= 1.15.0)
eventmachine (1.2.7)
- execjs (2.8.1)
- faraday (2.3.0)
- faraday-net_http (~> 2.0)
- ruby2_keywords (>= 0.0.4)
- faraday-net_http (2.0.3)
- ffi (1.15.5)
+ eventmachine (1.2.7-x64-mingw32)
+ execjs (2.10.0)
+ faraday (2.13.1)
+ faraday-net_http (>= 2.0, < 3.5)
+ json
+ logger
+ faraday-net_http (3.4.0)
+ net-http (>= 0.5.0)
+ ffi (1.17.2)
+ ffi (1.17.2-arm64-darwin)
+ fiber-annotation (0.2.0)
+ fiber-local (1.1.0)
+ fiber-storage
+ fiber-storage (1.0.1)
forwardable-extended (2.6.0)
- gemoji (3.0.1)
- github-pages (227)
- github-pages-health-check (= 1.17.9)
- jekyll (= 3.9.2)
- jekyll-avatar (= 0.7.0)
- jekyll-coffeescript (= 1.1.1)
- jekyll-commonmark-ghpages (= 0.2.0)
- jekyll-default-layout (= 0.1.4)
- jekyll-feed (= 0.15.1)
+ gemoji (4.1.0)
+ github-pages (232)
+ github-pages-health-check (= 1.18.2)
+ jekyll (= 3.10.0)
+ jekyll-avatar (= 0.8.0)
+ jekyll-coffeescript (= 1.2.2)
+ jekyll-commonmark-ghpages (= 0.5.1)
+ jekyll-default-layout (= 0.1.5)
+ jekyll-feed (= 0.17.0)
jekyll-gist (= 1.5.0)
- jekyll-github-metadata (= 2.13.0)
+ jekyll-github-metadata (= 2.16.1)
jekyll-include-cache (= 0.2.1)
jekyll-mentions (= 1.6.0)
jekyll-optional-front-matter (= 0.3.2)
@@ -68,40 +103,45 @@ GEM
jekyll-theme-tactile (= 0.2.0)
jekyll-theme-time-machine (= 0.2.0)
jekyll-titles-from-headings (= 0.5.3)
- jemoji (= 0.12.0)
- kramdown (= 2.3.2)
+ jemoji (= 0.13.0)
+ kramdown (= 2.4.0)
kramdown-parser-gfm (= 1.1.0)
- liquid (= 4.0.3)
+ liquid (= 4.0.4)
mercenary (~> 0.3)
minima (= 2.5.1)
- nokogiri (>= 1.13.6, < 2.0)
- rouge (= 3.26.0)
+ nokogiri (>= 1.16.2, < 2.0)
+ rouge (= 3.30.0)
terminal-table (~> 1.4)
- github-pages-health-check (1.17.9)
+ webrick (~> 1.8)
+ github-pages-health-check (1.18.2)
addressable (~> 2.3)
dnsruby (~> 1.60)
- octokit (~> 4.0)
- public_suffix (>= 3.0, < 5.0)
+ octokit (>= 4, < 8)
+ public_suffix (>= 3.0, < 6.0)
typhoeus (~> 1.3)
- html-pipeline (2.14.2)
+ hashery (2.1.2)
+ html-pipeline (2.14.3)
activesupport (>= 2)
nokogiri (>= 1.4)
- html-proofer (3.17.4)
+ html-proofer (5.0.10)
addressable (~> 2.3)
- mercenary (~> 0.3)
- nokogumbo (~> 2.0)
- parallel (~> 1.3)
+ async (~> 2.1)
+ nokogiri (~> 1.13)
+ pdf-reader (~> 2.11)
rainbow (~> 3.0)
typhoeus (~> 1.3)
yell (~> 2.0)
+ zeitwerk (~> 2.5)
http_parser.rb (0.8.0)
- i18n (0.9.5)
+ i18n (1.14.7)
concurrent-ruby (~> 1.0)
- jekyll (3.9.2)
+ io-event (1.10.0)
+ jekyll (3.10.0)
addressable (~> 2.4)
colorator (~> 1.0)
+ csv (~> 3.0)
em-websocket (~> 0.5)
- i18n (~> 0.7)
+ i18n (>= 0.7, < 2)
jekyll-sass-converter (~> 1.0)
jekyll-watch (~> 2.0)
kramdown (>= 1.17, < 3)
@@ -110,27 +150,28 @@ GEM
pathutil (~> 0.9)
rouge (>= 1.7, < 4)
safe_yaml (~> 1.0)
- jekyll-avatar (0.7.0)
+ webrick (>= 1.0)
+ jekyll-avatar (0.8.0)
jekyll (>= 3.0, < 5.0)
- jekyll-coffeescript (1.1.1)
+ jekyll-coffeescript (1.2.2)
coffee-script (~> 2.2)
- coffee-script-source (~> 1.11.1)
+ coffee-script-source (~> 1.12)
jekyll-commonmark (1.4.0)
commonmarker (~> 0.22)
- jekyll-commonmark-ghpages (0.2.0)
- commonmarker (~> 0.23.4)
- jekyll (~> 3.9.0)
+ jekyll-commonmark-ghpages (0.5.1)
+ commonmarker (>= 0.23.7, < 1.1.0)
+ jekyll (>= 3.9, < 4.0)
jekyll-commonmark (~> 1.4.0)
- rouge (>= 2.0, < 4.0)
- jekyll-default-layout (0.1.4)
- jekyll (~> 3.0)
- jekyll-feed (0.15.1)
+ rouge (>= 2.0, < 5.0)
+ jekyll-default-layout (0.1.5)
+ jekyll (>= 3.0, < 5.0)
+ jekyll-feed (0.17.0)
jekyll (>= 3.7, < 5.0)
jekyll-gist (1.5.0)
octokit (~> 4.2)
- jekyll-github-metadata (2.13.0)
+ jekyll-github-metadata (2.16.1)
jekyll (>= 3.4, < 5.0)
- octokit (~> 4.0, != 4.4.0)
+ octokit (>= 4, < 7, != 4.4.0)
jekyll-include-cache (0.2.1)
jekyll (>= 3.7, < 5.0)
jekyll-mentions (1.6.0)
@@ -201,46 +242,60 @@ GEM
jekyll (>= 3.3, < 5.0)
jekyll-watch (2.2.1)
listen (~> 3.0)
- jemoji (0.12.0)
- gemoji (~> 3.0)
+ jemoji (0.13.0)
+ gemoji (>= 3, < 5)
html-pipeline (~> 2.2)
jekyll (>= 3.0, < 5.0)
- kramdown (2.3.2)
+ json (2.11.3)
+ kramdown (2.4.0)
rexml
kramdown-parser-gfm (1.1.0)
kramdown (~> 2.0)
- liquid (4.0.3)
- listen (3.7.1)
+ liquid (4.0.4)
+ listen (3.9.0)
rb-fsevent (~> 0.10, >= 0.10.3)
rb-inotify (~> 0.9, >= 0.9.10)
+ logger (1.6.6)
mercenary (0.3.6)
- mini_portile2 (2.8.0)
+ metrics (0.12.2)
+ mini_portile2 (2.8.8)
minima (2.5.1)
jekyll (>= 3.5, < 5.0)
jekyll-feed (~> 0.9)
jekyll-seo-tag (~> 2.1)
- minitest (5.16.2)
- nokogiri (1.13.8)
- mini_portile2 (~> 2.8.0)
+ minitest (5.25.5)
+ net-http (0.6.0)
+ uri
+ nokogiri (1.18.8)
+ mini_portile2 (~> 2.8.2)
+ racc (~> 1.4)
+ nokogiri (1.18.8-arm64-darwin)
+ racc (~> 1.4)
+ nokogiri (1.18.8-x86_64-darwin)
+ racc (~> 1.4)
+ nokogiri (1.18.8-x86_64-linux-gnu)
racc (~> 1.4)
- nokogumbo (2.0.5)
- nokogiri (~> 1.8, >= 1.8.4)
octokit (4.25.1)
faraday (>= 1, < 3)
sawyer (~> 0.9)
- parallel (1.22.1)
pathutil (0.16.2)
forwardable-extended (~> 2.6)
- public_suffix (4.0.7)
- racc (1.6.0)
+ pdf-reader (2.14.1)
+ Ascii85 (>= 1.0, < 3.0, != 2.0.0)
+ afm (~> 0.2.1)
+ hashery (~> 2.0)
+ ruby-rc4
+ ttfunk
+ public_suffix (5.1.1)
+ racc (1.8.1)
rainbow (3.1.1)
- rb-fsevent (0.11.1)
- rb-inotify (0.10.1)
+ rb-fsevent (0.11.2)
+ rb-inotify (0.11.1)
ffi (~> 1.0)
- rexml (3.2.5)
- rouge (3.26.0)
- ruby2_keywords (0.0.5)
- rubyzip (2.3.2)
+ rexml (3.4.1)
+ rouge (3.30.0)
+ ruby-rc4 (0.1.5)
+ rubyzip (2.4.1)
safe_yaml (1.0.5)
sass (3.7.4)
sass-listen (~> 4.0.0)
@@ -250,30 +305,35 @@ GEM
sawyer (0.9.2)
addressable (>= 2.3.5)
faraday (>= 0.17.3, < 3)
- simpleidn (0.2.1)
- unf (~> 0.1.4)
+ securerandom (0.4.1)
+ simpleidn (0.2.3)
terminal-table (1.8.0)
unicode-display_width (~> 1.1, >= 1.1.1)
- thread_safe (0.3.6)
- typhoeus (1.4.0)
+ traces (0.15.2)
+ ttfunk (1.8.0)
+ bigdecimal (~> 3.1)
+ typhoeus (1.4.1)
ethon (>= 0.9.0)
- tzinfo (1.2.10)
- thread_safe (~> 0.1)
- unf (0.1.4)
- unf_ext
- unf_ext (0.0.8.2)
+ tzinfo (2.0.6)
+ concurrent-ruby (~> 1.0)
unicode-display_width (1.8.0)
+ uri (1.0.3)
+ webrick (1.9.1)
yell (2.2.2)
- zeitwerk (2.6.0)
+ zeitwerk (2.7.2)
PLATFORMS
- ruby
+ arm64-darwin-23
+ arm64-darwin-24
+ x64-mingw32
+ x86_64-darwin-20
+ x86_64-linux
DEPENDENCIES
github-pages
- html-proofer (~> 3.0, < 3.18)
+ html-proofer
jekyll-paginate
jekyll-redirect-from
BUNDLED WITH
- 2.1.4
+ 2.4.10
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000000..22b8c959be
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,47 @@
+# Makefile to build Jekyll and run HTMLProofer without YAML
+
+SITE_DIR := _site
+LOG_FILE := htmlproofer-output.txt
+
+all: build check
+
+build:
+ @echo "🔨 Building Jekyll site..."
+ @bundle exec jekyll build
+
+check:
+ @echo "⏱️ Checking HTML links in $(SITE_DIR)..."
+ @start=$$(date +%s); \
+ bundle exec htmlproofer $(SITE_DIR) \
+ --assume-extension \
+ --check-img-alt=false \
+ --only-4xx \
+ --http-status-ignore 429,403,400 \
+ --url-ignore \
+ "/\/\/www.gutenberg.org\/.*?/" \
+ "/https:\/\/github.com\/programminghistorian\/.*?/" \
+ "/https:\/\/github.com\/orgs\/programminghistorian\/.*?/" \
+ "/\#/" \
+ "/espanol/" \
+ "/deprecated/" \
+ "/collection.britishmuseum.org/" \
+ "/analytics.hathitrust.org/" \
+ "/fr.wikipedia.org\/wiki/" \
+ "/https:\/\/web.archive.org\/web\/20180831094856\/http:\/\/www.dlsi.ua.es\/~borja\/riilua\/6.TopicModeling_v02.pdf/" \
+ "https://github.com/programminghistorian/jekyll/commits/gh-pages" \
+ "https://github.com/programminghistorian/jekyll/commits/gh-pages/.*" \
+ --directory-ignore \
+ $(SITE_DIR)/assets \
+ $(SITE_DIR)/retired \
+ $(SITE_DIR)/retirada \
+ $(SITE_DIR)/retrait \
+ $(SITE_DIR)/posts \
+ --ignore-elements pre,code,script \
+ --log-level debug \
+ > $(LOG_FILE) 2>&1 \
+ || echo "❌ HTMLProofer found issues. See $(LOG_FILE)"; \
+ end=$$(date +%s); \
+ echo "✅ Finished in $$((end-start)) seconds"
+
+clean:
+ rm -rf $(SITE_DIR) $(LOG_FILE)
\ No newline at end of file
diff --git a/README.md b/README.md
index fd752c8cff..edfaf5601f 100644
--- a/README.md
+++ b/README.md
@@ -1,13 +1,13 @@
[](https://github.com/programminghistorian/jekyll/actions/) [](https://app.netlify.com/sites/ph-preview/deploys)
[](https://zenodo.org/badge/latestdoi/12707869)
---
-This is the main repository for the _Programming Historian_ (), where we keep the files for the live website.
+This is the main repository for the _Programming Historian_ (), where we keep the files for the live website.
For tutorials in submission, please see: [_Programming Historian Submissions_](https://github.com/programminghistorian/ph-submissions).
If you have suggestions for the site or project, please click on the [Issues Tab](https://github.com/programminghistorian/jekyll/issues) above, and click [New Issue](https://github.com/programminghistorian/jekyll/issues/new) to describe your idea. Please note this will be public. If you would like to correspond with us privately, please contact [one of the current managing editors listed on our Project Team page](https://programminghistorian.org/en/project-team).
-If you would like to contribute to the project, you can find detailed instructions for authors, reviewers, and editors on the [contributions page](http://programminghistorian.org/contribute) of the website.
+If you would like to contribute to the project, you can find detailed instructions for authors, reviewers, and editors on the [contributions page](https://programminghistorian.org/contribute) of the website.
For technical contributions to the project or to read about our policies for new language sub teams interested in creating a translation, please read our [Project Wiki](https://github.com/programminghistorian/jekyll/wiki).
diff --git a/_build/build.sh b/_build/build.sh
index 3ddf87a961..a057103ad3 100755
--- a/_build/build.sh
+++ b/_build/build.sh
@@ -2,7 +2,14 @@
# Build site, and then run htmlproofer to check for broken internal and external links
-bundle exec jekyll build && htmlproofer _site --assume-extension --empty-alt-ignore --alt-ignore '/.*/' --file-ignore "/assets/,/retired/,/retirada/,/retrait/,/posts/" --timeframe '30d' --only-4xx --http-status-ignore 429,403,400 --url-ignore "/http://www.gutenberg.org/*/,/https://github.com/programminghistorian/jekyll/(commits|blob)/*/,/\#/,/espanol/,/deprecated/,/collection.britishmuseum.org/,/analytics.hathitrust.org/,/fr.wikipedia.org/wiki/,https://web.archive.org/web/20180831094856/http://www.dlsi.ua.es/~borja/riilua/6.TopicModeling_v02.pdf" --allow-hash-href
+# bundle exec jekyll build && htmlproofer _site --assume-extension --empty-alt-ignore --alt-ignore '/.*/' --file-ignore "/assets/,/retired/,/retirada/,/retrait/,/posts/" --timeframe '30d' --only-4xx --http-status-ignore 429,403,400 --url-ignore "/http://www.gutenberg.org/*/,/https://github.com/programminghistorian/jekyll/(commits|blob)/*/,/\#/,/espanol/,/deprecated/,/collection.britishmuseum.org/,/analytics.hathitrust.org/,/fr.wikipedia.org/wiki/,https://web.archive.org/web/20180831094856/http://www.dlsi.ua.es/~borja/riilua/6.TopicModeling_v02.pdf" --allow-hash-href
+
+bundle exec jekyll build && bundle exec htmlproofer _site \
+ --assume-extension \
+ --check-img-alt=false \
+ --only-4xx \
+ --http-status-ignore 429 403 400 \
+ --url-ignore "/http://www.gutenberg.org/.*/" "/https://github.com/programminghistorian/.*/" "/https://github.com/orgs/programminghistorian/.*/" "/#/" "/espanol/" "/deprecated/" "/collection.britishmuseum.org/" "/analytics.hathitrust.org/" "/fr.wikipedia.org/wiki/" "/https://web.archive.org/web/20180831094856/http://www.dlsi.ua.es/~borja/riilua/6.TopicModeling_v02.pdf/"
## Updated version of htmlproofer commands (internal linking still doesn't work for some reason).
# htmlproofer ./_site \
diff --git a/_data/ph_authors.yml b/_data/ph_authors.yml
index 2e4aa717bc..ffad86ec9a 100644
--- a/_data/ph_authors.yml
+++ b/_data/ph_authors.yml
@@ -22,7 +22,7 @@
github: acrymble
email: a.crymble@ucl.ac.uk
twitter: Adam_Crymble
- url: "http://adamcrymble.org"
+ url: "https://adamcrymble.org"
team: true
team_start: 2011
institution: University College London, United Kingdom
@@ -111,7 +111,7 @@
Fred Gibbs é professor assistente de História na University of New Mexico.
- name: Maria José Afanador-Llach
- url: "http://www.mariajoseafanador.com"
+ url: "https://www.mariajoseafanador.com"
email: mj.afanador28@uniandes.edu.co
twitter: mariajoafana
github: mariajoafana
@@ -176,7 +176,7 @@
status: volunteer
- name: Antonio Rojas Castro
- url: "http://antoniorojascastro.com"
+ url: "https://antoniorojascastro.com"
email: rojas.castro.antonio@gmail.com
twitter: RojasCastroA
github: arojascastro
@@ -539,11 +539,11 @@
team: false
bio:
en: |
- Marten Düring is a historian, works as researcher in the Digital Humanities Lab at CVCE Luxembourg, runs http://historicalnetworkresearch.org and regularly teaches workshops on network analysis.
+ Marten Düring is a historian, works as researcher in the Digital Humanities Lab at CVCE Luxembourg, runs https://historicalnetworkresearch.org and regularly teaches workshops on network analysis.
es: |
- Marten Düring es historiador y trabaja como investigador en el Laboratorio de Humanidades Digitales del CVCE Luxembourg. Dirige http://historicalnetworkresearch.org y ofrece talleres sobre análisis de redes.
+ Marten Düring es historiador y trabaja como investigador en el Laboratorio de Humanidades Digitales del CVCE Luxembourg. Dirige https://historicalnetworkresearch.org y ofrece talleres sobre análisis de redes.
pt: |
- Marten Düring é historiador e trabalha como pesquisador no Laboratório de Humanidades Digitais do CVCE Luxemburgo. Dirige http://historicalnetworkresearch.org e regularmente leciona workshops sobre análise de redes.
+ Marten Düring é historiador e trabalha como pesquisador no Laboratório de Humanidades Digitais do CVCE Luxemburgo. Dirige https://historicalnetworkresearch.org e regularmente leciona workshops sobre análise de redes.
- name: Max De Wilde
team: false
@@ -655,7 +655,7 @@
github: svmelton
email: sarah.melton1@gmail.com
twitter: worldcatlady
- url: "http://sarahvmelton.com"
+ url: "https://sarahvmelton.com"
team: false
team_start: 2019
team_end: 2022
@@ -732,7 +732,7 @@
github: walshbr
twitter: walshbr
email: walsh.brandon.michael@gmail.com
- url: "http://walshbr.com/"
+ url: "https://walshbr.com/"
team: false
team_start: 2017
team_end: 2021
@@ -837,7 +837,7 @@
github: JMParr
email: jparr1129@gmail.com
twitter: ProvAtlantic
- url: "http://jessicaparr.org/"
+ url: "https://jessicaparr.org/"
team: false
team_start: 2017
team_end: 2025
@@ -1098,7 +1098,7 @@
Zoë Wilkinson Saldaña é licencianda pela University of Michigan School of Information, onde se foca na interseção de literacias críticas de dados, bibliotecas académicas e aprendizagem com informação de dados.
- name: José Antonio Motilla
- url: "http://www.bibliografiapotosina.mx/about/"
+ url: "https://www.bibliografiapotosina.mx/about/"
twitter: jamotilla
email: jamotilla@gmail.com
github: jamotilla
@@ -1183,7 +1183,7 @@
- name: François Dominic Laramée
github: fdlaramee
twitter: fdlaramee
- url: "http://www.francoisdominiclaramee.com"
+ url: "https://www.francoisdominiclaramee.com"
email: fdl@francoisdominiclaramee.com
team: false
team_start: 2018
@@ -1222,7 +1222,7 @@
email: martin.grandjean@unil.ch
twitter: grandjeanmartin
github: grandjeanmartin
- url: "http://www.martingrandjean.ch"
+ url: "https://www.martingrandjean.ch"
team: false
team_start: 2019
team_end: 2021
@@ -1376,7 +1376,7 @@
github: ZoeLeBlanc
twitter: zoe_leblanc
email: zgleblanc@gmail.com
- url: "http://zoeleblanc.com"
+ url: "https://zoeleblanc.com"
team: false
team_start: 2018
team_end: 2025
@@ -1755,7 +1755,7 @@
github: hawc2
twitter: alexwermercolan
email: english@programminghistorian.org
- url: "http://www.alexwermercolan.com/"
+ url: "https://www.alexwermercolan.com/"
orcid: 0000-0001-7030-6070
team: true
team_start: 2020
diff --git a/_data/snippets.yml b/_data/snippets.yml
index 365018bad8..e4a25dec9d 100644
--- a/_data/snippets.yml
+++ b/_data/snippets.yml
@@ -209,13 +209,13 @@ menu-contribute-support-donate:
link: /en/individual
es:
title: Apóyanos - Donaciones
- link: /es/apoyanos#donaciones
+ link: /es/donaciones
fr:
title: Dons individuels
- link: /fr/nous-soutenir#dons
+ link: /fr/dons
pt:
title: Apoie-nos - Doações
- link: /pt/apoie-nos#doacoes
+ link: /pt/doacoes
menu-lessons:
en:
title: Lessons
diff --git a/_includes/analytics.html b/_includes/analytics.html
index 80e43f8f6f..4c510e8f57 100644
--- a/_includes/analytics.html
+++ b/_includes/analytics.html
@@ -2,7 +2,7 @@
Enables google-analytics site-wide
{% endcomment %}
-
+ -->
diff --git a/_includes/contact-info.html b/_includes/contact-info.html
index 547f8fef79..4285b52918 100644
--- a/_includes/contact-info.html
+++ b/_includes/contact-info.html
@@ -49,10 +49,10 @@
{{ member.email }}
{% endif %}
{% if member.twitter %}
- {{ member.twitter }}
+ {{ member.twitter }}
{% endif %}
{% if member.github %}
- {{ member.github }}
+ {{ member.github }}
{% endif %}
{% if member.orcid %}
{% include orcid.html author=member %}
diff --git a/_includes/figure.html b/_includes/figure.html
index eeec53ce09..9d60547990 100644
--- a/_includes/figure.html
+++ b/_includes/figure.html
@@ -1,5 +1,5 @@
{% comment %}
-figure tags without plugin: http://stackoverflow.com/questions/19331362/using-an-image-caption-in-markdown-jekyll
+figure tags without plugin: https://stackoverflow.com/questions/19331362/using-an-image-caption-in-markdown-jekyll
If figure.html is being called from a lesson page, it collects the lesson slug from lesson-slug.html in order to compute the correct path to the image. Otherwise, it just appends the basepath and constructs the figure tag normally.
diff --git a/_includes/lesson-index.html b/_includes/lesson-index.html
index 2eedd4b9d9..721beac7dc 100644
--- a/_includes/lesson-index.html
+++ b/_includes/lesson-index.html
@@ -4,7 +4,7 @@
{% endcomment %}
-
-
-
+
+
{% if page.lang != "en" %}
-
+
{% endif %}
diff --git a/_posts/2012-06-27-welcome-to-ph2.md b/_posts/2012-06-27-welcome-to-ph2.md
index 7785afc67e..56aae6b1a7 100644
--- a/_posts/2012-06-27-welcome-to-ph2.md
+++ b/_posts/2012-06-27-welcome-to-ph2.md
@@ -53,4 +53,4 @@ site. Tell us what confuses you and how we can improve the experience.
In using this resource, you’re joining a community of
scholar-programmers, and we couldn’t be happier to welcome you.
- [original *Programming Historian*]: http://niche-canada.org/programming-historian
+ [original *Programming Historian*]: https://niche-canada.org/programming-historian
diff --git a/_posts/2014-11-05-how-we-moved-to-github.md b/_posts/2014-11-05-how-we-moved-to-github.md
index 0570b6282d..1ab773d845 100644
--- a/_posts/2014-11-05-how-we-moved-to-github.md
+++ b/_posts/2014-11-05-how-we-moved-to-github.md
@@ -6,11 +6,11 @@ layout: post
categories: posts
---
-Earlier this year, the editors of The Programming Historian decided to move the site from a Wordpress installation to a [static website](http://en.wikipedia.org/wiki/Static_web_page) hosted on [GitHub Pages](http://pages.github.com). This post is a brief overview of how we made the switch, using some of the same tools and computational methods featured in our lessons.
+Earlier this year, the editors of The Programming Historian decided to move the site from a Wordpress installation to a [static website](https://en.wikipedia.org/wiki/Static_web_page) hosted on [GitHub Pages](https://pages.github.com). This post is a brief overview of how we made the switch, using some of the same tools and computational methods featured in our lessons.
I'm going to focus on how we converted the HTML pages generated by our Wordpress site into Markdown files that were ready to be deployed on GitHub. In the process, I'll show how it's possible to build on a series of Programming Historian lessons to solve new problems. Be aware, however, that this post will be slightly more technical than our usual lessons; it may be most beneficial for readers who are already comfortable using command line tools like Pandoc and are contemplating a similar conversion for their Wordpress website.
-Our new website uses a publishing platform called [Jekyll](http://jekyllrb.com) to turn a repository of files written in [Markdown](https://help.github.com/articles/markdown-basics) into an HTML website. In the case of the Programming Historian, Jekyll uses [this repository](https://github.com/programminghistorian/jekyll) to generate [this website](). Lessons that look like [this](https://raw.githubusercontent.com/programminghistorian/jekyll/gh-pages/en/lessons/data-mining-the-internet-archive.md) are converted by Jekyll into lessons that look like [that](/lessons/data-mining-the-internet-archive).
+Our new website uses a publishing platform called [Jekyll](https://jekyllrb.com) to turn a repository of files written in [Markdown](https://help.github.com/articles/markdown-basics) into an HTML website. In the case of the Programming Historian, Jekyll uses [this repository](https://github.com/programminghistorian/jekyll) to generate [this website](). Lessons that look like [this](https://raw.githubusercontent.com/programminghistorian/jekyll/gh-pages/en/lessons/data-mining-the-internet-archive.md) are converted by Jekyll into lessons that look like [that](/lessons/data-mining-the-internet-archive).
Thanks to the power of Jekyll, generating our new website was easy once all of our lessons and pages were formatted correctly in Markdown. Our challenge was to get all of the HTML pages from the Wordpress site and convert them into Markdown that Jekyll could understand. This was a multi-stage process made easier by tools like Wget, Pandoc, and Python.
@@ -22,7 +22,7 @@ Our first step was to get HTML versions of all the pages and lessons on our old
For the next step---the conversion of these HTML files to Markdown---we decided to use [Pandoc](https://pandoc.org/), a powerful tool described by Dennis Tenen and Grant Wythoff in [Sustainable Authorship in Plain Text using Pandoc and Markdown](/lessons/sustainable-authorship-in-plain-text-using-pandoc-and-markdown).
-That lesson focuses on using Pandoc to convert from Markdown into other formats, but Pandoc is also able to turn HTML to Markdown, which is what we wanted to do. It can even locate metadata in the HTML, such as the author, title, and date, and convert it into a [YAML metadata block](http://jekyllrb.com/docs/frontmatter/) in the Markdown output that Jekyll will recognize.
+That lesson focuses on using Pandoc to convert from Markdown into other formats, but Pandoc is also able to turn HTML to Markdown, which is what we wanted to do. It can even locate metadata in the HTML, such as the author, title, and date, and convert it into a [YAML metadata block](https://jekyllrb.com/docs/frontmatter/) in the Markdown output that Jekyll will recognize.
But Pandoc needs some help to do this. For example, it expects to find metadata in `` tags that look like this:
@@ -84,14 +84,14 @@ But in our case, the conversion was not quite so simple. Consider what happens i
Lesson Goals
------------
- The collections of the [Internet Archive](http://archive.org/) (IA)
+ The collections of the [Internet Archive](https://archive.org/) (IA)
include many digitized sources of interest to historians, including
[early JSTOR journal content](https://archive.org/details/jstor_ejc),
[John Adams's personal
library](https://archive.org/details/johnadamsBPL), and the [Haiti
collection](https://archive.org/details/jcbhaiti) at the John Carter
Brown Library. In short, to quote Programming Historian [Ian
- Milligan](http://activehistory.ca/2013/09/the-internet-archive-rocks-or-two-million-plus-free-sources-to-explore/),
+ Milligan](https://activehistory.ca/2013/09/the-internet-archive-rocks-or-two-million-plus-free-sources-to-explore/),
"The Internet Archive rocks."
In this lesson, you'll learn how to download files from such collections
@@ -102,7 +102,7 @@ But in our case, the conversion was not quite so simple. Consider what happens i
For demonstration purposes, this lesson will focus on working with the
digitized version of the [Anti-Slavery
- Collection](http://archive.org/details/bplscas) at the Boston Public
+ Collection](https://archive.org/details/bplscas) at the Boston Public
Library in Copley Square. We will first download a large collection of
MARC records from this collection, and then use Python to retrieve and
analyze bibliographic information about items in the collection. For
@@ -203,14 +203,14 @@ When we do, the start of our Markdown output should now look like this:
Lesson Goals
------------
- The collections of the [Internet Archive](http://archive.org/) (IA)
+ The collections of the [Internet Archive](https://archive.org/) (IA)
include many digitized sources of interest to historians, including
[early JSTOR journal content](https://archive.org/details/jstor_ejc),
[John Adams's personal
library](https://archive.org/details/johnadamsBPL), and the [Haiti
collection](https://archive.org/details/jcbhaiti) at the John Carter
Brown Library. In short, to quote Programming Historian [Ian
- Milligan](http://activehistory.ca/2013/09/the-internet-archive-rocks-or-two-million-plus-free-sources-to-explore/),
+ Milligan](https://activehistory.ca/2013/09/the-internet-archive-rocks-or-two-million-plus-free-sources-to-explore/),
"The Internet Archive rocks."
In this lesson, you'll learn how to download files from such collections
@@ -221,7 +221,7 @@ When we do, the start of our Markdown output should now look like this:
For demonstration purposes, this lesson will focus on working with the
digitized version of the [Anti-Slavery
- Collection](http://archive.org/details/bplscas) at the Boston Public
+ Collection](https://archive.org/details/bplscas) at the Boston Public
Library in Copley Square. We will first download a large collection of
MARC records from this collection, and then use Python to retrieve and
analyze bibliographic information about items in the collection. For
@@ -269,7 +269,7 @@ When we do, the start of our Markdown output should now look like this:
Now you are ready to go to work!
-Notice that our metadata is now inserted in the output as a [Jekyll metadata block](http://jekyllrb.com/docs/frontmatter/). Hooray!
+Notice that our metadata is now inserted in the output as a [Jekyll metadata block](https://jekyllrb.com/docs/frontmatter/). Hooray!
### Converting Code Block Syntax
@@ -301,14 +301,14 @@ Run that command on the same [modified HTML file](https://github.com/programming
Lesson Goals
------------
- The collections of the [Internet Archive](http://archive.org/) (IA)
+ The collections of the [Internet Archive](https://archive.org/) (IA)
include many digitized sources of interest to historians, including
[early JSTOR journal content](https://archive.org/details/jstor_ejc),
[John Adams’s personal
library](https://archive.org/details/johnadamsBPL), and the [Haiti
collection](https://archive.org/details/jcbhaiti) at the John Carter
Brown Library. In short, to quote Programming Historian [Ian
- Milligan](http://activehistory.ca/2013/09/the-internet-archive-rocks-or-two-million-plus-free-sources-to-explore/),
+ Milligan](https://activehistory.ca/2013/09/the-internet-archive-rocks-or-two-million-plus-free-sources-to-explore/),
“The Internet Archive rocks.”
In this lesson, you’ll learn how to download files from such collections
@@ -319,7 +319,7 @@ Run that command on the same [modified HTML file](https://github.com/programming
For demonstration purposes, this lesson will focus on working with the
digitized version of the [Anti-Slavery
- Collection](http://archive.org/details/bplscas) at the Boston Public
+ Collection](https://archive.org/details/bplscas) at the Boston Public
Library in Copley Square. We will first download a large collection of
MARC records from this collection, and then use Python to retrieve and
analyze bibliographic information about items in the collection. For
diff --git a/_posts/2015-06-02-programming-historian-live-london.md b/_posts/2015-06-02-programming-historian-live-london.md
index f174b66294..892d7596d7 100644
--- a/_posts/2015-06-02-programming-historian-live-london.md
+++ b/_posts/2015-06-02-programming-historian-live-london.md
@@ -16,6 +16,6 @@ The provisional schedule will include introductions to:
- Corpus Analysis (AntConc, Shell)
- Web Scrapping (Wget)
-Places are limited and can be booked on [Eventbrite](http://proghistlive.eventbrite.co.uk). Please note that attendees will be required to bring their own laptop. Questions and queries should be directed to James Baker at drjameswbaker@gmail.com.
+Places are limited and can be booked on [Eventbrite](https://proghistlive.eventbrite.co.uk). Please note that attendees will be required to bring their own laptop. Questions and queries should be directed to James Baker at drjameswbaker@gmail.com.
-Programming Historian Live is funded by the [Software Sustainability Institute](http://www.software.ac.uk/), and is supported by the [British Library](http://www.bl.uk/), the [Institute of Historical Research](http://www.history.ac.uk/), and [The Programming Historian](/).
+Programming Historian Live is funded by the [Software Sustainability Institute](https://www.software.ac.uk/), and is supported by the [British Library](https://www.bl.uk/), the [Institute of Historical Research](https://www.history.ac.uk/), and [The Programming Historian](/).
diff --git a/_posts/2016-03-28-reintroducing-the-ph-blog.md b/_posts/2016-03-28-reintroducing-the-ph-blog.md
index eb8fb8c652..34331af93b 100644
--- a/_posts/2016-03-28-reintroducing-the-ph-blog.md
+++ b/_posts/2016-03-28-reintroducing-the-ph-blog.md
@@ -13,7 +13,7 @@ Currently, *The Programming Historian'*s content focuses on lessons that explain
While individuals who are already steeped in the digital humanities may find themselves on PH because they already know they'd like to learn a particular skill, those who are just learning about the digital humanities might be less sure about how or why PH could be a valuable resource for them—particularly those who do not self-identify as "programmers." The revitalized PH blog seeks to bridge the gap between script writing, data mining, code wrangling scholars, and scholars who are just beginning to learn about the different ways they can use digital methods to conduct their research, present their research to wider audiences, and inform their teaching.
-In keeping with the spirit of introducing the revitalized PH blog, I'd like to introduce myself and say how thrilled I am to have recently joined the PH editorial board. My name is Evan Taparata, and I am a doctoral candidate in History at the University of Minnesota, where I am writing a dissertation about the history of refugee law and policy in the United States over the long nineteenth century. Before joining PH, I've explored my interest in the intersection of public history and digital humanities by working with my UMN colleagues on two [Humanities Action Lab](http://humanitiesactionlab.org) initiatives: the ["Guantánamo Public Memory Project,"](http://gitmomemory.org) which examines the history of the U.S. naval base at Guantánamo Bay, Cuba, and "States of Incarceration"—launching in April 2016—which explores the past, present, and future of mass incarceration in the United States. I am interested in cultivating the PH blog as a resource for educators who would like to learn more about using digital humanities methods and tools in the classroom, and I am especially invested in using the blog to explore how digital methods can help students do innovative and original historical research that reaches beyond academia and engages public audiences. I am very excited to work toward achieving this goal with the support of my fellow PH editorial board members.
+In keeping with the spirit of introducing the revitalized PH blog, I'd like to introduce myself and say how thrilled I am to have recently joined the PH editorial board. My name is Evan Taparata, and I am a doctoral candidate in History at the University of Minnesota, where I am writing a dissertation about the history of refugee law and policy in the United States over the long nineteenth century. Before joining PH, I've explored my interest in the intersection of public history and digital humanities by working with my UMN colleagues on two [Humanities Action Lab](https://humanitiesactionlab.org) initiatives: the ["Guantánamo Public Memory Project,"](https://gitmomemory.org) which examines the history of the U.S. naval base at Guantánamo Bay, Cuba, and "States of Incarceration"—launching in April 2016—which explores the past, present, and future of mass incarceration in the United States. I am interested in cultivating the PH blog as a resource for educators who would like to learn more about using digital humanities methods and tools in the classroom, and I am especially invested in using the blog to explore how digital methods can help students do innovative and original historical research that reaches beyond academia and engages public audiences. I am very excited to work toward achieving this goal with the support of my fellow PH editorial board members.
## What Will Be the Focus of the Blog?
diff --git a/_posts/2016-05-10-PH-commitment-to-diversity.md b/_posts/2016-05-10-PH-commitment-to-diversity.md
index 161734450c..ce0cf58d62 100644
--- a/_posts/2016-05-10-PH-commitment-to-diversity.md
+++ b/_posts/2016-05-10-PH-commitment-to-diversity.md
@@ -10,7 +10,7 @@ If you spend too much time inside a project, you soon become unable to see its f
Since 2012 we have published 46 tutorials to help people learn new ways that technology can aid them in their research processes. We're proud to say that almost two-hundred thousand unique users around the world have made use of our resources. But we are not so proud to admit that amongst our contributing authors, we're predominantly male: Only 7 women and 23 men. We're also predominantly white and North American -- another fact we're not proud of.
-Of course, that hadn't been planned. We weren't doing anything intentionally to dissuade women, people of color, or people from other nations from contributing. But we do know that a number of [well-documented](http://www.aauw.org/research/why-so-few/) [institutional factors](https://web.archive.org/web/20160318111901/http://www.codedoc.co/about/) within the culture of technology and programming work against marginalized groups' participation in technical forums. So, as a start, we began to address these questions of inclusivity by opening up a [discussion on our message board](https://github.com/programminghistorian/jekyll/issues/152), and later an [anonymous survey](https://www.surveymonkey.co.uk/r/SFSRHHD) to ask why our gender numbers are so imbalanced. Special thanks to Heather Froehlich for helping us build our survey. We've since collected those results and wanted to share with you both what people said, and what we plan to do about it.
+Of course, that hadn't been planned. We weren't doing anything intentionally to dissuade women, people of color, or people from other nations from contributing. But we do know that a number of [well-documented](https://www.aauw.org/research/why-so-few/) [institutional factors](https://web.archive.org/web/20160318111901/https://www.codedoc.co/about/) within the culture of technology and programming work against marginalized groups' participation in technical forums. So, as a start, we began to address these questions of inclusivity by opening up a [discussion on our message board](https://github.com/programminghistorian/jekyll/issues/152), and later an [anonymous survey](https://www.surveymonkey.co.uk/r/SFSRHHD) to ask why our gender numbers are so imbalanced. Special thanks to Heather Froehlich for helping us build our survey. We've since collected those results and wanted to share with you both what people said, and what we plan to do about it.
Our survey received 47 responses (49% women), in addition to 58 comments on our message board. The respondents, of course, are self-selecting, but we thought they had important things to say.
@@ -72,13 +72,13 @@ Phew, thanks! That's a lot of ideas! We'll be doing our best to chip away at the
### Submission System (Technical)
-It's clear that for many people our submission system is a barrier to entry. We chose to use a combination of Markdown and Github pull requests because it was free and was meant to make life easy for editors (who are volunteers). We were quoted £4,000 per year for a commercial option and hoped this free option would work. We do recognize, however, that women in particular have good reasons for hesitating to involve themselves in platforms for producing and distributing digital content that, until recently, have been predominantly composed of men and that [inadvertently favored the contributions of men](http://web.archive.org/web/20160507170231/http://www.usnews.com/news/blogs/data-mine/2016/02/18/study-shows-women-are-better-coders-but-only-when-gender-is-hidden).
+It's clear that for many people our submission system is a barrier to entry. We chose to use a combination of Markdown and Github pull requests because it was free and was meant to make life easy for editors (who are volunteers). We were quoted £4,000 per year for a commercial option and hoped this free option would work. We do recognize, however, that women in particular have good reasons for hesitating to involve themselves in platforms for producing and distributing digital content that, until recently, have been predominantly composed of men and that [inadvertently favored the contributions of men](https://web.archive.org/web/20160507170231/https://www.usnews.com/news/blogs/data-mine/2016/02/18/study-shows-women-are-better-coders-but-only-when-gender-is-hidden).
To address this, our website editor, Caleb McDaniel, is currently experimenting with options that we hope will make this easier. Stay tuned to the blog for updates on our continued efforts to make submitting a lesson as accessible as possible while maintaining the zero cost and low maintenance requirements for our team.
### Outreach
-We'd love to reach more people. So we've brought on a new member to the editorial team, Evan Taparata, who will be working closely with our editorial board to restart our blog, recruit a wider array of voices to PH, and expand our audiences. For example, we are interested in including the perspectives of feminist, POC, LGBTQ, and women-friendly programming and technology groups, such as [PyLadies](http://www.pyladies.com/) and [FemTechNet](http://femtechnet.org/). Watch this space, and [email Evan](mailto:tapar001@umn.edu) if you know of potential contributors or collaborators.
+We'd love to reach more people. So we've brought on a new member to the editorial team, Evan Taparata, who will be working closely with our editorial board to restart our blog, recruit a wider array of voices to PH, and expand our audiences. For example, we are interested in including the perspectives of feminist, POC, LGBTQ, and women-friendly programming and technology groups, such as [PyLadies](https://www.pyladies.com/) and [FemTechNet](https://femtechnet.org/). Watch this space, and [email Evan](mailto:tapar001@umn.edu) if you know of potential contributors or collaborators.
### Gender Balance and Submission (Social)
diff --git a/_posts/2016-06-10-adding-to-library-catalogue.md b/_posts/2016-06-10-adding-to-library-catalogue.md
index acc1496f2d..203327258c 100644
--- a/_posts/2016-06-10-adding-to-library-catalogue.md
+++ b/_posts/2016-06-10-adding-to-library-catalogue.md
@@ -8,15 +8,15 @@ categories: posts
One of the suggested ways to help *The Progamming Historian* (PH) out in Adam Crymble's recent post, ["*The Progamming Historian*'s Commitment to Diversity"](/posts/PH-commitment-to-diversity), was adding PH to your library's catalogue. Doing so not only helps legitimize the efforts of PH's authors as the scholarship it is, it also increases public access to a strong, free resource for exploring the digital humanities (DH). By listing PH in library catalogues, we can help anyone using library search engines to seek DH knowledge find PH and have know it's been vetted by librarians as a trustworthy resource.
-I recently worked with colleagues in the cataloguing and metadata services units at the Purdue University Libraries to add PH to our library catalogue [permalink](http://purdue-primo-prod.hosted.exlibrisgroup.com/PURDUE:everything:PURDUE_ALMA51671812890001081). Our criteria for adding catalogue resources listed an OCLC number as a preference, so because PH didn't yet have one, we went ahead and created it: 951537099. This means PH is also now [listed in WorldCat](http://www.worldcat.org/oclc/951537099). (Note that while PH can be added to as many library catalogues as users wish, we only needed one OCLC number creation and WorldCat record—no need to create another!)
+I recently worked with colleagues in the cataloguing and metadata services units at the Purdue University Libraries to add PH to our library catalogue [permalink](https://purdue-primo-prod.hosted.exlibrisgroup.com/PURDUE:everything:PURDUE_ALMA51671812890001081). Our criteria for adding catalogue resources listed an OCLC number as a preference, so because PH didn't yet have one, we went ahead and created it: 951537099. This means PH is also now [listed in WorldCat](https://www.worldcat.org/oclc/951537099). (Note that while PH can be added to as many library catalogues as users wish, we only needed one OCLC number creation and WorldCat record—no need to create another!)
-If you'd like to help PH's accessibility and trustworthiness by adding it to your school, local, or other library catalogue, starting by contacting either a humanities subject librarian or a digital "something" librarian (humanities, initiatives, scholarship...) is a good first step. You're welcome to use the email template shared below (drawn from ["About The Programming Historian"](/)) to make this even simpler. If you add PH to your catalogue, let PH know! Tweet [@ProgHist](https://twitter.com/proghist) or use any of the otehr contact info on PH's [feedback page](/feedback). Or if you have any questions about adding *The Progamming Historian* to your library's catalogue, feel free to tweet [@Literature_Geek](http://www.twitter.com/Literature_Geek) or email me at aviscont@purdue.edu.
+If you'd like to help PH's accessibility and trustworthiness by adding it to your school, local, or other library catalogue, starting by contacting either a humanities subject librarian or a digital "something" librarian (humanities, initiatives, scholarship...) is a good first step. You're welcome to use the email template shared below (drawn from ["About The Programming Historian"](/)) to make this even simpler. If you add PH to your catalogue, let PH know! Tweet [@ProgHist](https://twitter.com/proghist) or use any of the otehr contact info on PH's [feedback page](/feedback). Or if you have any questions about adding *The Progamming Historian* to your library's catalogue, feel free to tweet [@Literature_Geek](https://www.twitter.com/Literature_Geek) or email me at aviscont@purdue.edu.
## Information to share with library cataloguers
I'm interested in adding a peer-reviewed digital humanities resource to our library catalogue. Here's some information to help you assess this resource:
*The Programming Historian* is a respected digital resource for free, peer-reviewed, community-authored guides to digital humanities methodologies (not just history, despite the title). It aims to help researchers at all levels of higher education learn a wide range of digital tools, techniques, and workflows to facilitate their humanities research; importantly, its tutorials offer not just the steps to use a given tool or method, but also examples drawn from humanities research of a tool's potential use and usefulness. It is actively maintained and releasing new tutorials.
-*The Programming Historian* is [listed in WorldCat](http://www.worldcat.org/oclc/951537099) as well as by libraries including the [Purdue University Libraries](http://purdue-primo-prod.hosted.exlibrisgroup.com/PURDUE:everything:PURDUE_ALMA51671812890001081).
+*The Programming Historian* is [listed in WorldCat](https://www.worldcat.org/oclc/951537099) as well as by libraries including the [Purdue University Libraries](https://purdue-primo-prod.hosted.exlibrisgroup.com/PURDUE:everything:PURDUE_ALMA51671812890001081).
It is **free of charge** with no additional registration or specialized software required.
**Open Source**: "*The Progamming Historian* is committed to open source and open access principles. All contributed lessons must make use of open source programming languages and open source software whenever possible. This policy is meant to minimize costs for all parties, and to allow the greatest possible level of participation. We believe everyone should be able to benefit from these tutorials, not just those with large research budgets for expensive proprietary software."
@@ -25,4 +25,4 @@ It is **free of charge** with no additional registration or specialized software
**Funding & Ownership**: "*The Progamming Historian* is a volunteer-led initiative, controlled entirely by the ‘Editorial Board of the Programming Historian’ with the help of community contributors. It is not a legal entity, and does not currently receive direct funding from any source."
-**Suggested citation**: Crymble, Adam, Fred Gibbs, Allison Hegel, Caleb McDaniel, Ian Milligan, Evan Taparata, and Jeri Wieringa, eds. *The Progamming Historian*. 2nd ed., 2016. http://programminghistorian.org/.
+**Suggested citation**: Crymble, Adam, Fred Gibbs, Allison Hegel, Caleb McDaniel, Ian Milligan, Evan Taparata, and Jeri Wieringa, eds. *The Progamming Historian*. 2nd ed., 2016. https://programminghistorian.org/.
diff --git a/_posts/2016-07-05-spanish-editor.md b/_posts/2016-07-05-spanish-editor.md
index ba4921b230..d66353753d 100644
--- a/_posts/2016-07-05-spanish-editor.md
+++ b/_posts/2016-07-05-spanish-editor.md
@@ -16,7 +16,7 @@ Adam Crymble (University of Hertfordshire) will offer support on the practices o
Launched in 2012, The Programming Historian offers more than 45 novice-friendly, peer-reviewed tutorials that help humanists learn a wide range of digital tools, techniques, and workflows to facilitate their research. The Programming Historian is a volunteer-led initiative, controlled entirely by the ‘Editorial Board of the Programming Historian’ with the help of community contributors. It is not a legal entity, and does not currently receive direct funding from any source. Read our reviews:
* Lincoln Mullen, '[Review of the Programming Historian](https://academic.oup.com/jah/article/103/1/299/1751315)', The Journal of American History, vol. 103, no. 1 (2016), pp. 299-301.
-* Cameron Blevins, '[Review of the Programming Historian](http://jitp.commons.gc.cuny.edu/review-of-the-programming-historian/)', The Journal of Interactive Technology & Pedagogy, vol. 8 (2015)
+* Cameron Blevins, '[Review of the Programming Historian](https://jitp.commons.gc.cuny.edu/review-of-the-programming-historian/)', The Journal of Interactive Technology & Pedagogy, vol. 8 (2015)
Interested candidates should submit a 1-page expression of interest outlining your interests, experience, and vision for the role, to Adam Crymble (adam.crymble@gmail.com) by 31 July 2016. Please direct any questions to Adam in the first instance.
diff --git a/_posts/2016-07-20-digital-storytelling-immigrant-stories.md b/_posts/2016-07-20-digital-storytelling-immigrant-stories.md
index 23a65bca77..f64f21377a 100644
--- a/_posts/2016-07-20-digital-storytelling-immigrant-stories.md
+++ b/_posts/2016-07-20-digital-storytelling-immigrant-stories.md
@@ -8,15 +8,15 @@ categories: posts
So you’re interested in the digital humanities. You’re considering a new skill or tool, maybe through a [lesson here at the Programming Historian](/lessons/). But your research involves working with individuals and the stories they tell, rather than abstract data. Is there a place for you in the digital humanities?
-Yes! Digital storytelling would be a natural fit. The [Immigrant Stories](http://cla.umn.edu/ihrc/research/immigrant-stories) project provides a model for digital storytelling as a research tool. In 2013, the University of Minnesota’s Immigration History Research Center (IHRC) began Immigrant Stories to collect contemporary migration stories through digital storytelling and preserve them in the IHRC Archives. Our growing collection of digital stories is available to researchers. Our training materials allow a novice to teach others to make digital stories, and to make digital stories themselves.
+Yes! Digital storytelling would be a natural fit. The [Immigrant Stories](https://cla.umn.edu/ihrc/research/immigrant-stories) project provides a model for digital storytelling as a research tool. In 2013, the University of Minnesota’s Immigration History Research Center (IHRC) began Immigrant Stories to collect contemporary migration stories through digital storytelling and preserve them in the IHRC Archives. Our growing collection of digital stories is available to researchers. Our training materials allow a novice to teach others to make digital stories, and to make digital stories themselves.
-Digital storytelling is a way of sharing personal narratives through brief digital videos. The process is simple. You begin by writing a 300-500 word story about a personal experience. Next, you produce a voiceover by making an audio recording of yourself reading your story. Then you finish your video by adding images to your narration in a video editing program. A digital story can be quite sophisticated and include video clips, background music, and special effects. But there’s no need for camera crews or retraining as a film editor. A powerful digital story comes from a compelling story and images. [Saengmany Ratsabout’s Immigrant Story](http://immigrants.mndigital.org/exhibits/show/immigrantstories-exhibit/item/508) about his family’s experience as refugees is a great example.
+Digital storytelling is a way of sharing personal narratives through brief digital videos. The process is simple. You begin by writing a 300-500 word story about a personal experience. Next, you produce a voiceover by making an audio recording of yourself reading your story. Then you finish your video by adding images to your narration in a video editing program. A digital story can be quite sophisticated and include video clips, background music, and special effects. But there’s no need for camera crews or retraining as a film editor. A powerful digital story comes from a compelling story and images. [Saengmany Ratsabout’s Immigrant Story](https://immigrants.mndigital.org/exhibits/show/immigrantstories-exhibit/item/508) about his family’s experience as refugees is a great example.
Immigrant Stories teaches participants to make a digital story about a personal or family migration experience. Digital storytelling allows the participant to choose their story’s form and content rather than respond to a researcher's questions. Our digital stories include first-person accounts of migration, reflections on ethnic and racial identity, and descriptions of transnational families and labor. Participants come from more than 45 ethnic groups and include diverse types of migrants, such as refugees, international students, and transnational adoptees. These digital stories also raise interesting questions about how people craft personal narratives and how we document and share history in a digital age.
-The entire Immigrant Stories collection is publicly available to researchers worldwide. When a participant chooses to share their story with us, we post their digital story, transcript, and metadata online through the [Minnesota Digital Library](http://immigrants.mndigital.org/exhibits/show/immigrantstories-exhibit) and the [Digital Public Library of America](https://dp.la/). To date, the [Immigrant Stories collection](http://immigrants.mndigital.org/items/browse) contains more than 200 digital stories.
+The entire Immigrant Stories collection is publicly available to researchers worldwide. When a participant chooses to share their story with us, we post their digital story, transcript, and metadata online through the [Minnesota Digital Library](https://immigrants.mndigital.org/exhibits/show/immigrantstories-exhibit) and the [Digital Public Library of America](https://dp.la/). To date, the [Immigrant Stories collection](https://immigrants.mndigital.org/items/browse) contains more than 200 digital stories.
-Hosting our collection online presents possibilities for utilizing the collection in combination with other digital humanities tools. We share all Immigrant Stories under a [Creative Commons license](https://creativecommons.org/licenses/by-nc/4.0/) so they may be included in digital exhibits [created with Omeka](/lessons/). We’ve already created such an exhibit, [Immigrant Stories: 40 Years Of Southeast Asian Stories](http://immigrants.mndigital.org/exhibits/show/immigrantstories1975). You could add some of our digital stories to an exhibit highlighting your own research. Immigrant Stories transcripts can be utilized for data mining--which you can learn about in lessons right here at [the Programming Historian](/lessons/).
+Hosting our collection online presents possibilities for utilizing the collection in combination with other digital humanities tools. We share all Immigrant Stories under a [Creative Commons license](https://creativecommons.org/licenses/by-nc/4.0/) so they may be included in digital exhibits [created with Omeka](/lessons/). We’ve already created such an exhibit, [Immigrant Stories: 40 Years Of Southeast Asian Stories](https://immigrants.mndigital.org/exhibits/show/immigrantstories1975). You could add some of our digital stories to an exhibit highlighting your own research. Immigrant Stories transcripts can be utilized for data mining--which you can learn about in lessons right here at [the Programming Historian](/lessons/).
You can train others to create digital stories with our simple digital storytelling training and participate in the project, even if you’ve never made a video yourself. Download one of the Immigrant Stories toolkits, our comprehensive guides to teaching digital storytelling in a class or a two-day workshop. Each toolkit provides step-by-step instructions for writing a migration-related script, selecting images, recording a voiceover, and editing a video. We include just enough technical instructions to complete each step without overwhelming detail. Anyone who makes a video is welcome to contribute their digital story to the Immigrant Stories collection. We’ve included instructions and donation forms in the toolkits.
diff --git a/_posts/2016-08-22-announcing-new-team-spanish-language-editors.md b/_posts/2016-08-22-announcing-new-team-spanish-language-editors.md
index 58d348420e..4a100dc729 100644
--- a/_posts/2016-08-22-announcing-new-team-spanish-language-editors.md
+++ b/_posts/2016-08-22-announcing-new-team-spanish-language-editors.md
@@ -18,6 +18,6 @@ We are now very excited to announce that Maria José Afanador-Llach, Víctor Gay
[Víctor Gayol](https://twitter.com/victor_gayol) is a researcher and professor at El Colegio de Michoacán, A.C. (CPI-CONACYT), México, with a PhD in History. He always encourages his graduate students to use computer resources as widely as possible in their doctoral research. He is interested in working with authors to improve and disseminate the possibilities of computer assisted research among Spanish-speaking scholars in History, and to build a network to explore the possibilities and limitations of big data analysis in Spanish and Hispanic-American archival repositories.
-[Antonio Rojas Castro](https://twitter.com/RojasCastroA) holds a PhD in Humanities from the Universitat Pompeu Fabra in Barcelona, Spain. As part of his dissertation he built a digital critical edition of Luis de Góngora's Solitudes (currently in beta). In 2013 he created the [Grupo de Humanidades Digitales de Zotero](https://www.zotero.org/groups/humanidades_digitales), and he is currently the Communication Coordinator for the [European Association for Digital Humanities (EADH)](http://eadh.org/).
+[Antonio Rojas Castro](https://twitter.com/RojasCastroA) holds a PhD in Humanities from the Universitat Pompeu Fabra in Barcelona, Spain. As part of his dissertation he built a digital critical edition of Luis de Góngora's Solitudes (currently in beta). In 2013 he created the [Grupo de Humanidades Digitales de Zotero](https://www.zotero.org/groups/humanidades_digitales), and he is currently the Communication Coordinator for the [European Association for Digital Humanities (EADH)](https://eadh.org/).
Please join us in welcoming Maria, Víctor, and Antonio! You can say hello to them on Twitter by tweeting [@ProgHist](https://twitter.com/proghist), [@mariajoafana](https://twitter.com/mariajoafana), [@Victor_Gayol](https://twitter.com/victor_gayol), and [@RojasCastroA](https://twitter.com/RojasCastroA). And of course, please stay tuned to [The Programming Historian](/) for their contributions.
diff --git a/_posts/2016-08-25-presentando-al-nuevo-equipo-de-editores-de-contenidos-en-espanol.md b/_posts/2016-08-25-presentando-al-nuevo-equipo-de-editores-de-contenidos-en-espanol.md
index e5ab375813..167e761c6a 100644
--- a/_posts/2016-08-25-presentando-al-nuevo-equipo-de-editores-de-contenidos-en-espanol.md
+++ b/_posts/2016-08-25-presentando-al-nuevo-equipo-de-editores-de-contenidos-en-espanol.md
@@ -14,11 +14,11 @@ Recibimos muchas aplicaciones excelentes y fue difícil escoger un solo editor.
Nos emociona mucho anunciar que Maria José Afanador-Llach, Víctor Gayol y Antonio Rojas Castro han aceptado la invitación. Sin más preámbulos, les presentamos a los nuevos miembros del comité editorial de PH:
-[Maria José Afanador-Llach](https://twitter.com/mariajoafana) obtuvo recientemente un doctorado en Historia de la Universidad de Texas en Austin. Actualmente está colaborando con colegas en la [Fundación Histórica Neogranadina](http://neogranadina.org/), una organización sin ánimo de lucro que está digitalizando archivos coloniales en peligro y promoviendo proyectos de humanidades digitales. Tiene amplia experiencia traduciendo escritos académicos del inglés al español y está comprometida con cultivar iniciativas de investigación digital en América Latina.
+[Maria José Afanador-Llach](https://twitter.com/mariajoafana) obtuvo recientemente un doctorado en Historia de la Universidad de Texas en Austin. Actualmente está colaborando con colegas en la [Fundación Histórica Neogranadina](https://neogranadina.org/), una organización sin ánimo de lucro que está digitalizando archivos coloniales en peligro y promoviendo proyectos de humanidades digitales. Tiene amplia experiencia traduciendo escritos académicos del inglés al español y está comprometida con cultivar iniciativas de investigación digital en América Latina.
[Víctor Gayol](https://twitter.com/victor_gayol) es investigador y profesor de El Colegio de Michoacán, A.C (CPI-CONACYT), México, con un doctorado en Historia. Víctor siempre incentiva a sus estudiantes para que utilicen recursos informáticos tan ampliamente como sea posible en sus investigaciones doctorales. Le interesa trabajar con autores para mejorar y diseminar las posibilidades de investigación asistida por computadores entre los historiadores de habla hispana y construir una red para explorar las posibilidades y limitaciones del análisis con big data en repositorios archivísticos en Hispanoamérica.
-[Antonio Rojas Castro](https://twitter.com/RojasCastroA) tiene un doctorado en Humanidades de la Universitat Pompeu Fabra en Barcelona, España. Como parte de su disertación construyó una edición digital crítica de las Soledades de Luis de Góngora (actualmente en versión beta). En 2013 creó el [Grupo de Humanidades Digitales de Zotero](https://www.zotero.org/groups/humanidades_digitales), y actualmente es el Coordinador de Comunicaciones de la [European Association for Digital Humanities (EADH)](http://eadh.org/).
+[Antonio Rojas Castro](https://twitter.com/RojasCastroA) tiene un doctorado en Humanidades de la Universitat Pompeu Fabra en Barcelona, España. Como parte de su disertación construyó una edición digital crítica de las Soledades de Luis de Góngora (actualmente en versión beta). En 2013 creó el [Grupo de Humanidades Digitales de Zotero](https://www.zotero.org/groups/humanidades_digitales), y actualmente es el Coordinador de Comunicaciones de la [European Association for Digital Humanities (EADH)](https://eadh.org/).
Por favor acompáñenos para darles la bienvenida a Maria, Víctor y Antonio! Los pueden saludar en Twitter tuiteando [@ProgHist](https://twitter.com/proghist), [@mariajoafana](https://twitter.com/mariajoafana), [@Victor_Gayol](https://twitter.com/victor_gayol), y [@RojasCastroA](https://twitter.com/RojasCastroA). Y por supuesto, manténganse en sintonía con [The Programming Historian](/) para ver sus contribuciones.
diff --git a/_posts/2016-09-19-distant-reading-in-the-undergraduate-classroom.md b/_posts/2016-09-19-distant-reading-in-the-undergraduate-classroom.md
index 2a64e3a2f9..bc1830ce8d 100644
--- a/_posts/2016-09-19-distant-reading-in-the-undergraduate-classroom.md
+++ b/_posts/2016-09-19-distant-reading-in-the-undergraduate-classroom.md
@@ -16,9 +16,9 @@ What might this look like in the classroom? Here’s an example from one of my o
1892 to 1924 was a foundational era in the history of American immigration law and policy. 1892 was the first year when the regulation of immigration in the U.S. was brought under the supervision of a single federal office. In 1924, Congress passed the Johnson-Reed Act, a law that for the first time in American history limited immigration via numerical quotas based on national origin. Although the Johnson-Reed Act is known as one of the most exclusionary immigration laws of its time, it was hardly the first law in American history to restrict migration to the United States. The Page Act of 1875 and the Chinese Exclusion Act of 1882 paved the way for a tide of legislation that excluded many categories of immigrants from entering the country according to race, class, ability, sexuality, gender, and political affiliation.
-There are many avenues for researching the evolution of exclusion in American immigration law. But one of the most accessible ways to do so is through the annual reports of immigration that the U.S. federal government published at the turn of the twentieth century. These annual reports are digitized and accessible to researchers and students through databases like [HathiTrust](https://www.hathitrust.org/), [HeinOnline](http://home.heinonline.org/), and other databases available through many university library subscriptions.
+There are many avenues for researching the evolution of exclusion in American immigration law. But one of the most accessible ways to do so is through the annual reports of immigration that the U.S. federal government published at the turn of the twentieth century. These annual reports are digitized and accessible to researchers and students through databases like [HathiTrust](https://www.hathitrust.org/), [HeinOnline](https://home.heinonline.org/), and other databases available through many university library subscriptions.
-As a first foray into distant reading, instructors might encourage students to pick one annual report and run it through [Voyant Tools](http://voyant-tools.org/). For example, a group of students could plug in the U.S. Department of Labor’s Annual Report on Immigration for the year 1910 and do a group think on the document’s major word frequencies.
+As a first foray into distant reading, instructors might encourage students to pick one annual report and run it through [Voyant Tools](https://voyant-tools.org/). For example, a group of students could plug in the U.S. Department of Labor’s Annual Report on Immigration for the year 1910 and do a group think on the document’s major word frequencies.
@@ -29,7 +29,7 @@ As a first foray into distant reading, instructors might encourage students to p
-
Screenshots of a distant reading of the US Department of Labor’s Annual Report on Immigration, 1910, conducted with VoyantTools.org.
+
Screenshots of a distant reading of the US Department of Labor’s Annual Report on Immigration, 1910, conducted with VoyantTools.org.
@@ -41,9 +41,9 @@ Or how about “Chinese”? Students might dig deeper into the report and read m
On the other end of the spectrum, students might discuss why words like “border” and “deportation” — words that are extremely important in today’s debates about immigration — are not among the most frequent words in the report.
-The possibilities for coming up with questions about primary sources through distant reading become even more powerful when working with multiple texts. For example, an instructor who teaches themselves how to topic model with *Programming Historian* could pass that knowledge on to students by having them run every single annual report on immigration from 1892 to 1924 through the Topic Modeling Tool, a [user-friendly interface for topic modeling that students who have no coding knowledge can use in the classroom](http://www.themacroscope.org/?page_id=391). Using the Topic Modeling Tool with the annual reports from this era of immigration history would give students a chance to begin identifying the topics that were of concern to government officials, and begin to make observations about how those concerns changed over time.
+The possibilities for coming up with questions about primary sources through distant reading become even more powerful when working with multiple texts. For example, an instructor who teaches themselves how to topic model with *Programming Historian* could pass that knowledge on to students by having them run every single annual report on immigration from 1892 to 1924 through the Topic Modeling Tool, a [user-friendly interface for topic modeling that students who have no coding knowledge can use in the classroom](https://www.themacroscope.org/?page_id=391). Using the Topic Modeling Tool with the annual reports from this era of immigration history would give students a chance to begin identifying the topics that were of concern to government officials, and begin to make observations about how those concerns changed over time.
-As [Ted Underwood notes](http://tedunderwood.com/2015/06/04/seven-ways-humanists-are-using-computers-to-understand-text/), topic modeling may be especially useful for individuals who are approaching a set of texts without a particular research question in mind. Distant reading is a great way for students in particular to begin analyzing historical documents — and could also be a great way for students to start coming up with questions for research papers that will allow them to practice close readings of primary sources and further develop their digital research skills.
+As [Ted Underwood notes](https://tedunderwood.com/2015/06/04/seven-ways-humanists-are-using-computers-to-understand-text/), topic modeling may be especially useful for individuals who are approaching a set of texts without a particular research question in mind. Distant reading is a great way for students in particular to begin analyzing historical documents — and could also be a great way for students to start coming up with questions for research papers that will allow them to practice close readings of primary sources and further develop their digital research skills.
Have you taught with distant reading, or used a PH tutorial on distant reading in your classroom? Let us know! Tweet @ProgHist with the hashtag #teachDH and share your experiences with us.
diff --git a/_posts/2016-10-18-promoting-digital-archives.md b/_posts/2016-10-18-promoting-digital-archives.md
index 6af6470db9..2320e96e40 100644
--- a/_posts/2016-10-18-promoting-digital-archives.md
+++ b/_posts/2016-10-18-promoting-digital-archives.md
@@ -8,7 +8,7 @@ categories: posts
Libraries and digital archival repositories are getting in on a popular new trend. Since 2015, the adult coloring book market has exploded. Featuring everything from cats to science fiction TV shows and more, these exquisitely detailed coloring books aren’t just fun—they can also be an accessible way to raise interest in a variety of topics. Archivists and librarians, for example, are using them to transform their digitized archival materials into free, downloadable coloring pages and books that promote their unique collections.
-In February of this year the [New York Academy of Medicine](https://nyamcenterforhistory.org/2016/01/06/colorourcollections-february-1-5/) launched #ColorOurCollections, an online event to highlight and spark interest in unique materials ranging from early English book illustrations to textile design patterns, city maps, fashion and nature drawings, and all kinds of other fascinating things. Participating institutions included the [New York Public Library](https://www.nypl.org/blog/2016/02/01/color-our-collections), the [DPLA](https://dp.la/info/2016/02/01/color-our-collections/), the [Bodleian Library](https://www.bodleian.ox.ac.uk) (as of 03/30/2021 the coloring books in this institution are not available), and the [Smithsonian Libraries](http://library.si.edu/event/colorourcollections-coloring-event), among others. More libraries and institutions have continued to create their own coloring pages as the year has gone on, and the [#ColorOurCollections](https://twitter.com/search?q=%23colorourcollections&src=typd) hashtag continues to grow on Twitter.
+In February of this year the [New York Academy of Medicine](https://nyamcenterforhistory.org/2016/01/06/colorourcollections-february-1-5/) launched #ColorOurCollections, an online event to highlight and spark interest in unique materials ranging from early English book illustrations to textile design patterns, city maps, fashion and nature drawings, and all kinds of other fascinating things. Participating institutions included the [New York Public Library](https://www.nypl.org/blog/2016/02/01/color-our-collections), the [DPLA](https://dp.la/info/2016/02/01/color-our-collections/), the [Bodleian Library](https://www.bodleian.ox.ac.uk) (as of 03/30/2021 the coloring books in this institution are not available), and the [Smithsonian Libraries](https://library.si.edu/event/colorourcollections-coloring-event), among others. More libraries and institutions have continued to create their own coloring pages as the year has gone on, and the [#ColorOurCollections](https://twitter.com/search?q=%23colorourcollections&src=typd) hashtag continues to grow on Twitter.
One of the things I enjoy most in my current position as a Cataloging and Metadata Librarian is interacting with digital archival materials for the Houston Area Digital Archives website. My primary goal is always to find new and exciting ways to make history and digitized archival materials interesting to people. It often is not enough to simply upload items into content management systems and expect them to be discoverable or even for people to understand their significance. Coloring books are a great promotional tool because they encourage interaction with collections and promote the value of preservation. They also help make materials more accessible. Specifically, the Houston Area Digital Archives promotes our coloring books to students, educators, and other librarians online and at conferences like Digital Frontiers and the Texas Library Association as a fun way to encourage interaction with local history. I also enjoy creating coloring books because it is an opportunity to expand archival representation by featuring the records of groups such as women and the LGBT community.
@@ -17,18 +17,18 @@ One of the things I enjoy most in my current position as a Cataloging and Metada
-
An example of a coloring book from http://digital.houstonlibrary.org/cdm/ref/collection/curriculum-project/id/10 [Ed. note: this link is no longer live] Color the Big Top: Houston Area Digital Archives Coloring Book, Volume 2.
+
An example of a coloring book from https://digital.houstonlibrary.org/cdm/ref/collection/curriculum-project/id/10 [Ed. note: this link is no longer live] Color the Big Top: Houston Area Digital Archives Coloring Book, Volume 2.
So how can you be a part of #ColorOurCollections and make your own digital archival coloring book? Check out the following resources to get started:
-* [How to Make a Coloring Book](http://www.instructables.com/id/How-to-Make-a-Coloring-Book/?ALLSTEPS) via Instructables is a great starting point for working with [Pixlr Editor](https://pixlr.com/editor/), a free online image editor, to transform digitized archival materials into coloring pages.
+* [How to Make a Coloring Book](https://www.instructables.com/id/How-to-Make-a-Coloring-Book/?ALLSTEPS) via Instructables is a great starting point for working with [Pixlr Editor](https://pixlr.com/editor/), a free online image editor, to transform digitized archival materials into coloring pages.
* \#ColorOurCollections:Creating a coloring book with the Houston Area Digital Archives `http://digital.houstonlibrary.org/cdm/singleitem/collection/curriculum-project/id/17/rec/2` [Ed. note: this link is no longer live] provides complete instructions specifically for working with digital archival materials.
-* Other websites such as [Canva](https://www.canva.com/) and [COLOROURlovers](http://www.colourlovers.com/) can help create professional looking coloring book covers and other elements.
+* Other websites such as [Canva](https://www.canva.com/) and [COLOROURlovers](https://www.colourlovers.com/) can help create professional looking coloring book covers and other elements.
-* Find inspiration from some of the amazing examples created by other libraries listed on [Open Culture](http://www.openculture.com/2016/02/download-free-coloring-books-from-world-class-libraries-museums.html).
+* Find inspiration from some of the amazing examples created by other libraries listed on [Open Culture](https://www.openculture.com/2016/02/download-free-coloring-books-from-world-class-libraries-museums.html).
You can also click here `http://digital.houstonlibrary.org/cdm/search/searchterm/colorourcollections/order/nosort` [Ed. note: this link is no longer live] to view and print the Houston Area Digital Archives coloring books. I hope you’ll explore the [#ColorOurCollections](https://twitter.com/search?q=%23colorourcollections&src=typd) hashtag and have fun creating your own coloring book!
diff --git a/_posts/2017-01-21-call-to-action.md b/_posts/2017-01-21-call-to-action.md
index 242f76a5bc..2fee436522 100644
--- a/_posts/2017-01-21-call-to-action.md
+++ b/_posts/2017-01-21-call-to-action.md
@@ -22,7 +22,7 @@ We've got a great lesson on how to [conduct a topic model using MALLET](/lessons
2) **How do you conduct a stylometric analysis (well)?**
-Stylometry, the process of computationally attributing (probable) authorship to an anonymous text, has grown in popularity in recent years, even outing [J.K. Rowling as 'Robert Galbraith'](http://languagelog.ldc.upenn.edu/nll/?p=5315) in 2013. But how do you DO it? And what are the pitfalls you need to beware of? Given the vast amount of machine-readable text out there, we think it's time stylometry came into the mainstream of historical research.
+Stylometry, the process of computationally attributing (probable) authorship to an anonymous text, has grown in popularity in recent years, even outing [J.K. Rowling as 'Robert Galbraith'](https://languagelog.ldc.upenn.edu/nll/?p=5315) in 2013. But how do you DO it? And what are the pitfalls you need to beware of? Given the vast amount of machine-readable text out there, we think it's time stylometry came into the mainstream of historical research.
3) **How do you conduct spatial clustering of geographic data?**
diff --git a/_posts/2017-03-02-dh-award-2016.md b/_posts/2017-03-02-dh-award-2016.md
index 4b363f98e5..6de5355721 100644
--- a/_posts/2017-03-02-dh-award-2016.md
+++ b/_posts/2017-03-02-dh-award-2016.md
@@ -9,7 +9,7 @@ categories: posts
Programming Historian is DH 2016 Award Winner - Best Series of Posts.
-Congratulations to our 2016 authors for winning the [2016 Digital Humanities Award for best series of posts](http://dhawards.org/dhawards2016/results/).
+Congratulations to our 2016 authors for winning the [2016 Digital Humanities Award for best series of posts](https://dhawards.org/dhawards2016/results/).
A full recap of their contributions can be found on our [2016 Roundup](/posts/twenty-sixteen-review).
diff --git a/_posts/2017-03-02-launch-PH-Spanish.md b/_posts/2017-03-02-launch-PH-Spanish.md
index 4ef569e02f..ef8d8d5a02 100644
--- a/_posts/2017-03-02-launch-PH-Spanish.md
+++ b/_posts/2017-03-02-launch-PH-Spanish.md
@@ -10,7 +10,7 @@ categories: posts
Programming Historian launches its Spanish site.
We are very excited to introduce *The Programming Historian en español*! *The Programming Historian* offers novice-friendly, peer-reviewed tutorials that help humanists learn a wide range of digital tools, techniques, and workflows to facilitate their research.
-Starting today, the website of *The Programming Historian en español* will be available in the following link: [http://programminghistorian.org/es](/es) We launch the site with complete translations of the Python tutorial series. Python is a high level programming language which can be used to write programs to manipulate text files, download web pages, reorganize its contents into useful chunks of information for analysis, and count word frequencies.
+Starting today, the website of *The Programming Historian en español* will be available in the following link: [https://programminghistorian.org/es](/es) We launch the site with complete translations of the Python tutorial series. Python is a high level programming language which can be used to write programs to manipulate text files, download web pages, reorganize its contents into useful chunks of information for analysis, and count word frequencies.
In the following months we will continue to translate and publish the more than fifty tutorials that are already available in the English PH site. Among them, there are tutorials for learning [how to make Omeka exhibits](/lessons/creating-an-omeka-exhibit), [create network visualizations](/lessons/creating-network-diagrams-from-historical-sources) and [edit plain text using Markdown](/lessons/getting-started-with-markdown). We will also have translations of tutorials on visualization of historical data using Geographic Information Systems, data mining and data set analysis using R programming language, among many others.
diff --git a/_posts/2017-03-05-lanzamiento-PH-espanol.md b/_posts/2017-03-05-lanzamiento-PH-espanol.md
index 7f975ad413..2de860180d 100644
--- a/_posts/2017-03-05-lanzamiento-PH-espanol.md
+++ b/_posts/2017-03-05-lanzamiento-PH-espanol.md
@@ -10,7 +10,7 @@ redirect_from: /posts/lanzamiento-PH-español
Programming Historian lanza su sitio en español.
-¡Estamos muy emocionados de presentar *The Programming Historian en español*! *The Programming Historian* ofrece tutoriales que ayudan en el aprendizaje de una amplia gama de herramientas digitales, técnicas y flujos de trabajo para facilitar investigación en las humanidades. El sitio de The Programming Historian en español estará disponible a partir de hoy en el siguiente enlace: [http://programminghistorian.org/es](/es) El sitio en español se inaugura con las traducciones completas de la serie de tutoriales de Python. Python es un lenguaje de programación de alto nivel con el cual se pueden escribir programas que permiten manipular archivos de texto, descargar páginas web, reorganizar los contenidos en fragmentos de información útiles para el análisis y contar frecuencias de palabras, entre otros.
+¡Estamos muy emocionados de presentar *The Programming Historian en español*! *The Programming Historian* ofrece tutoriales que ayudan en el aprendizaje de una amplia gama de herramientas digitales, técnicas y flujos de trabajo para facilitar investigación en las humanidades. El sitio de The Programming Historian en español estará disponible a partir de hoy en el siguiente enlace: [https://programminghistorian.org/es](/es) El sitio en español se inaugura con las traducciones completas de la serie de tutoriales de Python. Python es un lenguaje de programación de alto nivel con el cual se pueden escribir programas que permiten manipular archivos de texto, descargar páginas web, reorganizar los contenidos en fragmentos de información útiles para el análisis y contar frecuencias de palabras, entre otros.
En los próximos meses continuaremos traduciendo y publicando los más de cincuenta tutoriales que ya se encuentran disponibles en el sitio de PH en inglés. Entre ellos se encuentran tutoriales para aprender a [hacer exhibiciones en Omeka](/lessons/creating-an-omeka-exhibit), [crear visualizaciones de redes](/lessons/creating-network-diagrams-from-historical-sources) y [editar texto plano usando Markdown](/lessons/getting-started-with-markdown). También contaremos con traducciones de tutoriales para aprender a visualizar datos históricos en sistemas de información geográfica, hacer minería de datos y utilizar el lenguaje de programación R para analizar series de datos, entre muchos más.
diff --git a/_posts/2017-03-31-history-of-protest.md b/_posts/2017-03-31-history-of-protest.md
index 1e70a40441..b60c078b4c 100644
--- a/_posts/2017-03-31-history-of-protest.md
+++ b/_posts/2017-03-31-history-of-protest.md
@@ -11,10 +11,10 @@ categories: posts
The Northern Star newspaper, 9 February 1839.
-In the 1830s, the British grass-roots protest movement that came to be known as the 'Chartists' gathered in pubs around Britain to rally for an expansion of voting rights. Katrina Navickas is a historian of political movements and has become increasingly interested in the study of spaces, which was the focus of her recent monograph, [*Protest and the politics of space and place, 1789-1848*](http://www.manchesteruniversitypress.co.uk/9781526116703/).
+In the 1830s, the British grass-roots protest movement that came to be known as the 'Chartists' gathered in pubs around Britain to rally for an expansion of voting rights. Katrina Navickas is a historian of political movements and has become increasingly interested in the study of spaces, which was the focus of her recent monograph, [*Protest and the politics of space and place, 1789-1848*](https://www.manchesteruniversitypress.co.uk/9781526116703/).
-We're pleased to announce that the *Programming Historian* has been able to contribute to her most recent project to map the distribution of Chartist meetings in nineteenth century London. In 2015, Navickas was one of the winners of the [British Library Labs award](http://labs.bl.uk/British+Library+Labs+Competition), which gave her access to British Library digital collections and expertise. Building on her interest of the history of protest, she extracted details of Chartist meetings from nineteenth century digitised newspapers, to produce the '[Political Meetings Mapper](http://politicalmeetingsmapper.co.uk)' project. Part of Navickas' workflow involved adapting Adam Crymble's lesson on '[Using Gazetteers to Extract Sets of Keywords from Free-Flowing Texts](/lessons/extracting-keywords)' to isolate text related to meetings within her wider newspaper collection.
+We're pleased to announce that the *Programming Historian* has been able to contribute to her most recent project to map the distribution of Chartist meetings in nineteenth century London. In 2015, Navickas was one of the winners of the [British Library Labs award](https://labs.bl.uk/British+Library+Labs+Competition), which gave her access to British Library digital collections and expertise. Building on her interest of the history of protest, she extracted details of Chartist meetings from nineteenth century digitised newspapers, to produce the '[Political Meetings Mapper](https://politicalmeetingsmapper.co.uk)' project. Part of Navickas' workflow involved adapting Adam Crymble's lesson on '[Using Gazetteers to Extract Sets of Keywords from Free-Flowing Texts](/lessons/extracting-keywords)' to isolate text related to meetings within her wider newspaper collection.
Navickas and Crymble have since co-authored a full description of the project and of the workflow used to build this project, which has been published open access in the *Journal of Victorian Culture*. We're very pleased to see this clear impact of the work of *Programming Historian* lessons in academic research, and we'd be thrilled to hear from other scholars with similar stories.
-Read '[From Chartist Newspaper to Digital Map of Grass-roots Meetings, 1841-44: Documenting Workflows](http://www.tandfonline.com/doi/full/10.1080/13555502.2017.1301179)' (open access).
+Read '[From Chartist Newspaper to Digital Map of Grass-roots Meetings, 1841-44: Documenting Workflows](https://www.tandfonline.com/doi/full/10.1080/13555502.2017.1301179)' (open access).
diff --git a/_posts/2017-06-18-sonic-word-clouds.md b/_posts/2017-06-18-sonic-word-clouds.md
index 4d629ee874..3a14169115 100644
--- a/_posts/2017-06-18-sonic-word-clouds.md
+++ b/_posts/2017-06-18-sonic-word-clouds.md
@@ -9,7 +9,7 @@ date: 2017-06-19
My name is Daniel Ruten, and I have just finished my undergraduate studies majoring in History at the University of Saskatchewan. During my last term, I took a course on Digital History (HIST396) with Dr. Jim Clifford. In it, I became familiarized with the various emerging digital tools and methodologies that are becoming increasingly important for historians to learn. The course also required that I create some kind of digital history project myself. For my project, I took inspiration from one lesson in particular featured on the Programming Historian website: [historian Shawn Graham’s lesson on data sonification](/lessons/sonification). Building off of what this lesson taught me, I developed my own method to represent and analyze textual data through sound, which I have termed Sonic Word Clouds. In this post I will briefly explain this method of sonification, while reflecting a bit on the learning process that both inspired the idea for this project and allowed me to make it a reality.
-At first, I was somewhat at a loss of what I should do for my digital history project. While scanning the various lessons on the Programming Historian website in order to get some ideas, one lesson in particular caught my eye. It was entitled “The Sound of Data (a gentle introduction to sonification for historians),” by Shawn Graham. I hadn’t really known that data sonification was a thing, much less a method that could be used by historians, and so my curiosity was piqued. In [the lesson](/lessons/sonification), Graham provides an introduction to the theory of data sonification, before detailing some of the sonification methods and resources that are available to historians. In particular, he discusses some methods to convert historical data into MIDI notation that can then be mapped to instrumentation. Some of these tools, such as [Musicalgorithms](http://www.musicalgorithms.org/3.2/) and the [MIDITime package for Python](https://pypi.python.org/pypi/miditime), were particularly designed with time-series/quantitative data in mind. But Graham also provides an example of the potential of MIDITime to analyze historical texts, as he uses it to sonify topic modelling data from John Adams’ diaries. By [mapping the resultant MIDI data to different instruments in Garageband](https://www.youtube.com/watch?v=ikqRXtI3JeA&feature=youtu.be), he offers us a means to hear the relative occurrence of different topics in the diaries over a 50-year period. Being able to listen to the relations between these different concepts over time this way provided a very unique and intriguing representation of a textual narrative. As Graham emphasizes, the choices one makes regarding how to represent data sonically in this fashion reveal the ways in which we privilege, condense and transform information as historians. The lesson gave me an idea: what if there was a way to sonify this kind of textual data in a more readily intelligible way? This set the stage for my own project.
+At first, I was somewhat at a loss of what I should do for my digital history project. While scanning the various lessons on the Programming Historian website in order to get some ideas, one lesson in particular caught my eye. It was entitled “The Sound of Data (a gentle introduction to sonification for historians),” by Shawn Graham. I hadn’t really known that data sonification was a thing, much less a method that could be used by historians, and so my curiosity was piqued. In [the lesson](/lessons/sonification), Graham provides an introduction to the theory of data sonification, before detailing some of the sonification methods and resources that are available to historians. In particular, he discusses some methods to convert historical data into MIDI notation that can then be mapped to instrumentation. Some of these tools, such as [Musicalgorithms](https://www.musicalgorithms.org/3.2/) and the [MIDITime package for Python](https://pypi.python.org/pypi/miditime), were particularly designed with time-series/quantitative data in mind. But Graham also provides an example of the potential of MIDITime to analyze historical texts, as he uses it to sonify topic modelling data from John Adams’ diaries. By [mapping the resultant MIDI data to different instruments in Garageband](https://www.youtube.com/watch?v=ikqRXtI3JeA&feature=youtu.be), he offers us a means to hear the relative occurrence of different topics in the diaries over a 50-year period. Being able to listen to the relations between these different concepts over time this way provided a very unique and intriguing representation of a textual narrative. As Graham emphasizes, the choices one makes regarding how to represent data sonically in this fashion reveal the ways in which we privilege, condense and transform information as historians. The lesson gave me an idea: what if there was a way to sonify this kind of textual data in a more readily intelligible way? This set the stage for my own project.
The idea for my project was essentially to develop a method to take a given historical text, determine the 25 most frequent words in it, and then use MIDITime to convert each word’s occurrences throughout the text into MIDI data. From there, all 25 resultant MIDI files would be brought into music sequencing software and mapped to instrumentation. Up to this point, the idea is very similar to what Graham demonstrated in the lesson. The key difference is that instead of using conventional instruments, I planned to assign the MIDI data to samplers. (A [sampler](https://goo.gl/1nfuuo) is a kind of digital instrument that plays back any audio file that is loaded into it.) From there, each sampler would be loaded with a Text-to-Speech audio file of its corresponding word. The MIDI notation would then tell each sampler when to trigger its spoken word, corresponding to the occurrences of the word in the text. When all of this is combined, then, we would be able to hear the linear frequency of multiple spoken words over time in a text in a sort of sonic word cloud, thus quickly getting a sense of both shifting patterns of common word usage as well as the relations between the usage of different words over time.
diff --git a/_posts/2017-07-28-new-lessons-page.md b/_posts/2017-07-28-new-lessons-page.md
index 2949697b9b..dc9c9a7bd5 100644
--- a/_posts/2017-07-28-new-lessons-page.md
+++ b/_posts/2017-07-28-new-lessons-page.md
@@ -15,7 +15,7 @@ A brief description of our new lessons page functionality: we have tagged each o
{% include figure.html caption="Buttons for filtering lessons by phases and topics" filename="images/blog/new-lessons-page/lesson-filter.gif" %}
-You can also sort lessons by difficulty and publication date. If you want a complete list of all lessons, just hit the reset button. By default, we list lessons in reverse chronological order so that when you visit from time to time, you'll always see what's new at the top of the page (also using any filter you want to apply). Of course we hope all this is totally obvious once it's in front of you. Our super-fast on-the-fly sorting is powered by [list.js](http://listjs.com/), which was a breeze to implement thanks to the skill and ingenuity of our editor Amanda Visconti. As you filter and sort, you'll notice that the URL updates, too, so that you can bookmark or share any particular set of lessons.
+You can also sort lessons by difficulty and publication date. If you want a complete list of all lessons, just hit the reset button. By default, we list lessons in reverse chronological order so that when you visit from time to time, you'll always see what's new at the top of the page (also using any filter you want to apply). Of course we hope all this is totally obvious once it's in front of you. Our super-fast on-the-fly sorting is powered by [list.js](https://listjs.com/), which was a breeze to implement thanks to the skill and ingenuity of our editor Amanda Visconti. As you filter and sort, you'll notice that the URL updates, too, so that you can bookmark or share any particular set of lessons.
{% include figure.html caption="Sort lessons by publication date or difficulty" filename="images/blog/new-lessons-page/lesson-sorting.gif" %}
diff --git a/_posts/2017-07-31-infrastructure-at-ph.md b/_posts/2017-07-31-infrastructure-at-ph.md
index cacd5cb205..fc00dae97d 100644
--- a/_posts/2017-07-31-infrastructure-at-ph.md
+++ b/_posts/2017-07-31-infrastructure-at-ph.md
@@ -17,7 +17,7 @@ This post will highlight three behind-the-scenes, technical changes to the way t
## Searching for Link Rot
-We have built _PH_ on the [Jekyll](http://jekyllrb.com/) site generation platform in part because it creates simple HTML files without needing a database server to run at all times in order to keep the site live.
+We have built _PH_ on the [Jekyll](https://jekyllrb.com/) site generation platform in part because it creates simple HTML files without needing a database server to run at all times in order to keep the site live.
However, no content management system is safe from the ravages of "link rot": when published links to other web pages go dead because their owners moved the content, deleted it, or otherwise shut down their website.
This is particularly troublesome for _PH_, since so many of our lessons link to external references, tutorials, and examples.
While we strive to make sure all the links in a lesson are operating when we first publish it, it's all but impossible to manually check old lessons on a regular basis to make sure the links are _still_ working.
@@ -33,7 +33,7 @@ Running this check on _PH_ [revealed several dozen links](https://github.com/pro
Once we identified these links, we tried to find the new location to which the linked content had been moved.
When that was not possible, we instead pointed to a version of the content archived in the [Wayback Machine].
-[Wayback Machine]: http://web.archive.org/
+[Wayback Machine]: https://web.archive.org/
[buildsh]: https://github.com/programminghistorian/jekyll/blob/gh-pages/_build/build.sh#L15-L40
@@ -59,7 +59,7 @@ As we've expanded the capabilities of the site, the metadata has had to expand t
If an editor forgets to include some of these YAML fields, it can result in a site build error, a missing lesson, or blank spots where we might expect to find the name of a lesson's editors or reviewers.
This makes the life of an editor more and more difficult, and we frequently found ourselves needing to go back in to published lessons to tweak metadata so everything appeared correctly on the site.
-Using Jekyll's [custom plugin](http://jekyllrb.com/docs/plugins/) capabilities, we are able to specify the metadata schema needed for lessons, and cause Jekyll to throw informative errors when it finds a lesson file that is missing a required field.
+Using Jekyll's [custom plugin](https://jekyllrb.com/docs/plugins/) capabilities, we are able to specify the metadata schema needed for lessons, and cause Jekyll to throw informative errors when it finds a lesson file that is missing a required field.
Unlike htmlproofer, this code does not come as a fully-fledged package - we had to compose it ourselves.
However [you can see our commented source code here](https://github.com/programminghistorian/jekyll/blob/gh-pages/_plugins/validate_yaml.rb) to understand how we specify and evaluate required metadata fields.
diff --git a/_posts/2017-09-21-corpus-linguistics-in-action.md b/_posts/2017-09-21-corpus-linguistics-in-action.md
index 8af4fd1254..3718d16322 100644
--- a/_posts/2017-09-21-corpus-linguistics-in-action.md
+++ b/_posts/2017-09-21-corpus-linguistics-in-action.md
@@ -12,15 +12,15 @@ categories: posts
Here at the Programming Historian, we have a number of lessons focused on "[distant reading](/lessons/?topic=distant-reading)." These lessons pull from a variety of fields to demonstrate different ways to computationally surface patterns across a large collection of digital objects. But how do you build on those patterns as part of a research project? That question of what to do next is what the authors of this post have set out to answer.
-In this blog post, authors Viola Wiegand, Michaela Mahlberg, and Peter Stockwell offer a sample of their research analyzing the language used in 19th century English novels. Using [CLiC](http://clic.bham.ac.uk/), a corpus analysis application that the authors are developing in a joint project between the University of Birmingham and the University of Nottingham, they explore the 'fireplace pose' in Dickens's novels. Their goal is to "find textual patterns that are shared across novels and point to socially and culturally relevant behaviours and conventions in the real world."
+In this blog post, authors Viola Wiegand, Michaela Mahlberg, and Peter Stockwell offer a sample of their research analyzing the language used in 19th century English novels. Using [CLiC](https://clic.bham.ac.uk/), a corpus analysis application that the authors are developing in a joint project between the University of Birmingham and the University of Nottingham, they explore the 'fireplace pose' in Dickens's novels. Their goal is to "find textual patterns that are shared across novels and point to socially and culturally relevant behaviours and conventions in the real world."
-You can find out more about the CLiC Dickens research project on the [project's website](http://www.birmingham.ac.uk/schools/edacs/departments/englishlanguage/research/projects/clic/index.aspx).
+You can find out more about the CLiC Dickens research project on the [project's website](https://www.birmingham.ac.uk/schools/edacs/departments/englishlanguage/research/projects/clic/index.aspx).
If you are interested in learning how to use collocations and keywords in your own research, we recommend starting with [Corpus Analysis with AntConc](/lessons/corpus-analysis-with-antconc) by Heather Froehlich. In this lesson, Froehlich introduces techniques from corpus linguistics, showing how to identify significant patterns of language use within and between sets of texts. And, as always, if you have an idea for a lesson or want to get involved with the *Programming Historian,* please visit our [contribute page](/contribute) for more information.
---
-[CLiC](http://clic.bham.ac.uk) (Corpus Linguistics in Context) is a web app specifically designed for the corpus linguistic study of literary texts. While CLiC shares much of its functionality with other corpus tools — similarly to what is described in the [Programming Historian’s lesson ‘Corpus Analysis with AntConc’](/lessons/corpus-analysis-with-antconc) — it also contains additional features that are particularly relevant to literary analysis. These include the ability to search subsets of the text – such as character speech – and a sorting function that goes beyond alphabetic sorting: the ‘KWICGrouper’, which this post focuses on. The CLiC web app has been developed as part of the [CLiC Dickens project](http://www.birmingham.ac.uk/schools/edacs/departments/englishlanguage/research/projects/clic/index.aspx) for the analysis of patterns in 19th century fiction, particularly novels by Charles Dickens. CLiC currently contains 15 Dickens novels and 29 novels by other 19th century authors and a corpus of 19th century children's literature will soon be added.
+[CLiC](https://clic.bham.ac.uk) (Corpus Linguistics in Context) is a web app specifically designed for the corpus linguistic study of literary texts. While CLiC shares much of its functionality with other corpus tools — similarly to what is described in the [Programming Historian’s lesson ‘Corpus Analysis with AntConc’](/lessons/corpus-analysis-with-antconc) — it also contains additional features that are particularly relevant to literary analysis. These include the ability to search subsets of the text – such as character speech – and a sorting function that goes beyond alphabetic sorting: the ‘KWICGrouper’, which this post focuses on. The CLiC web app has been developed as part of the [CLiC Dickens project](https://www.birmingham.ac.uk/schools/edacs/departments/englishlanguage/research/projects/clic/index.aspx) for the analysis of patterns in 19th century fiction, particularly novels by Charles Dickens. CLiC currently contains 15 Dickens novels and 29 novels by other 19th century authors and a corpus of 19th century children's literature will soon be added.
Apart from aiding literary study, the corpus stylistic analysis of historical fiction can reveal insights into the social context of the texts more widely. In this post, we’ll discuss the so-called ‘fireplace pose’ in 19th century fiction that has been identified in literature and other cultural material from the time (for example paintings; see [Korte 1997: 212](https://books.google.co.uk/books?id=o9o4gLzrRPEC&lpg=PP1&pg=PA212#v=onepage&q&f=false)). In CLiC it is possible, for example, to 1) trace textual patterns which describe how fictional characters sit or stand in front of the fire or look at it and 2) compare the patterns found in Dickens with those of other authors.
@@ -45,7 +45,7 @@ Looking at the characters represented by this pattern, it is striking that they
-
@@ -81,4 +81,4 @@ In this post, we have introduced corpus linguistic techniques for interrogating
· [Mahlberg, M. (2013). *Corpus Stylistics and Dickens’s Fiction*. New York & London: Routledge.](https://books.google.co.uk/books?id=v98rcxoYUbYC&lpg=PP1&pg=PP1#v=onepage&q&f=false)
-· [Mahlberg, M., Stockwell, P., de Joode, J., Smith, C., O’Donnell, M. Brook, (2016) CLiC Dickens – Novel uses of concordances for the integration of corpus stylistics and cognitive poetics, Corpora, 11 (3), 433-463.](http://www.euppublishing.com/doi/full/10.3366/cor.2016.0102)
\ No newline at end of file
+· [Mahlberg, M., Stockwell, P., de Joode, J., Smith, C., O’Donnell, M. Brook, (2016) CLiC Dickens – Novel uses of concordances for the integration of corpus stylistics and cognitive poetics, Corpora, 11 (3), 433-463.](https://www.euppublishing.com/doi/full/10.3366/cor.2016.0102)
\ No newline at end of file
diff --git a/_posts/2018-03-04-DH-Award-2017.md b/_posts/2018-03-04-DH-Award-2017.md
index eacc0fe1b6..6fbf3aa5fc 100644
--- a/_posts/2018-03-04-DH-Award-2017.md
+++ b/_posts/2018-03-04-DH-Award-2017.md
@@ -9,7 +9,7 @@ categories: posts
Programming Historian en español is DH 2017 Award Winner - Best Series of Posts.
-For the [second year in a row](/posts/dh-award-2016), our team is proud to report that the project has won a [Digital Humanities award](http://dhawards.org/dhawards2017/results/).
+For the [second year in a row](/posts/dh-award-2016), our team is proud to report that the project has won a [Digital Humanities award](https://dhawards.org/dhawards2017/results/).
This time, the award recognised the hard work of our Spanish Team in creating a translation of the project, and building a Spanish-language community of scholars interested in digital methods.
diff --git a/_posts/2018-05-22-Uses-Of-The-Programming-Historian.md b/_posts/2018-05-22-Uses-Of-The-Programming-Historian.md
index 0036d318c6..79e1411aa9 100644
--- a/_posts/2018-05-22-Uses-Of-The-Programming-Historian.md
+++ b/_posts/2018-05-22-Uses-Of-The-Programming-Historian.md
@@ -19,57 +19,57 @@ If you are using the _Programming Historian_ in interesting ways, we'd love to h
* S Fox Lee, "Digital methods for the history of psychology", _History of Psychology_ (2016).
* Nicholas Terpstra, Colin Rose, 'Mapping Space, Sense, and Movement in Florence: Historical GIS and the Early Modern City' (Routledge, 2016).
* Gary Osmond and Murray G. Phillips, 'Sport History in the Digital Era' (University of Illinois Press, 2015).
-* Tim Sherratt, '[Unremembering the Forgotten](http://discontents.com.au/unremembering-the-forgotten)', Keynote at DH2015, University of Western Australia (July 3, 2015).
+* Tim Sherratt, '[Unremembering the Forgotten](https://discontents.com.au/unremembering-the-forgotten)', Keynote at DH2015, University of Western Australia (July 3, 2015).
* Shawn Graham, Ian Milligan, and Scott Weingart, 'Exploring Big Historical Data: The Historian's Macroscope' (Imperial College Press, 2015).
-* Cheryl LaGuardia, '[Connecting Researchers to New Digital Tools. Not Dead Yet](http://lj.libraryjournal.com/2014/09/opinion/not-dead-yet/connecting-researchers-to-new-digital-tools-not-dead-yet/#_ )', _Library Journal_ (18 September 2014).
-* William J. Turkel, Shenzan Muhammedi, Mary Beth Start, '[Grounding Digital History in the History of Computing](http://muse.jhu.edu/login?auth=0&type=summary&url=/journals/ieee_annals_of_the_history_of_computing/v036/36.2.turkel.html)', _IEEE Annals of the History of Computing_, Vol. 36, No. 2 (2014), pp. 72-75.
-* Elijah Meeks and Scott Weingart, '[The Digital Humanities Contribution to Topic Modeling](http://journalofdigitalhumanities.org/2-1/dh-contribution-to-topic-modeling/)', _Journal of Digital Humanities_, Vol. 2, No. 1 (2012).
-* Ted Underwood, '[What can topic models of PMLA teach us about the history of literary scholarship?](http://tedunderwood.com/2012/12/14/what-can-topic-models-of-pmla-teach-us-about-the-history-of-literary-scholarship/)' _The Stone and the Shell_ (2012).
-* Wingyan Chung, Edward A. Fox, Steven D. Sheetz, Seungwon Yang, '[LIKES: Educating the Next Generation of Knowledge Society Builders](http://aisel.aisnet.org/cgi/viewcontent.cgi?article=1072&context=amcis2009)', _Association for Information Systems: AMCIS Proceedings_ (2009).
+* Cheryl LaGuardia, '[Connecting Researchers to New Digital Tools. Not Dead Yet](https://lj.libraryjournal.com/2014/09/opinion/not-dead-yet/connecting-researchers-to-new-digital-tools-not-dead-yet/#_ )', _Library Journal_ (18 September 2014).
+* William J. Turkel, Shenzan Muhammedi, Mary Beth Start, '[Grounding Digital History in the History of Computing](https://muse.jhu.edu/login?auth=0&type=summary&url=/journals/ieee_annals_of_the_history_of_computing/v036/36.2.turkel.html)', _IEEE Annals of the History of Computing_, Vol. 36, No. 2 (2014), pp. 72-75.
+* Elijah Meeks and Scott Weingart, '[The Digital Humanities Contribution to Topic Modeling](https://journalofdigitalhumanities.org/2-1/dh-contribution-to-topic-modeling/)', _Journal of Digital Humanities_, Vol. 2, No. 1 (2012).
+* Ted Underwood, '[What can topic models of PMLA teach us about the history of literary scholarship?](https://tedunderwood.com/2012/12/14/what-can-topic-models-of-pmla-teach-us-about-the-history-of-literary-scholarship/)' _The Stone and the Shell_ (2012).
+* Wingyan Chung, Edward A. Fox, Steven D. Sheetz, Seungwon Yang, '[LIKES: Educating the Next Generation of Knowledge Society Builders](https://aisel.aisnet.org/cgi/viewcontent.cgi?article=1072&context=amcis2009)', _Association for Information Systems: AMCIS Proceedings_ (2009).
## University Syllabi (2011-2016 only)
### 2016
-* John Garrigus, 'Transatlantic Revolutions and Transformations', University of Texas at Arlington (http://johngarrigus.com/syllabi/5360_f2016/)
+* John Garrigus, 'Transatlantic Revolutions and Transformations', University of Texas at Arlington (https://johngarrigus.com/syllabi/5360_f2016/)
* Simon Dixon, University of Leicester
-* Aurélien Berra, 'Classiques et numériquesLes humanités numériques dans un master d’antiquisants', Université Paris Ouest (http://classnum.hypotheses.org/)
-* Shawn Graham, '[Digital History Methods as Public History Performance](http://grad.craftingdigitalhistory.ca/weekly.html)', Carleton University, Canada (Spring 2016).
+* Aurélien Berra, 'Classiques et numériquesLes humanités numériques dans un master d’antiquisants', Université Paris Ouest (https://classnum.hypotheses.org/)
+* Shawn Graham, '[Digital History Methods as Public History Performance](https://grad.craftingdigitalhistory.ca/weekly.html)', Carleton University, Canada (Spring 2016).
* Adam Crymble, 'Intro to Digital History', University of Hertfordshire, UK (Spring 2016).
* Adam Crymble, 'Digital History Workshop', University of Hertfordshire, UK (Spring 2016).
### 2015
-* Shawn Graham, 'Digital Humanities (formerly available from: http://dhcu.ca/2015/what-is-a-tool-tutorial)', Carleton University, Canada (Autumn 2015).
-* Manan Ahmed, 'Borderlands: Towards a Spatial History of Empire (formerly available from: http://mananahmed.github.io/borderlands.html)', Columbia University, USA (Spring 2015).
+* Shawn Graham, 'Digital Humanities (formerly available from: https://dhcu.ca/2015/what-is-a-tool-tutorial)', Carleton University, Canada (Autumn 2015).
+* Manan Ahmed, 'Borderlands: Towards a Spatial History of Empire (formerly available from: https://mananahmed.github.io/borderlands.html)', Columbia University, USA (Spring 2015).
* Andrew Ross, '[Exploring Digital Humanities (HIST 4170)](https://www.uoguelph.ca/history/sites/uoguelph.ca.history/files/syllabus/4170%20W15.pdf)', University of Guelph, Canada (Winter 2015).
-* Adam Crymble, '[Intro to Digital History](http://adamcrymble.org/intro-to-digital-history-2015/)', University of Hertfordshire, UK (Spring 2015).
-* John Russell, '[Digital Scholarship Methods](http://web.archive.org/web/20150905233647/https://library.uoregon.edu/node/4570)', University of Oregon, USA (Winter 2015).
+* Adam Crymble, '[Intro to Digital History](https://adamcrymble.org/intro-to-digital-history-2015/)', University of Hertfordshire, UK (Spring 2015).
+* John Russell, '[Digital Scholarship Methods](https://web.archive.org/web/20150905233647/https://library.uoregon.edu/node/4570)', University of Oregon, USA (Winter 2015).
### 2014
-* Christopher Church, 'Introduction to Digital Humanities' (University of Nevada, Reno) (http://www.christophermchurch.com/draft-for-new-course-digital-toolbox-for-historians-unr/).
-* Lincoln Mullen, '[Clio 3: Programming for Historians (HIST 698)](http://lincolnmullen.com/files/clio3.syllabus.hist698.2014f.pdf)', George Mason University, USA (Autumn 2014).
-* Wilko Graf von Hardenberg, '[Digital History (History 795)](http://www.wilkohardenberg.net/content/Hardenberg_DigitalHistory_Hist795.pdf)', University of Wisconsin-Madison, USA (Spring 2014).
-* Christopher Church, '[Introduction to the Digital Humanities](http://www.christophermchurch.com/draft-for-new-course-digital-toolbox-for-historians-unr/)', University of Nevada - Reno, USA (2014).
-* Jason A. Heppler, 'Digital History: Concepts, Methods, Problems (History 205F)' (formerly available from: http://stanford.edu/~jheppler/stanford.syllabus.hist205f.2014f.pdf), Stanford University, USA (Autumn 2014).
-* Elisha E. Besherho-Bondar, '[Digital Humanities / Digital Studies](https://web.archive.org/web/20170309170558/http://www.pitt.edu/~ebb8/DHDS/)', University of Pittsburg, USA (Autumn 2014).
-* Andrew M Shocket, '[Intro to DH (ACS 6820)](http://intro-dh-2014.andyschocket.net/syllabus/)', Bowling Green State University, USA (Spring 2014).
-* Jeff McClurken, '[Adventures in Digital History (HIST 428)](http://dh2014.umwblogs.org/syllabus/)', University of Mary Washington, USA (Spring 2014).
-* Jennifer Guiliano, '[Making/Building Digital History](http://devdh.org/files/downloads/Guiliano_Digital_History_Syllabus_Fall2014_IUPUI.pdf)', Indiana University-Purdue University Indianapolis, USA (Autumn 2014).
-* Andrew J. Torget, '[Introduction to Digital Scholarship (HIST 5100)](https://web.archive.org/web/20200919093522/http://torget.us/HIST5100/syllabus/)', University of North Texas, USA (Spring 2014).
-* Anne Mitchell Whisnant, 'Introduction to Public History (History 671) (formerly available from: http://publichistory.web.unc.edu/syllabus/)', UNC-Chapel Hill, USA (Autumn 2014).
+* Christopher Church, 'Introduction to Digital Humanities' (University of Nevada, Reno) (https://www.christophermchurch.com/draft-for-new-course-digital-toolbox-for-historians-unr/).
+* Lincoln Mullen, '[Clio 3: Programming for Historians (HIST 698)](https://lincolnmullen.com/files/clio3.syllabus.hist698.2014f.pdf)', George Mason University, USA (Autumn 2014).
+* Wilko Graf von Hardenberg, '[Digital History (History 795)](https://www.wilkohardenberg.net/content/Hardenberg_DigitalHistory_Hist795.pdf)', University of Wisconsin-Madison, USA (Spring 2014).
+* Christopher Church, '[Introduction to the Digital Humanities](https://www.christophermchurch.com/draft-for-new-course-digital-toolbox-for-historians-unr/)', University of Nevada - Reno, USA (2014).
+* Jason A. Heppler, 'Digital History: Concepts, Methods, Problems (History 205F)' (formerly available from: https://stanford.edu/~jheppler/stanford.syllabus.hist205f.2014f.pdf), Stanford University, USA (Autumn 2014).
+* Elisha E. Besherho-Bondar, '[Digital Humanities / Digital Studies](https://web.archive.org/web/20170309170558/https://www.pitt.edu/~ebb8/DHDS/)', University of Pittsburg, USA (Autumn 2014).
+* Andrew M Shocket, '[Intro to DH (ACS 6820)](https://intro-dh-2014.andyschocket.net/syllabus/)', Bowling Green State University, USA (Spring 2014).
+* Jeff McClurken, '[Adventures in Digital History (HIST 428)](https://dh2014.umwblogs.org/syllabus/)', University of Mary Washington, USA (Spring 2014).
+* Jennifer Guiliano, '[Making/Building Digital History](https://devdh.org/files/downloads/Guiliano_Digital_History_Syllabus_Fall2014_IUPUI.pdf)', Indiana University-Purdue University Indianapolis, USA (Autumn 2014).
+* Andrew J. Torget, '[Introduction to Digital Scholarship (HIST 5100)](https://web.archive.org/web/20200919093522/https://torget.us/HIST5100/syllabus/)', University of North Texas, USA (Spring 2014).
+* Anne Mitchell Whisnant, 'Introduction to Public History (History 671) (formerly available from: https://publichistory.web.unc.edu/syllabus/)', UNC-Chapel Hill, USA (Autumn 2014).
* Ian Milligan, '[Digital History (HIST 303)](https://ianmilli.files.wordpress.com/2014/01/w2014-hist-303.pdf)', University of Waterloo, Canada (Winter 2014).
### 2013
-* Jim English, '[Empirical Method in Literary Studies](http://web.archive.org/web/20180127231436/http://www.english.upenn.edu/~jenglish/Courses/Fall2014/505Syllabus.pdf)', University of Pennsylvania, USA (Autumn 2013).
-* Melissa Bailar and Lisa Spiro, '[Introduction to Digital Humanities](http://digitalhumanities.rice.edu/fall-2013-syllabus/)', Rice University, USA (Autumn 2013).
-* Devon Elliott, 'Digital History and American Popular Culture (HIST2897F)'(formerly available from: http://www.huronuc.on.ca/Assets/website/Document/FASS/HIS/HIS2897FDElliott2013.pdf), Huron College, Canada (Autumn 2013).
-* Chad Black, '[Theory and Practice of Digital History](http://dh.chadblack.net/info/syllabus/)', University of Tennessee, USA (Autumn 2013).
-* Aaron Shapiro, '[Seminar in Digital History and New Media (History 7970)](https://web.archive.org/web/20160121064807/http://wp.auburn.edu/dighist/?page_id=127)', Auburn University, USA (2013).
+* Jim English, '[Empirical Method in Literary Studies](https://web.archive.org/web/20180127231436/https://www.english.upenn.edu/~jenglish/Courses/Fall2014/505Syllabus.pdf)', University of Pennsylvania, USA (Autumn 2013).
+* Melissa Bailar and Lisa Spiro, '[Introduction to Digital Humanities](https://digitalhumanities.rice.edu/fall-2013-syllabus/)', Rice University, USA (Autumn 2013).
+* Devon Elliott, 'Digital History and American Popular Culture (HIST2897F)'(formerly available from: https://www.huronuc.on.ca/Assets/website/Document/FASS/HIS/HIS2897FDElliott2013.pdf), Huron College, Canada (Autumn 2013).
+* Chad Black, '[Theory and Practice of Digital History](https://dh.chadblack.net/info/syllabus/)', University of Tennessee, USA (Autumn 2013).
+* Aaron Shapiro, '[Seminar in Digital History and New Media (History 7970)](https://web.archive.org/web/20160121064807/https://wp.auburn.edu/dighist/?page_id=127)', Auburn University, USA (2013).
### 2012
-* Matthew Wilkens, '[Digital Humanities (English 90127)](http://www.scottbot.net/HIAL/wp-content/uploads/2012/09/Wilkens_DH_Syllabus_Init.pdf)', Notre Dame, USA (Autumn 2012).
+* Matthew Wilkens, '[Digital Humanities (English 90127)](https://www.scottbot.net/HIAL/wp-content/uploads/2012/09/Wilkens_DH_Syllabus_Init.pdf)', Notre Dame, USA (Autumn 2012).
### 2011
@@ -87,4 +87,4 @@ ___Using [the intro Jekyll lesson](/lessons/building-static-sites-with-jekyll-gi
* [Stewart Varner](https://twitter.com/StewartVarner/status/722520696606298112)
* [Eric Loy](https://twitter.com/eric_loy/status/758039397539409921)
* [Jamie Howe](https://twitter.com/Gaymerbrarian/status/721490542366994432)
-* [Will Hanley](https://twitter.com/HanleyWill/status/725880236315934720) for [prosop.org](http://prosop.org)
+* [Will Hanley](https://twitter.com/HanleyWill/status/725880236315934720) for [prosop.org](https://prosop.org)
diff --git a/_posts/2018-05-24-anna-maria-sichani.md b/_posts/2018-05-24-anna-maria-sichani.md
index 2763a1f0c5..6d09db71c5 100644
--- a/_posts/2018-05-24-anna-maria-sichani.md
+++ b/_posts/2018-05-24-anna-maria-sichani.md
@@ -11,7 +11,7 @@ categories: posts
We are pleased to announce that Anna-Maria Sichani has joined the *Programming Historian* project team. She is a literary and cultural historian, with a specialisation in Modern Greek studies, and a Digital Humanist. Anna-Maria is currently a Research Fellow in Media History and Historical Data Modelling, working on the AHRC-funded project "BBC Connected Histories", affiliated with the Department of Media, Film and Music at University of Sussex and Sussex Humanities Lab.
-She has been a Marie Skłodowska-Curie Research Fellow (DiXiT ITN) at Huygens-ING and a PhD Research Fellow at King's Digital Lab and she has collaborated with a number of Digital Humanities projects (COST Distant Reading for European Literary History, Transcribe Bentham, DARIAH etc). Her skills include modelling, encoding and digital publication of textual and cross-domain materials, sustainable project design and management, data architecture and analysis. She is currently also serving as Communications Fellow for the [Alliance of Digital Humanities Organizations (ADHO)](http://adho.org/).
+She has been a Marie Skłodowska-Curie Research Fellow (DiXiT ITN) at Huygens-ING and a PhD Research Fellow at King's Digital Lab and she has collaborated with a number of Digital Humanities projects (COST Distant Reading for European Literary History, Transcribe Bentham, DARIAH etc). Her skills include modelling, encoding and digital publication of textual and cross-domain materials, sustainable project design and management, data architecture and analysis. She is currently also serving as Communications Fellow for the [Alliance of Digital Humanities Organizations (ADHO)](https://adho.org/).
She will work as an editor and contribute to our internationalization and outreach strategy.
diff --git a/_posts/2018-07-13-FR-team.md b/_posts/2018-07-13-FR-team.md
index 710a0bb4a0..923db3e685 100644
--- a/_posts/2018-07-13-FR-team.md
+++ b/_posts/2018-07-13-FR-team.md
@@ -12,12 +12,12 @@ Marie Puren and Sofia Papastamkou have joined the Programming Historian
diff --git a/_posts/2018-11-09-welcome-zoe-leblanc.md b/_posts/2018-11-09-welcome-zoe-leblanc.md
index 547cf9b47f..6aeaf81f1d 100644
--- a/_posts/2018-11-09-welcome-zoe-leblanc.md
+++ b/_posts/2018-11-09-welcome-zoe-leblanc.md
@@ -11,7 +11,7 @@ categories: posts
We are pleased to share that Zoe LeBlanc has joined the editorial board of _The Programming Historian_.
-Zoe is a digital humanities developer at the [Scholars’ Lab](http://scholarslab.org) at the University of Virginia. In this position she regularly works on building large data pipelines for humanities text data, web apps for mapping and data visualization, and statistical modeling for text and image analysis projects in addition to teaching and mentoring students and faculty.
+Zoe is a digital humanities developer at the [Scholars’ Lab](https://scholarslab.org) at the University of Virginia. In this position she regularly works on building large data pipelines for humanities text data, web apps for mapping and data visualization, and statistical modeling for text and image analysis projects in addition to teaching and mentoring students and faculty.
She is also entering her final year as a doctoral candidate in history at Vanderbilt University. Her dissertation, “Circulating Anti-Colonial Cairo”, is about Cairo’s role as a hub for international anti-colonial movements and anti-colonial media production. She explores how the establishment of the Middle East News Agency in Cairo in 1955 was a vehicle for the UAR to present a counter narrative to the perceived biased coverage from Western press agencies. Ultimately, she argues that anti-colonialism was both locally constructed and deeply enmeshed in international debates over the future of decolonization. Zoe works primarily in print newspapers and periodicals from Cairo and other Third World capitals, as well as diplomatic cables from Western embassies in Cairo and Western newspapers. Under the hood of the project, Zoe relies on a web app she built to manage her data, and extract text and images from her archival research. She also utilizes statistical models, machine learning, natural language processing and computer vision algorithms to understand how discourses and symbolism in these sources changed over time.
diff --git a/_posts/2019-04-08-bienvenue-ph-fr.md b/_posts/2019-04-08-bienvenue-ph-fr.md
index e3bf262d43..26907cddd1 100644
--- a/_posts/2019-04-08-bienvenue-ph-fr.md
+++ b/_posts/2019-04-08-bienvenue-ph-fr.md
@@ -8,14 +8,14 @@ categories: posts
Programming Historian en español recibe el premio a Mejor iniciativa formativa desarrollada durante el año 2018 de la HDH.
-¡Estamos de enhorabuena! El trabajo del equipo de *Programming Historian en español* ha sido reconodio como **"Mejor iniciativa formativa desarrollada durante el año 2018"** en la [I Edición de los Premios HDH 2018](http://humanidadesdigitaleshispanicas.es/resolucion-convocatoria-i-edicion-premios-hdh/), otorgados por la Asociación de Humanidades Digitales Hispánicas.
+¡Estamos de enhorabuena! El trabajo del equipo de *Programming Historian en español* ha sido reconodio como **"Mejor iniciativa formativa desarrollada durante el año 2018"** en la [I Edición de los Premios HDH 2018](https://humanidadesdigitaleshispanicas.es/resolucion-convocatoria-i-edicion-premios-hdh/), otorgados por la Asociación de Humanidades Digitales Hispánicas.
-Con estos premios la [Asociación HDH](http://humanidadesdigitaleshispanicas.es) ha querido reconocer social y académicamente las diferentes iniciativas desarrolladas en el ámbito de las humanidades digitales desde las bases de la contribución al avance del conocimiento, la reflexión crítica, el desarrollo de currículos formativos y la difusión y visibilidad de las HD, entre otras cosas.
+Con estos premios la [Asociación HDH](https://humanidadesdigitaleshispanicas.es) ha querido reconocer social y académicamente las diferentes iniciativas desarrolladas en el ámbito de las humanidades digitales desde las bases de la contribución al avance del conocimiento, la reflexión crítica, el desarrollo de currículos formativos y la difusión y visibilidad de las HD, entre otras cosas.
El premio será entregado el 23 de octubre en el marco del [IV Congreso de la HDH (HDH2019)](https://eventos.uclm.es/24964/detail/iv-congreso-internacional-de-la-asociacion-de-humanidades-digitales-hispanicas.html) en la ciudad de Toledo, España. Nuestro compañero Antonio Rojas Castro, que estará presentando el trabajo "*The Programming Historian en español*: de la traducción a la creación de recursos educativos abiertos" escrito junto con Jennifer Isasi, será el encargado de recibir el galardón.
diff --git a/_posts/2019-09-26-welcome-martin-grandjean.md b/_posts/2019-09-26-welcome-martin-grandjean.md
index 56e29e2490..3a01adec19 100644
--- a/_posts/2019-09-26-welcome-martin-grandjean.md
+++ b/_posts/2019-09-26-welcome-martin-grandjean.md
@@ -9,7 +9,7 @@ categories: posts
We are excited to announce that Martin Grandjean joined the editorial board of the *Programming Historian*!
-Martin is currently a junior lecturer in contemporary history at the University of Lausanne. He also teaches history and digital humanities at the [Ecole polytechnique fédérale de Lausanne](https://people.epfl.ch/303254). He is a member of the board of Humanistica, the French-speaking association for Digital Humanities, and the Steering Committee of the Alliance of Digital Humanities Organizations (ADHO). His main research domain is network analysis in history with a focus on intellectual history and history of international organizations. His recent publications range from the [analysis of the digital humanities community on Twitter](https://hal.archives-ouvertes.fr/hal-01517493/document) to the study of specific [historical networks](http://www.martingrandjean.ch/complex-structures-and-international-organizations/) and theoretical contributions on [the use of network analysis in history](https://halshs.archives-ouvertes.fr/halshs-02179024/document). You can find out more on Martin's work on his personal [blog](http://www.martingrandjean.ch).
+Martin is currently a junior lecturer in contemporary history at the University of Lausanne. He also teaches history and digital humanities at the [Ecole polytechnique fédérale de Lausanne](https://people.epfl.ch/303254). He is a member of the board of Humanistica, the French-speaking association for Digital Humanities, and the Steering Committee of the Alliance of Digital Humanities Organizations (ADHO). His main research domain is network analysis in history with a focus on intellectual history and history of international organizations. His recent publications range from the [analysis of the digital humanities community on Twitter](https://hal.archives-ouvertes.fr/hal-01517493/document) to the study of specific [historical networks](https://www.martingrandjean.ch/complex-structures-and-international-organizations/) and theoretical contributions on [the use of network analysis in history](https://halshs.archives-ouvertes.fr/halshs-02179024/document). You can find out more on Martin's work on his personal [blog](https://www.martingrandjean.ch).
Martin will reinforce the *Programming Historian en français* where he will contribute as an editor and translator. We are all eager to work with him on further explanding the French-speaking project and wish him a very warm welcome. Sois le bienvenu, Martin!
diff --git a/_posts/2019-09-30-bolentin-informativo.md b/_posts/2019-09-30-bolentin-informativo.md
index f8f19372e1..774a4e18f0 100644
--- a/_posts/2019-09-30-bolentin-informativo.md
+++ b/_posts/2019-09-30-bolentin-informativo.md
@@ -56,7 +56,7 @@ Al mismo tiempo, participaron en un taller pre-conferencia titulado "La acelerac
-Unos días más tarde y al otro lado del charco en la [Conferencia ACH 2019](http://ach2019.ach.org) en Pittsburgh, Estados Unidos, Maria José Afanador-Llach y Jennifer Isasi presentaron "Retos en la producción de tutoriales de HD en contextos hispanohablantes." Se enfocaaron en la experienca de llegar a la audiencia de *Programming Historian en español.* Asistir a la conferencia también les dio la oportunidad de conocer a Matthew Lincoln y Brandon Walsh además de presentar el proyecto multilingüe a más personas.
+Unos días más tarde y al otro lado del charco en la [Conferencia ACH 2019](https://ach2019.ach.org) en Pittsburgh, Estados Unidos, Maria José Afanador-Llach y Jennifer Isasi presentaron "Retos en la producción de tutoriales de HD en contextos hispanohablantes." Se enfocaaron en la experienca de llegar a la audiencia de *Programming Historian en español.* Asistir a la conferencia también les dio la oportunidad de conocer a Matthew Lincoln y Brandon Walsh además de presentar el proyecto multilingüe a más personas.
Brandon Walsh, Matthew Lincoln, María José Afanador-Llach y Jennifer Isasi en ACH 2019.
@@ -68,7 +68,7 @@ Unos días más tarde y al otro lado del charco en la [Conferencia ACH 2019](htt
## PH en español recibe el Premio HDH 2018
-La [Asociación de Humanidades Digitales Hispánicas ha premiado a *Programming Historian en español*](https://programminghistorian.org/posts/premio-hdh-2018)) como una de la **“Mejor iniciativa formativa desarrollada durante el año 2018”** en su [I Edición de los Premios HDH 2018](http://humanidadesdigitaleshispanicas.es/resolucion-convocatoria-i-edicion-premios-hdh/).
+La [Asociación de Humanidades Digitales Hispánicas ha premiado a *Programming Historian en español*](https://programminghistorian.org/posts/premio-hdh-2018)) como una de la **“Mejor iniciativa formativa desarrollada durante el año 2018”** en su [I Edición de los Premios HDH 2018](https://humanidadesdigitaleshispanicas.es/resolucion-convocatoria-i-edicion-premios-hdh/).
El objetivo de este premio es reconocer social y académicamente las diferentes iniciativas desarrolladas desde las bases de la contribución al avance del conocimiento, la reflexión crítica, el desarrollo de currículos formativos y la difusión y visibilidad de las humanidades digitales en español. Nos gustaría de nuevo agradecer a la Junta Directiva de HDH su decisión y confianza en nosotros.
diff --git a/_posts/2019-09-30-buletin-de-information.md b/_posts/2019-09-30-buletin-de-information.md
index 685eb3ece3..6101c3c5d8 100644
--- a/_posts/2019-09-30-buletin-de-information.md
+++ b/_posts/2019-09-30-buletin-de-information.md
@@ -50,7 +50,7 @@ Antonio Rojas Castro, Anna-Maria Sichani et Sofia Papastamkou ont présenté leu
Anna-Maria Sichani et Sofia Papastamkou présentent une affiche à DH 2019.
-Quelques jours plus tard, lors de la [conférence ACH 2019](http://ach2019.ach.org) à Pittsburgh, de l'autre côté de l'océan, Maria José Afanador-Llach et Jennifer Isasi ont présenté "Retouches sur les tutoriels en HD et les contextes hispanophones" (en anglais), qui mettaient l'accent sur l'expérience publique de la *Programming Historian en español*. La participation à la conférence leur a permis de rencontrer Matthew Lincoln et Brandon Walsh, ainsi que de familiariser davantage de personnes au projet multilingue.
+Quelques jours plus tard, lors de la [conférence ACH 2019](https://ach2019.ach.org) à Pittsburgh, de l'autre côté de l'océan, Maria José Afanador-Llach et Jennifer Isasi ont présenté "Retouches sur les tutoriels en HD et les contextes hispanophones" (en anglais), qui mettaient l'accent sur l'expérience publique de la *Programming Historian en español*. La participation à la conférence leur a permis de rencontrer Matthew Lincoln et Brandon Walsh, ainsi que de familiariser davantage de personnes au projet multilingue.
Brandon Walsh, Matthew Lincoln, María José Afanador-Llach et Jennifer Isasi se rencontrent à ACH 2019.
Félicitations à tous ceux qui ont présenté des conférences cet été!
diff --git a/_posts/2019-09-30-newsletter.md b/_posts/2019-09-30-newsletter.md
index a250b52d72..fe19b21aeb 100644
--- a/_posts/2019-09-30-newsletter.md
+++ b/_posts/2019-09-30-newsletter.md
@@ -54,7 +54,7 @@ Antonio Rojas Castro, Anna-Maria Sichani and Sofia Papastamkou presented their p
Anna-Maria Sichani and Sofia Papastamkou present a poster at DH 2019.
-A few days later, and on the other side of the pond at the [**ACH 2019 Conference**](http://ach2019.ach.org) in Pittsburgh, Maria José Afanador-Llach and Jennifer Isasi presented "Retos en la producción de tutoriales de HD en contextos hispanohablantes" which focused on the experience of reaching to the audience of *Programming Historian en español*. Attending the conference gave them the opportunity to also meet Matthew Lincoln and Brandon Walsh as well as introducing more people to the multilingual project.
+A few days later, and on the other side of the pond at the [**ACH 2019 Conference**](https://ach2019.ach.org) in Pittsburgh, Maria José Afanador-Llach and Jennifer Isasi presented "Retos en la producción de tutoriales de HD en contextos hispanohablantes" which focused on the experience of reaching to the audience of *Programming Historian en español*. Attending the conference gave them the opportunity to also meet Matthew Lincoln and Brandon Walsh as well as introducing more people to the multilingual project.
Brandon Walsh, Matthew Lincoln, María José Afanador-Llach and Jennifer Isasi meet at ACH 2019.
diff --git a/_posts/2020-02-26-merci-les-amis.md b/_posts/2020-02-26-merci-les-amis.md
index eaf7d34181..5e3bb8c30a 100644
--- a/_posts/2020-02-26-merci-les-amis.md
+++ b/_posts/2020-02-26-merci-les-amis.md
@@ -15,6 +15,6 @@ Nous étions trois lorsque la version francophone a vu le jour; nous sommes à p
À l'heure actuelle, nous avons mis en ligne sept traductions de tutoriels à l'origine publiés en anglais; une de plus le sera prochainement et d'autres sont en cours ou en attente de relecture. Pour le moment, l'ensemble de ce travail a impliqué pas moins de 17 contributeurs et contributrices externes à l'équipe éditoriale. Nous souhaitons rebondir sur cet aspect car, dès le début, le Programming Historian en français a pu compter sur la bonne volonté d'une communauté qui s'est manifestée spontanément.
-Ainsi, dès sa formation, l'équipe francophone a reçu deux importantes contributions. L'une venait de l'équipe du Master 2 ["Technologies numériques appliquées à l'histoire"](http://www.chartes.psl.eu/fr/rubrique-admissions/master-technologies-numeriques-appliquees-histoire) de l'École nationale des chartes, Paris, France, qui nous a fourni un corpus de traductions de tutoriels préparées par les étudiant(e)s dans le cadre de leur cours d'anglais et nous autorisant à les publier. Merci à Thibault Clérice et Meg Roussel pour cette proposition, ainsi qu'à Sybille Clochet et Alix Chagué - pour l'instant! - pour leur travail supplémentaire. La deuxième contribution émanait de Sylvain Machefert, qui a mis gentiment à notre disposition trois traductions préalablement préparées par ses soins. À l'annonce de la mise en ligne du Programming Historian en français, nous avons reçu davantage de propositions spontanées de traductions de tutoriels qui avaient servi ou intéressaient d'une manière ou d'une autre les instigateurs de ces propositions: Hugo Bonin, Anne-Sophie Besserro-Lagarde, Géraldine Castel, Antoine Gourlay ont toute notre reconaissance. Enfin, nous sommes redevables à nos relecteurs et relectrices d'avoir consacré leur temps et énergie pour peaufiner, à la fois sur la forme et sur le fond, ce travail de traduction: Alix Chagué, Frédéric Clavert, Isabelle Gribomont, Fanny Mezard, Sylvain Machefert, Marie Puren, Antoine Champigny, Antoine Courtin, Thomas Soubiran, Catherine Paulin, Florian Cafiero, et Déborah Dubald.
+Ainsi, dès sa formation, l'équipe francophone a reçu deux importantes contributions. L'une venait de l'équipe du Master 2 ["Technologies numériques appliquées à l'histoire"](https://www.chartes.psl.eu/fr/rubrique-admissions/master-technologies-numeriques-appliquees-histoire) de l'École nationale des chartes, Paris, France, qui nous a fourni un corpus de traductions de tutoriels préparées par les étudiant(e)s dans le cadre de leur cours d'anglais et nous autorisant à les publier. Merci à Thibault Clérice et Meg Roussel pour cette proposition, ainsi qu'à Sybille Clochet et Alix Chagué - pour l'instant! - pour leur travail supplémentaire. La deuxième contribution émanait de Sylvain Machefert, qui a mis gentiment à notre disposition trois traductions préalablement préparées par ses soins. À l'annonce de la mise en ligne du Programming Historian en français, nous avons reçu davantage de propositions spontanées de traductions de tutoriels qui avaient servi ou intéressaient d'une manière ou d'une autre les instigateurs de ces propositions: Hugo Bonin, Anne-Sophie Besserro-Lagarde, Géraldine Castel, Antoine Gourlay ont toute notre reconaissance. Enfin, nous sommes redevables à nos relecteurs et relectrices d'avoir consacré leur temps et énergie pour peaufiner, à la fois sur la forme et sur le fond, ce travail de traduction: Alix Chagué, Frédéric Clavert, Isabelle Gribomont, Fanny Mezard, Sylvain Machefert, Marie Puren, Antoine Champigny, Antoine Courtin, Thomas Soubiran, Catherine Paulin, Florian Cafiero, et Déborah Dubald.
Forte de ces soutiens, l'équipe du Programming Historian en français est optimiste pour l'avenir, surtout que produire des leçons originales en français est notre prochain but. Un sincère merci, à nouveau, pour toutes les contributions passées, en cours et à venir!
diff --git a/_posts/2020-05-04-call-for-editors.md b/_posts/2020-05-04-call-for-editors.md
index 063d6eceae..c911dba096 100644
--- a/_posts/2020-05-04-call-for-editors.md
+++ b/_posts/2020-05-04-call-for-editors.md
@@ -13,7 +13,7 @@ Launched in 2012, *The Programming Historian* offers more than 80 novice-friendl
- Lincoln Mullen, '[Review of the Programming Historian](https://academic.oup.com/jah/article-abstract/103/1/299/1751315)', *The Journal of American History*, vol. 103, no. 1 (2016), pp. 299-301.
-- Cameron Blevins, '[Review of the Programming Historian](http://jitp.commons.gc.cuny.edu/review-of-the-programming-historian/)', *The Journal of Interactive Technology & Pedagogy*, vol. 8 (2015).
+- Cameron Blevins, '[Review of the Programming Historian](https://jitp.commons.gc.cuny.edu/review-of-the-programming-historian/)', *The Journal of Interactive Technology & Pedagogy*, vol. 8 (2015).
Interested candidates should submit a 1-page expression of interest outlining your interests, experience, and vision for the publication, to Sarah Melton (sarah.melton@bc.edu) by 1 June 2020. Please direct any questions to Sarah in the first instance. Please note that this is a VOLUNTEER ACADEMIC SERVICE POSITION and there is no salary or stipend associated with this role.
diff --git a/_posts/2021-04-01-newsletter-april-21.md b/_posts/2021-04-01-newsletter-april-21.md
index ca037a54f6..0284effd19 100644
--- a/_posts/2021-04-01-newsletter-april-21.md
+++ b/_posts/2021-04-01-newsletter-april-21.md
@@ -16,7 +16,7 @@ As usual, none of these achievements would have been possible without the suppor
These first months of the year have been specially busy with virtual events, as we have presented our work on *Programming Historian* in different venues all over. Nos gustaría en especial felicitar y agradecer a nuestra editora Riva Quiroga su gran esfuerzo en marzo, pues ha participado en casi todos estos eventos.
-Early in January, Brandon Walsh presented our project at the Modern Languages Association Conference 2021. His talk, ‘[The Programming Historian and Editorial Process in Digital Publishing](http://walshbr.com/blog/the-programming-historian-and-editorial-process-in-digital-publishing/)’ focused on the technical side or how we use GitHub for the editorial process to submit and edit new lessons or translations for publication.
+Early in January, Brandon Walsh presented our project at the Modern Languages Association Conference 2021. His talk, ‘[The Programming Historian and Editorial Process in Digital Publishing](https://walshbr.com/blog/the-programming-historian-and-editorial-process-in-digital-publishing/)’ focused on the technical side or how we use GitHub for the editorial process to submit and edit new lessons or translations for publication.
*Programming Historian en español* organizó dos talleres para el 6 de marzo, con motivo del [Día de los Datos Abiertos](https://opendataday.org/th/events/2021/reports/open-data-day-datos-abiertos-y-humanidades-digitales/) y con la financiación de la [Open Knowledge Foundation](https://okfn.org/). Riva Quiroga presentó el proyecto y dio paso a Silvia Gutiérrez, quien dio un taller sobre Voyant-Tools con textos en español. Tras un descanso, Jairo Melo nos enseñó a descargar, procesar y visualizar datos abiertos a través de un cuaderno Jupyter. Ambos talleres quedaron grabados y puedes verlos en [opendataday-2021](https://github.com/programminghistorian/opendataday-2021). También puedes leer un resumen del evento en [este hilo de Twitter](https://twitter.com/ProgHist/status/1368246763962966021).
@@ -24,7 +24,7 @@ A few days later, on March 10th, Riva presented on the "Multilingual Digital Hum
Our global team members Sofia Papastamkou, Jessica Parr and Riva Quiroga presented at NewsEye’s International Conference. Their paper was titled "Challenges for Digital Literacy in the Humanities: The Open, Community-Based and Multilinguistic Approach of *The Programming Historian*" and centered on the community we have formed to make digital methods available to more people in the world.
-El 25 de marzo, nuestras editoras Jennifer Isasi y Riva Quiroga presentaron el proyecto a la Red INTELE (Infraestructura de Tecnologías del Lenguaje) de España. Con "*Programming Historian*: Un proyecto colaborativo para poner la programación al alcance de los humanistas" dieron buena razón de las directrices éticas que guían el proceso editorial en la revista y mostraron un ejemplo de cómo preparar una lección para su publicación. La charla quedó grabada en video y podéis verla en la [colección de webinarios de INTELE](http://ixa2.si.ehu.eus/intele/?q=webinars).
+El 25 de marzo, nuestras editoras Jennifer Isasi y Riva Quiroga presentaron el proyecto a la Red INTELE (Infraestructura de Tecnologías del Lenguaje) de España. Con "*Programming Historian*: Un proyecto colaborativo para poner la programación al alcance de los humanistas" dieron buena razón de las directrices éticas que guían el proceso editorial en la revista y mostraron un ejemplo de cómo preparar una lección para su publicación. La charla quedó grabada en video y podéis verla en la [colección de webinarios de INTELE](https://ixa2.si.ehu.eus/intele/?q=webinars).
On April 12th, *Programming Historian* team convened in a panel at [Global Digital Humanities Symposium 2021](https://msuglobaldh.org/) to present its achievements and challenges in our inclusive, four-language journal initiative. During this session the presenters focused on the strategies each journal has adopted to bring digital scholarship methods to a global audience that reached 1,5 million in 2020. In turn, it served as an overview of the changes the journal has undergone in its twelve-year history in order to become the flagship journal in DH methods. The audience responded positively to the presentation and asked about the addition of new languages.
@@ -90,7 +90,7 @@ We will address the issues that we can fix ourselves and seek help for those for
## Acknowledgments
-A year ago, and before leaving the team, Matthew Lincoln wrote a blogpost about one of the ways in which one can [produce a complex multilingual static site using Jekyll and GitHub pages](https://matthewlincoln.net/2020/03/01/multilingual-jekyll.html). The post was nominated for the Best DH Blog Post or Series of Posts category in the Digital Humanities Awards 2020. Unfortunately, it didn't win, but the nomination showed how important this resource is for the DH community. And congratulations to [the winners](http://dhawards.org/dhawards2020/results/)!
+A year ago, and before leaving the team, Matthew Lincoln wrote a blogpost about one of the ways in which one can [produce a complex multilingual static site using Jekyll and GitHub pages](https://matthewlincoln.net/2020/03/01/multilingual-jekyll.html). The post was nominated for the Best DH Blog Post or Series of Posts category in the Digital Humanities Awards 2020. Unfortunately, it didn't win, but the nomination showed how important this resource is for the DH community. And congratulations to [the winners](https://dhawards.org/dhawards2020/results/)!
Jennifer Isasi, *PH* comms manager and editor, was nominated and elected to be part of the 2021-2025 Executive Council for [The Association for Computers and the Humanities](https://ach.org). ¡Felicidades, Jennifer! And we would also like to congratulate Kim Gallon and Lorena Gauthereau, who will also be part of the Executive Council.
diff --git a/_posts/2021-09-02-llano-gribomont-vaughan.md b/_posts/2021-09-02-llano-gribomont-vaughan.md
index e1412e1b06..9ab176506b 100644
--- a/_posts/2021-09-02-llano-gribomont-vaughan.md
+++ b/_posts/2021-09-02-llano-gribomont-vaughan.md
@@ -16,6 +16,6 @@ Isabelle Gribomont obtuvo su doctorado en estudios hispánicos en la universidad
[Nicolás Llano Linares](https://twitter.com/enetreseles) es doctor en Ciencias de la Comunicación de la Universidad de São Paulo. Actualmente hace parte del programa MBA en Periodismo de Datos del IDP (Brasilia). Es profesor de escritura en la Escola da Cidade, y editor de la [Revista Rosa](https://revistarosa.com). Sus intereses de investigación transitan entre las mediaciones sociotécnicas en el siglo XX, las ciencias sociales computacionales y las narrativas multimedia. Quiere continuar traduciendo tutoriales, ensayos y géneros híbridos al español y portugués, con el objetivo de fomentar encuentros entre los dos universos lingüísticos y sus culturas investigativas
-Nicolás Vaughan es doctor en filosofía medieval de la Universidad de Oxford (Reino Unido). Es profesor asociado del Departamento de Humanidades y Literatura, de la Universidad de los Andes (Bogotá, Colombia), donde también enseña en la [Maestría en Humanidades Digitales](https://posgradosfacartes.uniandes.edu.co/programas/humanidades-digitales/). Sus intereses de investigación son las ediciones digitales en línea, especialmente de autores de la Edad Media. Es editor adjunto de la edición crítica de la [Ordinatio](https://scta.lombardpress.org/text?resourceid=http://scta.info/resource/wodehamordinatio) del filósofo medieval Adam de Wodeham, un proyecto de código y acceso abierto del [Scholastic Commentaries and Texts Archive (SCTA).](https://scta.info/)
+Nicolás Vaughan es doctor en filosofía medieval de la Universidad de Oxford (Reino Unido). Es profesor asociado del Departamento de Humanidades y Literatura, de la Universidad de los Andes (Bogotá, Colombia), donde también enseña en la [Maestría en Humanidades Digitales](https://posgradosfacartes.uniandes.edu.co/programas/humanidades-digitales/). Sus intereses de investigación son las ediciones digitales en línea, especialmente de autores de la Edad Media. Es editor adjunto de la edición crítica de la [Ordinatio](https://scta.lombardpress.org/text?resourceid=https://scta.info/resource/wodehamordinatio) del filósofo medieval Adam de Wodeham, un proyecto de código y acceso abierto del [Scholastic Commentaries and Texts Archive (SCTA).](https://scta.info/)
De parte de todo el equipo queremos agradecer su interés en este proyecto, ¡bienvenidos!
diff --git a/_posts/2021-09-08-cfp-jisc-ph.md b/_posts/2021-09-08-cfp-jisc-ph.md
index c05c259077..14b3833e08 100644
--- a/_posts/2021-09-08-cfp-jisc-ph.md
+++ b/_posts/2021-09-08-cfp-jisc-ph.md
@@ -33,7 +33,7 @@ As a result of this partnership we are delighted to invite authors to submit pro
- Show how a computational methodology or technique can be applied to a digital collection in order to generate initial findings it as a precursor to in-depth research;
- Demystify ‘big data’ analysis techniques for a humanities audience;
- Describe methods that advance humanities research questions through the analysis of large-scale digital collections;
-- Demonstrate ‘[Minimal Computing](http://go-dh.github.io/mincomp/about/)’ approaches to the analysis of large-scale digital collections and thereby meet the needs of scholars working ‘under some set of significant constraints of hardware, software, education, network capacity, power, or other factors’.
+- Demonstrate ‘[Minimal Computing](https://go-dh.github.io/mincomp/about/)’ approaches to the analysis of large-scale digital collections and thereby meet the needs of scholars working ‘under some set of significant constraints of hardware, software, education, network capacity, power, or other factors’.
Examples of the kind of large-scale collections that would be in scope are digitised texts, email archives, social media data, web archives, bibliographic datasets, image collections, and catalogue data. This is not exhaustive, however, and no type of large-scale research collection is *a priori* excluded.
@@ -73,11 +73,11 @@ The project would particularly welcome lessons which engage with web archives or
- the UK Medical Heritage library, on the Jisc Historical Texts platform (https://ukmhl.historicaltexts.jisc.ac.uk/home)
- British Library 19th Century Books, also on the Jisc Historical Texts platform, ([https://historicaltexts.jisc.ac.uk](https://historicaltexts.jisc.ac.uk/))
- The National Archives’ Discovery platform (https://discovery.nationalarchives.gov.uk/). A sandbox API is available at[https://discovery.nationalarchives.gov.uk/API/sandbox/index](https://discovery.nationalarchives.gov.uk/API/sandbox/index).
-- The UK Government Web Archive (http://www.nationalarchives.gov.uk/webarchive/)
+- The UK Government Web Archive (https://www.nationalarchives.gov.uk/webarchive/)
Other useful sources of data include:
-- The UK Web Archive (http://data.webarchive.org.uk/opendata/)
+- The UK Web Archive (https://data.webarchive.org.uk/opendata/)
- The GeoCities special collection at the Internet Archive (https://archive.org/web/geocities.php)
- The Enron email corpus (https://www.cs.cmu.edu/~enron/)
- Library of Congress Web Archive datasets (https://labs.loc.gov/work/experiments/webarchive-datasets/)
diff --git a/_posts/2021-09-22-call-for-editors-en.md b/_posts/2021-09-22-call-for-editors-en.md
index 75fbb3ed76..ac514e5765 100644
--- a/_posts/2021-09-22-call-for-editors-en.md
+++ b/_posts/2021-09-22-call-for-editors-en.md
@@ -13,7 +13,7 @@ Launched in 2012, *The Programming Historian* offers more than 80 novice-friendl
- Lincoln Mullen, '[Review of the Programming Historian](https://academic.oup.com/jah/article-abstract/103/1/299/1751315)', *The Journal of American History*, vol. 103, no. 1 (2016), pp. 299-301.
-- Cameron Blevins, '[Review of the Programming Historian](http://jitp.commons.gc.cuny.edu/review-of-the-programming-historian/)', *The Journal of Interactive Technology & Pedagogy*, vol. 8 (2015).
+- Cameron Blevins, '[Review of the Programming Historian](https://jitp.commons.gc.cuny.edu/review-of-the-programming-historian/)', *The Journal of Interactive Technology & Pedagogy*, vol. 8 (2015).
Interested candidates should submit a short expression of interest outlining your interests, experience, and vision for the publication, to Sarah Melton (sarah.melton@bc.edu) by 15 October 2021. Please direct any questions to Sarah in the first instance. Please note that this is a VOLUNTEER ACADEMIC SERVICE POSITION and there is no salary or stipend associated with this role.
diff --git a/_posts/2021-09-24-september-newsletter.md b/_posts/2021-09-24-september-newsletter.md
index bb3f09b5bf..e4edebf4cb 100644
--- a/_posts/2021-09-24-september-newsletter.md
+++ b/_posts/2021-09-24-september-newsletter.md
@@ -34,7 +34,7 @@ Colleagues in our Project Team have published new research exploring the challen
Daniel Alves wrote an article titled [‘Ensinar Humanidades Digitais sem as Humanidades Digitais: um olhar a partir das licenciaturas em História’](https://novaresearch.unl.pt/files/32228034/Ensinar_Humanidades_Digitais.pdf) for Revista EducaOnline that argues the importance of teaching digital skills across humanities departments at universities. Adam Crymble and Maria José Afanador-Llach contributed a chapter [‘The Globally Unequal Promise of Digital Tools for History: UK and Colombia Case Study’](https://link.springer.com/chapter/10.1007%2F978-981-16-0247-4_7) to the book *Teaching History for the Contemporary World*, edited by Adele Nye. In their text, they consider some of the social, technical and infrastructural barriers that open access, multilingual projects like *Programming Historian* are designed to break down.
-Later this September, Jessica Parr and Nabeel Siddiqui will contribute to [Sharing Digitally](https://www.lvivcenter.org/en/conferences/sharing-digitally-2/), an online seminar organised by the Center for Urban History at Lviv, Ukraine, where they'll lead a workshop and discussion about '*Programming Historian* and the Challenges of Globally Distributed Learning'. Through October and November, Jennifer Isasi and Brandon Walsh will co-host two special [Programming Historian Book Club](https://ach.org/blog/2021/09/13/fall-2021-programming-historian-book-club/) events lead by [The Association for Computers and the Humanities](http://ach.org/). The Book Clubs are an opportunity to work through our lessons on [R](https://programminghistorian.org/en/lessons/basic-text-processing-in-r) and [Python](https://programminghistorian.org/en/lessons/introduction-and-installation) together. Newcomers are welcome – the sessions will provide a supportive space to learn a new skill and ask questions from experienced participants.
+Later this September, Jessica Parr and Nabeel Siddiqui will contribute to [Sharing Digitally](https://www.lvivcenter.org/en/conferences/sharing-digitally-2/), an online seminar organised by the Center for Urban History at Lviv, Ukraine, where they'll lead a workshop and discussion about '*Programming Historian* and the Challenges of Globally Distributed Learning'. Through October and November, Jennifer Isasi and Brandon Walsh will co-host two special [Programming Historian Book Club](https://ach.org/blog/2021/09/13/fall-2021-programming-historian-book-club/) events lead by [The Association for Computers and the Humanities](https://ach.org/). The Book Clubs are an opportunity to work through our lessons on [R](https://programminghistorian.org/en/lessons/basic-text-processing-in-r) and [Python](https://programminghistorian.org/en/lessons/introduction-and-installation) together. Newcomers are welcome – the sessions will provide a supportive space to learn a new skill and ask questions from experienced participants.
Keep an eye on the [research](https://programminghistorian.org/en/research)/[investigación](https://programminghistorian.org/es/investigacion)/[recherche](https://programminghistorian.org/fr/recherche)/[pesquisa](https://programminghistorian.org/pt/pesquisa) pages of our website for further updates on our activities.
diff --git a/_posts/2021-12-22-december-newsletter.md b/_posts/2021-12-22-december-newsletter.md
index bea5a9939f..e0c23dc45a 100644
--- a/_posts/2021-12-22-december-newsletter.md
+++ b/_posts/2021-12-22-december-newsletter.md
@@ -33,7 +33,7 @@ We have had a busy few months in terms of outreach activities too. In November,
Meanwhile, with support from the Institute of Historical Research, Adam Crymble and Anisa Hawes offered a free [workshop](https://www.history.ac.uk/our-century/centenary-events/training-teacher-giving-your-first-digital-history-workshop) aimed at history and humanities educators. They shared three different methods for integrating _Programming Historian_'s practical digital tutorials into university teaching, based on approaches developed at University College London, University of Edinburgh, and Universidad de los Andes, including remote and in-person delivery options.
-Jennifer Isasi and Antonio Rojas Castro contributed to a roundtable discussion, titled "Torre de Babel", on the subject of multi-lingual digital humanities at [the Association of History Literature Science and Technology (AHLiST)'s International Interdisciplinary Conference](http://ahlist.org/wp-content/uploads/2021/11/AHLIST-2021-PROGRAM_Virtual_FINAL.pdf) in Madrid, Spain, and have co-written an article titled "Sin equivalencia: Una reflexión sobre la traducción al español de recursos educativos abiertos" soon to be published in the journal _Hispania_.
+Jennifer Isasi and Antonio Rojas Castro contributed to a roundtable discussion, titled "Torre de Babel", on the subject of multi-lingual digital humanities at [the Association of History Literature Science and Technology (AHLiST)'s International Interdisciplinary Conference](https://ahlist.org/wp-content/uploads/2021/11/AHLIST-2021-PROGRAM_Virtual_FINAL.pdf) in Madrid, Spain, and have co-written an article titled "Sin equivalencia: Una reflexión sobre la traducción al español de recursos educativos abiertos" soon to be published in the journal _Hispania_.
## New Supporters and Partnerships
diff --git a/_posts/2023-12-13-bulletin-issue-01.md b/_posts/2023-12-13-bulletin-issue-01.md
index 657da512c1..041d6de2c2 100644
--- a/_posts/2023-12-13-bulletin-issue-01.md
+++ b/_posts/2023-12-13-bulletin-issue-01.md
@@ -16,7 +16,7 @@ categories: posts
## 2023 Milestones
- We celebrated the publication of our 200th lesson overall since our launch. This was a moment to recognise our significant growth as a project over the past decade, and to honour a great collective achievement on behalf of all our contributors.
-- We won the Best DH Training Materials category of the [Digital Humanities Awards](http://dhawards.org/dhawards2022/results/). Community-nominated and community-voted awards make us particularly proud, because they represent the value of _Programming Historian_ among our peers.
+- We won the Best DH Training Materials category of the [Digital Humanities Awards](https://dhawards.org/dhawards2022/results/). Community-nominated and community-voted awards make us particularly proud, because they represent the value of _Programming Historian_ among our peers.
- We are delighted to have recruited a brilliant new Publishing Assistant Charlotte Chevrie, who will be working alongside Anisa Hawes, now our Publishing Manager, to provide services to our four journal teams.
## New Lessons
diff --git a/_posts/2024-06-28-bulletin-issue-03.md b/_posts/2024-06-28-bulletin-issue-03.md
index ff339240b0..7c24edc8bb 100644
--- a/_posts/2024-06-28-bulletin-issue-03.md
+++ b/_posts/2024-06-28-bulletin-issue-03.md
@@ -67,7 +67,7 @@ JOHN R. LADD, JESSICA OTIS, CHRISTOPHER N. WARREN & SCOTT WEINGART, traduite par
## New Supporters
Huge thanks to our generous new [Patreon](https://www.patreon.com/theprogramminghistorian) subscribers who have individually invested in our success: **James Baker** (Patron), **Cory Taylor** (Patron), and **Samuel Salgado Tello** (Educator).
-Join our Patreon community:
+Join our Patreon community:
We're also very grateful to all those who have renewed their membership to our Institutional Partner Programme this quarter: the **School of Advanced Study**, **C2DH**, **University of Florida**, **Bristol University Library**, **Western University Library**, **Universidad de los Andes**, **Princeton University**, **Cambridge Digital Humanities**, and **University of Sussex Library** (Gold Tier).
diff --git a/_posts/2024-09-27-bulletin-issue-04.md b/_posts/2024-09-27-bulletin-issue-04.md
index e4a7deb523..359b208d73 100644
--- a/_posts/2024-09-27-bulletin-issue-04.md
+++ b/_posts/2024-09-27-bulletin-issue-04.md
@@ -51,7 +51,7 @@ Our incoming Chair of the Board of Trustees, **James Baker**, would like to shar
“We shared in our June Bulletin that **Sofia Papastamkou** had recently stepped down as Chair of the Board of Trustees. **Sofia took on the role of Chair at an important moment in our journey** as a publisher: in Spring 2023, we had reorganised our structures and were looking to expand our team by hiring a Digital Humanities Publishing Assistant. Sofia’s first major task as Chair was to guide us through a successful recruitment process, which she did with purpose.
-**Under Sofia's leadership, _Programming Historian_ achieved some significant successes**: we celebrated the publication of our 200th and, later, 250th lessons since launch in 2008; we won [best DH Training Materials category of the Digital Humanities Awards](http://dhawards.org/dhawards2022/results/); we grew the support base of our Institutional Partner Programme, including new Gold Tier supporters; our lessons became discoverable through [EBSCO](https://www.ebsco.com/products/ebscohost-research-platform) and [DARIAH Campus](https://campus.dariah.eu/source/programming-historian/page/1); and we expanded our outreach, communication, and community networking activities.
+**Under Sofia's leadership, _Programming Historian_ achieved some significant successes**: we celebrated the publication of our 200th and, later, 250th lessons since launch in 2008; we won [best DH Training Materials category of the Digital Humanities Awards](https://dhawards.org/dhawards2022/results/); we grew the support base of our Institutional Partner Programme, including new Gold Tier supporters; our lessons became discoverable through [EBSCO](https://www.ebsco.com/products/ebscohost-research-platform) and [DARIAH Campus](https://campus.dariah.eu/source/programming-historian/page/1); and we expanded our outreach, communication, and community networking activities.
From her time as Manager Editor of _Programming Historian en français_, to her recent time as Chair, **Sofia's passion and enthusiasm for our work has been undiminished**. On behalf of the Board of Trustees, I wish to extend my heartfelt thanks to Sofia and **wish her every success** in her future work.”
diff --git a/_posts/2025-03-28-bulletin-issue-06.md b/_posts/2025-03-28-bulletin-issue-06.md
index 8f44d2c029..284c4b4f41 100644
--- a/_posts/2025-03-28-bulletin-issue-06.md
+++ b/_posts/2025-03-28-bulletin-issue-06.md
@@ -55,7 +55,7 @@ Institutional Partnerships empower us to **sustain our model of Diamond Open Acc
If you know that our work aligns with your organisation’s priorities and is valuable to your community, we’d love your help to connect with the right person.
-[Email our Publishing Manager](mailto:admin@programminghistorian.org) or visit [http://tinyurl.com/support-PH](http://tinyurl.com/support-PH) to learn more about joining our Institutional Partnership Programme.
+[Email our Publishing Manager](mailto:admin@programminghistorian.org) or visit [https://tinyurl.com/support-PH](https://tinyurl.com/support-PH) to learn more about joining our Institutional Partnership Programme.
Grateful thanks to our valued partners who have renewed their membership this quarter: **Exeter University**, **Universiteit Gent**, the **College of the Liberal Arts at Penn State University**, **KU Leuven Bibliotheken**, **University of York**, **C²DH**,the **National Archives**, the **School of Advanced Study (UoL)** and **Universität Bern Bibliothek**.
diff --git a/assets/corpus-analysis-with-spacy/corpus-analysis-with-spacy-16.html b/assets/corpus-analysis-with-spacy/corpus-analysis-with-spacy-16.html
index e24bdd7bc5..dbc4b7c394 100644
--- a/assets/corpus-analysis-with-spacy/corpus-analysis-with-spacy-16.html
+++ b/assets/corpus-analysis-with-spacy/corpus-analysis-with-spacy-16.html
@@ -1,4 +1,4 @@
-