Kareemai - Digital Garden 🌱
Hello, I’m Abdelkareem Elkhateb, an AI Engineer passionate about learning and developing new research ideas in LLMs, NLP, and information retrieval.
I am dedicated to applying this knowledge in real-world applications and advancing open-source Arabic AI projects.
I am one of the maintainers of the NAMAA community, which accelerates AI applications for Arabic and Islamic culture.
%23%20Global%20imports%20-%20defined%20only%20once%0Aimport%20marimo%20as%20mo%0Aimport%20altair%20as%20alt%0Aimport%20pandas%20as%20pd%0Aimport%20numpy%20as%20np%0Aimport%20datetime
🚀 Interactive Skills Dashboard
%23%20Skills%20data%0Askills%20%3D%20%7B%0A%20%20%20%20%22NLP%20%26%20LLMs%22%3A%2090%2C%0A%20%20%20%20%22Deep%20Learning%22%3A%2085%2C%0A%20%20%20%20%22Arabic%20AI%22%3A%2095%2C%0A%20%20%20%20%22Speech%20Processing%22%3A%2075%2C%0A%20%20%20%20%22Information%20Retrieval%22%3A%2080%2C%0A%20%20%20%20%22Recommendation%20Systems%22%3A%2070%2C%0A%20%20%20%20%22Python%22%3A%2095%2C%0A%20%20%20%20%22PyTorch%22%3A%2085%2C%0A%20%20%20%20%22Vector%20Databases%22%3A%2080%2C%0A%20%20%20%20%22Generative%20AI%22%3A%2085%0A%7D%0A%0A%23%20Create%20skill%20level%20selector%0Askill_filter%20%3D%20mo.ui.slider(%0A%20%20%20%20start%3D0%2C%20%0A%20%20%20%20stop%3D100%2C%20%0A%20%20%20%20value%3D50%2C%20%0A%20%20%20%20label%3D%22Filter%20skills%20by%20proficiency%20level%3A%22%2C%0A%20%20%20%20step%3D5%0A)%0A%0Askill_filter
%23%20Filter%20and%20display%20skills%20with%20Altair%0Adef%20create_skills_chart()%3A%0A%20%20%20%20%23%20Filter%20skills%20based%20on%20slider%20value%0A%20%20%20%20_filtered_skills%20%3D%20%7Bk%3A%20v%20for%20k%2C%20v%20in%20skills.items()%20if%20v%20%3E%3D%20skill_filter.value%7D%0A%20%20%20%20%0A%20%20%20%20if%20_filtered_skills%3A%0A%20%20%20%20%20%20%20%20%23%20Prepare%20data%20for%20Altair%0A%20%20%20%20%20%20%20%20_data%20%3D%20pd.DataFrame(%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7B'Skill'%3A%20skill%2C%20'Proficiency'%3A%20value%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20for%20skill%2C%20value%20in%20_filtered_skills.items()%0A%20%20%20%20%20%20%20%20%5D)%0A%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%23%20Sort%20by%20proficiency%20for%20better%20visualization%0A%20%20%20%20%20%20%20%20_data%20%3D%20_data.sort_values('Proficiency'%2C%20ascending%3DTrue)%0A%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%23%20Create%20bar%20chart%0A%20%20%20%20%20%20%20%20_bars%20%3D%20alt.Chart(_data).mark_bar(%0A%20%20%20%20%20%20%20%20%20%20%20%20color%3D'%232E86AB'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20size%3D20%0A%20%20%20%20%20%20%20%20).encode(%0A%20%20%20%20%20%20%20%20%20%20%20%20x%3Dalt.X('Proficiency%3AQ'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20scale%3Dalt.Scale(domain%3D%5B0%2C%20105%5D)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20axis%3Dalt.Axis(title%3D'Proficiency%20Level%20(%25)'%2C%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20labelFontSize%3D12%2C%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20titleFontSize%3D14))%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20y%3Dalt.Y('Skill%3AN'%2C%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20sort%3DNone%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20axis%3Dalt.Axis(labelFontSize%3D12))%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20tooltip%3D%5B'Skill%3AN'%2C%20alt.Tooltip('Proficiency%3AQ'%2C%20format%3D'.0f')%5D%0A%20%20%20%20%20%20%20%20)%0A%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%23%20Add%20text%20labels%0A%20%20%20%20%20%20%20%20_text%20%3D%20alt.Chart(_data).mark_text(%0A%20%20%20%20%20%20%20%20%20%20%20%20align%3D'left'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20baseline%3D'middle'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20dx%3D3%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20fontSize%3D12%0A%20%20%20%20%20%20%20%20).encode(%0A%20%20%20%20%20%20%20%20%20%20%20%20x%3D'Proficiency%3AQ'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20y%3Dalt.Y('Skill%3AN'%2C%20sort%3DNone)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20text%3Dalt.Text('Proficiency%3AQ'%2C%20format%3D'.0f')%0A%20%20%20%20%20%20%20%20).transform_calculate(%0A%20%20%20%20%20%20%20%20%20%20%20%20Proficiency%3D'datum.Proficiency%20%2B%20%22%25%22'%0A%20%20%20%20%20%20%20%20)%0A%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%23%20Combine%20layers%0A%20%20%20%20%20%20%20%20_chart%20%3D%20alt.layer(_bars%2C%20_text).properties(%0A%20%20%20%20%20%20%20%20%20%20%20%20width%3D600%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20height%3Dmax(300%2C%20len(_filtered_skills)%20*%2035)%2C%20%20%23%20Dynamic%20height%20based%20on%20items%0A%20%20%20%20%20%20%20%20%20%20%20%20title%3Dalt.TitleParams(%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20text%3D'Technical%20Skills%20Overview'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20fontSize%3D18%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20fontWeight%3D'bold'%0A%20%20%20%20%20%20%20%20%20%20%20%20)%0A%20%20%20%20%20%20%20%20).configure_view(%0A%20%20%20%20%20%20%20%20%20%20%20%20strokeWidth%3D0%0A%20%20%20%20%20%20%20%20).configure_axis(%0A%20%20%20%20%20%20%20%20%20%20%20%20grid%3DTrue%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20gridOpacity%3D0.3%0A%20%20%20%20%20%20%20%20)%0A%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%23%20Make%20it%20interactive%20and%20selectable%0A%20%20%20%20%20%20%20%20return%20mo.ui.altair_chart(_chart)%0A%20%20%20%20else%3A%0A%20%20%20%20%20%20%20%20return%20mo.md(%22**No%20skills%20match%20the%20selected%20proficiency%20level.%20Try%20lowering%20the%20threshold!**%22)%0A%0Askills_chart%20%3D%20create_skills_chart()%0Askills_chart
This blog documents my journey in programming, deep learning, and AGI.
Currently, I am focused on learning:
Signal Processing: Building speech processing and AI applications for human voice understanding.
Generative AI: Building generative models for business solutions and creative applications.
Recommendation Systems: Passionate about personalization—enjoy designing recommendation systems for projects of all sizes.
Information Retrieval:Working with embeddings and vector databases to improve search and knowledge discovery.
Hypermedia Systems: Developing small apps with htmx to accelerate AI pipelines, from data processing to observability.
🎯 Interactive Project Showcase
%23%20Project%20categories%0Acategories%20%3D%20%5B%22All%22%2C%20%22Models%22%2C%20%22Applications%22%2C%20%22Tools%22%5D%0A%0A%23%20Create%20category%20selector%0Aproject_category%20%3D%20mo.ui.dropdown(%0A%20%20%20%20options%3Dcategories%2C%0A%20%20%20%20value%3D%22All%22%2C%0A%20%20%20%20label%3D%22Filter%20projects%20by%20category%3A%22%0A)%0A%0A%23%20Search%20box%0Asearch_query%20%3D%20mo.ui.text(%0A%20%20%20%20placeholder%3D%22Search%20projects...%22%2C%0A%20%20%20%20label%3D%22Search%3A%22%0A)%0A%0Amo.hstack(%5Bproject_category%2C%20search_query%5D%2C%20gap%3D2)
%23%20Define%20projects%20with%20metadata%0Aprojects%20%3D%20%5B%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%22name%22%3A%20%22Zarra%20%26%20Bojji%22%2C%0A%20%20%20%20%20%20%20%20%22category%22%3A%20%22Models%22%2C%0A%20%20%20%20%20%20%20%20%22description%22%3A%20%22model2vec%20for%20Arabic%20NLP%20with%20significant%20capabilities%22%2C%0A%20%20%20%20%20%20%20%20%22link%22%3A%20%22http%3A%2F%2Fkareemai.com%2Fblog%2Fposts%2Fminishlab%2Fblog_zaraah.html%22%2C%0A%20%20%20%20%20%20%20%20%22tags%22%3A%20%5B%22Arabic%22%2C%20%22NLP%22%2C%20%22model2vec%22%5D%2C%0A%20%20%20%20%20%20%20%20%22status%22%3A%20%22%F0%9F%9F%A2%20Active%22%0A%20%20%20%20%7D%2C%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%22name%22%3A%20%22Arabic%20Gliner%22%2C%0A%20%20%20%20%20%20%20%20%22category%22%3A%20%22Models%22%2C%0A%20%20%20%20%20%20%20%20%22description%22%3A%20%22Named%20Entity%20Recognition%20(NER)%20model%20for%20Arabic%20text%20with%20high%20accuracy%22%2C%0A%20%20%20%20%20%20%20%20%22link%22%3A%20%22%23%22%2C%0A%20%20%20%20%20%20%20%20%22tags%22%3A%20%5B%22Arabic%22%2C%20%22NER%22%2C%20%22NLP%22%5D%2C%0A%20%20%20%20%20%20%20%20%22status%22%3A%20%22%F0%9F%9F%A2%20Active%22%0A%20%20%20%20%7D%2C%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%22name%22%3A%20%22%D9%83%D9%85%20%D9%83%D8%A7%D9%84%D9%88%D8%B1%D9%8A%20(Kam%20Calorie)%22%2C%0A%20%20%20%20%20%20%20%20%22category%22%3A%20%22Applications%22%2C%0A%20%20%20%20%20%20%20%20%22description%22%3A%20%22A%20semantic%20search%20engine%20for%20healthcare%22%2C%0A%20%20%20%20%20%20%20%20%22link%22%3A%20%22https%3A%2F%2Fkamcalorie.com%22%2C%0A%20%20%20%20%20%20%20%20%22tags%22%3A%20%5B%22Healthcare%22%2C%20%22Search%22%2C%20%22Arabic%22%5D%2C%0A%20%20%20%20%20%20%20%20%22status%22%3A%20%22%F0%9F%9F%A2%20Live%22%0A%20%20%20%20%7D%2C%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%22name%22%3A%20%22SEO%20Rat%22%2C%0A%20%20%20%20%20%20%20%20%22category%22%3A%20%22Tools%22%2C%0A%20%20%20%20%20%20%20%20%22description%22%3A%20%22SEO%20optimization%20tool%20for%20GSC%20and%20Jamstack%20websites%22%2C%0A%20%20%20%20%20%20%20%20%22link%22%3A%20%22https%3A%2F%2Fgithub.com%2Fabdelkareemkobo%2Fseo_rat%22%2C%0A%20%20%20%20%20%20%20%20%22tags%22%3A%20%5B%22SEO%22%2C%20%22Astro%22%2C%20%22Quarto%22%5D%2C%0A%20%20%20%20%20%20%20%20%22status%22%3A%20%22%F0%9F%9F%A2%20Active%22%0A%20%20%20%20%7D%2C%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%22name%22%3A%20%22GPU%20Compute%20Guide%22%2C%0A%20%20%20%20%20%20%20%20%22category%22%3A%20%22Applications%22%2C%0A%20%20%20%20%20%20%20%20%22description%22%3A%20%22Find%20the%20best%20GPU%20rentals%20from%20top%20cloud%20providers%22%2C%0A%20%20%20%20%20%20%20%20%22link%22%3A%20%22https%3A%2F%2Fgpuvec.com%22%2C%0A%20%20%20%20%20%20%20%20%22tags%22%3A%20%5B%22GPU%22%2C%20%22Cloud%22%2C%20%22ML%20Infrastructure%22%5D%2C%0A%20%20%20%20%20%20%20%20%22status%22%3A%20%22%F0%9F%9F%A2%20Live%22%0A%20%20%20%20%7D%0A%5D%0A%0A%23%20Display%20filtered%20projects%0Adef%20display_projects()%3A%0A%20%20%20%20%23%20Filter%20projects%0A%20%20%20%20_filtered_projects%20%3D%20projects%0A%20%20%20%20%0A%20%20%20%20if%20project_category.value%20!%3D%20%22All%22%3A%0A%20%20%20%20%20%20%20%20_filtered_projects%20%3D%20%5Bp%20for%20p%20in%20_filtered_projects%20if%20p%5B%22category%22%5D%20%3D%3D%20project_category.value%5D%0A%20%20%20%20%0A%20%20%20%20if%20search_query.value%3A%0A%20%20%20%20%20%20%20%20_search_term%20%3D%20search_query.value.lower()%0A%20%20%20%20%20%20%20%20_filtered_projects%20%3D%20%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20p%20for%20p%20in%20_filtered_projects%20%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20_search_term%20in%20p%5B%22name%22%5D.lower()%20or%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20_search_term%20in%20p%5B%22description%22%5D.lower()%20or%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20any(_search_term%20in%20tag.lower()%20for%20tag%20in%20p%5B%22tags%22%5D)%0A%20%20%20%20%20%20%20%20%5D%0A%20%20%20%20%0A%20%20%20%20%23%20Create%20project%20cards%0A%20%20%20%20if%20_filtered_projects%3A%0A%20%20%20%20%20%20%20%20_cards%20%3D%20%5B%5D%0A%20%20%20%20%20%20%20%20for%20_project%20in%20_filtered_projects%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20_tags_html%20%3D%20%22%20%22.join(%5Bf'%3Cspan%20style%3D%22background-color%3A%20%23e1e4e8%3B%20padding%3A%202px%208px%3B%20border-radius%3A%2012px%3B%20font-size%3A%2012px%3B%20margin-right%3A%204px%3B%22%3E%7Btag%7D%3C%2Fspan%3E'%20for%20tag%20in%20_project%5B%22tags%22%5D%5D)%0A%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20_card_html%20%3D%20f'''%0A%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20style%3D%22border%3A%201px%20solid%20%23e1e4e8%3B%20border-radius%3A%208px%3B%20padding%3A%2016px%3B%20margin-bottom%3A%2012px%3B%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20style%3D%22display%3A%20flex%3B%20justify-content%3A%20space-between%3B%20align-items%3A%20start%3B%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Ch4%20style%3D%22margin%3A%200%200%208px%200%3B%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Ca%20href%3D%22%7B_project%5B%22link%22%5D%7D%22%20target%3D%22_blank%22%20style%3D%22text-decoration%3A%20none%3B%20color%3A%20%230366d6%3B%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7B_project%5B%22name%22%5D%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C%2Fa%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C%2Fh4%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cspan%20style%3D%22font-size%3A%2014px%3B%22%3E%7B_project%5B%22status%22%5D%7D%3C%2Fspan%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C%2Fdiv%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cp%20style%3D%22color%3A%20%23586069%3B%20margin%3A%208px%200%3B%22%3E%7B_project%5B%22description%22%5D%7D%3C%2Fp%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20style%3D%22margin-top%3A%208px%3B%22%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cspan%20style%3D%22font-weight%3A%20bold%3B%20font-size%3A%2014px%3B%20color%3A%20%23586069%3B%22%3E%7B_project%5B%22category%22%5D%7D%3C%2Fspan%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cspan%20style%3D%22margin-left%3A%2012px%3B%22%3E%7B_tags_html%7D%3C%2Fspan%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C%2Fdiv%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3C%2Fdiv%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20'''%0A%20%20%20%20%20%20%20%20%20%20%20%20_cards.append(mo.md(_card_html))%0A%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20return%20mo.vstack(_cards)%0A%20%20%20%20else%3A%0A%20%20%20%20%20%20%20%20return%20mo.md(%22**No%20projects%20found%20matching%20your%20criteria.**%22)%0A%0Adisplay_projects()
🧠 My Mind
A curated collection of blog posts and short-form notes.
📬 Subscribe
Subscribe via RSS.
My Compute
I primarily work on two devices:
- An old MSI laptop with a GTX 1660TI GPU.
- Occasional access to a dual Titan RTX 24GB setup.
💡 Interactive Features
With the Altair-powered Skills Dashboard above, you can:
- Click and drag to select data points in the chart
- Hover over bars to see detailed information
- Filter skills dynamically using the slider
- Access selected data - Selected chart data is available in Python for further analysis!
%23%20Display%20selected%20data%20from%20skills%20chart%20(if%20any)%0Adef%20show_chart_selections()%3A%0A%20%20%20%20if%20hasattr(skills_chart%2C%20'value')%20and%20skills_chart.value%20is%20not%20None%20and%20not%20skills_chart.value.empty%3A%0A%20%20%20%20%20%20%20%20return%20mo.vstack(%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20mo.md(f%22**Skills%20Selection%3A**%20You%20selected%20%7Blen(skills_chart.value)%7D%20skills%22)%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20skills_chart.value%0A%20%20%20%20%20%20%20%20%5D%2C%20gap%3D2)%0A%20%20%20%20else%3A%0A%20%20%20%20%20%20%20%20return%20mo.md(%22*Try%20selecting%20data%20points%20in%20the%20Skills%20Dashboard%20above%20to%20see%20them%20here!*%22)%0A%0Amo.callout(show_chart_selections()%2C%20kind%3D%22info%22)