diff --git a/AGENTS.md b/AGENTS.md index 5651b1e..4338034 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -25,6 +25,8 @@ _data/ research_areas.yml research areas: home cards + /research// pages highlights.yml home-page project cards publication_topics.yml publication topics (labels), trilingual + software.yml /software/: web-tool cards, featured repos (pin cards), GitHub orgs + ietf.yml /ietf/: RFCs, Internet-Drafts, IETF Day links (verified facts) theses.yml, navigation.yml, ui-text.yml _news/ one file per news item and language (inline, no pages) _bibliography/conexdat.bib THE publication list (other .bib files are unused sources) @@ -119,6 +121,10 @@ hard-codes that origin for CSS and assets. - **Icons** are generated from `images/logo_conexdat.png` (network drawing only, strokes thickened for 16/32 px) with ImageMagick; regenerate all of them together if the logo changes. `images/` is excluded from localization, so icon links never get `/en/`. +- **Repository cards** on /software/ are SVGs from `github-stats-extended.vercel.app`, a + third-party service: every visitor's IP reaches it, and an error it serves as HTTP 200 + (for example a rate-limit card) shows up as the card instead of the plain-link fallback. + Keep the list short, and replace the service if it becomes unreliable. - `jekyll-sass-converter` is pinned to 2.x on purpose: the academicpages partials do not compile under dart-sass (3.x). Dependabot is told to ignore that major version. - Jekyll-scholar exposes custom BibTeX fields (`topics`, `pdf`, `code`, ...) to diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 05576a1..fd2d29f 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -31,6 +31,8 @@ public face of the group, so small, well-scoped changes are preferred. | Add a news item | `_news/YYYY-MM-DD-slug.md` (+ `.en.md`, `.fr.md`) | | Add a publication | `_bibliography/conexdat.bib` (+ `topics`) | | Add / rename a publication topic | `_data/publication_topics.yml` | +| Change the software cards or repos | `_data/software.yml` | +| Add an RFC, draft or IETF activity | `_data/ietf.yml` | | Add / update a funded project | `_data/projects.yml` | | Change a home-page project card | `_data/highlights.yml` | | Change a research area | `_data/research_areas.yml` | diff --git a/README.md b/README.md index 125a785..d074ea0 100644 --- a/README.md +++ b/README.md @@ -40,6 +40,7 @@ Open , , - `_bibliography/conexdat.bib` — publications (rendered by jekyll-scholar), each tagged with `topics = {…}` - `_data/publication_topics.yml` — trilingual publication topics (labels) +- `_data/software.yml`, `_data/ietf.yml` — the Software and IETF pages - `_includes/people-list.html`, `projects-list.html` — shared layouts - `_includes/publications-filter.html` + `assets/js/publications.js` — search, topic and person filters on `/publications/` diff --git a/_config.yml b/_config.yml index 4a18db0..5ed6764 100644 --- a/_config.yml +++ b/_config.yml @@ -179,6 +179,11 @@ cnet: - alvarez-hamelin - beiro - carisimo + # Per-language sidebar tagline (author-profile.html falls back to author.bio) + bio: + es: "Grupo de Redes Complejas y Comunicación de Datos" + en: "Complex Networks and Data Communication Group" + fr: "Groupe Réseaux Complexes et Communication de Données" # Per-language meta description (seo.html falls back to top-level `description`) description: es: *description diff --git a/_data/ietf.yml b/_data/ietf.yml new file mode 100644 index 0000000..ceb6ccd --- /dev/null +++ b/_data/ietf.yml @@ -0,0 +1,55 @@ +# ============================================================================= +# CoNexDat — IETF page (/ietf/), trilingual. Facts verified on 2026-09-28 +# against the RFC Editor, IETF Datatracker (person 123380) and the JAIIO sites. +# English uses American English. +# ============================================================================= + +datatracker_profile: "https://datatracker.ietf.org/person/Jos%C3%A9%20Ignacio%20Alvarez-Hamelin" + +rfcs: + - id: "RFC 9198" + title: "Advanced Unidirectional Route Assessment (AURA)" + authors: "J. Alvarez-Hamelin, A. Morton, J. Fabini, C. Pignataro, R. Geib" + date: { es: "mayo de 2022", en: "May 2022", fr: "mai 2022" } + status: + es: "Estándar propuesto, grupo de trabajo IPPM (IP Performance Measurement). Actualiza la RFC 2330." + en: "Proposed Standard, IPPM (IP Performance Measurement) working group. Updates RFC 2330." + fr: "Norme proposée, groupe de travail IPPM (IP Performance Measurement). Met à jour le RFC 2330." + blurb: + es: "Define una métrica y una metodología para evaluar la ruta unidireccional entre un origen y un destino, incluidas las subrutas paralelas que introducen las tecnologías multicamino." + en: "Defines a metric and a measurement methodology to assess the unidirectional route between a source and a destination, including the parallel subpaths introduced by multipath technologies." + fr: "Définit une métrique et une méthodologie pour évaluer la route unidirectionnelle entre une source et une destination, y compris les sous-chemins parallèles introduits par les technologies multichemins." + links: + - { label: "RFC Editor", url: "https://www.rfc-editor.org/rfc/rfc9198.html" } + - { label: "Datatracker", url: "https://datatracker.ietf.org/doc/rfc9198/" } + - { label: "DOI", url: "https://doi.org/10.17487/RFC9198" } + +drafts: + - id: "draft-alavarez-hamelin-tictoc-sic" + title: "Synchronizing Internet Clock frequency protocol (sic)" + status: + es: "Internet-Draft individual; última versión -08 (noviembre de 2021), vencido en mayo de 2022." + en: "Individual Internet-Draft; latest revision -08 (November 2021), expired in May 2022." + fr: "Internet-Draft individuel ; dernière révision -08 (novembre 2021), expiré en mai 2022." + blurb: + es: "Método seguro para sincronizar relojes en Internet con estabilidad de frecuencia y robustez frente a ataques de intermediario (*man-in-the-middle*), pensado para la calidad de las mediciones de desempeño." + en: "A secure method to synchronize clocks on the Internet with frequency stability and robustness to man-in-the-middle attacks, aimed at the quality of performance measurements." + fr: "Une méthode sécurisée pour synchroniser les horloges sur Internet, avec stabilité en fréquence et robustesse aux attaques de l'homme du milieu, au service de la qualité des mesures de performance." + links: + - { label: "Datatracker", url: "https://datatracker.ietf.org/doc/draft-alavarez-hamelin-tictoc-sic/" } + - { label: "GitHub", url: "https://github.com/CoNexDat/SIC" } + - id: "draft-ietf-ippm-route" + title: "Advanced Unidirectional Route Assessment (AURA)" + status: + es: "Documento del grupo IPPM (versiones -00 a -10), publicado como RFC 9198. Empezó como el draft individual draft-amf-ippm-route." + en: "IPPM working-group draft (revisions -00 to -10), published as RFC 9198. It started as the individual draft draft-amf-ippm-route." + fr: "Document du groupe IPPM (révisions -00 à -10), publié comme RFC 9198. Il a commencé comme draft individuel draft-amf-ippm-route." + links: + - { label: "Datatracker", url: "https://datatracker.ietf.org/doc/draft-ietf-ippm-route/" } + - { label: "draft-amf-ippm-route", url: "https://datatracker.ietf.org/doc/draft-amf-ippm-route/" } + +ietf_day: + links: + - { label: "JAIIO 2026", url: "https://55jaiio.sadio.org.ar/simposios" } + - { label: { es: "Actas 2022", en: "2022 proceedings", fr: "Actes 2022" }, url: "https://revistas.unlp.edu.ar/JAIIO/issue/view/1136" } + - { label: "JAIIO 2020", url: "https://49jaiio.sadio.org.ar/simposios/IETFDay.html" } diff --git a/_data/navigation.yml b/_data/navigation.yml index 38fe7c9..95c13d5 100644 --- a/_data/navigation.yml +++ b/_data/navigation.yml @@ -42,6 +42,12 @@ main: fr: "Logiciels" url: /software/ + - title: + es: "IETF" + en: "IETF" + fr: "IETF" + url: /ietf/ + - title: es: "Contacto" en: "Contact" diff --git a/_data/research_areas.yml b/_data/research_areas.yml index 6c43724..2307cbf 100644 --- a/_data/research_areas.yml +++ b/_data/research_areas.yml @@ -170,9 +170,9 @@ en: "Standards (IETF)" fr: "Normes (IETF)" blurb: - es: "Contribuciones al IETF — *RFC 9198 (AURA)* para estandarizar mediciones unidireccionales — y propuestas de **ruteo EGP** sub-lineal." - en: "IETF contributions — *RFC 9198 (AURA)* on standardizing unidirectional measurements — and proposals for **sub-linear EGP routing**." - fr: "Contributions à l'IETF — *RFC 9198 (AURA)* sur la mesure unidirectionnelle — et propositions de **routage EGP** sous-linéaire." + es: "Contribuciones al IETF — *RFC 9198 (AURA)* para estandarizar mediciones unidireccionales — y propuestas de **ruteo EGP** sub-lineal. [Más sobre el IETF](/ietf/)." + en: "IETF contributions — *RFC 9198 (AURA)* on standardizing unidirectional measurements — and proposals for **sub-linear EGP routing**. [More on the IETF](/ietf/)." + fr: "Contributions à l'IETF — *RFC 9198 (AURA)* sur la mesure unidirectionnelle — et propositions de **routage EGP** sous-linéaire. [En savoir plus sur l'IETF](/ietf/)." collaborations: - name: es: "Primeros IXPs de Bolivia y Paraguay — Internet Society" @@ -215,9 +215,9 @@ - title: "RFC 9198 — AURA" url: "https://www.rfc-editor.org/rfc/rfc9198" blurb: - es: "Advanced Unidirectional Route Assessment — RFC informativo del IETF." - en: "Advanced Unidirectional Route Assessment — informational IETF RFC." - fr: "Advanced Unidirectional Route Assessment — RFC informatif de l'IETF." + es: "Advanced Unidirectional Route Assessment — estándar propuesto del IETF (grupo IPPM, 2022)." + en: "Advanced Unidirectional Route Assessment — IETF Proposed Standard (IPPM working group, 2022)." + fr: "Advanced Unidirectional Route Assessment — norme proposée de l'IETF (groupe IPPM, 2022)." papers: - CDFDPAH20 # First Look at Latin American IXPs (CCR 2020) - CSAHD19 # CDNs in IPv4/IPv6 Internet cores diff --git a/_data/software.yml b/_data/software.yml new file mode 100644 index 0000000..798205d --- /dev/null +++ b/_data/software.yml @@ -0,0 +1,54 @@ +# ============================================================================= +# CoNexDat — software page (/software/), trilingual. +# web_tools: services the group runs; rendered as cards with a "Visit" button. +# repos: featured GitHub repositories (owner/name), rendered as pin cards +# from github-stats-extended, the service estcarisimo.github.io uses. +# Keep the list short; the orgs below link to everything else. +# orgs: GitHub organizations with the rest of the code. +# English uses American English. +# ============================================================================= + +web_tools: + - name: "LaNet-vi" + url: "https://lanet-vi.fi.uba.ar/" + icon: "fas fa-circle-nodes" + blurb: + es: "Visualización de redes grandes mediante descomposición en k-núcleos, k-densos y d-núcleos." + en: "Large-network visualization by k-core, k-dense and d-core decomposition." + fr: "Visualisation de grands réseaux par décomposition en k-cœurs, k-denses et d-cœurs." + - name: "netcores" + url: "https://netcores.fi.uba.ar/" + icon: "fas fa-diagram-project" + blurb: + es: "Análisis interactivo del núcleo de Internet: cómo los proveedores de contenido llegaron a su centro." + en: "Interactive analysis of the Internet core: how content providers moved to its center." + fr: "Analyse interactive du cœur d'Internet : comment les fournisseurs de contenu en ont gagné le centre." + - name: "I'm Here!" + url: "https://lanet-vi.fi.uba.ar/i-am-here" + icon: "fas fa-location-dot" + blurb: + es: "Un mapa de la topología de Internet que muestra dónde estás vos." + en: "A map of the Internet topology that shows where you are." + fr: "Une carte de la topologie d'Internet qui montre où vous êtes." + +repos: + - CoNexDat/LaNet-vi + - CoNexDat/complexnets + - CoNexDat/SIC + - CoNexDat/ANTop + - TiX-measurements/tix-deploy + - TiX-measurements/tix-time-server + +orgs: + - name: "CoNexDat" + url: "https://github.com/CoNexDat" + label: + es: "Todos los repositorios de CoNexDat" + en: "All CoNexDat repositories" + fr: "Tous les dépôts CoNexDat" + - name: "TiX-measurements" + url: "https://github.com/TiX-measurements" + label: + es: "TiX (Traffic information eXchange)" + en: "TiX (Traffic information eXchange)" + fr: "TiX (Traffic information eXchange)" diff --git a/_data/ui-text.yml b/_data/ui-text.yml index 47c476c..118d79b 100644 --- a/_data/ui-text.yml +++ b/_data/ui-text.yml @@ -113,7 +113,7 @@ fr: &DEFAULT_FR comments_title : more_label : "Lire plus" related_label : "Vous pourriez aimer" - follow_label : "Suivez moi" + follow_label : "Suivre :" feed_label : "Flux" powered_by : "Propulsé par" website_label : "Site" diff --git a/_includes/author-profile.html b/_includes/author-profile.html index cfbe167..337c151 100644 --- a/_includes/author-profile.html +++ b/_includes/author-profile.html @@ -18,7 +18,8 @@

{{ author.name }}

{% if author.pronouns %}

{{ author.pronouns }}

{% endif %} - {% if author.bio %}

{{ author.bio }}

{% endif %} + {%- assign bio = site.cnet.bio[page.lang] | default: author.bio -%} + {% if bio %}

{{ bio }}

{% endif %}
diff --git a/_includes/ietf-docs.html b/_includes/ietf-docs.html new file mode 100644 index 0000000..6932270 --- /dev/null +++ b/_includes/ietf-docs.html @@ -0,0 +1,22 @@ +{%- comment -%} + IETF documents from _data/ietf.yml, as cards. + Required: include.lang (es|en|fr), include.kind (rfcs|drafts). +{%- endcomment -%} +{%- assign l = include.lang | default: site.default_lang -%} +{%- assign docs = site.data.ietf[include.kind] -%} +
+ {%- for d in docs -%} +
+
{{ d.id }}{% if d.date %} · {{ d.date[l] | default: d.date.en }}{% endif %}
+
{{ d.title }}
+ {%- if d.authors -%}
{{ d.authors | replace: 'J. Alvarez-Hamelin', 'J. Alvarez-Hamelin' }}
{%- endif -%} +
{{ d.status[l] | default: d.status.en }}
+ {%- if d.blurb -%}

{{ d.blurb[l] | default: d.blurb.en }}

{%- endif -%} + +
+ {%- endfor -%} +
diff --git a/_includes/publications-filter.html b/_includes/publications-filter.html index 1539d9c..e66070a 100644 --- a/_includes/publications-filter.html +++ b/_includes/publications-filter.html @@ -5,7 +5,8 @@ - free text over author / title / venue / year; - one topic, from the chips rendered here out of _data/publication_topics.yml (entries carry the matching ids in data-topics, see _layouts/bib_entry.html); - - one person, from chips the script builds out of the most frequent authors. + - one member, from chips the script builds out of the most frequent authors + (labeled "Miembros" / "Members" / "Membres", as the group asked). Deep links: /publications/#topic=latam, #q=Carisimo, or both joined with "&". {%- endcomment -%} {%- assign l = include.lang | default: site.default_lang -%} @@ -13,7 +14,7 @@ {%- assign ph = 'Search by author, title, venue or year…' -%} {%- assign lbl = 'Search publications' -%} {%- assign topics_lbl = 'Topics' -%} - {%- assign by = 'People' -%} + {%- assign by = 'Members' -%} {%- assign clear = 'Clear' -%} {%- assign of = 'of' -%} {%- assign none = 'No publications match.' -%} @@ -21,7 +22,7 @@ {%- assign ph = 'Rechercher par auteur, titre, revue ou année…' -%} {%- assign lbl = 'Rechercher des publications' -%} {%- assign topics_lbl = 'Thèmes' -%} - {%- assign by = 'Personnes' -%} + {%- assign by = 'Membres' -%} {%- assign clear = 'Effacer' -%} {%- assign of = 'sur' -%} {%- assign none = 'Aucune publication ne correspond.' -%} @@ -29,7 +30,7 @@ {%- assign ph = 'Buscar por autor, título, revista o año…' -%} {%- assign lbl = 'Buscar publicaciones' -%} {%- assign topics_lbl = 'Temas' -%} - {%- assign by = 'Personas' -%} + {%- assign by = 'Miembros' -%} {%- assign clear = 'Limpiar' -%} {%- assign of = 'de' -%} {%- assign none = 'Ninguna publicación coincide.' -%} diff --git a/_includes/software-cards.html b/_includes/software-cards.html new file mode 100644 index 0000000..f98c5bc --- /dev/null +++ b/_includes/software-cards.html @@ -0,0 +1,49 @@ +{%- comment -%} + Software page blocks, from _data/software.yml. + Required: include.lang (es|en|fr) and include.part (tools|repos). + Repository cards are SVG pin cards served by github-stats-extended (the same + service as estcarisimo.github.io), in site colors for the light and dark + themes; only the one matching the current theme is shown. If the service is + down, the card falls back to a plain link. The service gets every + visitor's IP address, and an error it returns as HTTP 200 (e.g. a rate-limit + card) will not trigger the fallback; see AGENTS.md. +{%- endcomment -%} +{%- assign l = include.lang | default: site.default_lang -%} +{%- if l == 'en' -%}{%- assign visit = 'Visit' -%} +{%- elsif l == 'fr' -%}{%- assign visit = 'Visiter' -%} +{%- else -%}{%- assign visit = 'Visitar' -%}{%- endif -%} +{%- assign sw = site.data.software -%} + +{%- if include.part == 'tools' -%} +
+ {%- for t in sw.web_tools -%} +
+ +
{{ t.name }}
+

{{ t.blurb[l] | default: t.blurb.en }}

+ {{ visit }} {{ t.name }} +
+ {%- endfor -%} +
+ +{%- elsif include.part == 'repos' -%} +{%- assign api = 'https://github-stats-extended.vercel.app/api/pin/?show_owner=true&disable_animations=true&hide_border=false&locale=' | append: l -%} +{%- assign light = '&bg_color=F4F6FA&title_color=005CB9&text_color=1A2A3D&icon_color=003975&border_color=D6E0EC' -%} +{%- assign dark = '&bg_color=003975&title_color=74ACDF&text_color=FFFFFF&icon_color=74ACDF&border_color=1F4F86' -%} +
+ {%- for r in sw.repos -%} + {%- assign parts = r | split: '/' -%} + {%- assign q = '&username=' | append: parts[0] | append: '&repo=' | append: parts[1] -%} + + {{ r }} (GitHub) + {{ r }} (GitHub) + {{ r }} + + {%- endfor -%} +
+

+ {%- for o in sw.orgs -%} + {{ o.label[l] | default: o.label.en }} + {%- endfor -%} +

+{%- endif -%} diff --git a/_pages/ietf.en.md b/_pages/ietf.en.md new file mode 100644 index 0000000..db8d95a --- /dev/null +++ b/_pages/ietf.en.md @@ -0,0 +1,24 @@ +--- +permalink: /ietf/ +lang: en +title: "IETF and Internet standards" +author_profile: true +--- + +The group contributes to the **IETF** (Internet Engineering Task Force), the open body that develops the technical standards of the Internet, and promotes the participation of the Argentine and Latin American academic community in that process. + +## RFC + +{% include ietf-docs.html kind="rfcs" lang="en" %} + +## Internet-Drafts + +{% include ietf-docs.html kind="drafts" lang="en" %} + +## IETF Day at JAIIO + +**IETF Day** is the Internet Engineering Task Force Argentina workshop at the Argentine Computing Conference (JAIIO), organized by FIUBA, SADIO and that working group, with editions since 2020. It brings Argentine and Latin American researchers into the development of Internet standards. Ignacio Alvarez-Hamelin is one of the chairs of the 2026 edition, together with Gustavo Mercado (UTN FRM) and Marcela Orbiscay (IANIGLA–CONICET), and co-edited the proceedings of the 2022 edition. + + + +More: [Ignacio Alvarez-Hamelin's IETF Datatracker profile]({{ site.data.ietf.datatracker_profile }}) and the [group's publications on IETF standards](/publications/#topic=standards). diff --git a/_pages/ietf.fr.md b/_pages/ietf.fr.md new file mode 100644 index 0000000..e79def3 --- /dev/null +++ b/_pages/ietf.fr.md @@ -0,0 +1,24 @@ +--- +permalink: /ietf/ +lang: fr +title: "IETF et normes d'Internet" +author_profile: true +--- + +Le groupe contribue à l'**IETF** (Internet Engineering Task Force), l'organisme ouvert qui élabore les normes techniques d'Internet, et promeut la participation de la communauté académique argentine et latino-américaine à ce processus. + +## RFC + +{% include ietf-docs.html kind="rfcs" lang="fr" %} + +## Internet-Drafts + +{% include ietf-docs.html kind="drafts" lang="fr" %} + +## IETF Day aux JAIIO + +L'**IETF Day** est l'atelier du groupe de travail argentin de l'Internet Engineering Task Force au sein des Journées argentines d'informatique (JAIIO), organisé par la FIUBA, la SADIO et ce groupe de travail, avec des éditions depuis 2020. Il rapproche les chercheurs argentins et latino-américains de l'élaboration des normes d'Internet. Ignacio Alvarez-Hamelin est l'un des coprésidents de l'édition 2026, avec Gustavo Mercado (UTN FRM) et Marcela Orbiscay (IANIGLA–CONICET), et a coédité les actes de l'édition 2022. + + + +Plus : le [profil d'Ignacio Alvarez-Hamelin sur le Datatracker de l'IETF]({{ site.data.ietf.datatracker_profile }}) et les [publications du groupe sur les normes IETF](/publications/#topic=standards). diff --git a/_pages/ietf.md b/_pages/ietf.md new file mode 100644 index 0000000..d9d8672 --- /dev/null +++ b/_pages/ietf.md @@ -0,0 +1,24 @@ +--- +permalink: /ietf/ +lang: es +title: "IETF y estándares de Internet" +author_profile: true +--- + +El grupo contribuye al **IETF** (Internet Engineering Task Force), el organismo abierto que desarrolla los estándares técnicos de Internet, y promueve la participación de la comunidad académica argentina y latinoamericana en ese proceso. + +## RFC + +{% include ietf-docs.html kind="rfcs" lang="es" %} + +## Internet-Drafts + +{% include ietf-docs.html kind="drafts" lang="es" %} + +## IETF Day en las JAIIO + +El **IETF Day** es el Taller del Grupo de Trabajo de Ingeniería de Internet / Argentina dentro de las Jornadas Argentinas de Informática (JAIIO), que organizan FIUBA, SADIO y ese grupo de trabajo, con ediciones desde 2020. Acerca a investigadores argentinos y latinoamericanos al desarrollo de los estándares de Internet. Ignacio Alvarez-Hamelin es uno de los *chairs* de la edición 2026, junto con Gustavo Mercado (UTN FRM) y Marcela Orbiscay (IANIGLA–CONICET), y coeditó las actas de la edición 2022. + + + +Más: el [perfil de Ignacio Alvarez-Hamelin en el Datatracker del IETF]({{ site.data.ietf.datatracker_profile }}) y las [publicaciones del grupo sobre estándares IETF](/publications/#topic=standards). diff --git a/_pages/software.en.md b/_pages/software.en.md index 978cab1..01b0f7f 100644 --- a/_pages/software.en.md +++ b/_pages/software.en.md @@ -5,16 +5,16 @@ title: "Published software" author_profile: true --- -Tools and software developed by the group: +Tools and software developed by the group. -- **[LaNet-vi](http://lanet-vi.fi.uba.ar/)** — large-network visualization - via *k-core* decomposition - ([code on GitHub](https://github.com/CoNexDat/LaNet-vi) · - [documentation](https://conexdat.github.io/LaNet-vi/)). -- **[I'm Here!](http://lanet-vi.fi.uba.ar/i-am-here)** — interactive - visualization of the Internet topology showing where the user is. -- **[TiX (Traffic information eXchange)](https://github.com/TiX-measurements)** — - a tool to measure the quality of residential Internet access - ([code on GitHub](https://github.com/TiX-measurements)). -- **ANTop** — ad-hoc routing protocol, simulated under - [QUENAS](http://sourceforge.net/projects/quenas). +## Online tools + +{% include software-cards.html part="tools" lang="en" %} + +## Featured repositories + +A selection of our repositories. The rest of the code lives in the group's GitHub organizations. + +{% include software-cards.html part="repos" lang="en" %} + +**TiX** (Traffic information eXchange) measures the quality of residential Internet access; its code lives in the [TiX-measurements](https://github.com/TiX-measurements) organization. LaNet-vi documentation is at [conexdat.github.io/LaNet-vi](https://conexdat.github.io/LaNet-vi/). ANTop, the ad hoc routing protocol, was simulated in [QUENAS](https://sourceforge.net/projects/quenas/). diff --git a/_pages/software.fr.md b/_pages/software.fr.md index 3757370..484a519 100644 --- a/_pages/software.fr.md +++ b/_pages/software.fr.md @@ -5,17 +5,16 @@ title: "Logiciels publiés" author_profile: true --- -Outils et logiciels développés par le groupe : +Outils et logiciels développés par le groupe. -- **[LaNet-vi](http://lanet-vi.fi.uba.ar/)** — visualisation de grands - réseaux par décomposition en *k-cœurs* - ([code sur GitHub](https://github.com/CoNexDat/LaNet-vi) · - [documentation](https://conexdat.github.io/LaNet-vi/)). -- **[I'm Here!](http://lanet-vi.fi.uba.ar/i-am-here)** — visualisation - interactive de la topologie d'Internet, montrant la position de - l'utilisateur. -- **[TiX (Traffic information eXchange)](https://github.com/TiX-measurements)** — - outil de mesure de la qualité d'accès Internet résidentiel - ([code sur GitHub](https://github.com/TiX-measurements)). -- **ANTop** — protocole de routage ad-hoc, simulé sous - [QUENAS](http://sourceforge.net/projects/quenas). +## Outils en ligne + +{% include software-cards.html part="tools" lang="fr" %} + +## Dépôts à la une + +Une sélection de nos dépôts. Le reste du code se trouve dans les organisations GitHub du groupe. + +{% include software-cards.html part="repos" lang="fr" %} + +**TiX** (Traffic information eXchange) mesure la qualité de l'accès résidentiel à Internet ; son code se trouve dans l'organisation [TiX-measurements](https://github.com/TiX-measurements). La documentation de LaNet-vi est sur [conexdat.github.io/LaNet-vi](https://conexdat.github.io/LaNet-vi/). ANTop, le protocole de routage pour réseaux ad hoc, a été simulé sous [QUENAS](https://sourceforge.net/projects/quenas/). diff --git a/_pages/software.md b/_pages/software.md index 5f88271..eaadbc5 100644 --- a/_pages/software.md +++ b/_pages/software.md @@ -5,17 +5,16 @@ title: "Software publicado" author_profile: true --- -Herramientas y software desarrollados por el grupo: +Herramientas y software desarrollados por el grupo. -- **[LaNet-vi](http://lanet-vi.fi.uba.ar/)** — visualización de redes grandes - mediante descomposición en *k-núcleos* - ([código en GitHub](https://github.com/CoNexDat/LaNet-vi) · - [documentación](https://conexdat.github.io/LaNet-vi/)). -- **[I'm Here!](http://lanet-vi.fi.uba.ar/i-am-here)** — visualización - interactiva de la topología de Internet, indicando dónde se encuentra el - usuario. -- **[TiX (Traffic information eXchange)](https://github.com/TiX-measurements)** — - herramienta para medir la calidad del acceso a Internet desde el hogar - ([código en GitHub](https://github.com/TiX-measurements)). -- **ANTop** — protocolo de ruteo para redes ad-hoc, simulado en - [QUENAS](http://sourceforge.net/projects/quenas). +## Herramientas en línea + +{% include software-cards.html part="tools" lang="es" %} + +## Repositorios destacados + +Una selección de nuestros repositorios. El resto del código está en las organizaciones de GitHub del grupo. + +{% include software-cards.html part="repos" lang="es" %} + +**TiX** (Traffic information eXchange) mide la calidad del acceso domiciliario a Internet; su código está en la organización [TiX-measurements](https://github.com/TiX-measurements). La documentación de LaNet-vi está en [conexdat.github.io/LaNet-vi](https://conexdat.github.io/LaNet-vi/). ANTop, el protocolo de ruteo para redes ad hoc, se simuló en [QUENAS](https://sourceforge.net/projects/quenas/). diff --git a/_sass/_conexdat.scss b/_sass/_conexdat.scss index 6ab5911..06edd3f 100644 --- a/_sass/_conexdat.scss +++ b/_sass/_conexdat.scss @@ -87,6 +87,14 @@ html[data-theme="dark"] { background-color: transparent !important; color: #fff !important; } +// The theme paints the hamburger bars with --global-masthead-link-color, which +// is navy in light mode: invisible on the navy masthead, so light-mode visitors +// could not see the button that reveals the collapsed menu items. +.greedy-nav button:not(.close) .navicon, +.greedy-nav button .navicon::before, +.greedy-nav button .navicon::after { + background: #fff; +} .masthead__menu-item { background-color: transparent !important; a, & > a { @@ -519,11 +527,41 @@ html[data-theme="dark"] { } } -// ---- Publications (al-folio-style entry cards via jekyll-scholar) ---------- -// Markup is emitted by _layouts/bib_entry.html. Each entry is a
-// with .title, .author (optionally containing for highlighted authors), -// .periodical, .links (button row), and optional .abstract.hidden / .bibtex.hidden -// blocks toggled by assets/js/publications.js. +// Small outlined buttons used under publications and IETF documents. +@mixin cnet-small-buttons { + // academicpages' base .btn ships with `color: #fff !important` and + // `border: 0 !important` — we have to match that force or buttons render + // as white-on-white. + .btn, + .btn-sm { + display: inline-block; + margin-bottom: 0; + padding: 0.2rem 0.75rem !important; + font-size: 0.78rem !important; + font-weight: 600 !important; + line-height: 1.35 !important; + border: 1.5px solid var(--cnet-navy) !important; + border-radius: 4px !important; + background: #fff !important; + background-color: #fff !important; + color: var(--cnet-navy) !important; + text-decoration: none !important; + cursor: pointer; + box-shadow: 0 1px 0 rgba(0, 57, 117, 0.06); + transition: background-color 0.15s ease, color 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease; + + &:visited { color: var(--cnet-navy) !important; } + &:hover, &:focus, &:active { + background: var(--cnet-navy) !important; + background-color: var(--cnet-navy) !important; + color: #fff !important; + border-color: var(--cnet-navy) !important; + text-decoration: none !important; + box-shadow: 0 2px 6px rgba(0, 57, 117, 0.25); + } + } +} + // ---- Publications filter bar (see _includes/publications-filter.html) ------ .pub-filter { margin: 1rem 0 1.25rem; @@ -674,6 +712,11 @@ html[data-theme="dark"] { .publications li.is-hidden, .publications > .row.is-hidden { display: none; } +// ---- Publications (al-folio-style entry cards via jekyll-scholar) ---------- +// Markup is emitted by _layouts/bib_entry.html. Each entry is a
+// with .title, .author (optionally containing for highlighted authors), +// .periodical, .links (button row), and optional .abstract.hidden / .bibtex.hidden +// blocks toggled by assets/js/publications.js. .publications { margin: 1rem 0 2rem; @@ -750,37 +793,7 @@ html[data-theme="dark"] { gap: 0.55rem; margin-top: 0.55rem; - // academicpages' base .btn ships with `color: #fff !important` and - // `border: 0 !important` — we have to match that force or buttons render - // as white-on-white. - .btn, - .btn-sm { - display: inline-block; - margin-bottom: 0; - padding: 0.2rem 0.75rem !important; - font-size: 0.78rem !important; - font-weight: 600 !important; - line-height: 1.35 !important; - border: 1.5px solid var(--cnet-navy) !important; - border-radius: 4px !important; - background: #fff !important; - background-color: #fff !important; - color: var(--cnet-navy) !important; - text-decoration: none !important; - cursor: pointer; - box-shadow: 0 1px 0 rgba(0, 57, 117, 0.06); - transition: background-color 0.15s ease, color 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease; - - &:visited { color: var(--cnet-navy) !important; } - &:hover, &:focus, &:active { - background: var(--cnet-navy) !important; - background-color: var(--cnet-navy) !important; - color: #fff !important; - border-color: var(--cnet-navy) !important; - text-decoration: none !important; - box-shadow: 0 2px 6px rgba(0, 57, 117, 0.25); - } - } + @include cnet-small-buttons; } .abstract.hidden, @@ -819,7 +832,8 @@ html[data-theme="dark"] { text-decoration-color: var(--cnet-celeste); } .publications .periodical { color: var(--cnet-celeste); } - .publications .links .btn { + .publications .links .btn, + .ietf-doc .links .btn { background: var(--cnet-navy-deep) !important; background-color: var(--cnet-navy-deep) !important; border-color: var(--cnet-celeste) !important; @@ -941,3 +955,148 @@ html[data-theme="dark"] { .btn { margin-right: 0.35rem; margin-bottom: 0; } } } + +// ---- Software page: web-tool cards and repository pin cards ----------------- +// (see _includes/software-cards.html and _data/software.yml) +.tool-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(9.5rem, 1fr)); + gap: 0.9rem; + margin: 1rem 0 1.5rem; +} + +.tool-card { + display: flex; + flex-direction: column; + padding: 1rem; + border: 1px solid var(--cnet-border); + border-radius: 6px; + background: var(--cnet-surface); + + &__icon { + font-size: 1.6em; + color: var(--cnet-navy); + margin-bottom: 0.5rem; + } + + &__name { + font-weight: 700; + margin-bottom: 0.3rem; + } + + &__blurb { + flex: 1; + margin: 0 0 0.8rem; + font-size: 0.85em; + } + + &__link { + align-self: flex-start; + font-size: 0.85em; + font-weight: 600; + text-decoration: none !important; + } +} + +html[data-theme="dark"] .tool-card__icon { color: var(--cnet-celeste); } + +.repo-grid { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(20rem, 1fr)); + gap: 0.9rem; + margin: 1rem 0; +} + +.repo-card { + display: block; + text-decoration: none !important; + border-radius: 6px; + transition: transform 0.15s ease, box-shadow 0.15s ease; + + &:hover, + &:focus-visible { + transform: translateY(-1px); + box-shadow: 0 4px 14px rgba(0, 57, 117, 0.18); + } + + &__img { + display: block; + width: 100%; + height: auto; + } + + // Only the image for the current theme is shown. + &__img--dark { display: none; } + + &__fallback { display: none; } + + // The card service is unreachable: show a plain link instead. + &.is-fallback { + align-self: start; + padding: 0.9rem 1rem; + border: 1px solid var(--cnet-border); + background: var(--cnet-surface); + + .repo-card__img { display: none !important; } + .repo-card__fallback { display: inline; font-weight: 600; } + } +} + +html[data-theme="dark"] .repo-card { + .repo-card__img--light { display: none; } + .repo-card__img--dark { display: block; } +} + +.repo-orgs { + display: flex; + flex-wrap: wrap; + gap: 0.5rem; + margin: 1rem 0 1.5rem; + + .btn { margin: 0; } +} + +// ---- IETF page (see _includes/ietf-docs.html and _data/ietf.yml) ------------ +.ietf-docs { + display: grid; + gap: 0.75rem; + margin: 1rem 0 1.5rem; +} + +.ietf-doc { + padding: 0.9rem 1rem; + border: 1px solid var(--cnet-border); + border-radius: 6px; + background: var(--cnet-surface); + + &__id { + font-size: 0.75em; + font-weight: 600; + letter-spacing: 0.04em; + text-transform: uppercase; + opacity: 0.75; + } + + &__title { font-weight: 700; margin: 0.2rem 0; } + &__authors { font-size: 0.85em; } + &__authors em { font-style: normal; text-decoration: underline; } + &__status { font-size: 0.85em; font-style: italic; margin-top: 0.2rem; } + &__blurb { font-size: 0.9em; margin: 0.5rem 0; } + + .links { + display: flex; + flex-wrap: wrap; + gap: 0.55rem; + margin-top: 0.55rem; + + @include cnet-small-buttons; + } +} + +.ietf-links { + display: flex; + flex-wrap: wrap; + gap: 0.5rem; + + .btn { margin: 0; } +}