Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
102 changes: 102 additions & 0 deletions .claude/skills/new-post/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
---
name: oxidar:new-post
description: Create a new blog post for the Oxidar.org website. Use this skill whenever the user wants to write, draft, create, or start a new post, article, entrada, publicación, or content for the Oxidar blog — even if they just say "write a post about X" or "quiero escribir sobre Y". Also drafts social media content (Twitter/X, LinkedIn, Bluesky, Telegram) for the post.
---

# New Post for Oxidar.org

You are helping create a new Spanish-language blog post for Oxidar.org, the Latin American Rust community website.

## What you need upfront

The user should provide the **topic/title** of the post. If they haven't, ask for it before proceeding.

## Step 1 — Create the file

### Folder and filename

Use this pattern:
```
content/posts/YYYY.MM.DD-slug/slug.md
```

- Use today's date
- `slug` = short lowercase kebab-case derived from the topic (Spanish or English is fine, keep it short)
- The filename inside the folder matches the slug

**Example**: topic "Cómo usar Axum" → `content/posts/2026.04.19-axum/axum.md`

### Front matter (TOML)

```toml
+++
date = 'YYYY-MM-DDTHH:00:00-03:00'
draft = true
hiddenFromHomePage = false
title = 'Post title in Spanish'
description = "One-sentence SEO description in Spanish"
tags = ["rust", "relevant-tag"]
categories = ["CategoryName"]
translationKey = "slug"
+++
```

**Notes:**
- Start as `draft = true` — the user will flip it when ready to publish
- `translationKey` = the slug (enables pairing with future `.en.md` translation)
- Pick tags from common ones: `rust`, `webassembly`, `wasm`, `tutorial`, `presentacion`, `hackathon`, `juegos`, or add new relevant ones
- Pick categories: `Proyectos`, `Eventos`, `Tutoriales`, `Comunidad`, `Hackathons`

## Step 2 — Draft the content

Write a solid first draft of the post body in **Spanish**. Structure it naturally for the topic — don't force headers if it doesn't need them. The tone is educational, collaborative, and community-focused, aimed at Latin American Rust developers of all levels.

Good posts at Oxidar:
- Start with an engaging hook
- Explain *why* this matters to the Rust / LatAm community
- Include code snippets when relevant (use fenced code blocks with language hint)
- End with a call to action or community invitation

## Step 3 — Draft social media content

After the file is created, generate platform-specific posts **in Spanish** announcing the article. Tailor each to the platform's style and character limits:

| Platform | Tone | Max length | Notes |
|----------|------|-----------|-------|
| Twitter/X | Punchy, hook-first | ~280 chars | Include relevant hashtags: #Rust #RustLang #RustES |
| LinkedIn | Professional, more context | ~600 chars | No hashtag overload, 2-3 max |
| Bluesky | Conversational, community feel | ~300 chars | Hashtags optional |
| Telegram | Warm, direct announcement | ~400 chars | Can use emoji, no hashtag needed |

Present each draft in a labeled code block so the user can copy/edit easily:

```
### 🐦 Twitter/X
```
[text here]
```

### 💼 LinkedIn
```
[text here]
```

### 🦋 Bluesky
```
[text here]
```

### 📢 Telegram
```
[text here]
```
```

Use a placeholder `[URL]` where the post URL should go — the user will have it once published. The URL pattern is `https://oxidar.org/slug/`.

## Step 4 — Tell the user what's next

Remind them:
1. The post is saved as `draft = true` — set to `false` when ready to publish
2. The auto-translation workflow will create `slug.en.md` automatically when they open a PR
3. The social media posts above can be used manually or will also be auto-generated by the `social-share` workflow on merge
80 changes: 80 additions & 0 deletions content/posts/2026.04.19-snakear-recap/snakear-recap.en.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
+++
date = '2026-04-19T12:00:00-03:00'
hiddenFromHomePage = false
title = "We did it! The Snakear Hackathon was a success"
description = "Chronicle of the Distributed Snake Challenge: over 40 Rustaceans gathered in Buenos Aires to hack, compete, and put a server to the test that didn’t go down even once."
tags = ["rust", "hackathon", "games", "community", "events"]
categories = ["Events", "Community", "Hackathons"]
translationKey = "snakear-recap"
+++
<img src="/images/posts/snakear-recap/grupo.jpg" alt="The Oxidar community gathered at the Snakear Hackathon" style="width:100%; margin: 20px auto; display: block;">

On April 11th, more than **40 rustaceans** met at Torres Catalinas, in the heart of Retiro, for a day that still brings smiles to our faces. With 113 registered participants, the **Distributed Snake Challenge** became the largest event by Oxidar.org to date — 30 in person, 10 connected online, and zero panics in production.

## The challenge: your snake against the world

The premise was simple and ruthless: connect to our shared server and build the most competitive Snake client possible using Rust. The board was the same for everyone. Ticks, global state, and latency were the enemies.

Freedom was total — Bevy, SDL2, Ratatui, or a raw terminal. What mattered was how your snake survived in an environment where everyone wanted to eat the same apple.

<img src="/images/posts/snakear-recap/juego-accion.jpg" alt="The shared board in action during the hackathon" style="width:100%; margin: 20px auto; display: block;">

## The (controlled) chaos we didn’t expect

The best part of the event wasn’t what we planned — it was what people improvised on the fly.

Participants didn’t just compete: they **tried to hack the server**. They sent malformed requests, looked for exploits in the protocol, tested edge cases we hadn’t even imagined. The competitive atmosphere naturally evolved into something much more interesting: a network of creative adversaries trying to break the system’s rules.

<img src="/images/posts/snakear-recap/hackeando.jpg" alt="Participants fully engaged in hacking mode" style="width:100%; margin: 20px auto; display: block;">

On our side, we found ourselves **improving the server in real time** to respond to their attacks. An attack-and-defense loop that kept the Oxidar team running all day. The result: the server held strong. No downtime. Not a single one.

<img src="/images/posts/snakear-recap/juego-accion.jpg" alt="The Snake game with the leaderboard on screen" style="width:100%; margin: 20px auto; display: block;">

## The winners

### 🧠 Rust Quiz

<!-- TODO: complete with the quiz winner’s name -->
The Rust quiz at noon had its own champion: **Gaby**, who proved that the *Book* alone is not enough — you really have to have suffered the borrow checker.

<img src="/images/posts/snakear-recap/quiz.jpg" alt="The Rust quiz winners from Oxidar" style="width:100%; margin: 20px auto; display: block;">

### 🏆 Hackathon

<!-- TODO: complete with the hackathon winner’s name/team -->
**ClaudIA** took first place in the hackathon with an implementation that stood out for analyzing other competitors’ strategies and using them to her advantage.

<img src="/images/posts/snakear-recap/ganadores-hackathon.jpg" alt="The hackathon winners with prizes from Input Output" style="width:100%; margin: 20px auto; display: block;">

<img src="/images/posts/snakear-recap/premios.jpg" alt="Prizes awarded by TxPipe and Input Output Global" style="width:100%; margin: 20px auto; display: block;">

<img src="/images/posts/snakear-recap/remera.jpg" alt="One of the Oxidar.org T-shirts taken by the winners" style="width:100%; margin: 20px auto; display: block;">

## The team that made it possible

None of this would have happened without the effort of the people behind Oxidar.org, and the crucial support of our sponsors.

<img src="/images/posts/snakear-recap/equipo-oxidar.jpg" alt="The Oxidar.org team" style="width:100%; margin: 20px auto; display: block;">

<img src="/images/posts/snakear-recap/hernan.jpg" alt="Hernan from Oxidar.org during the event" style="width:100%; margin: 20px auto; display: block;">

<img src="/images/posts/snakear-recap/organizadores.jpg" alt="The organizers presenting the challenge" style="width:100%; margin: 20px auto; display: block;">

Thanks to **TxPipe** and **Input Output Global** for the prizes, the space, and believing in the Rust community in Latin America. Without their support, this wouldn’t exist.

<img src="/images/posts/snakear-recap/presentacion.jpg" alt="Hackathon presentation to the participants" style="width:100%; margin: 20px auto; display: block;">

## What we took away

Beyond the winners and the code, what we take away is this: a community that grows, learns together, and has fun breaking things in Rust.

It was the most ambitious event we’ve organized, and it went well. That gives us energy to keep going.

Enjoy all the [photos](https://iog.pixieset.com/iog/) from the event, thanks to our hosts!

---

**Were you there? Tell us about your experience on our [Telegram](https://t.me/+7PgAQVPclxIzOGQ0) or write to us at [admin@oxidar.org](mailto:admin@oxidar.org).**

**See you at the next hackathon!** 🦀
81 changes: 81 additions & 0 deletions content/posts/2026.04.19-snakear-recap/snakear-recap.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
+++
date = '2026-04-19T12:00:00-03:00'
hiddenFromHomePage = false
title = '¡Lo logramos! El Hackathon Snakear fue un éxito'
description = "Crónica del Distributed Snake Challenge: más de 40 rustáceos se juntaron en Buenos Aires para hackear, competir, y poner a prueba un servidor que no cayó ni una sola vez."
tags = ["rust", "hackathon", "juegos", "comunidad", "eventos"]
categories = ["Eventos", "Comunidad", "Hackathons"]
translationKey = "snakear-recap"
+++

<img src="/images/posts/snakear-recap/grupo.jpg" alt="La comunidad Oxidar reunida en el Hackathon Snakear" style="width:100%; margin: 20px auto; display: block;">

El 11 de abril, más de **40 rustáceos** nos encontramos en Torres Catalinas, en el corazón de Retiro, para vivir una jornada que todavía nos genera sonrisas. Con 113 registrados, el **Distributed Snake Challenge** se convirtió en el evento más grande de Oxidar.org hasta el momento — 30 presenciales, 10 conectados en línea, y cero panics en producción.

## El desafío: tu serpiente contra el mundo

La premisa era simple y despiadada: conectarse a nuestro servidor compartido y construir el cliente de Snake más competitivo posible usando Rust. El tablero era el mismo para todos. Los ticks, el estado global, y la latencia eran el enemigo.

La libertad era total — Bevy, SDL2, Ratatui, o una terminal cruda. Lo que importaba era cómo tu serpiente sobrevivía en un entorno donde todos querían comer la misma manzana.

<img src="/images/posts/snakear-recap/juego-accion.jpg" alt="El tablero compartido en acción durante el hackathon" style="width:100%; margin: 20px auto; display: block;">

## El caos (controlado) que no esperábamos

Lo mejor del evento no fue lo que planeamos — fue lo que la gente inventó sobre la marcha.

Los participantes no solo compitieron: **intentaron hackear el servidor**. Mandaron requests malformados, buscaron exploits en el protocolo, probaron condiciones de borde que nosotros ni habíamos imaginado. El ambiente competitivo derivó naturalmente en algo mucho más interesante: una red de adversarios creativos tratando de romper las reglas del sistema.

<img src="/images/posts/snakear-recap/hackeando.jpg" alt="Participantes en pleno modo hackeo" style="width:100%; margin: 20px auto; display: block;">

Nosotros, del otro lado, nos encontramos **mejorando el servidor en tiempo real** para responder a sus ataques. Un loop de ataque y defensa que mantuvo al equipo de Oxidar corriendo todo el día. El resultado: el servidor aguantó todo. No hubo downtime. Ni uno solo.

<img src="/images/posts/snakear-recap/juego-accion.jpg" alt="El Snake game con el leaderboard en pantalla" style="width:100%; margin: 20px auto; display: block;">

## Los ganadores

### 🧠 Quiz de Rust

<!-- TODO: completar con nombre del ganador del quiz -->
El quiz de Rust del mediodía tuvo su propio campeón: **Gaby**, que demostró que el *Book* no alcanza — hay que haber sufrido el borrow checker de verdad.

<img src="/images/posts/snakear-recap/quiz.jpg" alt="Los ganadores del Quiz de Oxidar" style="width:100%; margin: 20px auto; display: block;">

### 🏆 Hackathon

<!-- TODO: completar con nombre/equipo ganador del hackathon -->
**ClaudIA** se llevó el primer puesto del hackathon con una implementación que se destacó por analizar la estrategia de los demás competidoes y usarlo a su favor.

<img src="/images/posts/snakear-recap/ganadores-hackathon.jpg" alt="Los ganadores del hackathon con los premios de Input Output" style="width:100%; margin: 20px auto; display: block;">

<img src="/images/posts/snakear-recap/premios.jpg" alt="Premios entregados por TxPipe e Input Output Global" style="width:100%; margin: 20px auto; display: block;">

<img src="/images/posts/snakear-recap/remera.jpg" alt="Una de las remeras Oxidar.org que se llevaron los ganadores" style="width:100%; margin: 20px auto; display: block;">

## El equipo que lo hizo posible

Nada de esto hubiera pasado sin el esfuerzo de las personas detrás de Oxidar.org, y el apoyo fundamental de nuestros sponsors.

<img src="/images/posts/snakear-recap/equipo-oxidar.jpg" alt="El equipo de Oxidar.org" style="width:100%; margin: 20px auto; display: block;">

<img src="/images/posts/snakear-recap/hernan.jpg" alt="Hernan de Oxidar.org durante el evento" style="width:100%; margin: 20px auto; display: block;">

<img src="/images/posts/snakear-recap/organizadores.jpg" alt="Los organizadores presentando el desafío" style="width:100%; margin: 20px auto; display: block;">

Gracias a **TxPipe** e **Input Output Global** por los premios, el espacio, y creer en la comunidad Rust de Latinoamérica. Sin su apoyo esto no existiría.

<img src="/images/posts/snakear-recap/presentacion.jpg" alt="Presentación del hackathon ante los participantes" style="width:100%; margin: 20px auto; display: block;">

## Lo que nos quedó

Más allá de los ganadores y el código, lo que nos llevamos es esto: una comunidad que crece, que aprende junta, y que se divierte rompiendo cosas en Rust.

Fue el evento más ambicioso que organizamos, y salió bien. Eso nos da energía para seguir.

Distruta de todas las [fotos](https://iog.pixieset.com/iog/) del evento, gracias a nuestros hosts!

---

**¿Estuviste ahí? Contanos tu experiencia en nuestro [Telegram](https://t.me/+7PgAQVPclxIzOGQ0) o escribinos a [admin@oxidar.org](mailto:admin@oxidar.org).**

**¡Hasta el próximo hackathon!** 🦀
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added static/images/posts/snakear-recap/grupo.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added static/images/posts/snakear-recap/hackeando.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added static/images/posts/snakear-recap/hernan.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added static/images/posts/snakear-recap/premios.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added static/images/posts/snakear-recap/quiz.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added static/images/posts/snakear-recap/remera.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.