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
195 changes: 167 additions & 28 deletions app/(default)/talks/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -13,25 +13,116 @@ const CATEGORY_DESCRIPTIONS = {
const TALKS_DATA = [
{
id: "talk-1",
name: "PB Team",
title: "Front row to open source innovation",
date: "September 2025",
conference: "IndiaFOSS 2025",
location: "@DSCE",
name: "Ashutosh Pandey",
title:
"Security-Aware Prompting Alone Does Not prevent Crashes in LLM-Generated C Code",
date: "December 2025",
conference: "FSTTCS Conference",
location: "@Bits Pilani, K K Birla Campus",
description:
"Point Blank juniors had the incredible opportunity to volunteer at FOSS United’s IndiaFOSS, one of India’s largest open-source tech conferences. They observed real-time operations, interacted with open-source leaders, and gained valuable insights from mentors like Dr. Kailash Nadh and Chad Whitacre. This hands-on experience strengthened Point Blank’s vision of building impactful open-source communities and inspired juniors to imagine and organize meaningful tech events of their own.",
"At the CSS Workshop co-located with the FSTTCS Conference in Goa, Ashutosh Pandey presented an experimental investigation into the reliability of LLM-generated C code. The talk demonstrated that security-aware prompting alone does not consistently prevent crashes or unsafe behaviors, and analyzed how factors such as prompt structure, example guidance, temperature, and programming language choice influence model failure patterns. The presentation highlighted deeper concerns around robustness, evaluation methodology, and the limits of prompt-based safeguards in safety-critical code generation contexts.",
type: "Talks",
links: [
{
label: "See post",
url: "https://www.linkedin.com/posts/ashupdsce_iarcs-fsttcs-compilers-activity-7425917422446186497-b89f?utm_source=share&utm_medium=member_desktop&rcm=ACoAAGBiLHYBtbgKjG7JauXMP3ngSHikCXqHbBo",
},
],
},
{
id: "talk-2",
name: "Kamini Banait, Madhur Kumar, Prajwal KP",
title:
"Comparative Analysis of Intermediate Representations for Security Tasks",
date: "December 2025",
conference: "FSTTCS Conference",
location: "@Bits Pilani, K K Birla Campus",
description:
"During the CSS Workshop at the FSTTCS Conference, Kamini Banait, Madhur Kumar, and Prajwal K P delivered a research-focused talk exploring the behavior and analytical consequences of intermediate representations generated by tools like Ghidra and P-code. The session dissected structural and semantic variations across IRs, discussed their relevance to binary analysis and lifting accuracy, and reflected on the complexities of translating machine-level constructs into analyzable abstractions. Their work sparked technical discussions on correctness, abstraction fidelity, and security analysis strategies.",
type: "Talks",
links: [],
},
{
id: "talk-3",
name: "Pratik Singh",
title: "Terraform Terrors Tamed: A GitOps Tale with KCL Magic",
date: "April 2025",
conference: "DevOpsDays Geneva",
location: "@Geneva, Switzerland",
description:
"Pratik Singh delivered a practical session on transforming common Terraform pitfalls into robust, policy-compliant Infrastructure as Code using GitOps and KCL (Kubernetes Configuration Language). He walked through how teams can leverage KCL to validate Terraform plans against organizational policies early in the development lifecycle, enforce least-privilege resource definitions, and prevent misconfigurations that lead to security or compliance issues. The talk emphasized integrating this validation into GitOps workflows to automate error detection, improve governance, and increase confidence in IaC deployments.",
type: "Talks",
links: [
{
label: "Watch Recording",
url: "https://youtu.be/Ua61L_KfNBA?si=BppseNtIyZZtPcs0",
},
{
label: "See post",
url: "https://www.linkedin.com/posts/kitarp29_devopsdaysgeneva-devops-terraform-activity-7339996354502397952-aHUT?utm_source=share&utm_medium=member_desktop&rcm=ACoAAGBiLHYBtbgKjG7JauXMP3ngSHikCXqHbBo",
},
],
},
{
id: "talk-4",
name: "Pratik Singh",
title: "The Future of CI/CD: Continuous Code Quality using AI",
date: "April 2025",
conference: "FOSSASIA Summit 2025",
location: "@Bangkok",
description:
"Pratik Singh spoke about the evolving landscape of CI/CD where continuous code quality becomes a core focus, especially with AI becoming an integral part of developer toolchains. He explored how modern CI/CD pipelines can integrate automated AI-driven quality checks — from intelligent code suggestions and static analysis to vulnerability detection and test automation — to improve software reliability and reduce manual QA overhead. Singh highlighted the challenges and opportunities of combining AI with traditional DevOps practices to create feedback-rich, quality-centric deployment workflows.",
type: "Talks",
links: [
{
label: "Watch Recording",
url: "https://youtu.be/tAWS_3PINuU?si=vz9bCFR37GWR8MVU",
},
{
label: "See post",
url: "https://www.linkedin.com/posts/kitarp29_fossasiasummit2025-cicd-ai-activity-7306920911675265024-aN6a?utm_source=share&utm_medium=member_desktop&rcm=ACoAAGBiLHYBtbgKjG7JauXMP3ngSHikCXqHbBo",
},
],
},
{
id: "talk-5",
name: "Pratik Singh",
title:
"Ease the Pain of Platform Engineers with Argo CD by Leveraging Kustomize Templates",
date: "April 2024",
conference: "GitOps Con",
location: "@GitOpsCon North America",
description:
"Pratik Singh delivered a talk on reducing the operational burden of platform engineers by leveraging Argo CD together with reusable Kustomize templates. He outlined how template-driven configuration can cut down on repetitive YAML creation and how combining this with Argo CD’s GitOps model allows teams to standardize application deployments while enabling self-service onboarding. The session explained the role of App Project RBAC in empowering developers to customize and deploy applications independently, improving consistency, productivity, and predictability across Kubernetes deployment workflows.",
type: "Talks",
links: [
{
label: "Watch Recording",
url: "https://youtu.be/kp4XOShQWSU?si=N6eK0_z2eEpTFqMo",
},
{
label: "See post",
url: "https://www.linkedin.com/posts/kitarp29_gitopscon-kubernetes-argocd-activity-7185986291442843649-B432?utm_source=share&utm_medium=member_desktop&rcm=ACoAAGBiLHYBtbgKjG7JauXMP3ngSHikCXqHbBo",
},
],
},

{
id: "talk-6",
name: "Ashutosh Pandey",
title: "Innovations in Compiler Technology (IICT) Workshop",
date: "28 September 2025",
conference: "IICT",
location: "@IISc Bangalore",
title: "IndiaFOSS: Scaling a niche community to 1900 and beyond!",
date: "October 2024",
conference: "IndiaFOSS 2024",
location: "@Bengaluru",
description:
"The IICT workshop, hosted at IISc Bangalore on 28–29 September 2025, brought together researchers and practitioners in compiler technologies. Point Blank actively volunteered in executing the event - supporting coordination, assisting speakers, and ensuring smooth operations throughout the workshop. Their contribution added to the event’s success while exposing juniors to cutting-edge research and real-world tech collaboration.",
type: "Conferences",
"Ashutosh Pandey delivered an engaging session on growing a specialized tech community around compilers, programming languages, and systems from small beginnings to nearly 2000 engaged members. He shared strategies for community building, including regular meetups, active collaboration, inclusive engagement practices, and leveraging online platforms to sustain momentum. Through real-world anecdotes and lessons learned, the talk highlighted how consistency, clear purpose, and supportive environments can help scale niche technical communities effectively, inspiring contributors to connect, learn, and grow together.",
type: "Talks",
links: [
{
label: "Watch Recording",
url: "https://youtu.be/wegPULgNDWI?si=z7u_LLvQd5ApSGtv",
},
],
},
];

Expand All @@ -45,6 +136,23 @@ export default function TalksPage() {
return () => clearTimeout(timer);
}, []);

useEffect(() => {
const handler = (e: KeyboardEvent) => {
if (e.key === "Escape") setSelectedTalk(null);
};

window.addEventListener("keydown", handler);
return () => window.removeEventListener("keydown", handler);
}, []);

useEffect(() => {
if (selectedTalk) {
document.body.style.overflow = "hidden";
} else {
document.body.style.overflow = "";
}
}, [selectedTalk]);

const filteredTalks = useMemo(() => {
return activeCategory === "All"
? TALKS_DATA
Expand All @@ -71,7 +179,7 @@ export default function TalksPage() {
We Speak. We Share. We Lead.
</motion.h1>
<motion.p
key={activeCategory} // Adding a key makes the text animate when it changes
key={activeCategory}
initial={{ opacity: 0, y: 10 }}
animate={{ opacity: 1, y: 0 }}
transition={{ duration: 0.3 }}
Expand Down Expand Up @@ -130,37 +238,44 @@ export default function TalksPage() {
onClick={() => setSelectedTalk(null)}
className="fixed inset-0 bg-black/80 backdrop-blur-sm z-[100]"
/>

{/* Side Panel Drawer */}
{/* Modal */}
<motion.div
initial={{ x: "100%" }}
animate={{ x: 0 }}
exit={{ x: "100%" }}
transition={{ type: "spring", damping: 30, stiffness: 300 }}
className="fixed top-0 right-0 h-full w-full sm:w-[500px] bg-zinc-950 border-l border-zinc-800 z-[101] p-8 overflow-y-auto"
initial={{ opacity: 0, scale: 0.92 }}
animate={{ opacity: 1, scale: 1 }}
exit={{ opacity: 0, scale: 0.92 }}
transition={{ duration: 0.2, ease: "easeOut" }}
className="fixed inset-0 z-[101] flex items-start md:items-center justify-center p-4 md:p-6 overflow-y-auto"
>
<button
onClick={() => setSelectedTalk(null)}
className="absolute top-6 right-6 text-zinc-500 hover:text-white text-xl"
<div
onClick={(e) => e.stopPropagation()}
className="relative w-full max-w-2xl bg-zinc-950 border border-zinc-800
rounded-2xl p-6 md:p-8 shadow-[0_0_60px_rgba(0,0,0,0.8)]
max-h-[90vh] overflow-y-auto"
>
</button>
<button
onClick={() => setSelectedTalk(null)}
className="absolute top-5 right-5 text-zinc-500 hover:text-white text-xl"
>
</button>

<div className="mt-12 flex flex-col h-full">
<p className="text-[#00C853] font-bold text-xs uppercase tracking-widest mb-2">
{selectedTalk.type}
</p>

<h2 className="text-3xl font-extrabold text-white leading-tight">
{selectedTalk.title}
</h2>
<div className="mt-4 text-zinc-400 font-medium flex items-center gap-2">

<div className="mt-4 text-zinc-400 font-medium flex flex-wrap items-center gap-2">
<span>{selectedTalk.name}</span>
<span>•</span>
<span>{selectedTalk.conference}</span>
<span>•</span>
<span className="text-[#00C853]">{selectedTalk.date}</span>
</div>
<div className="mt-10 space-y-8 flex-grow">

<div className="mt-10 space-y-6">
<div>
<h4 className="text-zinc-500 uppercase text-[10px] font-bold tracking-widest mb-2">
Location
Expand All @@ -169,6 +284,7 @@ export default function TalksPage() {
{selectedTalk.location}
</p>
</div>

<div>
<h4 className="text-zinc-500 uppercase text-[10px] font-bold tracking-widest mb-2">
Description
Expand All @@ -177,6 +293,29 @@ export default function TalksPage() {
{selectedTalk.description}
</p>
</div>
{selectedTalk.links?.length > 0 && (
<div>
<h4 className="text-zinc-500 uppercase text-[10px] font-bold tracking-widest mb-3">
Links
</h4>

<div className="flex flex-wrap gap-3">
{selectedTalk.links.map((link: any, idx: number) => (
<a
key={idx}
href={link.url}
target="_blank"
rel="noopener noreferrer"
className="px-4 py-2 text-sm rounded-lg bg-zinc-900 border border-zinc-800
text-zinc-300 hover:text-black hover:bg-[#00C853]
transition-all duration-300"
>
{link.label}
</a>
))}
</div>
</div>
)}
</div>
</div>
</motion.div>
Expand Down
11 changes: 10 additions & 1 deletion components/TalkCard.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,16 @@ const TalkCard = ({ talk }: any) => {
</div>
<div className="mt-8 pt-6 border-t border-zinc-900 text-[10px] uppercase tracking-widest flex justify-between items-center">
<span className="text-zinc-400 font-bold">{talk.conference}</span>
<span className="text-zinc-500 font-medium">{talk.date}</span>

<div className="flex items-center gap-3">
{talk.links?.length > 0 && (
<span className="text-[#00C853] font-bold">
{talk.links.length} Links
</span>
)}

<span className="text-zinc-500 font-medium">{talk.date}</span>
</div>
</div>
</div>
);
Expand Down
4 changes: 2 additions & 2 deletions components/hero.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import ZenithBanner from "@/components/ZenithBanner";
export default function Hero() {
return (
<section className="relative min-h-screen md:h-screen flex justify-center items-center hero-section">
<div className="max-w-6xl mx-auto px-4 sm:px-6">
<div className="max-w-8xl mx-auto px-4 sm:px-6">
<div className="pt-20 sm:pt-32 pb-5 md:pt-40 md:pb-5">
<div className="pb-5 md:pb-5">
<div className="max-w-6xl mx-auto">
Expand All @@ -31,7 +31,7 @@ export default function Hero() {
data-aos-delay="450"
>
We are a student-run<br />
<span className="bg-[#00c853] px-2 sm:px-3 sm:py-1 rounded-xl" style={{ wordBreak: 'keep-all' }}>tech-community</span> from Dayananda Sagar College of Engineering.
<span className="bg-[#00c853] px-2 sm:px-3 sm:py-1 rounded-xl" style={{ wordBreak: 'keep-all' }}>Open Source</span> Community from India.
</p>
</div>
<div className="flex flex-col items-center gap-3 p-1 hero-banners lg:w-[28rem]">
Expand Down
16 changes: 16 additions & 0 deletions components/ui/NavItems.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import { faGithub } from "@fortawesome/free-brands-svg-icons";

export const navItems = [
{ href: "https://github.com/pointblank-club", label: "GitHub", isExternal: true, icon: faGithub},
// { href: "/recruitment", label: "Recruitment" },
{ href : "/", label: "Home" },
{ href: "/events", label: "Events" },
{ href: "/leads", label: "Leads" },
{ href: "/lore", label: "Lore" },
{ href: "/members", label: "Members", specialPadding: true },
{ href: "/achievements", label: "Achievements" },
{ href: "/hustle", label: "Hustle Results" },
];

export default navItems;

26 changes: 20 additions & 6 deletions components/ui/footer.tsx
Original file line number Diff line number Diff line change
@@ -1,21 +1,35 @@
import Link from 'next/link'
import React from 'react';
import Logo from './logo';
import navItems from './NavItems';
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
import { usePathname } from "next/navigation";

export default function Footer() {
const pathname = usePathname();
return (
<footer className="p-4 md:p-8 lg:p-10">
<div className="flex justify-center mb-6">
<Logo />
</div>
<div className="mx-auto max-w-screen-xl text-center">
<ul className="flex flex-wrap justify-center items-center mb-6 text-white">
<li><Link href="/" className="mr-4 hover:underline md:mr-6">Home</Link></li>
<li><Link href="/events" className="mr-4 hover:underline md:mr-6">Events</Link></li>
<li><Link href="/leads" className="mr-4 hover:underline md:mr-6">Leads</Link></li>
<li><Link href="/members" className="mr-4 hover:underline md:mr-6">Members</Link></li>
<li><Link href="/achievements" className="mr-4 hover:underline md:mr-6">Achievements</Link></li>
<li><Link href="/hustle" className="mr-4 hover:underline md:mr-6">Hustle Results</Link></li>
{navItems.map((item, index) => (
<li key={index}>
<Link href={item.href} {...(item.isExternal ? { target: "_blank", rel: "noopener noreferrer" } : {})}>
<p
className={`font-medium ${
pathname === item.href
? "font-extrabold text-white"
: "text-gray-300"
} hover:text-white ${item.specialPadding ? "px-5" : "px-2 lg:px-5"} py-3 flex items-center transition duration-150 ease-in-out`}
>
{item.icon && <FontAwesomeIcon icon={item.icon} className="mr-2" size="lg" />}
{item.label}
</p>
</Link>
</li>
))}
</ul>
<span className="text-sm text-gray-500 sm:text-center dark:text-gray-400">Made with ❤️ by <Link href="/" className="hover:underline">Point Blank</Link>. All Rights Reserved.</span>
</div>
Expand Down
13 changes: 1 addition & 12 deletions components/ui/header.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,19 +9,8 @@ import router from "next/router";
import Logo from "./logo";
import MobileMenu from "./mobile-menu";
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
import { faGithub } from "@fortawesome/free-brands-svg-icons";
import navItems from "./NavItems";

const navItems = [
{ href: "https://github.com/pointblank-club", label: "GitHub", isExternal: true, icon: faGithub},
// { href: "/recruitment", label: "Recruitment" },
{ href: "/events", label: "Events" },
{ href: "/leads", label: "Leads" },
{ href: "/lore", label: "Lore" },
{ href: "/members", label: "Members", specialPadding: true },
{ href: "/achievements", label: "Achievements" },
{ href: "/talks", label: "Talks" },
{ href: "/hustle", label: "Hustle Results" },
];

export default function Header() {
const [top, setTop] = useState(true);
Expand Down
Loading
Loading