[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"posts:::9:6:":3,"$fmAbo7HX1697lOJ4AVNBJl1PR7wUF0IkR_62krtbwQAE":131},{"data":4,"meta":127},[5,28,50,72,90,110],{"relatedTools":6,"_id":7,"id":8,"title":9,"alt":10,"category":11,"date":12,"author":13,"readTime":14,"content":15,"image":16,"more":17,"extendedContent":18,"asHTML":17,"headTitle":19,"metaDesc":20,"photoCredit":21,"createdAt":22,"updatedAt":23,"uuid":24,"categorySlug":25,"tags":26},[],"6489611fceee0d0355937ddb","technology-job-market-trends","Technology Job Market Trends.","Worried developer","Articles","2023-06-14T06:37:00.000Z","Michal",3,"Based on my frequent conversations with recruitment agencies, candidates, and my exposure to numerous resumes and offers from software houses, it is evident that significant shifts are occurring in the tech job market. This goes beyond the last year lay-offs by large corporations, which, when compared to the industry's true scale, are relatively minor. I have observed several noteworthy patterns that I would like to share.","https:\u002F\u002Fmsatbsx.sgp1.digitaloceanspaces.com\u002Fnews\u002Fdeveloper-worried.jpg","true","\u003Ch2>Tech job market from Technology Consultant PoV\u003C\u002Fh2>\n\u003Cp>Firstly, there is a notable increase in the number of highly skilled candidates who are struggling to find suitable employment. This is a trend I have not witnessed in the past 10-12 years. However, upon closer examination of their skill sets, it becomes apparent that their expertise lies primarily in areas such as Solidity, ERC20, ERC… etc, indicating a greater demand for blockchain-related skills than previously anticipated. Consequently, these candidates are willing to accept significant pay cuts and are applying for positions they are overqualified for. Unfortunately, this presents a challenge for them.\u003Cbr>\u003Cbr>\u003C\u002Fp>\n\n\n\n\u003Cp>Simultaneously, there is an overwhelming proliferation of development fulfilment companies. The market is flooded with salespeople promoting their supposedly reliable development solutions. This surge is unprecedented and exceeds previous levels of activity in this sector. Although these companies have been active in the past, the current scale of their presence is striking. \u003Cbr>\u003Cbr>\u003C\u002Fp>\n\n\n\n\u003Cp>Another area facing the impact of these market changes is recruitment agencies. Colleagues in my network have expressed that \"business is not very good this year.\" Upon further inquiry, it becomes apparent that clients have fewer open positions, and the hiring process has become sluggish.\u003Cbr>\u003Cbr>\u003C\u002Fp>\n\n\n\n\u003Cp>In light of these observations, I draw the conclusion that this is an opportune time to build an engineering team. Shifting from outsourcing to in-house operations can yield numerous benefits, including improved quality, enhanced flexibility, and cost-effectiveness. Presently, exceptional candidates are actively seeking opportunities and are open to terms that would not have been considered in the past five years. If you require expert advice on approaching this transition, I humbly offer my assistance ;)\u003Cbr>\u003Cbr>\u003Cbr>\u003C\u002Fp>\n\n\u003Cp>\u003Ci>Article was initially published on my \u003Ca href=\"https:\u002F\u002Fwww.linkedin.com\u002Fpulse\u002Ftechnology-job-market-trends-michal-szymaniak\" target=\"_new\">LinkedIn\u003C\u002Fa>\u003C\u002FI>\u003C\u002Fp>","My pov on Technology Job Market Trends","The tech job market is shifting, beyond lay-offs by big corps. Significant patterns are emerging - this post explores them.","Unsplash \u002F Wes Hicks","Wed Jun 14 2023 14:41:35 GMT+0800 (Singapore Standard Time)","Mon Dec 04 2023 19:42:35 GMT+0800 (Singapore Standard Time)","4319dbfe-e4d4-4896-9ea9-62b49b8a844f","articles",[27],"CTO work",{"relatedTools":29,"_id":30,"id":31,"title":32,"alt":33,"category":34,"date":35,"author":13,"readTime":36,"content":37,"image":38,"more":17,"extendedContent":39,"asHTML":17,"headTitle":40,"metaDesc":41,"photoCredit":42,"createdAt":43,"updatedAt":44,"uuid":45,"categorySlug":46,"tags":47},[],"647b44d0f32e94034de8c976","theory-of-the-jobs-to-be-done-","Theory of the jobs to be done. ","Book cover: Competing against luck","Books","2023-06-03T13:42:00.000Z",1,"Why do so many intelligent people struggle to address the issues of formerly successful companies? W.E. Demming believed the key was to ask the correct questions at the appropriate time. C.M. Christensen's brilliant theory of 'disruptive innovation' explains that a product must \"do the job\" in order to be successful. This concept helps us better comprehend what our customers are truly looking for. Book will give you a wow moment on every other page. Not reading it may cause serious damage to your career. No matter what you do. ","https:\u002F\u002Fmsatbsx.sgp1.digitaloceanspaces.com\u002Fnews\u002Fagainst.jpg","\u003Ch2>Be customer centric. Your product needs to do the \"job\".\u003C\u002Fh2>\n\u003Cp>In \"The Jobs to Be Done Theory\" by Clayton Christensen, the author delves into the intricate dynamics of business success and failure, particularly why some companies find themselves in perpetual struggle. Christensen's insightful exploration centers around the concept of understanding what customers truly seek—going beyond surface-level product features to identify the fundamental \"jobs\" that customers hire a product or service to perform in their lives. By dissecting these jobs, Christensen reveals a paradigm shift in approaching market needs. Companies that grasp the essence of the jobs their customers are trying to get done can align their offerings more effectively, innovating with a profound understanding of customer motivations. Through this lens, the book offers a strategic roadmap for businesses, emphasising the importance of customer-centricity and a nuanced comprehension of the real problems consumers aim to solve, ultimately paving the way for sustainable success in the ever-evolving landscape of business and innovation.\u003C\u002Fp>","Competing against luck. What a book.","Theory of the jobs to be done a book by Clayton Christensen. Why some companies struggle? Author provides insight into what customers are really looking for.","CC (or stolen?)","Sat Jun 03 2023 21:49:04 GMT+0800 (Singapore Standard Time)","Mon Dec 04 2023 19:43:00 GMT+0800 (Singapore Standard Time)","e805a97a-bb60-4b4f-a12c-4af155067253","books",[48,49],"Good Reads","Very Good Reads",{"relatedTools":51,"_id":52,"id":53,"title":54,"alt":55,"category":56,"date":57,"author":13,"readTime":58,"content":59,"image":60,"more":17,"extendedContent":61,"asHTML":17,"headTitle":62,"metaDesc":63,"photoCredit":64,"draft":65,"createdAt":66,"updatedAt":67,"uuid":68,"categorySlug":69,"tags":70},[],"646ec00cf32e94034de8c974","is-tauri-a-electron-killer","Is Tauri an Electron killer?","tauri website","Thought","2023-05-25T01:45:00.000Z",2,"ElectronJS-powered applications are ubiquitous; Slack, Visual Studio Code, Figma, Discord, Postman and countless others. My teams have released several projects using this technology, and it certainly works - albeit with a few minor but irksome bumps along the way. Releasing a project with Electron as opposed to Chromium often required a few days of extra effort just to make it stable. Therefore, when Tauri began gaining traction, I decided to give it a shot.","https:\u002F\u002Fmsatbsx.sgp1.digitaloceanspaces.com\u002Fnews\u002Ftauri.jpg","\u003Ch2>My first experiences with \u003Ca href=\"https:\u002F\u002Ftauri.app\" target=\"_blank\" rel=\"noopener\">Tauri\u003C\u002Fa>\u003C\u002Fh2>\n\u003Cp>I was absolutely astounded to discover that I could compile my first Tauri OSX build, including a dmg package, in only 10 minutes from the time I first landed on their website! It was fast and stable too – truly remarkable.\u003Cbr> The documentation was incredibly helpful; even as an 'old timer', I could comprehend it!\u003Cbr> What's more, the bundle size was incredibly small; my entire app was compressed into just 4MB, instead of the hundreds of MBs required by Electron. I was equally impressed when I saw how easy it is to add Rust functions to a frontend project. This opens up the potential for significant speed enhancements.\u003C\u002Fp>\n\u003Cp>All in all, it's evident that Electron may have met its match. For me, this is like a bullet whizzing through the air!\u003C\u002Fp>","Is Tauri an Electron killer? Read why!","ElectronJS-powered apps are everywhere; Slack, VS Code, Figma, Discord & more. Tauri gained traction so I decided to give it a shot.","Tauri website","false","Thu May 25 2023 09:55:24 GMT+0800 (Singapore Standard Time)","Mon Dec 04 2023 19:43:24 GMT+0800 (Singapore Standard Time)","0a2edb01-9acc-491c-8bc6-e804c9de83bc","thought",[71],"Technology",{"relatedTools":73,"_id":74,"id":75,"title":76,"alt":77,"category":56,"date":78,"author":13,"readTime":14,"content":79,"image":80,"more":17,"extendedContent":81,"asHTML":17,"headTitle":82,"metaDesc":83,"photoCredit":84,"draft":85,"createdAt":86,"updatedAt":87,"uuid":88,"categorySlug":69,"tags":89},[],"64646e67f32e94034de8c96f","my-thoughts-on-github-copilot","My thoughts on Github Copilot.","Github Copilot creature in space","2023-05-17T06:02:00.000Z","I've been using Copilot in my main editor for several months now, and rarely press Tab to accept its suggestions. This usually only happens when I type descriptions, not code. Anyways, I found it helpful, but risky. Let's take a closer look at why.","https:\u002F\u002Fmsatbsx.sgp1.digitaloceanspaces.com\u002Fnews\u002Fcopilot.jpg","\u003Ch2>GitHub Copilot? I'm open, but it is not there yet.\u003C\u002Fh2>\nAs an AI enthusiast, I foresee a future where the majority of \"coding jobs\" will involve guiding engines to do the heavy lifting, changing programming into prompting! 🚀\u003Cbr>\u003Cbr>\n\nHowever, my experience with Github Copilot as my \"pair programmer\" left much to be desired. Some of its suggestions were way off the mark, not in terms of language syntax but in terms of adding real value. It sometimes created a tangled mess of code, resembling a bowl of spaghetti! 🍝\u003Cbr>\u003Cbr>\n\nCompared to simpler online versions of chat-GPT (and models trained on specific content), Copilot's prompting capabilities fell short. It didn't reduce my need to search for documentation or check Stack Overflow. However, I did find it quite useful for straightforward and repetitive tasks. It excelled at generating switch blocks with predefined options or typing out descriptions in plain English. Those were smooth sailing! ⛵️\u003Cbr>\u003Cbr>\n\nBut let's be real, Copilot didn't make the cut for me. It lacked the bigger picture thinking that proposes a solution instead of working inline. It was too easy to fall into the trap of WET code (opposite of DRY - Do Not Repeat Yourself). Sure, it's tempting to hit that Tab key, but it often leads to wasting time for code review. I prefer being in control when it comes to deciding when proposed code blocks popups to accept or escape. ⏸️\u003Cbr>\u003Cbr>\n\nThat being said, I believe GitHub Copilot shows promise as a feature. Perhaps the recently announced Copilot-X will be the breakthrough we've been waiting for. Only time will tell! ✨","My thoughts after using Github Copilot","Github Copilot is a AI backed editor tool that should save time by providing code suggestions. Does it really help? Check my pov. #editor #writing #programming","Unsplash","","Wed May 17 2023 14:04:23 GMT+0800 (Singapore Standard Time)","Mon Dec 04 2023 19:43:38 GMT+0800 (Singapore Standard Time)","32477a57-00bf-4fa4-aa8b-f6183c0d753a",[71],{"relatedTools":91,"_id":92,"id":93,"title":94,"alt":95,"category":96,"date":97,"author":13,"readTime":98,"content":99,"image":100,"more":17,"extendedContent":101,"asHTML":17,"headTitle":102,"metaDesc":103,"photoCredit":84,"createdAt":104,"updatedAt":105,"uuid":106,"categorySlug":107,"tags":108},[],"645f3a536fea6f03638c24b9","django-project-shipped-as-docker-image","Ship Django project as Docker image.","Shipping containers.","Hacks","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","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","hacks",[109],"DIY",{"relatedTools":111,"_id":112,"id":113,"title":114,"alt":115,"category":34,"date":116,"author":13,"readTime":58,"content":117,"image":118,"more":17,"extendedContent":119,"asHTML":17,"headTitle":120,"metaDesc":121,"photoCredit":122,"createdAt":123,"updatedAt":124,"uuid":125,"categorySlug":46,"tags":126},[],"644f9d14774c389bc4de01ba","designing-data-intensive-applications-must-read","Designing Data-Intensive Applications. Must read.","Designing Data-Intensive Applications - book cover.","2023-05-01T10:50:00.000Z","Designing Data-Intensive Applications, a book by Martin KIeppmann. I made a fortunate mistake when I bought this book while purchasing all the titles on my wish list. I'm not sure how it ended up in my cart, but I'm certainly glad it did! If you're developing any software, from headless front-end to complex distributed systems, this book is a must-read.  It gives an insightful look into the potential pitfalls of data management, and provides practical advice on how to navigate through the challenges. If you're working on any kind of software project, this book is essential.","https:\u002F\u002Fmsatbsx.sgp1.digitaloceanspaces.com\u002Fnews\u002F\u002Fdata-intensive.jpg","\u003Ch2>My top book recommendation is \"Designing Data-Intensive Applications\"\u003C\u002Fh2>\nHave you ever asked yourself why in a chat app you see an answer first, followed by the question? Or why does your friend see different content on a sports portal? Is he ahead of time? Or how to architect a system like twitter's, where some of the messages have only a few hundred subscribers, where others, many millions. These are just examples of the complex issues surrounding distributed database systems that the author walks you through. The book is much more than that; it is a comprehensive introduction to the modern challenges of dealing with large amounts of data. It is easy to understand and will not disappoint - I am a demanding reader, familiar with the topics, and I enjoyed it immensely.\u003Cbr>\nNote, the book is almost 600 pages long and full of facts, you'll not finish it in one night ;)\n","Designing Data-Intensive Applications book review.","Accidentally bought a book? Lucky me! Must-read for software devs. Understand potential pitfalls of modern distributed systems & how to tackle them.","Unsplash\u002FMichal","Mon May 01 2023 19:05:56 GMT+0800 (Singapore Standard Time)","Thu Dec 14 2023 08:45:22 GMT+0800 (Singapore Standard Time)","627b9eb3-0033-404c-a03d-d7cd50238359",[48,49],{"totalnoOfPosts":128,"page":129,"perPage":130,"noOfPostOnCurrentPage":130},82,9,6,{"enabled":132},true]