41554 blogs · [ { "id": "01a0bb6c-8549-7139-b858-6f200f0360ac", "title": "Mohammed Aboullaite - Laytoun' thoughts!", "url": "https://aboullaite.me/author/mohammed/", "published_at": "2026-09-06T18:34:55+00:00" }, { "id": "01a0871e-ef5a-7150-842d-9f1b4a332261", "title": "Agentic Video Understanding with Gemini & Spring Boot!", "url": "https://aboullaite.me/agentic-video-understanding-gemini-spring-boot/", "published_at": "2026-09-06T11:01:25+00:00" }, { "id": "01a0bb6c-8549-7139-b858-6f200facee4e", "title": "Gemini - Laytoun' thoughts!", "url": "https://aboullaite.me/tag/gemini/", "published_at": "2026-09-05T18:54:38+00:00" }, { "id": "01a0871e-ef5a-7150-842d-9f1b4aa7c597", "title": "A2UI & MCP: agents that send UIs, not just text!", "url": "https://aboullaite.me/a2ui-spring-boot-mcp/", "published_at": "2026-08-29T11:45:20+00:00" }, { "id": "01a0bb6c-8549-7139-b858-6f20104cd776", "title": "MCP - Laytoun' thoughts!", "url": "https://aboullaite.me/tag/mcp/", "published_at": "2026-08-28T18:50:29+00:00" }, { "id": "01a0bb6c-8549-7139-b858-6f2010807c44", "title": "A2UI - Laytoun' thoughts!", "url": "https://aboullaite.me/tag/a2ui/", "published_at": "2026-08-28T18:50:29+00:00" }, { "id": "01a0bb6c-8549-7139-b858-6f2010f00ca4", "title": "Spring AI - Laytoun' thoughts!", "url": "https://aboullaite.me/tag/spring-ai/", "published_at": "2026-08-28T18:50:29+00:00" }, { "id": "01a0871e-ef5a-7150-842d-9f1b4b894468", "title": "Java 27 features: Compact Object Headers by default, JFR redaction & post-quantum TLS!", "url": "https://aboullaite.me/java-27-features/", "published_at": "2026-08-20T07:00:00+00:00" }, { "id": "01a0871e-ef5a-7150-842d-9f1b4c29a7a0", "title": "YOLO Responsibly! Part 2: Multi-file refactors, harness wars, and a Claude face-off", "url": "https://aboullaite.me/gemma-docker-sandboxes-part2/", "published_at": "2026-08-05T20:05:21+00:00" }, { "id": "01a0871e-ef5a-7150-842d-9f1b4d23da81", "title": "YOLO responsibly! Part 1: A local coding agent with Gemma 4 and Docker sandboxes", "url": "https://aboullaite.me/gemma-docker-sandboxes-part1/", "published_at": "2026-07-30T19:52:51+00:00" }, { "id": "01a0bb6c-8549-7139-b858-6f20110e27a3", "title": "AI - Laytoun' thoughts!", "url": "https://aboullaite.me/tag/ai/", "published_at": "2026-07-30T19:48:49+00:00" }, { "id": "01a0bb6c-8549-7139-b858-6f20252d34c4", "title": "Laytoun' thoughts!", "url": "https://aboullaite.me/", "published_at": "2026-07-03T17:21:22+00:00" }, { "id": "01a0bb6c-8548-72d7-ba9c-74e1d380ddc5", "title": "Building thin Docker images using multi-stage build for your java apps!", "url": "https://aboullaite.me/multi-stage-docker-java/", "published_at": "2026-06-23T02:19:55+00:00" }, { "id": "01a0bb6c-8548-72d7-ba9c-74e1d533a636", "title": "Techcrunch Battlefield MENA - Trip report", "url": "https://aboullaite.me/techcrunch-battelfield-mena-trip-report/", "published_at": "2026-06-23T02:19:54+00:00" }, { "id": "01a0bb6c-8548-72d7-ba9c-74e1d55538cf", "title": "Java 14 new features: Records", "url": "https://aboullaite.me/java-14-records/", "published_at": "2026-06-23T02:19:54+00:00" }, { "id": "01a0bb6c-8548-72d7-ba9c-74e1d6e8cd09", "title": "A practical introduction to Spring Cloud Contract", "url": "https://aboullaite.me/a-practical-introduction-to-spring-cloud-contract/", "published_at": "2026-06-23T02:19:53+00:00" }, { "id": "01a0bb6c-8548-72d7-ba9c-74e1d73ba1e7", "title": "Trip report: Facebook F8 conference", "url": "https://aboullaite.me/trip-report-facebook-f8/", "published_at": "2026-06-23T02:19:53+00:00" }, { "id": "01a0bb6c-8548-72d7-ba9c-74e1d7511db7", "title": "Java 14 features: Pattern Matching for `instanceof`, `jpackage` & helpful NPEs", "url": "https://aboullaite.me/java-14-instanceof-jpackage-npes/", "published_at": "2026-06-23T02:19:53+00:00" }, { "id": "01a0bb6c-8548-72d7-ba9c-74e1d7f6c1f6", "title": "Devoxx4Kids Morocco, a year in review!", "url": "https://aboullaite.me/devoxx4kids-morocco-a-year-in-review/", "published_at": "2026-06-23T02:19:52+00:00" }, { "id": "01a0bb6c-8548-72d7-ba9c-74e1d9c306f4", "title": "Running JavaFx app with Docker containers!", "url": "https://aboullaite.me/javafx-docker/", "published_at": "2026-06-23T02:19:51+00:00" }, { "id": "01a0bb6c-8548-72d7-ba9c-74e1da2c5aad", "title": "Tweets Sentiment Analysis using Stanford CoreNLP", "url": "https://aboullaite.me/stanford-corenlp-java/", "published_at": "2026-06-23T02:19:51+00:00" }, { "id": "01a0bb6c-8548-72d7-ba9c-74e1da3bde4d", "title": "Skaffold, OKE & OCIR!", "url": "https://aboullaite.me/skaffold-oke-ocir/", "published_at": "2026-06-23T02:19:51+00:00" }, { "id": "01a0bb6c-8548-72d7-ba9c-74e1dabfa427", "title": "Speed up your java application Docker images build with BuildKit!", "url": "https://aboullaite.me/speed-up-your-java-application-images-build-with-buildkit/", "published_at": "2026-06-23T02:19:50+00:00" }, { "id": "01a0bb6c-8549-7139-b858-6f1fe7fb6718", "title": "Project Portola: Porting java to Alpine Linux!", "url": "https://aboullaite.me/protola-alpine-java/", "published_at": "2026-06-23T02:19:50+00:00" }, { "id": "01a0bb6c-8549-7139-b858-6f1fe8d364c1", "title": "Docker security scanning using Microscanner (in Jenkins & Gitlab CI)!", "url": "https://aboullaite.me/docker-security-scan/", "published_at": "2026-06-23T02:19:49+00:00" }, { "id": "01a0bb6c-8549-7139-b858-6f1fe9d1409e", "title": "Spring Boot monitoring using KairosDB & Grafana", "url": "https://aboullaite.me/spring-boot-monitoring-kairosdb-grafana/", "published_at": "2026-06-23T02:19:49+00:00" }, { "id": "01a0bb6c-8549-7139-b858-6f1fea179da8", "title": "Java 14 features: Switch Expressions, JFR Event Streaming and more", "url": "https://aboullaite.me/java-14-se-jfrs/", "published_at": "2026-06-23T02:19:49+00:00" }, { "id": "01a0bb6c-8549-7139-b858-6f1fead7f47c", "title": "Deep dive into git: Git refs", "url": "https://aboullaite.me/deep-dive-into-git-git-refs/", "published_at": "2026-06-23T02:19:48+00:00" }, { "id": "01a0bb6c-8549-7139-b858-6f1feb04cba8", "title": "5 reasons to attend DevNexus 2020", "url": "https://aboullaite.me/5-reasons-to-attend-devnexus-2020/", "published_at": "2026-06-23T02:19:48+00:00" }, { "id": "01a0bb6c-8549-7139-b858-6f1fec02a1b9", "title": "An introduction to Spring Boot Actuator", "url": "https://aboullaite.me/an-introduction-to-spring-boot-actuator/", "published_at": "2026-06-23T02:19:47+00:00" }, { "id": "01a0bb6c-8549-7139-b858-6f1fec71a46a", "title": "Reactive Streams example - Java 9", "url": "https://aboullaite.me/reactive-streams-example-java-9/", "published_at": "2026-06-23T02:19:47+00:00" }, { "id": "01a0bb6c-8549-7139-b858-6f1fec7bb339", "title": "From Devops to DevSecOps!", "url": "https://aboullaite.me/from-devops-to-devsecops/", "published_at": "2026-06-23T02:19:47+00:00" }, { "id": "01a0bb6c-8549-7139-b858-6f1fed20bceb", "title": "Spring Boot metrics monitoring using Prometheus & Grafana", "url": "https://aboullaite.me/spring-boot-monitoring-prometheus-grafana/", "published_at": "2026-06-23T02:19:46+00:00" }, { "id": "01a0bb6c-8549-7139-b858-6f1fed8e2591", "title": "Actuator in Spring boot 2.0", "url": "https://aboullaite.me/actuator-in-spring-boot-2-0/", "published_at": "2026-06-23T02:19:46+00:00" }, { "id": "01a0bb6c-8549-7139-b858-6f1fee8db6de", "title": "Sentiment analysis example using FastText", "url": "https://aboullaite.me/sentiment-analysis-fasttext/", "published_at": "2026-06-23T02:19:46+00:00" }, { "id": "01a0bb6c-8549-7139-b858-6f1fef6a80df", "title": "A look into Spring Cloud Gateway!", "url": "https://aboullaite.me/spring-cloud-gateway/", "published_at": "2026-06-23T02:19:46+00:00" }, { "id": "01a0bb6c-8549-7139-b858-6f1fef84c913", "title": "Smarter search with RSQL", "url": "https://aboullaite.me/rsql/", "published_at": "2026-06-23T02:19:45+00:00" }, { "id": "01a0bb6c-8549-7139-b858-6f1fefe2718b", "title": "DockerCon 2018, I was there!", "url": "https://aboullaite.me/dockercon-2018-i-was-there/", "published_at": "2026-06-23T02:19:45+00:00" }, { "id": "01a0bb6c-8549-7139-b858-6f1ff015092f", "title": "Using Gitlab registry with google Jib", "url": "https://aboullaite.me/gitlab-registry-jib-java/", "published_at": "2026-06-23T02:19:45+00:00" }, { "id": "01a0bb6c-8549-7139-b858-6f1ff0f73135", "title": "KVM/libvirt: Forward Ports to guests with Iptables", "url": "https://aboullaite.me/kvm-qemo-forward-ports-with-iptables/", "published_at": "2026-06-23T02:19:44+00:00" }, { "id": "01a0bb6c-8549-7139-b858-6f1ff12294d6", "title": "Devoxx UK 2018 trip report", "url": "https://aboullaite.me/devoxx-uk-2018/", "published_at": "2026-06-23T02:19:44+00:00" }, { "id": "01a0bb6c-8549-7139-b858-6f1ff1bca713", "title": "Java & Docker: Java 10 improvements strengthen the friendship!", "url": "https://aboullaite.me/docker-java-10/", "published_at": "2026-06-23T02:19:44+00:00" }, { "id": "01a0bb6c-8549-7139-b858-6f1ff23e01ee", "title": "Build Docker and OCI images for Java applications using google Jib", "url": "https://aboullaite.me/jib-docker-maven-java/", "published_at": "2026-06-23T02:19:43+00:00" }, { "id": "01a0bb6c-8549-7139-b858-6f1ff32cf997", "title": "The magic behind the magic: Spring Boot Autoconfiguration", "url": "https://aboullaite.me/the-magic-behind-the-magic-spring-boot-autoconfiguration/", "published_at": "2026-06-23T02:19:43+00:00" }, { "id": "01a0bb6c-8549-7139-b858-6f1ff353c938", "title": "Karate framework: REST API testing made easy!", "url": "https://aboullaite.me/karate-framework-rest-testing/", "published_at": "2026-06-23T02:19:43+00:00" }, { "id": "01a0bb6c-8549-7139-b858-6f1ff3fa5f25", "title": "Backing up elasticsearch indices with curator & minio!", "url": "https://aboullaite.me/elasticsearch-curator-minio/", "published_at": "2026-06-23T02:19:43+00:00" }, { "id": "01a0bb6c-8549-7139-b858-6f1ff4ba7075", "title": "Building reactive real time aircrafts tracker using Reactor!", "url": "https://aboullaite.me/building-real-time-aircraft-tracker-using-reactor-and-spring-boot/", "published_at": "2026-06-23T02:19:42+00:00" }, { "id": "01a0bb6c-8549-7139-b858-6f1ff53016c2", "title": "Migration from SVN to Git! a developer guide to git-svn", "url": "https://aboullaite.me/migration-from-svn-to-git-a-developer-guide/", "published_at": "2026-06-23T02:19:42+00:00" }, { "id": "01a0bb6c-8549-7139-b858-6f1ff58ea068", "title": "Spring boot metrics monitoring using TICK stack", "url": "https://aboullaite.me/spring-boot-metrics-monitoring-using-tick-stack/", "published_at": "2026-06-23T02:19:42+00:00" }, { "id": "01a0bb6c-8549-7139-b858-6f1ff647c99d", "title": "A gentle introduction to CDI 2.0 in Java SE", "url": "https://aboullaite.me/cdi-20-java-se/", "published_at": "2026-06-23T02:19:41+00:00" }, { "id": "01a0bb6c-8549-7139-b858-6f1ff694144f", "title": "Effectively restarting kvm/libvirt network", "url": "https://aboullaite.me/effectively-restarting-kvm-libvirt-network/", "published_at": "2026-06-23T02:19:41+00:00" }, { "id": "01a0bb6c-8549-7139-b858-6f1ff74ec972", "title": "Convolutional Neural Networks with Deeplearning4j", "url": "https://aboullaite.me/cnn-dl4j/", "published_at": "2026-06-23T02:19:41+00:00" }, { "id": "01a0bb6c-8549-7139-b858-6f1ff83cbac0", "title": "Secure kibana dashboards using keycloak", "url": "https://aboullaite.me/secure-kibana-keycloak/", "published_at": "2026-06-23T02:19:41+00:00" }, { "id": "01a0bb6c-8549-7139-b858-6f1ff8cd0c30", "title": "Spring Batch Tutorial with Spring Boot", "url": "https://aboullaite.me/spring-batch-tutorial-with-spring-boot/", "published_at": "2026-06-23T02:19:40+00:00" }, { "id": "01a0bb6c-8549-7139-b858-6f1ff95e6e12", "title": "Spring Boot starter for minio", "url": "https://aboullaite.me/spring-boot-starter-for-minio/", "published_at": "2026-06-23T02:19:40+00:00" }, { "id": "01a0bb6c-8549-7139-b858-6f1ffa12a011", "title": "Configuring sleuth valve for Tomcat - Spring Boot", "url": "https://aboullaite.me/configuring-a-sleuth-valve-springboot/", "published_at": "2026-06-23T02:19:37+00:00" }, { "id": "01a0bb6c-8549-7139-b858-6f1ffb10bd07", "title": "Sync data from MongoDb to ElasticSearch using Transporter", "url": "https://aboullaite.me/sync-data-from-mongodb-to-elasticsearch-using-transporter/", "published_at": "2026-06-23T02:19:37+00:00" }, { "id": "01a0bb6c-8549-7139-b858-6f1ffb197e29", "title": "import kibana dashboards and visualization using groovy", "url": "https://aboullaite.me/import-kibana-dashboards-and-visualization-using-groovy/", "published_at": "2026-06-23T02:19:33+00:00" }, { "id": "01a0bb6c-8549-7139-b858-6f1ffb312ef0", "title": "Kibana & elasticsearch: Load balancing across multiple ES nodes", "url": "https://aboullaite.me/kibana-elasticsearch-load-balancing-across-multiple-es-nodes/", "published_at": "2026-06-23T02:19:33+00:00" }, { "id": "01a0bb6c-8549-7139-b858-6f1ffbfb14ab", "title": "Dynamic port-forwarding for NAT-ed kvm/libvirt networks", "url": "https://aboullaite.me/dynamic-port-forwarding-for-nat-ed-kvm-libvirt-networks/", "published_at": "2026-06-23T02:19:33+00:00" }, { "id": "01a0bb6c-8549-7139-b858-6f1ffcaa2c4a", "title": "Continuous deployment with Maven, Jenkins and WAS", "url": "https://aboullaite.me/continuous-deployment-with-maven-jenkins-and-was/", "published_at": "2026-06-23T02:19:33+00:00" }, { "id": "01a0bb6c-8549-7139-b858-6f1ffd5fc8ca", "title": "A simple sonar quality gates (groovy) script to Break the CI Build in Jenkins", "url": "https://aboullaite.me/sonar-build-breaker-groovy-jenkins/", "published_at": "2026-06-23T02:19:32+00:00" }, { "id": "01a0bb6c-8549-7139-b858-6f1ffd6517d0", "title": "Yo! Avoid finalizers.", "url": "https://aboullaite.me/avoid-finalizers/", "published_at": "2026-06-23T02:19:32+00:00" }, { "id": "01a0bb6c-8549-7139-b858-6f1ffe228e60", "title": "DockerCon Europe 2017: Trip report", "url": "https://aboullaite.me/dockercon-europe-2017-trip-report/", "published_at": "2026-06-23T02:19:32+00:00" }, { "id": "01a0bb6c-8549-7139-b858-6f1ffe4868b7", "title": "Service registration & discovery with Spring Cloud Netflix - Eureka", "url": "https://aboullaite.me/service-registration-discovery-with-spring-cloud-netflix-eureka/", "published_at": "2026-06-23T02:19:31+00:00" }, { "id": "01a0bb6c-8549-7139-b858-6f1ffe6ae13d", "title": "Using Redis as Buffer in the ELK stack", "url": "https://aboullaite.me/using-redis-as-buffer-in-the-elk-stack/", "published_at": "2026-06-23T02:19:31+00:00" }, { "id": "01a0bb6c-8549-7139-b858-6f1ffecf8890", "title": "Spring Boot metrics monitoring using elasticsearch and kibana", "url": "https://aboullaite.me/spring-boot-elastic-kibana/", "published_at": "2026-06-23T02:19:31+00:00" }, { "id": "01a0bb6c-8549-7139-b858-6f1ffed11db2", "title": "What do skydiving and building a tech community have in common", "url": "https://aboullaite.me/what-do-skydiving-and-building-a-tech-community-have-in-common/", "published_at": "2026-06-23T02:19:31+00:00" }, { "id": "01a0bb6c-8549-7139-b858-6f1fffc4934f", "title": "Painless migration from svn to git (Gitlab)", "url": "https://aboullaite.me/migration-from-svn-to-gitlab/", "published_at": "2026-06-23T02:19:30+00:00" }, { "id": "01a0bb6c-8549-7139-b858-6f20006e4196", "title": "No! HTTP APIs are not necessarily Rest APIs", "url": "https://aboullaite.me/http-rest-apis/", "published_at": "2026-06-23T02:19:30+00:00" }, { "id": "01a0bb6c-8549-7139-b858-6f2000db1467", "title": "Getting started with Built-in NLP for Messenger Bots", "url": "https://aboullaite.me/getting-started-with-built-in-nlp-for-messenger-bots/", "published_at": "2026-06-23T02:19:30+00:00" }, { "id": "01a0bb6c-8549-7139-b858-6f2001b97ba9", "title": "Understanding JIT compiler (just-in-time compiler)", "url": "https://aboullaite.me/understanding-jit-compiler-just-in-time-compiler/", "published_at": "2026-06-23T02:19:30+00:00" }, { "id": "01a0bb6c-8549-7139-b858-6f2001d20e61", "title": "Deep dive into git: git Objects", "url": "https://aboullaite.me/deep-dive-into-git/", "published_at": "2026-06-23T02:19:29+00:00" }, { "id": "01a0bb6c-8549-7139-b858-6f2001df92b1", "title": "Deep dive into git: Some useful git Commands", "url": "https://aboullaite.me/useful-git-commands/", "published_at": "2026-06-23T02:19:29+00:00" }, { "id": "01a0bb6c-8549-7139-b858-6f2002a359c7", "title": "Generate custom QRCode with logo image using zxing", "url": "https://aboullaite.me/generate-qrcode-with-logo-image-using-zxing/", "published_at": "2026-06-23T02:19:29+00:00" }, { "id": "01a0bb6c-8549-7139-b858-6f20034c427d", "title": "Practical introduction to Deep Learning using deeplearning4j", "url": "https://aboullaite.me/deep-learning-deeplearning4j/", "published_at": "2026-06-23T02:19:28+00:00" }, { "id": "01a0bb6c-8549-7139-b858-6f20042c5e39", "title": "jBPM RESTful API: getting started", "url": "https://aboullaite.me/using-jbpms-restful-api/", "published_at": "2026-06-23T02:19:28+00:00" }, { "id": "01a0bb6c-8549-7139-b858-6f2005023939", "title": "Continuous Integration fundamentals", "url": "https://aboullaite.me/continuous-integration-fundamentals/", "published_at": "2026-06-23T02:19:28+00:00" }, { "id": "01a0bb6c-8549-7139-b858-6f200544407c", "title": "Migrating from nexus 1.x to 3.x", "url": "https://aboullaite.me/migrate-from-nexus-1-x-to-3-x/", "published_at": "2026-06-23T02:19:28+00:00" }, { "id": "01a0bb6c-8549-7139-b858-6f2005cf1b2c", "title": "Jshell: exploring Java 9 REPL", "url": "https://aboullaite.me/jshell-java9/", "published_at": "2026-06-23T02:19:27+00:00" }, { "id": "01a0bb6c-8549-7139-b858-6f2006034906", "title": "Spring Boot: Save arabic characters in mysql.", "url": "https://aboullaite.me/spring-boot-arabic-characters-mysql/", "published_at": "2026-06-23T02:19:27+00:00" }, { "id": "01a0bb6c-8549-7139-b858-6f2006294e03", "title": "Using Docker Compose & Mysql to set up a ghost blog", "url": "https://aboullaite.me/docker-compose-ghost/", "published_at": "2026-06-23T02:19:27+00:00" }, { "id": "01a0bb6c-8549-7139-b858-6f20068b8041", "title": "Docker Monitoring with the ELK Stack", "url": "https://aboullaite.me/docker-monitoring-with-the-elk-stack/", "published_at": "2026-06-23T02:19:26+00:00" }, { "id": "01a0bb6c-8549-7139-b858-6f2006e3d807", "title": "My first Messenger Bot, using Java.", "url": "https://aboullaite.me/my-first-java-bot/", "published_at": "2026-06-23T02:19:25+00:00" }, { "id": "01a0bb6c-8549-7139-b858-6f20075cab03", "title": "PhantomJs: Generate Pixel Perfect PDF Reports", "url": "https://aboullaite.me/phantomjs-generate-pixel-perfect-pdf-reports/", "published_at": "2026-06-23T02:19:25+00:00" }, { "id": "01a0bb6c-8549-7139-b858-6f2007dc36a8", "title": "Spring Boot: Time Zone configuration using Hibernate", "url": "https://aboullaite.me/spring-boot-time-zone-configuration-using-hibernate/", "published_at": "2026-06-23T02:19:25+00:00" }, { "id": "01a0bb6c-8549-7139-b858-6f2007f375e3", "title": "Jsoup HTML parser - Tutorial & examples", "url": "https://aboullaite.me/jsoup-html-parser-tutorial-examples/", "published_at": "2026-06-23T02:19:25+00:00" }, { "id": "01a0bb6c-8549-7139-b858-6f2008ad61c0", "title": "Switching between Java Versions on Ubuntu linux", "url": "https://aboullaite.me/switching-between-java-versions-on-ubuntu-linux/", "published_at": "2026-06-23T02:19:24+00:00" }, { "id": "01a0bb6c-8549-7139-b858-6f20095e3ad4", "title": "Spring Boot token authentication using JWT", "url": "https://aboullaite.me/spring-boot-token-authentication-using-jwt/", "published_at": "2026-06-23T02:19:24+00:00" }, { "id": "01a0bb6c-8549-7139-b858-6f200a1863db", "title": "15 Docker Hacks & Tips!", "url": "https://aboullaite.me/docker-hacks/", "published_at": "2026-06-23T02:19:24+00:00" }, { "id": "01a0bb6c-8549-7139-b858-6f200a960fd0", "title": "Spring Boot: Excel, Csv and Pdf view example", "url": "https://aboullaite.me/spring-boot-excel-csv-and-pdf-view-example/", "published_at": "2026-06-23T02:19:24+00:00" }, { "id": "01a0bb6c-8549-7139-b858-6f200aa916cc", "title": "SOCKET PROGRAMMING – JAVA SWING & ANDROID", "url": "https://aboullaite.me/socket-programming-java-swing-android/", "published_at": "2026-06-23T02:19:23+00:00" }, { "id": "01a0bb6c-8549-7139-b858-6f200b0a01ab", "title": "15 must know web Dev tools tricks", "url": "https://aboullaite.me/15-must-know-dev-tools-tricks/", "published_at": "2026-06-23T02:19:23+00:00" }, { "id": "01a0bb6c-8549-7139-b858-6f200b9070e3", "title": "Angular 1 to Angular 2: 7 key comparisons", "url": "https://aboullaite.me/angular-1-to-angular-2-7-key-comparisons/", "published_at": "2026-06-23T02:19:23+00:00" }, { "id": "01a0bb6c-8549-7139-b858-6f200c75e166", "title": "Dockerfile: RUN vs CMD vs ENTRYPOINT", "url": "https://aboullaite.me/dockerfile-run-vs-cmd-vs-entrypoint/", "published_at": "2026-06-23T02:19:22+00:00" }, { "id": "01a0bb6c-8549-7139-b858-6f200ce3c206", "title": "Devoxx4kids Morocco, a great year!", "url": "https://aboullaite.me/devoxx4kids-morocco-a-great-year/", "published_at": "2026-06-23T02:19:22+00:00" }, { "id": "01a0bb6c-8549-7139-b858-6f200da3c45f", "title": "Presentation: Effective Devops!", "url": "https://aboullaite.me/presentation-effective-devops/", "published_at": "2026-06-23T02:19:22+00:00" }, { "id": "01a0bb6c-8549-7139-b858-6f200de41404", "title": "Dockerizing your LAMP enviroment", "url": "https://aboullaite.me/dockerizing-your-lamp-enviroment/", "published_at": "2026-06-23T02:19:21+00:00" }, { "id": "01a0bb6c-8549-7139-b858-6f200e5c272c", "title": "10 most useful Atom packages I've found", "url": "https://aboullaite.me/useful-atom-packages/", "published_at": "2026-06-23T02:19:21+00:00" }, { "id": "01a0871e-ef5a-7150-842d-9f1b4d54f989", "title": "Building RAG Update: Hybrid Search, Reranking & Production Hardening", "url": "https://aboullaite.me/rag-revisited-2026/", "published_at": "2026-03-22T10:14:17+00:00" } ] posts Claim your blog
Back to aboullaite.me
Blog · corpus.blog/blogs/aboullaite.me/posts

aboullaite.me

aboullaite.me

2026