--- import { getCollection } from "astro:content"; import { Image } from "astro:assets"; import Layout from "../../../layouts/main.astro"; import Link from "../../../components/Link.astro"; import FeaturedRecommendation from "../../../components/code/FeaturedRecommendation.astro"; import ProjectCard from "../../../components/code/ProjectCard.astro"; import SkillBadge from "../../../components/code/SkillBadge.astro"; import logoTiqa from "../../../assets/images/logo-tiqa-blanc.png"; import skillsData from "../../../data/skills.json"; const locale = "ar"; const experiences = (await getCollection("experiences")) .filter((e) => e.data.lang === locale && !e.data.draft) .sort((a, b) => (b.data.startDate > a.data.startDate ? 1 : -1)); const recentExperiences = experiences.slice(0, 4); const projects = (await getCollection("projects")) .filter((p) => p.data.lang === locale && !p.data.draft && p.data.category === "dev" && p.data.featured) .sort((a, b) => b.data.date.getTime() - a.data.date.getTime()); const recommendations = (await getCollection("recommendations")) .filter((r) => r.data.featured) .sort((a, b) => b.data.date.getTime() - a.data.date.getTime()); const recommendationTexts = recommendations.map((rec) => ({ ...rec, text: rec.body || '', })); const topSkills = skillsData.categories.slice(0, 3); function formatMonth(dateStr: string) { const [year, month] = dateStr.split('-'); return new Date(parseInt(year), parseInt(month) - 1) .toLocaleDateString('ar-SA', { year: 'numeric', month: 'short' }); } ---

حِرَفيّ البرمجيات

TDD، Clean Code، Domain-Driven Design: هذه طريقتي في بناء البرمجيات. أرافق الفرق كمطوّر أول، أو قائد تقني، أو مدرب تقني. أدواتي: TypeScript/JavaScript، وكذلك PHP وElixir.

ما يميّزني ربّما: أهتمّ بجودة الكود بقدر اهتمامي بما ينتجه. أفضّل البرمجيات الحرّة والأدوات التي تلبّي احتياجات حقيقية. أتساءل أيضًا عن التحيّزات التي ندرجها في الكود، والتي تُديم علاقات اجتماعية تستحقّ المساءلة.

أُدرّس البرمجة في جامعة شامبوليون وأنشّط مجتمع Software Crafters Albi منذ 2018.

المسار

← عرض الكل
{recentExperiences.map((exp) => { const isOngoing = !exp.data.endDate; const start = formatMonth(exp.data.startDate); const end = exp.data.endDate ? formatMonth(exp.data.endDate) : 'الحالي'; return (

{exp.data.role}

{exp.data.companyUrl ? ( {exp.data.company} ) : exp.data.company} {exp.data.location && ` · ${exp.data.location}`}

{start} — {end}
); })}

المشاريع

← عرض الكل
{projects.map((project) => ( ))}
{recommendationTexts.length > 0 && (

التوصيات

← عرض الكل
{recommendationTexts.map((rec) => ( ))}
)}

المهارات

← عرض الكل
{topSkills.map((category) => (

{category.name[locale as keyof typeof category.name]}

{category.skills.map((skill) => ( ))}
))}

القيم والمنهج

  • حركة Software Craftsmanship
  • الفائدة الاجتماعية للمطوّر
  • الفخر بالعمل، دون غرور
  • منهج Domain Driven Design
  • تنظيم أجايل: التكرار والتحسين المستمر

المجتمع والتدريس

أنشّط مجتمع Software Crafters Albi منذ 2018. أستاذ هندسة البرمجيات في جامعة شامبوليون في ألبي منذ 2019.

على الإنترنت

{[ { label: 'LinkedIn', href: 'https://www.linkedin.com/in/jalil' }, { label: 'Malt', href: 'https://www.malt.fr/profile/jalilarfaoui' }, { label: 'Stack Overflow', href: 'https://stackexchange.com/users/54164/jalil' }, { label: 'GitHub', href: 'https://github.com/JalilArfaoui' }, { label: 'Framagit', href: 'https://framagit.org/jalil' }, { label: 'Forge شخصية', href: 'https://forge.tiqa.fr' }, ].map((link) => ( {link.label} ))}
شعار Tiqa

SAS Tiqa
12, rue Fabre d'Églantine — 81 000 Albi, France
811 917 871 RCS Albi