{"id":9,"date":"2016-04-05T10:08:26","date_gmt":"2016-04-05T10:08:26","guid":{"rendered":"https:\/\/dangnhsite.wordpress.com\/home\/"},"modified":"2026-08-18T15:44:52","modified_gmt":"2026-08-18T07:44:52","slug":"home","status":"publish","type":"page","link":"https:\/\/dangnh.cf\/vi\/","title":{"rendered":"E-commerce Backend Engineer \u2014 Shopware, Laravel &#038; AI"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">I&#8217;m Mark \u2014 a senior fullstack engineer in Ho Chi Minh City. I&#8217;ve spent 13+ years building e-commerce backends, payment systems, and the AI features that increasingly sit on top of them. Right now I&#8217;m forward-deployed with a German enterprise client (Shopware).<\/p>\n\n<p class=\"wp-block-paragraph\">This is where I write about that work \u2014 Laravel and PHP internals, e-commerce architecture, and getting AI features to behave in production. Some posts are in English, some in Vietnamese.<\/p>\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/dangnh.cf\/hire-me\/\"><strong>I take on freelance and contract work \u2192 <\/strong><\/a><\/p>\n\n<hr class=\"wp-block-separator\"\/>\n\n<style><\/style><div class=\"wplp_outside wplp_widget_252\" style=\"max-width:100%;\"><span class=\"wpcu_block_title\"><\/span><div id=\"wplp_widget_252\" class=\"wplp_widget_default wplp_container vertical swiper wplp-swiper default cols1\" data-theme=\"default\" data-post=\"252\" style=\"\" data-max-elts=\"10\" data-per-page=\"10\"><div class=\"wplp_listposts swiper-wrapper\" id=\"default_252\" style=\"width: 100%;\" ><div class=\"swiper-slide\" style=\"\"><div class=\"insideframe\"><div id=\"wplp_box_top_252_473\" class=\"wpcu-front-box top equalHeightImg\" ><div class=\"wplp-box-item\"><\/div><\/div><div id=\"wplp_box_left_252_473\" class=\"wpcu-front-box left wpcu-custom-position\" style=\"width: 30%\"><div class=\"wplp-box-item\"><a href=\"https:\/\/dangnh.cf\/vi\/2025\/11\/05\/ban-dung-cho-developer\/\"  class=\"thumbnail\"><span class=\"img_cropper\" style=\"margin-right:15px;margin-bottom:50px;max-width:100%;\"><img decoding=\"async\" src=\"https:\/\/i0.wp.com\/dangnh.cf\/wp-content\/uploads\/2025\/11\/image-1.png?fit=200%2C300&ssl=1\" style=\"aspect-ratio:4\/3;\" srcset=\"\" alt=\"Standing desk &#8211; V\u1eadt trang tr\u00ed \u0111\u1eaft ti\u1ec1n hay m\u1eb9o hack productivity?\" class=\"wplp_thumb\" \/><\/span><\/a><\/div><\/div><div id=\"wplp_box_right_252_473\" class=\"wpcu-front-box right wpcu-custom-position\" style=\"width: 70%\"><div class=\"wplp-box-item\"><a href=\"https:\/\/dangnh.cf\/vi\/2025\/11\/05\/ban-dung-cho-developer\/\"  class=\"title\">Standing desk &#8211; V\u1eadt trang tr\u00ed \u0111\u1eaft ti\u1ec1n hay m\u1eb9o hack productivity?<\/a><span class=\"date\">Th\u00e1ng 11 5, 2025<\/span><span class=\"category\">Others<\/span><span class=\"text\"><span style=\"max-height:2.8em\" class=\"line_limit\">Mua b\u00e0n \u0111\u1ee9ng, t\u00f4i t\u01b0\u1edfng m\u00ecnh s\u1ebd th\u00e0nh si\u00eau nh\u00e2n n\u0103ng su\u1ea5t. Th\u1ef1c t\u1ebf th\u00ec n\u00f3 th\u00e0nh c\u00e1i c\u1edb ho\u00e0n h\u1ea3o \u0111\u1ec3\u2026 kh\u00f4ng ng\u1ed3i y\u00ean. V\u00e0i ghi ch\u00e9p th\u1eadt l\u00f2ng c\u1ee7a m\u1ed9t th\u1eb1ng dev.<\/span><span style=\"margin-left:3px; max-height:2.8em\" class=\"line_limit\"> [...]<\/span><\/span><span class=\"custom_fields\">\n<!-- WPLP Unknown field: Custom_Fields -->\n<\/span><a href=\"https:\/\/dangnh.cf\/vi\/2025\/11\/05\/ban-dung-cho-developer\/\"  class=\"read-more\">Read more...<\/a><\/div><\/div><div id=\"wplp_box_bottom_252_473\" class=\"wpcu-front-box bottom \" ><div class=\"wplp-box-item\"><\/div><\/div><\/div><\/div><div class=\"swiper-slide\" style=\"\"><div class=\"insideframe\"><div id=\"wplp_box_top_252_441\" class=\"wpcu-front-box top equalHeightImg\" ><div class=\"wplp-box-item\"><\/div><\/div><div id=\"wplp_box_left_252_441\" class=\"wpcu-front-box left wpcu-custom-position\" style=\"width: 30%\"><div class=\"wplp-box-item\"><a href=\"https:\/\/dangnh.cf\/vi\/2025\/06\/06\/rag-la-gi-va-tai-sao-may-ong-ai-cu-nhac-hoai\/\"  class=\"thumbnail\"><span class=\"img_cropper\" style=\"margin-right:15px;margin-bottom:50px;max-width:100%;\"><img decoding=\"async\" src=\"https:\/\/i0.wp.com\/dangnh.cf\/wp-content\/uploads\/2025\/06\/ai-rag.png?fit=300%2C200&ssl=1\" style=\"aspect-ratio:4\/3;\" srcset=\"\" alt=\"RAG l\u00e0 g\u00ec? V\u00e0 t\u1ea1i sao m\u1ea5y \u00f4ng AI c\u1ee9 nh\u1eafc ho\u00e0i?\" class=\"wplp_thumb\" \/><\/span><\/a><\/div><\/div><div id=\"wplp_box_right_252_441\" class=\"wpcu-front-box right wpcu-custom-position\" style=\"width: 70%\"><div class=\"wplp-box-item\"><a href=\"https:\/\/dangnh.cf\/vi\/2025\/06\/06\/rag-la-gi-va-tai-sao-may-ong-ai-cu-nhac-hoai\/\"  class=\"title\">RAG l\u00e0 g\u00ec? V\u00e0 t\u1ea1i sao m\u1ea5y \u00f4ng AI c\u1ee9 nh\u1eafc ho\u00e0i?<\/a><span class=\"date\">Th\u00e1ng 6 6, 2025<\/span><span class=\"category\">AI<\/span><span class=\"text\"><span style=\"max-height:2.8em\" class=\"line_limit\">RAG (Retrieval-Augmented Generation) l\u00e0 c\u00e1ch gi\u00fap AI b\u1edbt &#8220;n\u00f3i x\u1ea1o&#8221; b\u1eb1ng vi\u1ec7c tra t\u00e0i li\u1ec7u tr\u01b0\u1edbc khi tr\u1ea3 l\u1eddi. Gi\u1ea3i th\u00edch d\u1ec5 hi\u1ec3u, k\u00e8m v\u00ed d\u1ee5 th\u1ef1c t\u1ebf v\u00e0 c\u00e1c b\u01b0\u1edbc tri\u1ec3n khai.<\/span><span style=\"margin-left:3px; max-height:2.8em\" class=\"line_limit\"> [...]<\/span><\/span><span class=\"custom_fields\">\n<!-- WPLP Unknown field: Custom_Fields -->\n<\/span><a href=\"https:\/\/dangnh.cf\/vi\/2025\/06\/06\/rag-la-gi-va-tai-sao-may-ong-ai-cu-nhac-hoai\/\"  class=\"read-more\">Read more...<\/a><\/div><\/div><div id=\"wplp_box_bottom_252_441\" class=\"wpcu-front-box bottom \" ><div class=\"wplp-box-item\"><\/div><\/div><\/div><\/div><div class=\"swiper-slide\" style=\"\"><div class=\"insideframe\"><div id=\"wplp_box_top_252_409\" class=\"wpcu-front-box top equalHeightImg\" ><div class=\"wplp-box-item\"><\/div><\/div><div id=\"wplp_box_left_252_409\" class=\"wpcu-front-box left wpcu-custom-position\" style=\"width: 30%\"><div class=\"wplp-box-item\"><a href=\"https:\/\/dangnh.cf\/vi\/2025\/05\/19\/huong-dan-setup-ai-blog-to-podcast-agent\/\"  class=\"thumbnail\"><span class=\"img_cropper\" style=\"margin-right:15px;margin-bottom:50px;max-width:100%;\"><img decoding=\"async\" src=\"https:\/\/i0.wp.com\/dangnh.cf\/wp-content\/uploads\/2025\/05\/ai-agent.png?fit=300%2C300&ssl=1\" style=\"aspect-ratio:4\/3;\" srcset=\"\" alt=\"H\u01b0\u1edbng D\u1eabn Setup AI Blog to Podcast Agent\" class=\"wplp_thumb\" \/><\/span><\/a><\/div><\/div><div id=\"wplp_box_right_252_409\" class=\"wpcu-front-box right wpcu-custom-position\" style=\"width: 70%\"><div class=\"wplp-box-item\"><a href=\"https:\/\/dangnh.cf\/vi\/2025\/05\/19\/huong-dan-setup-ai-blog-to-podcast-agent\/\"  class=\"title\">H\u01b0\u1edbng D\u1eabn Setup AI Blog to Podcast Agent<\/a><span class=\"date\">Th\u00e1ng 5 19, 2025<\/span><span class=\"category\">AI<\/span><span class=\"text\"><span style=\"max-height:2.8em\" class=\"line_limit\">H\u01b0\u1edbng d\u1eabn ch\u1ea1y th\u1eed AI Blog to Podcast Agent t\u1eeb repo Awesome LLM Apps ngay tr\u00ean m\u00e1y Mac \u2014 bi\u1ebfn m\u1ed9t b\u00e0i blog th\u00e0nh t\u1eadp podcast ho\u00e0n ch\u1ec9nh.<\/span><span style=\"margin-left:3px; max-height:2.8em\" class=\"line_limit\"> [...]<\/span><\/span><span class=\"custom_fields\">\n<!-- WPLP Unknown field: Custom_Fields -->\n<\/span><a href=\"https:\/\/dangnh.cf\/vi\/2025\/05\/19\/huong-dan-setup-ai-blog-to-podcast-agent\/\"  class=\"read-more\">Read more...<\/a><\/div><\/div><div id=\"wplp_box_bottom_252_409\" class=\"wpcu-front-box bottom \" ><div class=\"wplp-box-item\"><\/div><\/div><\/div><\/div><div class=\"swiper-slide\" style=\"\"><div class=\"insideframe\"><div id=\"wplp_box_top_252_406\" class=\"wpcu-front-box top equalHeightImg\" ><div class=\"wplp-box-item\"><\/div><\/div><div id=\"wplp_box_left_252_406\" class=\"wpcu-front-box left wpcu-custom-position\" style=\"width: 30%\"><div class=\"wplp-box-item\"><a href=\"https:\/\/dangnh.cf\/vi\/2025\/05\/19\/trait-mixin-in-php-part-2\/\"  class=\"thumbnail\"><span class=\"img_cropper\" style=\"margin-right:15px;margin-bottom:50px;max-width:100%;\"><img decoding=\"async\" src=\"https:\/\/i0.wp.com\/dangnh.cf\/wp-content\/uploads\/2018\/06\/retro-background-3101430_960_720.jpg?fit=300%2C169&ssl=1\" style=\"aspect-ratio:4\/3;\" srcset=\"\" alt=\"Trait \u2013 Mixin in PHP? &#8211; PART 2\" class=\"wplp_thumb\" \/><\/span><\/a><\/div><\/div><div id=\"wplp_box_right_252_406\" class=\"wpcu-front-box right wpcu-custom-position\" style=\"width: 70%\"><div class=\"wplp-box-item\"><a href=\"https:\/\/dangnh.cf\/vi\/2025\/05\/19\/trait-mixin-in-php-part-2\/\"  class=\"title\">Trait \u2013 Mixin in PHP? &#8211; PART 2<\/a><span class=\"date\">Th\u00e1ng 5 19, 2025<\/span><span class=\"category\">PHP<\/span><span class=\"text\"><span style=\"max-height:2.8em\" class=\"line_limit\">Ph\u1ea7n 2 c\u1ee7a series Trait trong PHP: x\u1eed l\u00fd xung \u0111\u1ed9t v\u1edbi insteadof v\u00e0 as, abstract method, static property, trait l\u1ed3ng trait, c\u00f9ng c\u00e1c best practice khi d\u00f9ng trait th\u1eadt.<\/span><span style=\"margin-left:3px; max-height:2.8em\" class=\"line_limit\"> [...]<\/span><\/span><span class=\"custom_fields\">\n<!-- WPLP Unknown field: Custom_Fields -->\n<\/span><a href=\"https:\/\/dangnh.cf\/vi\/2025\/05\/19\/trait-mixin-in-php-part-2\/\"  class=\"read-more\">Read more...<\/a><\/div><\/div><div id=\"wplp_box_bottom_252_406\" class=\"wpcu-front-box bottom \" ><div class=\"wplp-box-item\"><\/div><\/div><\/div><\/div><div class=\"swiper-slide\" style=\"\"><div class=\"insideframe\"><div id=\"wplp_box_top_252_367\" class=\"wpcu-front-box top equalHeightImg\" ><div class=\"wplp-box-item\"><\/div><\/div><div id=\"wplp_box_left_252_367\" class=\"wpcu-front-box left wpcu-custom-position\" style=\"width: 30%\"><div class=\"wplp-box-item\"><a href=\"https:\/\/dangnh.cf\/vi\/2020\/01\/20\/service-container-di-sanh-dieu-voi-laravel\/\"  class=\"thumbnail\"><span class=\"img_cropper\" style=\"margin-right:15px;margin-bottom:50px;max-width:100%;\"><img decoding=\"async\" src=\"https:\/\/i0.wp.com\/dangnh.cf\/wp-content\/uploads\/2020\/01\/1_SstfI6yiEWj1mrnFrLTUdA-e1579505803935.jpeg?fit=300%2C200&ssl=1\" style=\"aspect-ratio:4\/3;\" srcset=\"\" alt=\"Service Container &#038; DI &#8220;s\u00e0nh \u0111i\u1ec7u&#8221; v\u1edbi Laravel\" class=\"wplp_thumb\" \/><\/span><\/a><\/div><\/div><div id=\"wplp_box_right_252_367\" class=\"wpcu-front-box right wpcu-custom-position\" style=\"width: 70%\"><div class=\"wplp-box-item\"><a href=\"https:\/\/dangnh.cf\/vi\/2020\/01\/20\/service-container-di-sanh-dieu-voi-laravel\/\"  class=\"title\">Service Container &#038; DI &#8220;s\u00e0nh \u0111i\u1ec7u&#8221; v\u1edbi Laravel<\/a><span class=\"date\">Th\u00e1ng 1 20, 2020<\/span><span class=\"category\">PHP<\/span><span class=\"text\"><span style=\"max-height:2.8em\" class=\"line_limit\">Service Container l\u00e0 tr\u00e1i tim trong ki\u1ebfn tr\u00fac Laravel. Khi b\u00e0i to\u00e1n l\u1edbn d\u1ea7n v\u00e0 b\u1ea1n ph\u1ea3i qu\u1ea3n l\u00fd nhi\u1ec1u service c\u00f9ng dependency, \u0111\u00e2y l\u00e0 th\u1ee9 b\u1eaft bu\u1ed9c ph\u1ea3i hi\u1ec3u.<\/span><span style=\"margin-left:3px; max-height:2.8em\" class=\"line_limit\"> [...]<\/span><\/span><span class=\"custom_fields\">\n<!-- WPLP Unknown field: Custom_Fields -->\n<\/span><a href=\"https:\/\/dangnh.cf\/vi\/2020\/01\/20\/service-container-di-sanh-dieu-voi-laravel\/\"  class=\"read-more\">Read more...<\/a><\/div><\/div><div id=\"wplp_box_bottom_252_367\" class=\"wpcu-front-box bottom \" ><div class=\"wplp-box-item\"><\/div><\/div><\/div><\/div><div class=\"swiper-slide\" style=\"\"><div class=\"insideframe\"><div id=\"wplp_box_top_252_211\" class=\"wpcu-front-box top equalHeightImg\" ><div class=\"wplp-box-item\"><\/div><\/div><div id=\"wplp_box_left_252_211\" class=\"wpcu-front-box left wpcu-custom-position\" style=\"width: 30%\"><div class=\"wplp-box-item\"><a href=\"https:\/\/dangnh.cf\/vi\/2018\/06\/01\/trait-mixin-in-php\/\"  class=\"thumbnail\"><span class=\"img_cropper\" style=\"margin-right:15px;margin-bottom:50px;max-width:100%;\"><img decoding=\"async\" src=\"https:\/\/i0.wp.com\/dangnh.cf\/wp-content\/uploads\/2018\/06\/retro-background-3101430_960_720.jpg?fit=300%2C169&ssl=1\" style=\"aspect-ratio:4\/3;\" srcset=\"\" alt=\"Trait &#8211; Mixin in PHP? <p1>\" class=\"wplp_thumb\" \/><\/span><\/a><\/div><\/div><div id=\"wplp_box_right_252_211\" class=\"wpcu-front-box right wpcu-custom-position\" style=\"width: 70%\"><div class=\"wplp-box-item\"><a href=\"https:\/\/dangnh.cf\/vi\/2018\/06\/01\/trait-mixin-in-php\/\"  class=\"title\">Trait &#8211; Mixin in PHP? <p1><\/a><span class=\"date\">Th\u00e1ng 6 1, 2018<\/span><span class=\"category\">PHP \/ Web development<\/span><span class=\"text\"><span style=\"max-height:2.8em\" class=\"line_limit\">PHP l\u00e0 ng\u00f4n ng\u1eef \u0111\u01a1n k\u1ebf th\u1eeba, v\u00e0 c\u00e2y k\u1ebf th\u1eeba d\u00e0i lu\u00f4n l\u00e0 c\u01a1n \u00e1c m\u1ed9ng. Trait sinh ra \u0111\u1ec3 gi\u1ea3i quy\u1ebft chuy\u1ec7n \u0111\u00f3 \u2014 nh\u01b0ng khi n\u00e0o n\u00ean d\u00f9ng, v\u00e0 khi n\u00e0o n\u00ean tr\u00e1nh?<\/span><span style=\"margin-left:3px; max-height:2.8em\" class=\"line_limit\"> [...]<\/span><\/span><span class=\"custom_fields\">\n<!-- WPLP Unknown field: Custom_Fields -->\n<\/span><a href=\"https:\/\/dangnh.cf\/vi\/2018\/06\/01\/trait-mixin-in-php\/\"  class=\"read-more\">Read more...<\/a><\/div><\/div><div id=\"wplp_box_bottom_252_211\" class=\"wpcu-front-box bottom \" ><div class=\"wplp-box-item\"><\/div><\/div><\/div><\/div><div class=\"swiper-slide\" style=\"\"><div class=\"insideframe\"><div id=\"wplp_box_top_252_283\" class=\"wpcu-front-box top equalHeightImg\" ><div class=\"wplp-box-item\"><\/div><\/div><div id=\"wplp_box_left_252_283\" class=\"wpcu-front-box left wpcu-custom-position\" style=\"width: 30%\"><div class=\"wplp-box-item\"><a href=\"https:\/\/dangnh.cf\/vi\/2018\/01\/12\/setup-nginx-php-mysql-phpmyadmin-macos-high-sierra\/\"  class=\"thumbnail\"><span class=\"img_cropper\" style=\"margin-right:15px;margin-bottom:50px;max-width:100%;\"><img decoding=\"async\" src=\"https:\/\/i0.wp.com\/dangnh.cf\/wp-content\/uploads\/2018\/01\/mac-for-hackers-set-up-homebrew-install-update-open-source-tools.1280x600.jpg?fit=300%2C141&ssl=1\" style=\"aspect-ratio:4\/3;\" srcset=\"\" alt=\"Setup Nginx, PHP, MySQL and phpMyAdmin on macOS High Sierra\" class=\"wplp_thumb\" \/><\/span><\/a><\/div><\/div><div id=\"wplp_box_right_252_283\" class=\"wpcu-front-box right wpcu-custom-position\" style=\"width: 70%\"><div class=\"wplp-box-item\"><a href=\"https:\/\/dangnh.cf\/vi\/2018\/01\/12\/setup-nginx-php-mysql-phpmyadmin-macos-high-sierra\/\"  class=\"title\">Setup Nginx, PHP, MySQL and phpMyAdmin on macOS High Sierra<\/a><span class=\"date\">Th\u00e1ng 1 12, 2018<\/span><span class=\"category\">Environment \/ Web development<\/span><span class=\"text\"><span style=\"max-height:2.8em\" class=\"line_limit\">Two days buried in bash commands to get Nginx, PHP 5.6, MySQL and phpMyAdmin running on macOS High Sierra \u2014 and the one tutorial that finally worked.<\/span><span style=\"margin-left:3px; max-height:2.8em\" class=\"line_limit\"> [...]<\/span><\/span><span class=\"custom_fields\">\n<!-- WPLP Unknown field: Custom_Fields -->\n<\/span><a href=\"https:\/\/dangnh.cf\/vi\/2018\/01\/12\/setup-nginx-php-mysql-phpmyadmin-macos-high-sierra\/\"  class=\"read-more\">Read more...<\/a><\/div><\/div><div id=\"wplp_box_bottom_252_283\" class=\"wpcu-front-box bottom \" ><div class=\"wplp-box-item\"><\/div><\/div><\/div><\/div><div class=\"swiper-slide\" style=\"\"><div class=\"insideframe\"><div id=\"wplp_box_top_252_124\" class=\"wpcu-front-box top equalHeightImg\" ><div class=\"wplp-box-item\"><\/div><\/div><div id=\"wplp_box_left_252_124\" class=\"wpcu-front-box left wpcu-custom-position\" style=\"width: 30%\"><div class=\"wplp-box-item\"><a href=\"https:\/\/dangnh.cf\/vi\/2017\/05\/25\/stdclass-la-gi-lam-the-nao-de-co-properties-dong-trong-php\/\"  class=\"thumbnail\"><span class=\"img_cropper\" style=\"margin-right:15px;margin-bottom:50px;max-width:100%;\"><img decoding=\"async\" src=\"https:\/\/i0.wp.com\/dangnh.cf\/wp-content\/uploads\/2017\/05\/stdclass-trong-php.png?fit=300%2C220&ssl=1\" style=\"aspect-ratio:4\/3;\" srcset=\"\" alt=\"stdClass l\u00e0 g\u00ec? L\u00e0m th\u1ebf n\u00e0o \u0111\u1ec3 c\u00f3 Dynamic Properties trong PHP?\" class=\"wplp_thumb\" \/><\/span><\/a><\/div><\/div><div id=\"wplp_box_right_252_124\" class=\"wpcu-front-box right wpcu-custom-position\" style=\"width: 70%\"><div class=\"wplp-box-item\"><a href=\"https:\/\/dangnh.cf\/vi\/2017\/05\/25\/stdclass-la-gi-lam-the-nao-de-co-properties-dong-trong-php\/\"  class=\"title\">stdClass l\u00e0 g\u00ec? L\u00e0m th\u1ebf n\u00e0o \u0111\u1ec3 c\u00f3 Dynamic Properties trong PHP?<\/a><span class=\"date\">Th\u00e1ng 5 25, 2017<\/span><span class=\"category\">PHP<\/span><span class=\"text\"><span style=\"max-height:2.8em\" class=\"line_limit\">stdClass xu\u1ea5t hi\u1ec7n kh\u1eafp n\u01a1i trong core c\u1ee7a Laravel v\u00e0 Yii. N\u00f3 l\u00e0 c\u00e1i g\u00ec, t\u1ea1i sao dev kh\u1ee7ng th\u00edch d\u00f9ng, v\u00e0 l\u00e0m sao \u0111\u1ec3 c\u00f3 dynamic properties trong PHP?<\/span><span style=\"margin-left:3px; max-height:2.8em\" class=\"line_limit\"> [...]<\/span><\/span><span class=\"custom_fields\">\n<!-- WPLP Unknown field: Custom_Fields -->\n<\/span><a href=\"https:\/\/dangnh.cf\/vi\/2017\/05\/25\/stdclass-la-gi-lam-the-nao-de-co-properties-dong-trong-php\/\"  class=\"read-more\">Read more...<\/a><\/div><\/div><div id=\"wplp_box_bottom_252_124\" class=\"wpcu-front-box bottom \" ><div class=\"wplp-box-item\"><\/div><\/div><\/div><\/div><div class=\"swiper-slide\" style=\"\"><div class=\"insideframe\"><div id=\"wplp_box_top_252_112\" class=\"wpcu-front-box top equalHeightImg\" ><div class=\"wplp-box-item\"><\/div><\/div><div id=\"wplp_box_left_252_112\" class=\"wpcu-front-box left wpcu-custom-position\" style=\"width: 30%\"><div class=\"wplp-box-item\"><a href=\"https:\/\/dangnh.cf\/vi\/2017\/05\/25\/what-is-stdclass-and-dynamic-properties-in-php\/\"  class=\"thumbnail\"><span class=\"img_cropper\" style=\"margin-right:15px;margin-bottom:50px;max-width:100%;\"><img decoding=\"async\" src=\"https:\/\/i0.wp.com\/dangnh.cf\/wp-content\/uploads\/2017\/05\/stdclass-trong-php.png?fit=300%2C220&ssl=1\" style=\"aspect-ratio:4\/3;\" srcset=\"\" alt=\"What is stdClass? And Dynamic Properties in PHP?\" class=\"wplp_thumb\" \/><\/span><\/a><\/div><\/div><div id=\"wplp_box_right_252_112\" class=\"wpcu-front-box right wpcu-custom-position\" style=\"width: 70%\"><div class=\"wplp-box-item\"><a href=\"https:\/\/dangnh.cf\/vi\/2017\/05\/25\/what-is-stdclass-and-dynamic-properties-in-php\/\"  class=\"title\">What is stdClass? And Dynamic Properties in PHP?<\/a><span class=\"date\">Th\u00e1ng 5 25, 2017<\/span><span class=\"category\">PHP<\/span><span class=\"text\"><span style=\"max-height:2.8em\" class=\"line_limit\">stdClass shows up all over the core of Laravel and Yii. Here is what it actually is, how dynamic properties work in PHP, and when a property bag beats an array.<\/span><span style=\"margin-left:3px; max-height:2.8em\" class=\"line_limit\"> [...]<\/span><\/span><span class=\"custom_fields\">\n<!-- WPLP Unknown field: Custom_Fields -->\n<\/span><a href=\"https:\/\/dangnh.cf\/vi\/2017\/05\/25\/what-is-stdclass-and-dynamic-properties-in-php\/\"  class=\"read-more\">Read more...<\/a><\/div><\/div><div id=\"wplp_box_bottom_252_112\" class=\"wpcu-front-box bottom \" ><div class=\"wplp-box-item\"><\/div><\/div><\/div><\/div><div class=\"swiper-slide\" style=\"\"><div class=\"insideframe\"><div id=\"wplp_box_top_252_66\" class=\"wpcu-front-box top equalHeightImg\" ><div class=\"wplp-box-item\"><\/div><\/div><div id=\"wplp_box_left_252_66\" class=\"wpcu-front-box left wpcu-custom-position\" style=\"width: 30%\"><div class=\"wplp-box-item\"><a href=\"https:\/\/dangnh.cf\/vi\/2017\/05\/19\/lam-toan-giai-tri-mot-ti-nhi\/\"  class=\"thumbnail\"><span class=\"img_cropper\" style=\"margin-right:15px;margin-bottom:50px;max-width:100%;\"><img decoding=\"async\" src=\"https:\/\/i0.wp.com\/dangnh.cf\/wp-content\/uploads\/2017\/05\/learning_math-e1459355151809.jpg?fit=300%2C192&ssl=1\" style=\"aspect-ratio:4\/3;\" srcset=\"\" alt=\"L\u00e0m to\u00e1n gi\u1ea3i tr\u00ed m\u1ed9t t\u00ed nh\u1ec9?\" class=\"wplp_thumb\" \/><\/span><\/a><\/div><\/div><div id=\"wplp_box_right_252_66\" class=\"wpcu-front-box right wpcu-custom-position\" style=\"width: 70%\"><div class=\"wplp-box-item\"><a href=\"https:\/\/dangnh.cf\/vi\/2017\/05\/19\/lam-toan-giai-tri-mot-ti-nhi\/\"  class=\"title\">L\u00e0m to\u00e1n gi\u1ea3i tr\u00ed m\u1ed9t t\u00ed nh\u1ec9?<\/a><span class=\"date\">Th\u00e1ng 5 19, 2017<\/span><span class=\"category\">PHP<\/span><span class=\"text\"><span style=\"max-height:2.8em\" class=\"line_limit\">M\u1ed9t b\u00e0i test l\u1eadp tr\u00ecnh 30 ph\u00fat: t\u00ecm ch\u1ec9 s\u1ed1 c\u00e2n b\u1eb1ng c\u1ee7a m\u1ea3ng v\u1edbi \u0111\u1ed9 ph\u1ee9c t\u1ea1p O(N). \u0110\u1ec1 b\u00e0i, h\u01b0\u1edbng gi\u1ea3i v\u00e0 code PHP ho\u00e0n ch\u1ec9nh.<\/span><span style=\"margin-left:3px; max-height:2.8em\" class=\"line_limit\"> [...]<\/span><\/span><span class=\"custom_fields\">\n<!-- WPLP Unknown field: Custom_Fields -->\n<\/span><a href=\"https:\/\/dangnh.cf\/vi\/2017\/05\/19\/lam-toan-giai-tri-mot-ti-nhi\/\"  class=\"read-more\">Read more...<\/a><\/div><\/div><div id=\"wplp_box_bottom_252_66\" class=\"wpcu-front-box bottom \" ><div class=\"wplp-box-item\"><\/div><\/div><\/div><\/div><\/div><div class=\"swiper-button-next\"><\/div><div class=\"swiper-button-prev\"><\/div><div class=\"swiper-pagination\"><\/div><\/div><\/div>\n\n","protected":false},"excerpt":{"rendered":"<p>I&#8217;m Mark \u2014 a senior fullstack engineer in Ho Chi Minh City. I&#8217;ve spent 13+ years building e-commerce backends, payment systems, and the AI features that increasingly sit on top of them. Right now I&#8217;m forward-deployed with a German enterprise client (Shopware). This is where I write about that work \u2014 Laravel and PHP internals, e-commerce architecture, and getting AI features to behave in production. Some posts are in English, some in Vietnamese. I take on freelance and contract work \u2192<\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"open","template":"","meta":{"footnotes":""},"class_list":["post-9","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>E-commerce Backend Engineer \u2014 Shopware, Laravel &amp; AI - Mark Nguyen<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/dangnh.cf\/vi\/\" \/>\n<meta property=\"og:locale\" content=\"vi_VN\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"E-commerce Backend Engineer \u2014 Shopware, Laravel &amp; AI - Mark Nguyen\" \/>\n<meta property=\"og:description\" content=\"I&#8217;m Mark \u2014 a senior fullstack engineer in Ho Chi Minh City. I&#8217;ve spent 13+ years building e-commerce backends, payment systems, and the AI features that increasingly sit on top of them. Right now I&#8217;m forward-deployed with a German enterprise client (Shopware). This is where I write about that work \u2014 Laravel and PHP internals, e-commerce architecture, and getting AI features to behave in production. Some posts are in English, some in Vietnamese. I take on freelance and contract work \u2192\" \/>\n<meta property=\"og:url\" content=\"https:\/\/dangnh.cf\/vi\/\" \/>\n<meta property=\"og:site_name\" content=\"Mark Nguyen\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/dangtute\" \/>\n<meta property=\"article:modified_time\" content=\"2026-08-18T07:44:52+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u01af\u1edbc t\u00ednh th\u1eddi gian \u0111\u1ecdc\" \/>\n\t<meta name=\"twitter:data1\" content=\"1 ph\u00fat\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/dangnh.cf\\\/\",\"url\":\"https:\\\/\\\/dangnh.cf\\\/\",\"name\":\"E-commerce Backend Engineer \u2014 Shopware, Laravel & AI - Mark Nguyen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/dangnh.cf\\\/vi\\\/#website\"},\"datePublished\":\"2016-04-05T10:08:26+00:00\",\"dateModified\":\"2026-08-18T07:44:52+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/dangnh.cf\\\/#breadcrumb\"},\"inLanguage\":\"vi\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/dangnh.cf\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/dangnh.cf\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/dangnh.cf\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"E-commerce Backend Engineer \u2014 Shopware, Laravel &#038; AI\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/dangnh.cf\\\/vi\\\/#website\",\"url\":\"https:\\\/\\\/dangnh.cf\\\/vi\\\/\",\"name\":\"Mark Nguyen\",\"description\":\"I build the e-commerce backends customers never see \u2014 payments, integrations, and AI features that actually ship.\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/dangnh.cf\\\/vi\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"vi\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"E-commerce Backend Engineer \u2014 Shopware, Laravel & AI - Mark Nguyen","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/dangnh.cf\/vi\/","og_locale":"vi_VN","og_type":"article","og_title":"E-commerce Backend Engineer \u2014 Shopware, Laravel & AI - Mark Nguyen","og_description":"I&#8217;m Mark \u2014 a senior fullstack engineer in Ho Chi Minh City. I&#8217;ve spent 13+ years building e-commerce backends, payment systems, and the AI features that increasingly sit on top of them. Right now I&#8217;m forward-deployed with a German enterprise client (Shopware). This is where I write about that work \u2014 Laravel and PHP internals, e-commerce architecture, and getting AI features to behave in production. Some posts are in English, some in Vietnamese. I take on freelance and contract work \u2192","og_url":"https:\/\/dangnh.cf\/vi\/","og_site_name":"Mark Nguyen","article_publisher":"https:\/\/www.facebook.com\/dangtute","article_modified_time":"2026-08-18T07:44:52+00:00","twitter_card":"summary_large_image","twitter_misc":{"\u01af\u1edbc t\u00ednh th\u1eddi gian \u0111\u1ecdc":"1 ph\u00fat"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/dangnh.cf\/","url":"https:\/\/dangnh.cf\/","name":"E-commerce Backend Engineer \u2014 Shopware, Laravel & AI - Mark Nguyen","isPartOf":{"@id":"https:\/\/dangnh.cf\/vi\/#website"},"datePublished":"2016-04-05T10:08:26+00:00","dateModified":"2026-08-18T07:44:52+00:00","breadcrumb":{"@id":"https:\/\/dangnh.cf\/#breadcrumb"},"inLanguage":"vi","potentialAction":[{"@type":"ReadAction","target":["https:\/\/dangnh.cf\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/dangnh.cf\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/dangnh.cf\/"},{"@type":"ListItem","position":2,"name":"E-commerce Backend Engineer \u2014 Shopware, Laravel &#038; AI"}]},{"@type":"WebSite","@id":"https:\/\/dangnh.cf\/vi\/#website","url":"https:\/\/dangnh.cf\/vi\/","name":"Mark Nguyen","description":"I build the e-commerce backends customers never see \u2014 payments, integrations, and AI features that actually ship.","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/dangnh.cf\/vi\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"vi"}]}},"jetpack_sharing_enabled":false,"jetpack_shortlink":"https:\/\/wp.me\/P9w3NP-9","jetpack_likes_enabled":true,"jetpack-related-posts":[{"id":531,"url":"https:\/\/dangnh.cf\/vi\/hire-me\/","url_meta":{"origin":9,"position":0},"title":"Hire Me","author":"admin","date":"Th\u00e1ng 8 18, 2026","format":false,"excerpt":"I build e-commerce backends, payment and marketplace integrations, and AI features for apps that already have users. 13+ years, Shopware and Laravel.","rel":"","context":"B\u00e0i t\u01b0\u01a1ng t\u1ef1","block_context":{"text":"B\u00e0i t\u01b0\u01a1ng t\u1ef1","link":""},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":536,"url":"https:\/\/dangnh.cf\/vi\/work\/","url_meta":{"origin":9,"position":1},"title":"Work","author":"admin","date":"Th\u00e1ng 8 18, 2026","format":false,"excerpt":"Three projects in detail: a clinical lab results platform, a multi-tenant AI translation backend, and a multi-marketplace e-commerce suite.","rel":"","context":"B\u00e0i t\u01b0\u01a1ng t\u1ef1","block_context":{"text":"B\u00e0i t\u01b0\u01a1ng t\u1ef1","link":""},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":10,"url":"https:\/\/dangnh.cf\/vi\/about-2\/","url_meta":{"origin":9,"position":2},"title":"About","author":"admin","date":"Th\u00e1ng 4 5, 2016","format":false,"excerpt":"Senior fullstack engineer in Ho Chi Minh City. 13+ years on e-commerce backends, payments, and AI integration \u2014 currently forward-deployed with Shopware.","rel":"","context":"B\u00e0i t\u01b0\u01a1ng t\u1ef1","block_context":{"text":"B\u00e0i t\u01b0\u01a1ng t\u1ef1","link":""},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":538,"url":"https:\/\/dangnh.cf\/vi\/work\/multi-tenant-ai-translation-platform\/","url_meta":{"origin":9,"position":3},"title":"Building a multi-tenant AI translation platform on Laravel","author":"admin","date":"Th\u00e1ng 8 18, 2026","format":false,"excerpt":"Multi-tenancy, glossary management, version control and queue-based processing \u2014 why the model is the easy part of shipping an AI feature to enterprise customers.","rel":"","context":"B\u00e0i t\u01b0\u01a1ng t\u1ef1","block_context":{"text":"B\u00e0i t\u01b0\u01a1ng t\u1ef1","link":""},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":539,"url":"https:\/\/dangnh.cf\/vi\/work\/multi-marketplace-ecommerce-suite\/","url_meta":{"origin":9,"position":4},"title":"One dashboard for products and conversations across every marketplace","author":"admin","date":"Th\u00e1ng 8 18, 2026","format":false,"excerpt":"Mass product decoration across e-commerce platforms plus a unified Instagram, Facebook and Zalo inbox \u2014 built on microservices, crawlers and RabbitMQ.","rel":"","context":"B\u00e0i t\u01b0\u01a1ng t\u1ef1","block_context":{"text":"B\u00e0i t\u01b0\u01a1ng t\u1ef1","link":""},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":537,"url":"https:\/\/dangnh.cf\/vi\/work\/lab-results-microservices-migration\/","url_meta":{"origin":9,"position":5},"title":"Cutting a clinical lab results pipeline from 3 hours to 3 minutes","author":"admin","date":"Th\u00e1ng 8 18, 2026","format":false,"excerpt":"How a monolith-to-microservices migration at a clinical diagnostics lab took result processing from about three hours to about three minutes \u2014 without taking the live system down.","rel":"","context":"B\u00e0i t\u01b0\u01a1ng t\u1ef1","block_context":{"text":"B\u00e0i t\u01b0\u01a1ng t\u1ef1","link":""},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"_links":{"self":[{"href":"https:\/\/dangnh.cf\/vi\/wp-json\/wp\/v2\/pages\/9","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dangnh.cf\/vi\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/dangnh.cf\/vi\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/dangnh.cf\/vi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dangnh.cf\/vi\/wp-json\/wp\/v2\/comments?post=9"}],"version-history":[{"count":15,"href":"https:\/\/dangnh.cf\/vi\/wp-json\/wp\/v2\/pages\/9\/revisions"}],"predecessor-version":[{"id":535,"href":"https:\/\/dangnh.cf\/vi\/wp-json\/wp\/v2\/pages\/9\/revisions\/535"}],"wp:attachment":[{"href":"https:\/\/dangnh.cf\/vi\/wp-json\/wp\/v2\/media?parent=9"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}