+ {% if site.title == 'blank' %} + {{ site.first_name }} {{ site.middle_name }} + {{ site.last_name }} + {% else %} + {{ site.title }} + {% endif %} +
+{{ page.subtitle }}
+| + {% if date %} + {{ date }} + {% endif %} + | +
|
+ {{ location }} + |
+
' | remove: '
' }} +| + {% if date %} + {{ date }} + {% endif %} + | +
|
+ {{ location }} + |
+
' | remove: '
' }} + + {% endif %} + + {% if entry.highlights %} +' | remove: '
' }} +{{ page.subtitle }}
+
- Master of Public Policy (MPP) candidate at The University of Chicago
- jballesteros [at] uchicago.edu -{{ project.description }}
+ + {% if project.github %} + code + {% endif %} +Nothing here yet.
+{% endif %} + +{% if page.pagination.enabled %} +{% include pagination.liquid %} +{% endif %} diff --git a/_projects/1_datacol.md b/_projects/1_datacol.md new file mode 100644 index 0000000..fd14420 --- /dev/null +++ b/_projects/1_datacol.md @@ -0,0 +1,20 @@ +--- +layout: page +title: DataCol +description: Open-data platform for real-time COVID-19 monitoring in Colima, Mexico +timeframe: 2020–2021 +github: https://github.com/jballesterosc/datacol_backup/tree/main/_backup +importance: 5 +category: personal +related_publications: false +--- + +A personal project to scrape and analyze data from COVID-19 reports in Colima, Mexico. The work involved data cleaning, visualization, and descriptive statistics to better understand the spread and impact of the virus across the state. + +A key milestone was receiving an award from the state government to support the development of a web application that visualized the data and provided real-time updates to the public. The final outcome was the full handover of the application to the Ministry of Health of Colima. + +Another takeaway is that I built this platform in the pre-ChatGPT era, so most of the code was written from scratch. This significantly strengthened my Python skills and my understanding of data analysis workflows. + +View the code on GitHub + + diff --git a/_projects/3_desaparecidosmx.md b/_projects/3_desaparecidosmx.md new file mode 100644 index 0000000..6a98e0b --- /dev/null +++ b/_projects/3_desaparecidosmx.md @@ -0,0 +1,15 @@ +--- +layout: page +title: DesaparecidosMX +description: Mexico's national missing-persons registry, turned into clean monthly CSVs by entity, category, sex, and municipality +timeframe: 2025–present +redirect: https://desaparecidosmx.streamlit.app/ +github: https://github.com/jballesterosc/desaparecidosmx +importance: 3 +category: personal +related_publications: false +--- + +Transforms Mexico's national missing-persons registry into clean, monthly CSVs disaggregated by entity, category, sex, and municipality. + +Dashboard · Code diff --git a/_projects/4_observatorio-delictivo.md b/_projects/4_observatorio-delictivo.md new file mode 100644 index 0000000..bfcf4fa --- /dev/null +++ b/_projects/4_observatorio-delictivo.md @@ -0,0 +1,15 @@ +--- +layout: page +title: Observatorio Delictivo +description: Open pipeline tracking crime incidence, victimization, and security perception across Mexico +timeframe: 2026–present +redirect: https://github.com/jballesterosc/observatorio-delictivo-mx +github: https://github.com/jballesterosc/observatorio-delictivo-mx +importance: 1 +category: personal +related_publications: false +--- + +An open pipeline tracking crime incidence, victimization, and security perception across Mexico with standardized population rates. + +Code diff --git a/_projects/5_politica-meta.md b/_projects/5_politica-meta.md new file mode 100644 index 0000000..e7f0e33 --- /dev/null +++ b/_projects/5_politica-meta.md @@ -0,0 +1,15 @@ +--- +layout: page +title: Política Meta +description: Political ad spend on Facebook and Instagram in Mexico, aggregated by page, state, and month +timeframe: 2022–present +redirect: https://github.com/umbralmx/politica-meta +github: https://github.com/umbralmx/politica-meta +importance: 4 +category: personal +related_publications: false +--- + +Analyzes political ad spending on Facebook and Instagram in Mexico, aggregated by page, state, and month. + +Code diff --git a/_projects/6_cabildo-libre.md b/_projects/6_cabildo-libre.md new file mode 100644 index 0000000..23a0332 --- /dev/null +++ b/_projects/6_cabildo-libre.md @@ -0,0 +1,15 @@ +--- +layout: page +title: Cabildo Libre +description: Searchable archive of Colima's municipal council minutes — 636 sessions, 2012–2026 +timeframe: 2026–present +redirect: https://umbralmx.github.io/cabildo-libre/ +github: https://github.com/umbralmx/cabildo-libre +importance: 2 +category: personal +related_publications: false +--- + +A searchable archive of Colima municipal council minutes: 636 sessions spanning 2012–2026. + +Search tool · Code diff --git a/_sass/_custom.scss b/_sass/_custom.scss new file mode 100644 index 0000000..bbe00e4 --- /dev/null +++ b/_sass/_custom.scss @@ -0,0 +1,245 @@ +/******************************************************************************* + * Custom overrides layered on top of al_folio_core + * + * - Typography: serif for body/prose (Newsreader), monospace for nav/UI + * chrome and dates (IBM Plex Mono). Smaller base size everywhere. + * - Flatter, more minimal surfaces: no card borders/shadows. + * - Smaller footer/copyright text, smaller social icons. + * - Minimal "writing" list (date + title only, no cards). + * + * This file is unlayered plain CSS output (not inside a Tailwind @layer), + * so it wins over assets/css/tailwind.css's `@layer base` rules regardless + * of load order. + ******************************************************************************/ + +@import url("https://fonts.googleapis.com/css2?family=Newsreader:ital,wght@0,400;0,500;0,600;0,700;1,400&family=IBM+Plex+Mono:wght@400;500;600&display=swap"); + +$serif: "Newsreader", Georgia, "Times New Roman", Times, serif; +$mono: "IBM Plex Mono", SFMono-Regular, Consolas, "Liberation Mono", monospace; + +html { + font-size: 14px; +} + +body { + font-family: $serif; +} + +.navbar-brand, +.nav-link, +.badge, +.btn, +code, +pre, +kbd, +.periodical, +.search-input, +input, +button, +footer, +footer a { + font-family: $mono; +} + +/* Flatten cards: no border, no drop shadow */ +.card { + box-shadow: none; + border: none; + border-radius: 0; +} + +/* al_folio_cv's own SCSS sets `.cv .card { border: 1px solid ... }`, which + is more specific than the generic `.card` rule above, so it needs its + own override — same for the divider lines between list entries. */ +.cv .card { + border: none; +} + +.cv .card .list-group-item { + border-color: transparent; +} + +/* al_folio_core's generic `table:not(.table) td { border-top: ... }` rule + (_typography.scss) leaks into the CV's date/location table. */ +.date-column .table-cv td { + border-top: none; +} + +/* The CV's `