{"@attributes":{"version":"2.0"},"channel":{"title":"Blog - Container Solutions","link":"https:\/\/blog.container-solutions.com","description":"Read the latest thinking, news and research from the team at Container Solutions in our Cloud Native Blog.","language":"en","pubDate":"Fri, 06 Mar 2026 09:47:17 GMT","item":[{"title":"Claude's Structured Outputs","link":"https:\/\/blog.container-solutions.com\/claudes-structured-outputs","description":"<div class=\"hs-featured-image-wrapper\"> \n <a href=\"https:\/\/blog.container-solutions.com\/claudes-structured-outputs\" title=\"\" class=\"hs-featured-image-link\"> <img src=\"https:\/\/blog.container-solutions.com\/hubfs\/Morse_Key.jpg\" alt=\"Claude's Structured Outputs\" class=\"hs-featured-image\" style=\"width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;\"> <\/a> \n<\/div> \n<p>&nbsp;<\/p>","pubDate":"Fri, 06 Mar 2026 09:47:17 GMT","author":"jamie.dobson@container-solutions.com (Jamie Dobson)","guid":"https:\/\/blog.container-solutions.com\/claudes-structured-outputs"},{"title":"Why I'm No Longer Talking to Architects About Microservices","link":"https:\/\/blog.container-solutions.com\/why-im-no-longer-talking-to-architects-about-microservices","description":"<div class=\"hs-featured-image-wrapper\"> \n <a href=\"https:\/\/blog.container-solutions.com\/why-im-no-longer-talking-to-architects-about-microservices\" title=\"\" class=\"hs-featured-image-link\"> <img src=\"https:\/\/blog.container-solutions.com\/hubfs\/Screenshot%202025-03-11%20at%2015.14.16.png\" alt=\"Why I'm No Longer Talking to Architects About Microservices\" class=\"hs-featured-image\" style=\"width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;\"> <\/a> \n<\/div> \n<p>It happened again last week. I was at an architecture review meeting when a fellow architect eagerly started another debate about *microservices*. Within minutes, eyes glazed over and we were knee-deep in an absurd discussion about something that should have been a means to an end, but had morphed into the end itself. At that moment, I realized: I\u2019m done. I\u2019ve finally sworn off talking to architects about microservices. Why? Because these conversations usually go nowhere productive.<\/p>","category":["Cloud native","Microservices","Architecture"],"pubDate":"Tue, 11 Mar 2025 15:15:08 GMT","author":"ian.miell@container-solutions.com (Ian Miell)","guid":"https:\/\/blog.container-solutions.com\/why-im-no-longer-talking-to-architects-about-microservices"},{"title":"Exploring OSCAL Using Neo4J","link":"https:\/\/blog.container-solutions.com\/exploring-oscal-using-neo4j","description":"<div class=\"hs-featured-image-wrapper\"> \n <a href=\"https:\/\/blog.container-solutions.com\/exploring-oscal-using-neo4j\" title=\"\" class=\"hs-featured-image-link\"> <img src=\"https:\/\/blog.container-solutions.com\/hubfs\/Screenshot%202024-12-31%20at%2011.50.00.png\" alt=\"Exploring OSCAL Using Neo4J\" class=\"hs-featured-image\" style=\"width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;\"> <\/a> \n<\/div> \n<p>This post is aimed at those interested in continuous compliance, an extension of cloud native principles to the area of software compliance, an under-developed field of software automation.<\/p>","category":"Continuous Compliance","pubDate":"Fri, 10 Jan 2025 12:18:18 GMT","author":"ian.miell@container-solutions.com (Ian Miell)","guid":"https:\/\/blog.container-solutions.com\/exploring-oscal-using-neo4j"},{"title":"Paralysed by Perfection: the Case for Action in Times of Change","link":"https:\/\/blog.container-solutions.com\/paralyzed-by-perfection-the-case-for-action-in-times-of-change","description":"<div class=\"hs-featured-image-wrapper\"> \n <a href=\"https:\/\/blog.container-solutions.com\/paralyzed-by-perfection-the-case-for-action-in-times-of-change\" title=\"\" class=\"hs-featured-image-link\"> <img src=\"https:\/\/blog.container-solutions.com\/hubfs\/Screenshot%202024-12-05%20at%2017.01.13-1.png\" alt=\"Paralysed by Perfection: the Case for Action in Times of Change\" class=\"hs-featured-image\" style=\"width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;\"> <\/a> \n<\/div> \n<p style=\"text-align: left;\">Imagine a business that knows its survival depends on change\u2014but can't decide how to act. This scenario plays out more often than you'd think, with fear of failure paralysing decision-making and ensuring stagnation. This scenario can be summarised as a paradox:<\/p>","category":["Cloud native","Patterns"],"pubDate":"Mon, 09 Dec 2024 15:02:11 GMT","author":"ian.miell@container-solutions.com (Ian Miell)","guid":"https:\/\/blog.container-solutions.com\/paralyzed-by-perfection-the-case-for-action-in-times-of-change"},{"title":"Does Crossplane Replace Terraform? Part I: the Theory","link":"https:\/\/blog.container-solutions.com\/does-crossplane-replace-terraform","description":"<div class=\"hs-featured-image-wrapper\"> \n <a href=\"https:\/\/blog.container-solutions.com\/does-crossplane-replace-terraform\" title=\"\" class=\"hs-featured-image-link\"> <img src=\"https:\/\/blog.container-solutions.com\/hubfs\/Screenshot%202024-06-05%20at%2011.26.11.png\" alt=\"Does Crossplane Replace Terraform? Part I: the Theory\" class=\"hs-featured-image\" style=\"width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;\"> <\/a> \n<\/div> \n<h2>What is Crossplane?<\/h2> \n<p>If you don't already know,&nbsp;<span>Crossplane is billed as an:<\/span><\/p>","category":["Cloud native","Kubernetes","CI\/CD","GitOps","Cloud Native Operations"],"pubDate":"Wed, 05 Jun 2024 10:27:40 GMT","author":"ian.miell@container-solutions.com (Ian Miell)","guid":"https:\/\/blog.container-solutions.com\/does-crossplane-replace-terraform"},{"title":"In Praise of Low Tech\u00a0DevEx","link":"https:\/\/blog.container-solutions.com\/in-praise-of-low-tech-devex","description":"<div class=\"hs-featured-image-wrapper\"> \n <a href=\"https:\/\/blog.container-solutions.com\/in-praise-of-low-tech-devex\" title=\"\" class=\"hs-featured-image-link\"> <img src=\"https:\/\/zwischenzugs.com\/wp-content\/uploads\/2024\/05\/screenshot2.png?w=1024\" alt=\"In Praise of Low Tech&nbsp;DevEx\" class=\"hs-featured-image\" style=\"width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;\"> <\/a> \n<\/div>  \n<p style=\"font-size: 8px;\"><span style=\"font-size: 19px; font-weight: 400; letter-spacing: 0px; text-transform: initial; background-color: transparent;\">When I started my career as an engineer in the early noughties, I was very keen on developer experience (devex).<\/span><\/p>  \n<div> \n <p>So when I joined a company whose chosen language was<span>&nbsp;<\/span><a href=\"https:\/\/tcl.tk\/\">TCL<\/a><span>&nbsp;<\/span>(no, really), I decided to ask the engineering mailing list what IDEs they used. Surely the senior engineers, with all their wisdom and experience, would tell which of the many IDEs available at the time made them the most productive? This was decades before \u2018developer experience\u2019 had a name, but nonetheless it was exactly what I was talking about, and what people fretted about.<\/p> \n <p>Minutes later, I received a terse one-word missive from the CTO:<\/p> \n <pre><code>From: CTO<br>Subject: IDEs<br><strong><br><\/strong>&gt; Which IDEs do people recommend using here? Thanks,<br>&gt; Ian<br><strong><br>vim<\/strong><\/code><\/pre> \n <p>Being young and full of precocious wisdom, I ignored this advice for a while. I installed<span>&nbsp;<\/span><a href=\"https:\/\/www.eclipse.org\/downloads\/packages\/\">Eclipse<\/a><span>&nbsp;<\/span>(which took up more RAM than my machine had, and quickly crashed it), and settled on<span>&nbsp;<\/span><a href=\"https:\/\/kate-editor.org\/en-gb\/\">Kate<\/a><span>&nbsp;<\/span>(do people still use Kate?). But eventually I twigged that I was no more productive than those around me that used<span>&nbsp;<\/span><code><strong>vim<\/strong><\/code>.<\/p> \n <p>So, dear reader, I married<span>&nbsp;<\/span><code><strong>vim<\/strong><\/code>. That marriage is still going strong twenty years later, and our love is deeper than ever.<\/p> \n <p>This pattern has been repeated multiple times with various tools:<\/p> \n <ul> \n  <li>see the fancy new GUI<\/li> \n  <li>try it<\/li> \n  <li>gradually realise that the command-line, text-only, steep-learning-curve, low-tech approach is the most productive<\/li> \n <\/ul> \n <p>Some time ago it got to the point where when someone shows me the GUI, I ask where the command-line version is, as I\u2019d rather use that. I often get funny looks at both this, and when I say I\u2019d rather not use Visual Studio if possible.<\/p> \n <p>I also find looking at<span>&nbsp;<\/span><code><a href=\"https:\/\/www.vim.org\/download.php\"><strong>gvim<\/strong><\/a><\/code><span>&nbsp;<\/span>makes me feel a bit queasy, like seeing your dad dancing at a wedding.<\/p> \n <p>This is not a vim vs not-vim post. Vim is just one of the oldest and most enduring examples of an approach which I\u2019ve found has served me better as I\u2019ve got older.<\/p> \n <p>I call this approach \u2018low-tech devex\u2019, or \u2018LTD\u2019. It prefers:<\/p> \n <ul> \n  <li>Long-standing, battle-hardened tools that have stood the test of time<\/li> \n  <li>Tools with stable histories<\/li> \n  <li>Small tools with relatively few dependencies<\/li> \n  <li>Text-based input and output<\/li> \n  <li>Command-line approaches that exemplify unix principles<\/li> \n  <li>Tools that don\u2019t require daemons\/engines to run<\/li> \n <\/ul> \n <p>LTD also is an abbreviation of \u2018limited\u2019, which seems appropriate\u2026<\/p>  \n <div> \n  <div> \n   <div>  \n   <\/div> \n  <\/div> \n <\/div>  \n <h2>How Is Low-Tech Devex Better?<\/h2> \n <p>All LTD tools arguably reflect the aims and principles of the<span>&nbsp;<\/span><a href=\"http:\/\/www.catb.org\/esr\/writings\/taoup\/html\/ch01s06.html\">UNIX philosophy<\/a>, which has been summarised as:<\/p> \n <blockquote> \n  <p style=\"font-weight: bold;\"><em>Write programs that do one thing and do it well. Write programs to work together. Write programs to handle text streams, because that is a universal interface.<\/em><\/p> \n <\/blockquote> \n <h3>Portability<\/h3> \n <p>LTD is generally very portable. If you can use <span style=\"font-family: 'Courier New', Courier, monospace; font-weight: bold;\">vim<\/span>, it will work in a variety of situations, both friendly and hostile.<span>&nbsp;<\/span><span style=\"font-family: 'Courier New', Courier, monospace;\"><code>vim<\/code><\/span>, for example can easily be run on Windows, MacOS, Linux, or even that old HPUX server which doesn\u2019t even run <span style=\"font-weight: bold; font-family: 'Courier New', Courier, monospace;\">bash<\/span>, yet does run your mission-critical database.<\/p> \n <h3>Speed<\/h3> \n <p>These tools tend to run fast when doing their work, and take little time to start up. This can make a big difference if you are in a \u2018flow\u2019 state when coding. They also tend to offer fewer distractions as you\u2019re working. I just started up VSCode on my M2 Mac in a random folder with one file in it, and it took over 30 seconds until I could start typing.<\/p> \n <h3>Power<\/h3> \n <p>Although the learning curve can be steep, these tools tend to allow you to do extremely powerful things. The return on the investment, after an initial dip, is steep and long-lasting. Just ask any<span>&nbsp;<\/span><span style=\"font-weight: bold; font-family: 'Courier New', Courier, monospace;\"><code>emacs<\/code><\/span><span>&nbsp;<\/span>user.<\/p> \n <h3>Composability \/ Embeddability<\/h3> \n <p>Because these tools have fewer dependencies, they tend to be more easily composable with \u2013 or embeddable in \u2013 one another. This is a consequence of the Unix philosophy.<\/p> \n <p>For example, using<span>&nbsp;<\/span><code><strong>vim<\/strong><\/code><span>&nbsp;<\/span>inside a running Docker container is no problem, but if you want to exec onto your Ubuntu container running in production and run VSCode quickly and easily, good luck with all that. (Admittedly, VSCode is a tool I do use occasionally, as it\u2019s very powerful for certain use cases, very widely used, and seems designed to make engineers\u2019 lives easier rather than collect a fee. But I do so under duress, usually.)<\/p> \n <p>And because they use also typically use standard *nix conventions, these tools can be chained together to produce more and more bespoke solutions quickly and flexibly.<\/p> \n <h3>Users\u2019 Needs Are Emphasised<\/h3> \n <p>LTD tools are generally written by and for the user\u2019s needs, rather than any purchaser\u2019s needs. Purchasers like fancy GUIs and point-and-click interfaces, and \u2018new\u2019 tools. Prettiness and novelty don\u2019t help the user in the long term.<\/p> \n <h4>More Sustainable<\/h4> \n <p>These tools have been around for decades (in most cases), and are highly unlikely to go away. Once you\u2019ve picked one for a task, it\u2019s unlikely you\u2019ll need a new one.<\/p> \n <h4>More Maintainable<\/h4> \n <p>Again, because these tools have been around for a long time, they tend to have a very stable interface and feature set. There\u2019s little more annoying than picking up an old project and discovering you have to upgrade a bunch of dependencies and even rewrite code to get your project fired up again (I\u2019m looking at you, node).<\/p>  \n <div> \n  <div> \n   <div>  \n   <\/div> \n  <\/div> \n <\/div>  \n <h2>How We Use LTD<\/h2> \n <p>Here\u2019s an edited example of a project I wrote for myself which mirrors some of the projects we have built for our more engineering-focussed clients.<\/p> \n <p>Developer experience starts with a Makefile. Traditionally, Makefiles were used for compiling binaries efficiently and accounting for dependencies that may or may not need updating.<\/p> \n <p>In the \u2018modern\u2019 world of software delivery, they can be used to provide a useful interface for the engineer for what the project can do. As the team works on the project they can add commands to the list for tasks that they often perform.<\/p> \n <pre><strong>help<\/strong>:<br>        @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = \":.*?## \"}; {printf \"\\033[36m%-30s\\033[0m %s\\n\", $$1, $$2}'<br><br><strong>docker_build<\/strong>:  ## Build the docker image to run in<br>    docker build -t data-scraper . | tee \/tmp\/data-scraper-docker-build<br>    docker tag data-scraper:latest docker.io\/imiell\/data-scraper<br><br><strong>get_latest<\/strong>: docker_build     ## Get latest data <br>    @docker run \\<br>        -w=\"\/data-scraper\" \\<br>        --user=\"$(shell id -u):$(shell id -g)\" \\<br>        --volume=\"$(PWD):\/data-scraper\" \\<br>        --volume=\"$(HOME)\/.local:\/home\/imiell\/.local\" \\<br>        -- volume=\"$(HOME)\/.bash_history:\/home\/imiell\/.bash_history\" \\<br>        --volume=\"\/etc\/group:\/etc\/group:ro\" \\<br>        --volume=\"\/etc\/passwd:\/etc\/passwd:ro\" \\<br>        --volume=\"\/etc\/shadow:\/etc\/shadow:ro\" \\<br>        --network=\"host\" \\<br>        --name=get_latest_priority \\<br>        data-scraper \\<br>        .\/src\/get-latest.sh<\/pre> \n <p>It's a great way of sharing 'best practice' within a team.<\/p> \n <p>I then have a<span>&nbsp;<\/span><code><strong>make.sh<\/strong><\/code><span>&nbsp;<\/span>script which wraps calls to make with features such as capturing logs in a standard format and cleaning up any left-over files once a task is done. I then use that script in a crontab in production like this:<\/p> \n <pre><strong>*\/5 * * * * imiell run-one \/home\/imiell\/git\/data-scraper\/src\/make.sh \\<br><\/strong><strong>                             get_latest<\/strong><\/pre> \n <p>Using<span>&nbsp;<\/span><code><strong>run-one<\/strong><\/code><span>&nbsp;<\/span>and<span>&nbsp;<\/span><code><strong>cron<\/strong><\/code><span>&nbsp;<\/span>I can effectively have a daemon running on my server with very little overhead.<\/p> \n <p>A challenge with<span>&nbsp;<\/span><code><strong>make<\/strong><\/code><span>&nbsp;<\/span>is that it has quite a steep learning curve for most engineers to write, and an idiosyncratic syntax (to younger eyes, at least).<\/p>  \n <div> \n  <div> \n   <div>  \n   <\/div> \n  <\/div> \n <\/div>  \n <p>However, while it can seem tricky to<span>&nbsp;<\/span><em>write<\/em><span>&nbsp;<\/span>Makefiles, it\u2019s relatively easy to<span>&nbsp;<\/span><em>use<\/em><span>&nbsp;<\/span>them, which makes them quite a useful tool for getting new team members onboarded quickly. And for my personal projects - given enough time - new team members can mean me! If I return to a project after a time, I just run<span>&nbsp;<\/span><code><strong>make help<\/strong><\/code><span>&nbsp;<\/span>and I can see instantly what my developer workflow looks like.<\/p> \n <p>Here\u2019s an example<span>&nbsp;<\/span><code><strong>make help<\/strong><\/code><span>&nbsp;<\/span>on a project I\u2019m working on:<\/p>  \n <a href=\"https:\/\/zwischenzugs.com\/wp-content\/uploads\/2024\/05\/screenshot2.png\"><\/a>  \n <p>This means if I have to onboard a new engineer, they can just run <span style=\"font-weight: bold; font-family: 'Courier New', Courier, monospace;\">make help<\/span> to determine what actions they can perform, and because most of the tasks run in containers or use standard tooling, it should work anywhere the command line and Docker is available.<\/p> \n <p>This idea is similar to Dagger, which seeks to be a portable CI\/CD engine where steps run in containers. However, running Dagger on Kubernetes<span>&nbsp;<\/span><a href=\"https:\/\/github.com\/dagger\/dagger\/blob\/main\/core\/docs\/d7yxc-operator_manual.md\">requires privileged access<\/a><span>&nbsp;<\/span>and carries with it a Dagger engine, which requires installation and maintenance.<span>&nbsp;<\/span><code><strong>make<\/strong><\/code><span>&nbsp;<\/span>requires none of these moving parts, which makes maintenance and installation significantly simpler. The primitives used in Make can be used in your CI\/CD tool of choice to create a similar effect.<\/p> \n <h3>What Low-Tech Devex Tools Should You Know About?<\/h3> \n <p>Here is a highly opinionated list of LTD tooling that you should know:<\/p> \n <h4>shell<\/h4> \n <p>Mastery of shells are essential to LTD; they underpin almost all of them.<\/p> \n <h4>vim\/emacs<\/h4> \n <p>Already mentioned above,<span>&nbsp;<\/span><code><strong>vim<\/strong><\/code><span>&nbsp;<\/span>is available everywhere and is very powerful and flexible. Other similar editors are available and inspire similar levels of religious fervour.<\/p> \n <h4>make<\/h4> \n <p>Make is the cockroach of build tools: it just won\u2019t die. Others have come and gone, some are still here, but<span>&nbsp;<\/span><code><strong>make<\/strong><\/code><span>&nbsp;<\/span>is always there, does the job, and can\u2019t go out of fashion because it\u2019s<span>&nbsp;<\/span><em>always<\/em><span>&nbsp;<\/span>been out of fashion.<\/p> \n <p>However, as noted above, the learning curve is rather steep. It also has its limits in terms of whizz-bang features.<\/p> \n <h4>Docker<\/h4> \n <p>The trendiest of these. I could talk instead of chroot jails and how they can improve devex and delivery a lot on their own, but I won\u2019t go there, as Docker is now relatively ubiquitous and mature. Docker is best enjoyed as a command line interface (CLI) tool, and it\u2019s speed and flexibility composed with some makefiles or shell scripts can improve developer experience enormously.<\/p> \n <h4>tmux \/ screen<\/h4> \n <p>When your annoying neighbour bangs on about how the terminal can\u2019t give you the multi-window joy of a GUI IDE, crack your knuckles and show them one of these tools. Not only can they give you windowing capabilities, they can be manipulated faster than someone can move a mouse.<\/p> \n <p>I adore<span>&nbsp;<\/span><code><strong>tmux<\/strong><\/code><span>&nbsp;<\/span>and key sequences like<span>&nbsp;<\/span><code><strong>:movew -r<\/strong><\/code><span>&nbsp;<\/span>and<span>&nbsp;<\/span><code><strong>CTRL+B z CTRL+B SPACE<\/strong><\/code><span>&nbsp;<\/span>are second nature to me now.<\/p> \n <h4>git<\/h4> \n <p>Distributed source control at the command line. \u2019nuff said.<\/p> \n <h4>curl<\/h4> \n <p>cURL is one of my favs. I prefer to use it over GUI tools like Postman, as you can just save command lines in Markdown files for how-to guides and playbooks. And it\u2019s super useful when you want to debug a network request by \u2018exporting as cURL command\u2019 from Chrome devtools.<\/p> \n <h4>cloud shell<\/h4> \n <p>Cloud providers provide in-browser terminals with the provider\u2019s CLI installed. This avoids the need to configure keys (if you are already logged in) and worry about the versioning or dependencies of the CLI. I agree with @hibri here.<\/p>  \n <div> \n  <div> \n   <div>  \n   <\/div> \n  <\/div> \n <\/div>  \n <h4>ssh<\/h4> \n <p>Why bother with the faffs of remote desktops when you have<span>&nbsp;<\/span><code><strong>ssh<\/strong><\/code><span>&nbsp;<\/span>and<span>&nbsp;<\/span><code><strong>tmux<\/strong><\/code>? If you depend on GUIs, that\u2019s the problem you need to solve.<\/p>       \n <p>Finally, special mentions to these<span>&nbsp;<\/span><a href=\"https:\/\/github.com\/rothgar\/awesome-tuis\">text user interfaces<\/a><span>&nbsp;<\/span>(TUIs) and dev-friendly tools:<\/p> \n <ul> \n  <li><code><strong><a href=\"https:\/\/asciinema.org\/a\/305944\">k9s<\/a><\/strong><\/code><span>&nbsp;<\/span>\u2013 text user interface (TUI) for Kubernetes<\/li> \n  <li><code><strong>top\/<a href=\"https:\/\/htop.dev\/\">htop<\/a>\/<a href=\"https:\/\/ctop.sh\/\">ctop<\/a><\/strong><\/code><span>&nbsp;<\/span>etc \u2013 monitoring tools<\/li> \n  <li><code><strong><a href=\"https:\/\/www.geeksforgeeks.org\/sar-command-linux-monitor-system-performance\/\">sar<\/a><\/strong><\/code><span>&nbsp;<\/span>\u2013 monitoring\/performance analysis tool<\/li> \n  <li><strong><code><a href=\"https:\/\/github.com\/clibs\/entr?tab=readme-ov-file#event-notify-test-runner\">entr<\/a><\/code><\/strong><span>&nbsp;<\/span>\u2013 run commands when specific files change. Get rapid feedback in dev.<\/li> \n  <li><strong><code><a href=\"https:\/\/imgur.com\/nnn-terminal-filebrowser-demo-kOld6HT\">nnn<\/a><\/code><\/strong><span>&nbsp;<\/span>\u2013 file browser<\/li> \n <\/ul> \n<\/div>","category":["DevOps","Open Source","platform","Programming"],"pubDate":"Tue, 21 May 2024 09:02:12 GMT","author":"ian.miell@container-solutions.com (Ian Miell)","guid":"https:\/\/blog.container-solutions.com\/in-praise-of-low-tech-devex"},{"title":"At 50 Years Old, Is SQL Becoming a Niche Skill?","link":"https:\/\/blog.container-solutions.com\/is-sql-now-a-niche-skill","description":"<div class=\"hs-featured-image-wrapper\"> \n <a href=\"https:\/\/blog.container-solutions.com\/is-sql-now-a-niche-skill\" title=\"\" class=\"hs-featured-image-link\"> <img src=\"https:\/\/blog.container-solutions.com\/hubfs\/Screenshot%202024-05-02%20at%2012.47.05.png\" alt=\"At 50 Years Old, Is SQL Becoming a Niche Skill?\" class=\"hs-featured-image\" style=\"width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;\"> <\/a> \n<\/div> \n<div class=\"hs-embed-wrapper\" style=\"position: relative; overflow: hidden; width: 100%; height: auto; padding: 0px; max-width: 545px; min-width: 256px; display: block; margin: auto;\"> \n <div class=\"hs-embed-content-wrapper\"> \n  <blockquote class=\"twitter-tweet\"> \n   <p>SQL is turning 50 years old later this week \ud83c\udf89<br><br>In your opinion, which are the best bits? Which are the worst? <a href=\"https:\/\/t.co\/aAB5emHuip\">pic.twitter.com\/aAB5emHuip<\/a><\/p>\u2014 Jeremy Taylor (@refset) \n   <a href=\"https:\/\/twitter.com\/refset\/status\/1785004780160536637?ref_src=twsrc%5Etfw\">April 29, 2024<\/a> \n  <\/blockquote> \n <\/div> \n<\/div>","category":"Programming","pubDate":"Tue, 07 May 2024 12:43:07 GMT","author":"ian.miell@container-solutions.com (Ian Miell)","guid":"https:\/\/blog.container-solutions.com\/is-sql-now-a-niche-skill"},{"title":"OK Cloud, On-Prem is Alright","link":"https:\/\/blog.container-solutions.com\/ok-cloud-on-prem-is-alright","description":"<div class=\"hs-featured-image-wrapper\"> \n <a href=\"https:\/\/blog.container-solutions.com\/ok-cloud-on-prem-is-alright\" title=\"\" class=\"hs-featured-image-link\"> <img src=\"https:\/\/blog.container-solutions.com\/hubfs\/ok-computer.jpeg\" alt=\"OK Cloud, On-Prem is Alright\" class=\"hs-featured-image\" style=\"width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;\"> <\/a> \n<\/div> \n<p>As someone who has worked in software since 2001, and in the Cloud Native (containerisation and Kubernetes) space since 2013, I'm getting old enough to have seen trends come and go a few times. VMs came (and stayed), continuous integration went from a fad talked about by gurus to the mainstream of software delivery, and containers went from some changes Google made to the Linux kernel to the <em>de facto<\/em> standard for software packaging, and then on to the foundation for Kubernetes, an industry-standard <a href=\"https:\/\/zwischenzugs.com\/2019\/03\/25\/aws-vs-k8s-is-the-new-windows-vs-linux\/\">software deployment platform<\/a>.<br><br>But it's another thing to see a wave come, and then see it recede for a time before you expect it to rise again. And in the last years, we at Container Solutions have observed that more and more of the decision-makers in our industry have shifted their stance on the cloud to the point where it became impossible for us to ignore.<\/p>","category":["Cloud Native Operations","Architecture"],"pubDate":"Thu, 25 Apr 2024 12:53:15 GMT","author":"ian.miell@container-solutions.com (Ian Miell)","guid":"https:\/\/blog.container-solutions.com\/ok-cloud-on-prem-is-alright"},{"title":"Cloud Cost Management Part II - Quick Wins","link":"https:\/\/blog.container-solutions.com\/cloud-cost-management-part-i-orientation-0","description":"<div class=\"hs-featured-image-wrapper\"> \n <a href=\"https:\/\/blog.container-solutions.com\/cloud-cost-management-part-i-orientation-0\" title=\"\" class=\"hs-featured-image-link\"> <img src=\"https:\/\/blog.container-solutions.com\/hubfs\/Screenshot%202023-10-27%20at%2011.55.36.png\" alt=\"Cloud Quick Wins\" class=\"hs-featured-image\" style=\"width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;\"> <\/a> \n<\/div> \n<p>In the <a href=\"https:\/\/blog.container-solutions.com\/cloud-cost-management-part-i-orientation\">previous post<\/a> we outlined and defined the three categories of cost management:<\/p>","category":"Finops","pubDate":"Thu, 01 Feb 2024 12:52:31 GMT","author":"ian.miell@container-solutions.com (Ian Miell)","guid":"https:\/\/blog.container-solutions.com\/cloud-cost-management-part-i-orientation-0"},{"title":"Introducing the Open Source Compliance Framework","link":"https:\/\/blog.container-solutions.com\/introducing-the-open-source-compliance-framework","description":"<div class=\"hs-featured-image-wrapper\"> \n <a href=\"https:\/\/blog.container-solutions.com\/introducing-the-open-source-compliance-framework\" title=\"\" class=\"hs-featured-image-link\"> <img src=\"https:\/\/blog.container-solutions.com\/hubfs\/image-Feb-20-2024-08-44-41-7811-AM.png\" alt=\"Introducing the Open Source Compliance Framework\" class=\"hs-featured-image\" style=\"width:auto !important; max-width:50%; float:left; margin:0 15px 15px 0;\"> <\/a> \n<\/div> \n<p>&nbsp;<\/p>","category":"Compliance","pubDate":"Thu, 01 Feb 2024 09:28:41 GMT","author":"ian.miell@container-solutions.com (Ian Miell)","guid":"https:\/\/blog.container-solutions.com\/introducing-the-open-source-compliance-framework"}]}}