[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"topics":3,"posts:diy::1:6:":62,"$fmAbo7HX1697lOJ4AVNBJl1PR7wUF0IkR_62krtbwQAE":159},{"data":4,"meta":59},[5,15,23,31,40,50],{"_id":6,"name":7,"description":8,"image":9,"imageAlt":10,"slug":11,"createdAt":12,"updatedAt":13,"uuid":14},"6a92c7892f7e20762f654f94","AI","Posts on AI in real product and engineering work: building AI-powered tools, using large language models for SEO and data platforms, and honest takes on where AI actually helps versus where it's overhyped.","https:\u002F\u002Fmsatbsx.sgp1.digitaloceanspaces.com\u002Fnewsai-2.jpg","AI flying to you!","ai","Sat Aug 29 2026 19:50:33 GMT+0800 (Singapore Standard Time)","Sat Aug 29 2026 20:18:46 GMT+0800 (Singapore Standard Time)","6f2f7079-c45c-4d74-b758-5419dd8755ee",{"_id":16,"name":17,"description":18,"image":19,"imageAlt":19,"slug":20,"createdAt":21,"updatedAt":21,"uuid":22},"6a92d5d26d3bae502260bcb4","CTO Show by TechVibe","Notes from the CTO seat - security, compliance, vendor relationships, build-vs-buy decisions, and the less glamorous parts of leading engineering that rarely make it into the highlight reel. All things given to Support TechVibe team.","","cto-show-by-techvibe","Sat Aug 29 2026 20:51:30 GMT+0800 (Singapore Standard Time)","afaf2020-622a-4b9c-961a-2e36d936230b",{"_id":24,"name":25,"description":26,"image":27,"imageAlt":19,"slug":28,"createdAt":29,"updatedAt":29,"uuid":30},"6a92d6156d3bae502260bcd3","Good Reads","Books Michal has actually read and would recommend to engineers and engineering leaders - from technical classics like Designing Data-Intensive Applications to leadership reads like Staff Engineer.","https:\u002F\u002Fmsatbsx.sgp1.digitaloceanspaces.com\u002Fnews\u002Fagainst.jpg","good-reads","Sat Aug 29 2026 20:52:37 GMT+0800 (Singapore Standard Time)","a9f75c75-c1b9-4637-b7ee-592babde3aae",{"_id":32,"name":33,"description":34,"image":35,"imageAlt":10,"slug":36,"createdAt":37,"updatedAt":38,"uuid":39},"6a92d78c6d3bae502260bdc3","Technology","A running log of tools, frameworks, and technical decisions Michal has actually used and formed opinions on - from React and Tauri to DevOps culture, database architecture, and API tooling.","https:\u002F\u002Fmsatbsx.sgp1.digitaloceanspaces.com\u002Fnewscity.mp4","technology","Sat Aug 29 2026 20:58:52 GMT+0800 (Singapore Standard Time)","Sat Aug 29 2026 21:03:33 GMT+0800 (Singapore Standard Time)","b9d2bf10-b22e-4afa-b778-2bb49d12a884",{"_id":41,"name":42,"description":43,"image":44,"imageAlt":45,"slug":46,"createdAt":47,"updatedAt":48,"uuid":49},"6a92dace6d3bae502260c000","CTO work","Notes from the CTO seat - security, compliance, vendor relationships, build-vs-buy decisions, and the less glamorous parts of leading engineering that rarely make it into the highlight reel. Plus bit of utopia in the topic image. ","https:\u002F\u002Fmsatbsx.sgp1.digitaloceanspaces.com\u002Fnewscto.jpg","CTO of the Future","cto-work","Sat Aug 29 2026 21:12:46 GMT+0800 (Singapore Standard Time)","Sat Aug 29 2026 21:13:06 GMT+0800 (Singapore Standard Time)","89273ffa-05fb-4e6d-bc6b-21fa593d4c8e",{"_id":51,"name":52,"description":53,"image":54,"imageAlt":55,"slug":56,"createdAt":57,"updatedAt":57,"uuid":58},"6a9373be6d3bae5022611315","DIY","Michal's own side projects and builds - desktop setup evolutions, Ace the chatbot, and small apps built for the fun of solving a real problem.","https:\u002F\u002Fmsatbsx.sgp1.digitaloceanspaces.com\u002Fnewsdiy.jpg","Do it yourself","diy","Sun Aug 30 2026 08:05:18 GMT+0800 (Singapore Standard Time)","ac6dffb6-41ee-41b0-8819-fed9ac1d26ca",{"totalnoOfItems":60,"perPage":61,"noOfItemsOnCurrentPage":60},6,24,{"data":63,"meta":157},[64,85,104,121,139],{"relatedTools":65,"_id":66,"id":67,"title":68,"alt":69,"category":70,"categorySlug":71,"date":72,"author":73,"readTime":74,"content":75,"image":76,"more":77,"extendedContent":78,"asHTML":77,"photoCredit":73,"headTitle":19,"metaDesc":79,"tags":80,"createdAt":81,"updatedAt":82,"uuid":83,"__v":84},[],"6964fb4544efda982ea93906","desktop-2026-the-evolution-continues","Desktop 2026. The Evolution Continues.","My desk.","Hacks","hacks","2026-01-12T13:28:00.000Z","Michal",2,"Another year older, a little more experienced - and a desk that keeps evolving along the way.\nI first wrote about my desktop setup back in 2021. Since then, the game hasn’t changed through more expensive hardware,\nbut through better understanding of what I actually need.\nThe most significant shift so far? The teleprompter. And this isn’t the last change this year.","https:\u002F\u002Fmsatbsx.sgp1.digitaloceanspaces.com\u002Fnewsdesktop.jpg","true","\n\u003Cp>\u003Cstrong>Desk setup going into 2026 👇\u003C\u002Fstrong>\u003C\u002Fp>\n\n\u003Cp>\nAfter years of experimenting, adding gear, and then removing what didn’t really earn its place, this is the setup I’m going into 2026 with.\nIt’s intentionally simple, calm, and built to support how I actually work — thinking, building, recording, and having a lot of conversations.\n\u003C\u002Fp>\n\n\u003Cp>\nOne small but important detail: having the teleprompter placed directly in front of the camera allows me to keep real eye contact during calls and recordings.\nIt makes conversations feel more engaged and human, even when they happen through a screen.\n\u003C\u002Fp>\n\n\u003Cp>\u003Cstrong>Current hardware stack:\u003C\u002Fstrong>\u003C\u002Fp>\n\n\u003Cul>\n  \u003Cli>TTR desk\u003C\u002Fli>\n  \u003Cli>Elgato prompter\u003C\u002Fli>\n  \u003Cli>Quntis monitor light bar\u003C\u002Fli>\n  \u003Cli>Sony ZV-E10 used as a webcam\u003C\u002Fli>\n  \u003Cli>Harman\u002FKardon SoundSticks 4\u003C\u002Fli>\n  \u003Cli>Asus PA27JCV monitor\u003C\u002Fli>\n  \u003Cli>MacBook Pro 14”\u003C\u002Fli>\n\u003C\u002Ful>\n\n\u003Cp>\nOne more item worth mentioning - a real leather desk mat.\nIt’s not perfect in terms of craftsmanship, but that’s exactly why I like it.\nThe slightly worn look gives the desk a bit of character and reminds me that this is a workspace meant to be used, not just photographed.\n\u003C\u002Fp>\n\n\u003Cp>\nYou may also notice the glasses on the desk.\nNot part of the setup aesthetics - just a gentle reminder that at some point experience starts requiring… better optics.\nMaturity has its perks, and apparently reading small fonts isn’t one of them anymore 🤓\n\u003C\u002Fp>\n\u003Cp>\nFor 2026, the goal isn’t more gear - it’s less friction.\nA setup that stays out of the way when I’m in flow, and quietly supports the work when it’s time to ship, record, or think clearly.\n\u003C\u002Fp>\n\n\n","The Evolution of My Desktop Setup: What Changed in 2026",[52],"Mon Jan 12 2026 21:46:45 GMT+0800 (Singapore Standard Time)","Sat Aug 29 2026 09:28:10 GMT+0800 (Singapore Standard Time)","f4100c19-d524-4bf3-83e7-696cc5bc183c",0,{"relatedTools":86,"_id":87,"id":88,"title":89,"alt":90,"category":91,"categorySlug":92,"date":93,"author":73,"readTime":74,"content":94,"image":95,"more":77,"extendedContent":96,"asHTML":77,"photoCredit":97,"headTitle":98,"metaDesc":99,"tags":100,"createdAt":101,"updatedAt":102,"uuid":103,"__v":84},[],"69112d9d722b32fb3e7434bd","five-currencies-one-brain-and-a-simple-idea-turned-into-an-app","Five currencies, one brain… and a simple idea turned into an app.","FxCalculator mockup ","Side Project","side-project","2025-11-09T23:59:00.000Z","What started as frustration over complex currency apps became a weekend project - now a sleek, ad-free converter built with ExpressJS, MongoDB, and React Native. Simplicity done right.","https:\u002F\u002Fmsatbsx.sgp1.digitaloceanspaces.com\u002Fnewsfxcalc-mockup.jpg","\u003Cp>Travel enough and you’ll know the struggle: five currencies in one week, one tired brain trying to decide if that coffee is a treat or a financial mistake.\u003C\u002Fp>\n\n\u003Cp>Existing apps promised simplicity — then hit with ads, subscriptions, and UX puzzles so twisted even Rubik would complain his cube was too easy.\u003C\u002Fp>\n\n\u003Cp>So, two Saturday mornings later, I decided to build something better.\nA currency converter that just… converts. Fast, accurate, and clean.\u003C\u002Fp>\n\n\u003Cp>No ads. No subscriptions. No nonsense.\nJust one rate to understand the real value of your money — even offline.\u003C\u002Fp>\n\n\u003Cp>Under the hood, it runs on ExpressJS (API), MongoDB (data), and React Native (mobile). I’d have gone with Swift, but some folks still prefer to risk their security and use Android.\u003C\u002Fp>\n\n\u003Cp>Built for travelers, remote workers, and anyone tired of unnecessary complexity.\nBecause, as Da Vinci said — “Simplicity is the ultimate sophistication.”\u003C\u002Fp>\n\n\u003Ca href=\"https:\u002F\u002Fapps.apple.com\u002Fsg\u002Fapp\u002Ffxcalculator\u002Fid6754523685\" target=\"_new\">Download it on the App Store. It won’t change your life, but it might change how you buy coffee abroad. ☕\u003C\u002Fa>","Michal and some AI","FxCalculator – Simple, Ad-Free Currency Converter","Fast, accurate, and ad-free currency converter built with ExpressJS, MongoDB, and React Native. Simple design for travelers who value clarity",[33,52],"Mon Nov 10 2025 08:11:09 GMT+0800 (Singapore Standard Time)","Mon Nov 10 2025 08:18:28 GMT+0800 (Singapore Standard Time)","bc83a9a2-4285-4f16-9be8-77e47fdc526d",{"relatedTools":105,"_id":106,"tags":107,"id":109,"title":110,"alt":111,"category":70,"categorySlug":71,"date":112,"author":73,"readTime":74,"content":113,"image":114,"more":77,"extendedContent":115,"asHTML":77,"headTitle":116,"metaDesc":117,"photoCredit":118,"createdAt":119,"updatedAt":119,"uuid":120,"__v":84},[],"65f25dff0088b902e840d92f",[52,108],"Page related","ace-20-is-on-the-horizon","Ace 2.0 Is on the Horizon!","space traveller","2024-03-14T02:03:00.000Z","I'm thrilled to share some exciting news that I've been pouring my heart and soul into. In my spare time, I've been hard at work crafting Ace 2.0 - a project that's truly my brainchild. And let me tell you, it's about to take personal assistant technology to a whole new level!","https:\u002F\u002Fmsatbsx.sgp1.digitaloceanspaces.com\u002Fnews\u002Fspace_travel.jpg","\u003Cp>Ace 2.0 isn't just an upgrade; it's a labor of love, meticulously crafted to enhance your life in ways you never thought possible. With each line of code I've written, I've envisioned a future where convenience and productivity seamlessly intertwine.\u003C\u002Fp>\n\u003Cp>One of the most thrilling aspects of Ace 2.0 is its newfound ability to recognize faces with remarkable precision. Picture this: you walk into a room, and Ace knows exactly who you are. It's the kind of personalised interaction that only a truly intuitive assistant can provide.\u003C\u002Fp>\n\u003Cp>But that's just the beginning. Ace 2.0 will also excel in continuing conversations, effortlessly picking up where we left off. It's like chatting with an old friend who never forgets a single detail.\u003C\u002Fp>\n\u003Cp>And here's the game-changer: Ace 2.0 will be able to log you in and out without you even noticing it. No passwords, no hassle - just seamless access to your conversation.\u003C\u002Fp>\n\u003Cp>And let's not forget about scheduling appointments - a task that's about to become a whole lot easier. With Ace 2.0 by your side, you'll effortlessly coordinate meetings with me, just by talking to him.\u003C\u002Fp>\n\n\u003Cp>And finally, there's email management. Ace 2.0 will not only handle your correspondence but also maintain seamless communication threads, ensuring that no message goes unanswered.\u003C\u002Fp>\n\n\u003Cp>So, as I put the finishing touches on Ace 2.0, I can't help but feel a sense of pride and excitement. It's been a journey, but soon, my creation will be ready to surprise you.\u003C\u002Fp>\n\n\u003Cp>Stay tuned for more updates, because Ace 2.0 is coming soon - and trust me, it's going to be worth the wait.\u003C\u002Fp>","Exciting News from Yours Truly: Ace 2.0 Is on the Horizon!","Introducing Ace 2.0 - a groundbreaking personal assistant technology project that I've poured my heart and soul into. Get ready for the next level!","Midjourney","Thu Mar 14 2024 10:16:31 GMT+0800 (Singapore Standard Time)","ceba1798-662b-4aba-ade4-0678808a2220",{"relatedTools":122,"_id":123,"id":124,"title":125,"alt":126,"category":70,"date":127,"author":73,"readTime":74,"content":128,"image":129,"more":77,"extendedContent":130,"asHTML":77,"headTitle":131,"metaDesc":132,"draft":133,"photoCredit":73,"createdAt":134,"updatedAt":135,"uuid":136,"__v":137,"categorySlug":71,"tags":138},[],"654af2e8e39e4e02d1a13efe","desktop-2023-an-evolution-of-two-and-a-half-years","Desktop 2023: An Evolution of Two and a Half Years.","My desk in 2023","2023-11-08T02:18:00.000Z","Two and a half years ago, I shared my initial desk setup on this site (yeah, first post), accompanied by a few thoughts on the significance of customising your workspace to fit your specific requirements. Since then, my desk has undergone a remarkable transformation, with each change serving as a testament to the power of continuous improvement. ","https:\u002F\u002Fmsatbsx.sgp1.digitaloceanspaces.com\u002Fnews\u002Fdesk2023.jpg","\u003Ch2>Small, thoughtful adjustments.\u003C\u002Fh2>\u003Cp>The desk is a reflection of my evolving needs and a testament to the idea that small, thoughtful adjustments can make a world of difference. It's a blend of function, aesthetics, and personal creativity, and I'm excited to share how it has become a space that both inspires and enhances productivity.\u003C\u002Fp>\n\u003Cp>My current desk setup not only boasts the best components I could find but also features an immersive RGB ambient lighting system, meticulously crafted with an Arduino microcontroller and a custom 3D-printed casing, designed by yours truly.\u003C\u002Fp>\n\u003Cp>If you're interested how the light controller works, \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fmsatbsx\u002Farduino-puck-lighting\" target=\"_new\">here\u003C\u002Fa> is a public version of my repo that evaluated into solution used in this setup. When other duties allow, I'll clean up and share publicly the final one (including screen tone colour grab for Mac).\u003C\u002Fp>\n\u003Cp class=\"text-center mt-3\">Ambient light: \u003Cimg class=\"max-w-md mx-auto rounded-lg\" src=\"https:\u002F\u002Fmsatbsx.sgp1.digitaloceanspaces.com\u002Fnews\u002Flight.jpg\" alt=\"ambient light with 3D printed housing\">\u003C\u002Fp>\n\u003Cp class=\"text-center mt-3\">Here is the \u003Ca href=\"https:\u002F\u002Fnews.michalspace.com\u002Fpost\u002Fmake-your-desk-really-yours.\">old one\u003C\u002Fa>: \u003Cimg class=\"max-w-md mx-auto rounded-lg\"  src=\"https:\u002F\u002Fmsatbsx.sgp1.digitaloceanspaces.com\u002Fnews\u002Fmy_desk.jpg\" alt=\"my old desk\">\u003C\u002Fp>\n","My desk setup evolution. ","My desk has been an ever-evolving work of art, each change a reminder of the power of continuous improvement. Follow my journey to learn how I've made it.","false","Wed Nov 08 2023 10:31:04 GMT+0800 (Singapore Standard Time)","Mon Dec 04 2023 19:39:41 GMT+0800 (Singapore Standard Time)","d8feba9f-4287-4134-8325-0ffc160575a0",1,[52],{"relatedTools":140,"_id":141,"id":142,"title":143,"alt":144,"category":70,"date":145,"author":73,"readTime":146,"content":147,"image":148,"more":77,"extendedContent":149,"asHTML":77,"headTitle":150,"metaDesc":151,"photoCredit":152,"createdAt":153,"updatedAt":154,"uuid":155,"__v":137,"categorySlug":71,"tags":156},[],"645f3a536fea6f03638c24b9","django-project-shipped-as-docker-image","Ship Django project as Docker image.","Shipping containers.","2023-05-13T07:18:00.000Z",4,"Recently I needed to deploy inherited Django project. My usual approach would be to ship it as docker container. Since python is not exactly my thing, I googled how to. Unfortunately there was no simple and clean tutorial. So I wrote it (with Gunincorn and Nginx to be production ready).","https:\u002F\u002Fmsatbsx.sgp1.digitaloceanspaces.com\u002Fnews\u002Fshipping-containers.jpg","\u003Ch2 class=\"text-2xl font-bold tracking-tight text-gray-900 mt-3\">Let's ship a Django project as a Docker image.\u003C\u002Fh2>\nA couple of prerequisites before we start:\u003Cbr>\n- docker installed and running on your machine,\u003Cbr>\n- since my tutorial is minimalistic, it is addressed to people with some experience.\u003Cbr>\u003Cbr>\nYou can begin with existing code, or create a new Django project:\n\u003Cpre class=\"terminal\">\ndjango-admin startproject dockerdjango\n\u003C\u002Fpre>\nIn my case file structure looks like this (before adding docker related code):\n\u003Cpre class=\"filelist\">\ndockerdjango\n├─appsample \n│ └...\n├─dockerdjango\n│ ├...\n│ ├settings.py\n│ ├urls.py\n│ ├views.py\n│ └wsgi.py\n├─static\n│ └...\n├─templates\n│ └...\n├─db.sglite3\n├─manage.py\n└─requirements.txt\n\u003C\u002Fpre>\nIn my approach, to build a Docker image we need 3 more files:\u003Cbr>\n1. \u003Cspan class=\"font-mono text-red-700\">\u002FDockerfile\u003C\u002Fspan> (\u002F represents root of your project next to manage.py)\n\u003Cpre>\nFROM python:3.11.3-slim-bullseye\n\n# install nginx\nRUN apt-get update && apt-get install nginx vim -y --no-install-recommends\nCOPY nginx.site.conf \u002Fetc\u002Fnginx\u002Fsites-available\u002Fdefault\nRUN ln -sf \u002Fdev\u002Fstdout \u002Fvar\u002Flog\u002Fnginx\u002Faccess.log \\\n    && ln -sf \u002Fdev\u002Fstderr \u002Fvar\u002Flog\u002Fnginx\u002Ferror.log\n\n# copy source and install dependencies\nRUN mkdir -p \u002Fopt\u002Fapp\nRUN mkdir -p \u002Fopt\u002Fapp\u002Fpip_cache\nRUN mkdir -p \u002Fopt\u002Fapp\u002Fdockerdjango\nCOPY requirements.txt server-up.sh \u002Fopt\u002Fapp\u002F\nCOPY .pip_cache \u002Fopt\u002Fapp\u002Fpip_cache\u002F\nCOPY dockerdjango \u002Fopt\u002Fapp\u002Fdockerdjango\u002F\nCOPY appsample \u002Fopt\u002Fapp\u002Fappsample\u002F\nCOPY static \u002Fopt\u002Fapp\u002Fstatic\u002F\n# not default django templates folder (setup in settings.py) \nCOPY templates \u002Fopt\u002Fapp\u002Ftemplates\u002F\nWORKDIR \u002Fopt\u002Fapp\nRUN pip install -r requirements.txt --cache-dir \u002Fopt\u002Fapp\u002Fpip_cache\nRUN chown -R www-data:www-data \u002Fopt\u002Fapp\nRUN chmod 755 server-up.sh\n\n# start server\nEXPOSE 8020\nSTOPSIGNAL SIGTERM\nCMD [\"\u002Fopt\u002Fapp\u002Fserver-up.sh\"]\n\u003C\u002Fpre>\n2. \u003Cspan class=\"font-mono text-red-700\">\u002Fnginx.site.conf\u003C\u002Fspan>\n\u003Cpre>\n# nginx default site config for \u002Fetc\u002Fnginx\u002Fsites-available\u002Fdefault\n\nserver {\n    listen 8020;\n    server_name example.org;\n\n    location \u002F {\n        proxy_pass http:\u002F\u002F127.0.0.1:8010;\n        proxy_set_header Host $host;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n    }\n    location \u002Fstatic {\n        root \u002Fopt\u002Fapp;\n    }\n}\n\u003C\u002Fpre>\nand bash script to run it\u003Cbr>\n3. \u003Cspan class=\"font-mono text-red-700\">\u002Fserver-up.sh\u003C\u002Fspan>\n\u003Cpre>\n#!\u002Fusr\u002Fbin\u002Fenv bash\n# start-up.sh\n\n# Start Gunicorn processes & start the Nginx process and put it in the background\n(gunicorn dockerdjango.wsgi --user www-data --bind 0.0.0.0:8010 --workers 3) &\nnginx -g \"daemon off;\"\n\n# more on gunicon https:\u002F\u002Fdocs.gunicorn.org\u002Fen\u002Fstable\u002Fdeploy.html\n# more on nginx in container https:\u002F\u002Fdocs.nginx.com\u002Fnginx-management-suite\u002Fnim\u002Fprevious-versions\u002Fv1\u002Ftutorials\u002Fcontainers\u002F\n\u003C\u002Fpre>\nAnd a few updates to \u003Cspan class=\"font-mono text-red-700\">\u002Fdjangodocker\u002Fsettings.py\u003C\u002Fspan>\n\u003Cpre>\nALLOWED_HOSTS = ['*'] # not default\nSTATICFILES_DIRS = [  # not default\n    BASE_DIR \u002F \"static\",\n]\nCSRF_TRUSTED_ORIGINS = ['http:\u002F\u002F127.0.0.1:8020']  # not default\n\u003C\u002Fpre>\nYour \u003Cspan class=\"font-mono text-red-700\">\u002Frequirements.txt\u003C\u002Fspan> should contain at least:\n\u003Cpre>\ndjango == 4.2.1\ngunicorn == 20.1.0\n\u003C\u002Fpre>\nNow you're ready to build the image (type in terminal in root of your project where Dockerfile is located):\n\u003Cpre class=\"terminal\">\ndocker build -t yourfancytag .\n\u003C\u002Fpre>\nand run a container build out of the image:\n\u003Cpre class=\"terminal\">\ndocker run -it -p 8020:8020 --name dockerdjango yourfancytag\n\u003C\u002Fpre>\nYou should be able to access http:\u002F\u002F127.0.0.1:8020, in my project: \u002FGitHub link below\u002F\n\u003Cimg class=\"mx-auto w-10\u002F12 border my-5\" alt=\"Container ship\" src=\"https:\u002F\u002Fmsatbsx.sgp1.digitaloceanspaces.com\u002Fnews\u002Fdockerdjango-safari.png\">\n\nLater you can fire it without interactive terminal (-it)\n\u003Cpre class=\"terminal\">\ndocker run dockerdjango\n\u003C\u002Fpre>\n\u003Chr class=\"mt-3\">\n\u003Ch3 class=\"text-2xl font-bold tracking-tight text-gray-900 mt-3\">Any issues?\u003C\u002Fh3>\nFirst check your Dockerfile, it happens you're trying to copy or run something that does not exist in your project. Audit static and templates folders, they are not default ones.\u003Cbr>\u003Cbr>\nStill failing? Compare with my project, it is published on Github: \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fmsatbsx\u002Fdockerdjango\">https:\u002F\u002Fgithub.com\u002Fmsatbsx\u002Fdockerdjango\u003C\u002Fa> or clone it (due to Cloudflare email obfuscation being unable to switch off in the line below please replace USER with git [at] github.com):\n\u003Cpre class=\"terminal\">\ngit clone USER:msatbsx\u002Fdockerdjango.git\n\u003C\u002Fpre>\nYou can also build from my image and explore (it can be pulled from hub.docker.com):\n\u003Cpre class=\"terminal\">\ndocker run -d -p 8020:8020 --name dd msatbsx\u002Fdockerdjango:1\n\u003C\u002Fpre>\nWhen the container is already created, you can run it interactive and explore inside:\n\u003Cpre class=\"terminal\">\ndocker exec -it dd bash\n\u003C\u002Fpre>","Django in Docker Image","Stuck on deploying a Django project? Check out this tutorial written by someone who had to figure it out too! #Django #Python #Tutorial","Unsplash","Sat May 13 2023 15:20:51 GMT+0800 (Singapore Standard Time)","Thu Dec 14 2023 08:32:40 GMT+0800 (Singapore Standard Time)","fd905ab7-f923-4f1c-b2e4-8bce3e849d69",[52],{"totalnoOfPosts":158,"page":137,"perPage":60,"noOfPostOnCurrentPage":158},5,{"enabled":160},true]