diff --git a/_data/chapters.json b/_data/chapters.json index cdabfab92..0249e7e3a 100644 --- a/_data/chapters.json +++ b/_data/chapters.json @@ -6480,13 +6480,13 @@ "meetings": 0 }, { - "name": "Lahore", + "name": "OWASP LAHORE", "url": "https://owasp.org/www-chapter-lahore/", "created": "2021-09-15", "updated": "2021-10-27", "build": "built", "codeurl": "https://github.com/OWASP/www-chapter-lahore", - "title": "OWASP Lahore", + "title": "OWASP LAHORE", "level": "-1", "type": "", "region": "Asia", diff --git a/_posts/2026-04-21-owasp-lahore-event-wrapup.md b/_posts/2026-04-21-owasp-lahore-event-wrapup.md new file mode 100644 index 000000000..e74db4ec7 --- /dev/null +++ b/_posts/2026-04-21-owasp-lahore-event-wrapup.md @@ -0,0 +1,51 @@ +--- + +date: 2026-04-21 00:00:00-0500 +categories: blog +author: OWASP LAHORE Chapter +layout: blogpost +title: "OWASP LAHORE: Last Event Wrap-Up - 300+ Participants and Counting" +excerpt_separator: + +--- + +OWASP LAHORE's most recent chapter event went smoothly and drew more than 300 participants - our largest turnout to date. From students to industry veterans, attendees filled every seat for an evening of keynotes, panel discussions, and networking focused on modern application security and AI safety. + + + +### Event Highlights + +The event featured prominent speakers discussing critical topics: + +- **AI Security Summit 2026** — Celebrating 25 years of OWASP with industry leaders (featured speaker on stage) +- **AI in Cybersecurity** — Exploring opportunity, risk, and responsibility across three panel discussions +- **Genai.AgentiCal** — Panel addressing evolving threats in AI agent security +- **300+ Security Leaders** — One critical conversation bringing together the Lahore security community + +### Speakers & Panelists + +Our event brought together security researchers, enterprise leaders, government officials, and technologists. Speakers shared their expertise on: + +- OWASP Top 10 and secure coding practices +- DevSecOps and threat modeling in production environments +- AI safety, AI security, and emerging threats +- Career opportunities and skill development in cybersecurity + +### Attendee Impact + +- **300+ participants** including students, professionals, CISOs, and security researchers +- Diverse demographic representation (including strong participation from women in security) +- Attendees ranged from junior developers to senior leadership +- High engagement during Q&A and networking sessions + +### Sponsors & Partners + +Special thanks to **Tkxel** and other sponsors who made this large-scale event possible. + +### What's Next + +We are already planning our next gathering with expanded workshop tracks and hands-on labs. If you would like to **sponsor**, **support an upcoming event**, or **collaborate** with OWASP LAHORE, please use our new request form: + +**[Submit a Sponsorship / Collaboration Request](/owasp-lahore-request/)** + +Stay tuned for the agenda and dates of our next event — and follow [OWASP LAHORE](https://owasp.org/www-chapter-lahore/) for updates! diff --git a/assets/images/content/owasp-lahore/README.md b/assets/images/content/owasp-lahore/README.md new file mode 100644 index 000000000..22bb2786a --- /dev/null +++ b/assets/images/content/owasp-lahore/README.md @@ -0,0 +1,32 @@ +# OWASP LAHORE Hero Image Assets + +The homepage (`/index.md`) uses `owasp-lahore-hero.jpg` from this folder as +its hero background. That final image is produced by stitching the two +event photos together. + +## Files expected here + +| File | Description | +|---------------------------|------------------------------------------------------------------| +| `OWASP-6.jpg` | LEFT half — "Global Expertise. Stronger Together." group photo | +| `OWASP-7.jpg` | RIGHT half — group photo with OWASP LAHORE + tkxel logos | +| `owasp-lahore-hero.jpg` | GENERATED — combined side-by-side panoramic hero | +| `combine_hero.py` | Script that produces `owasp-lahore-hero.jpg` from the two halves | + +## How to generate the hero image + +1. Save the two source photos as `OWASP-6.jpg` and `OWASP-7.jpg` in this + directory (`assets/images/content/owasp-lahore/`). +2. Run: + + ```bash + cd assets/images/content/owasp-lahore + python3 combine_hero.py + ``` + + (Requires `Pillow`: `pip3 install Pillow` if it is not installed.) + +3. Commit all three files (`OWASP-6.jpg`, `OWASP-7.jpg`, + `owasp-lahore-hero.jpg`) and push. + +The homepage will render the combined image as a full-width background. diff --git a/assets/images/content/owasp-lahore/combine_hero.py b/assets/images/content/owasp-lahore/combine_hero.py new file mode 100644 index 000000000..546a32c29 --- /dev/null +++ b/assets/images/content/owasp-lahore/combine_hero.py @@ -0,0 +1,52 @@ +#!/usr/bin/env python3 +""" +Combine OWASP-6.jpg and OWASP-7.jpg into a single panoramic hero image. + +Expected input files (place in the same directory as this script): + - OWASP-6.jpg -> LEFT half ("Global Expertise. Stronger Together.") + - OWASP-7.jpg -> RIGHT half (group photo with OWASP LAHORE + tkxel logos) + +Output: + - owasp-lahore-hero.jpg (side-by-side, same height) + +Usage: + cd assets/images/content/owasp-lahore + python3 combine_hero.py +""" +from pathlib import Path +from PIL import Image + +HERE = Path(__file__).parent +LEFT = HERE / "OWASP-6.jpg" +RIGHT = HERE / "OWASP-7.jpg" +OUT = HERE / "owasp-lahore-hero.jpg" + + +def main() -> None: + if not LEFT.exists() or not RIGHT.exists(): + missing = [str(p) for p in (LEFT, RIGHT) if not p.exists()] + raise SystemExit(f"Missing input file(s): {missing}") + + left = Image.open(LEFT).convert("RGB") + right = Image.open(RIGHT).convert("RGB") + + target_height = min(left.height, right.height) + + def resize_to_height(img: Image.Image, h: int) -> Image.Image: + if img.height == h: + return img + new_width = int(img.width * (h / img.height)) + return img.resize((new_width, h), Image.LANCZOS) + + left = resize_to_height(left, target_height) + right = resize_to_height(right, target_height) + + combined = Image.new("RGB", (left.width + right.width, target_height)) + combined.paste(left, (0, 0)) + combined.paste(right, (left.width, 0)) + combined.save(OUT, "JPEG", quality=90, optimize=True) + print(f"Wrote {OUT} ({combined.size[0]}x{combined.size[1]})") + + +if __name__ == "__main__": + main() diff --git a/index.md b/index.md index f6953d9e7..2bfd42a60 100644 --- a/index.md +++ b/index.md @@ -15,8 +15,8 @@ spnews: False -