From 9f186458e5b3fbb81b40c0de6e9a9ce0455fd724 Mon Sep 17 00:00:00 2001 From: DylanAmadan Date: Thu, 16 Apr 2026 11:03:37 +0100 Subject: [PATCH 1/4] feat: add why-mqtt page, update getting-started navigation, and include ffi dependency --- .bundle/config | 2 + .gitignore | 1 + _sites/getting-started.md | 16 ++- why-mqtt.md | 258 ++++++++++++++++++++++++++++++++++++++ 4 files changed, 275 insertions(+), 2 deletions(-) create mode 100644 .bundle/config create mode 100644 why-mqtt.md diff --git a/.bundle/config b/.bundle/config new file mode 100644 index 0000000..2369228 --- /dev/null +++ b/.bundle/config @@ -0,0 +1,2 @@ +--- +BUNDLE_PATH: "vendor/bundle" diff --git a/.gitignore b/.gitignore index f40fbd8..facd6b7 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ _site .jekyll-cache .jekyll-metadata vendor +version-2.md \ No newline at end of file diff --git a/_sites/getting-started.md b/_sites/getting-started.md index d827b8b..8e44bd4 100644 --- a/_sites/getting-started.md +++ b/_sites/getting-started.md @@ -6,8 +6,20 @@ description: Useful resources to get you started with MQTT, the standard messagi

Getting started

+
-
1
+
1
+ +
+ +
+
2

Basic Concepts

MQTT Essentials

@@ -19,7 +31,7 @@ description: Useful resources to get you started with MQTT, the standard messagi
-
2
+
3

Getting started tutorials

How MQTT Works - Beginners Course

diff --git a/why-mqtt.md b/why-mqtt.md new file mode 100644 index 0000000..3df2c76 --- /dev/null +++ b/why-mqtt.md @@ -0,0 +1,258 @@ +--- +title: The Strategic Case for MQTT +description: Learn why technical leaders and CTOs choose MQTT as the standard for scalable, reliable IoT and event-driven architectures. +layout: default +--- + + + +
+ +
+

The Strategic Case for MQTT

+

As businesses scale their digital footprints, relying on legacy polling or heavy REST APIs creates hidden infrastructure costs, vendor lock-in, and unreliable systems. MQTT solves the core challenges of modern, distributed architectures.

+
+ +
+

Why Technical Leaders Choose MQTT

+
+ +
+
+

1. Vendor Neutrality & Standardization

+

Strategically speaking, avoiding vendor lock-in is paramount. MQTT is an open OASIS standard. Integrating your systems via a ubiquitous standard rather than proprietary vendor SDKs provides architectural flexibility—whether you are deploying on-premise, in the cloud, or using hybrid environments.

+
+
+

2. Minimal Infrastructure Overhead

+

MQTT is exceptionally lightweight. Its minimal header size significantly reduces network bandwidth usage compared to HTTP. When scaled across thousands or millions of clients, this directly translates into massive reductions in cloud egress / ingress and operational costs.

+
+
+

3. Guaranteed Delivery at Scale

+

Network reliability is a myth. MQTT's built-in Quality of Service (QoS) levels abstract away the complexity of handling retries. It can guarantee message delivery exactly once, ensuring mission-critical state updates correctly hit your backend even across incredibly hostile networking environments.

+
+
+ +
+

Architectural Superiority: MQTT vs HTTP

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CapabilityHTTP / RESTMQTT
Communication ParadigmSynchronous (Request/Response). Causes blocking and requires resource-heavy polling routines.Asynchronous (Publish/Subscribe). Event-driven, decoupled, and instantaneous.
State AwarenessStateless. Requires constant pinging and custom logic to detect client presence.Stateful. Utilizes standard "Last Will and Testament" features to gracefully handle and broadcast unexpected disconnects.
Data OverheadGigantic headers and verbose metadata. High impact on bandwidth and processing.Extremely lightweight binary protocol (2-byte header). Built from the ground up for constrained, low-powered networks.
Connection LifecycleShort-lived connections. Tremendous CPU and TLS handshake overhead on frequent reconnections.Persistent, long-lived connections optimized for continuous data streaming and low latency.
+
+ +
+

Proven Enterprise Adoption

+

Major organizations across all verticals standardise on MQTT to drive their core product offerings.

+
+ +
+
+ Automotive Innovation +
+

Automotive & Connected Cars

+
+
+
+ Industrial Manufacturing +
+

Industry 4.0 Manufacturing

+
+
+
+ Smart Home Ecosystems +
+

Consumer Smart Home

+
+
+
+ Transportation & Logistics +
+

Global Logistics Tracking

+
+
+
+ +
From 00d6120abde4f36bb6c72b0aec68a3631ffa2f9a Mon Sep 17 00:00:00 2001 From: DylanAmadan Date: Thu, 16 Apr 2026 14:25:03 +0100 Subject: [PATCH 2/4] chore: add ffi gem and update dependencies to latest versions --- Gemfile | 1 + Gemfile.lock | 238 ++++++++++++++++++++++++++++------- _config.yml | 2 +- _sites/getting-started.md | 15 +-- _sites/why-mqtt.md | 212 +++++++++++++++++++++++++++++++ why-mqtt.md | 258 -------------------------------------- 6 files changed, 407 insertions(+), 319 deletions(-) create mode 100644 _sites/why-mqtt.md delete mode 100644 why-mqtt.md diff --git a/Gemfile b/Gemfile index f0fca15..a2b2ba3 100644 --- a/Gemfile +++ b/Gemfile @@ -3,3 +3,4 @@ source "https://rubygems.org" gem 'github-pages', group: :jekyll_plugins gem "webrick", "~> 1.8" +gem "ffi", "~> 1.15.5" diff --git a/Gemfile.lock b/Gemfile.lock index 9311ca9..57b5288 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,51 +1,60 @@ GEM remote: https://rubygems.org/ specs: - activesupport (7.1.3.4) + activesupport (8.1.3) base64 bigdecimal - concurrent-ruby (~> 1.0, >= 1.0.2) + concurrent-ruby (~> 1.0, >= 1.3.1) connection_pool (>= 2.2.5) drb i18n (>= 1.6, < 2) + json + logger (>= 1.4.2) minitest (>= 5.1) - mutex_m - tzinfo (~> 2.0) - addressable (2.8.7) - public_suffix (>= 2.0.2, < 7.0) - base64 (0.2.0) - bigdecimal (3.1.8) + securerandom (>= 0.3) + tzinfo (~> 2.0, >= 2.0.5) + uri (>= 0.13.1) + addressable (2.9.0) + public_suffix (>= 2.0.2, < 8.0) + base64 (0.3.0) + bigdecimal (4.1.1) coffee-script (2.4.1) coffee-script-source execjs coffee-script-source (1.12.2) colorator (1.1.0) - commonmarker (0.23.10) - concurrent-ruby (1.3.3) - connection_pool (2.4.1) - dnsruby (1.72.1) + commonmarker (0.23.12) + concurrent-ruby (1.3.6) + connection_pool (3.0.2) + csv (3.3.5) + dnsruby (1.73.1) + base64 (>= 0.2) + logger (~> 1.6) simpleidn (~> 0.2.1) - drb (2.2.1) + drb (2.2.3) em-websocket (0.5.3) eventmachine (>= 0.12.9) http_parser.rb (~> 0) - ethon (0.16.0) + ethon (0.18.0) ffi (>= 1.15.0) + logger eventmachine (1.2.7) - execjs (2.9.1) - faraday (2.9.2) - faraday-net_http (>= 2.0, < 3.2) - faraday-net_http (3.1.0) - net-http - ffi (1.17.0) + execjs (2.10.1) + faraday (2.14.1) + faraday-net_http (>= 2.0, < 3.5) + json + logger + faraday-net_http (3.4.2) + net-http (~> 0.5) + ffi (1.15.5) forwardable-extended (2.6.0) gemoji (4.1.0) - github-pages (231) + github-pages (232) github-pages-health-check (= 1.18.2) - jekyll (= 3.9.5) + jekyll (= 3.10.0) jekyll-avatar (= 0.8.0) jekyll-coffeescript (= 1.2.2) - jekyll-commonmark-ghpages (= 0.4.0) + jekyll-commonmark-ghpages (= 0.5.1) jekyll-default-layout (= 0.1.5) jekyll-feed (= 0.17.0) jekyll-gist (= 1.5.0) @@ -82,9 +91,10 @@ GEM liquid (= 4.0.4) mercenary (~> 0.3) minima (= 2.5.1) - nokogiri (>= 1.13.6, < 2.0) + nokogiri (>= 1.16.2, < 2.0) rouge (= 3.30.0) terminal-table (~> 1.4) + webrick (~> 1.8) github-pages-health-check (1.18.2) addressable (~> 2.3) dnsruby (~> 1.60) @@ -94,12 +104,13 @@ GEM html-pipeline (2.14.3) activesupport (>= 2) nokogiri (>= 1.4) - http_parser.rb (0.8.0) - i18n (1.14.5) + http_parser.rb (0.8.1) + i18n (1.14.8) concurrent-ruby (~> 1.0) - jekyll (3.9.5) + jekyll (3.10.0) addressable (~> 2.4) colorator (~> 1.0) + csv (~> 3.0) em-websocket (~> 0.5) i18n (>= 0.7, < 2) jekyll-sass-converter (~> 1.0) @@ -110,6 +121,7 @@ GEM pathutil (~> 0.9) rouge (>= 1.7, < 4) safe_yaml (~> 1.0) + webrick (>= 1.0) jekyll-avatar (0.8.0) jekyll (>= 3.0, < 5.0) jekyll-coffeescript (1.2.2) @@ -117,9 +129,9 @@ GEM coffee-script-source (~> 1.12) jekyll-commonmark (1.4.0) commonmarker (~> 0.22) - jekyll-commonmark-ghpages (0.4.0) - commonmarker (~> 0.23.7) - jekyll (~> 3.9.0) + jekyll-commonmark-ghpages (0.5.1) + commonmarker (>= 0.23.7, < 1.1.0) + jekyll (>= 3.9, < 4.0) jekyll-commonmark (~> 1.4.0) rouge (>= 2.0, < 5.0) jekyll-default-layout (0.1.5) @@ -205,66 +217,198 @@ GEM gemoji (>= 3, < 5) html-pipeline (~> 2.2) jekyll (>= 3.0, < 5.0) + json (2.19.3) kramdown (2.4.0) rexml kramdown-parser-gfm (1.1.0) kramdown (~> 2.0) liquid (4.0.4) - listen (3.9.0) + listen (3.10.0) + logger rb-fsevent (~> 0.10, >= 0.10.3) rb-inotify (~> 0.9, >= 0.9.10) + logger (1.7.0) mercenary (0.3.6) - mini_portile2 (2.8.9) minima (2.5.1) jekyll (>= 3.5, < 5.0) jekyll-feed (~> 0.9) jekyll-seo-tag (~> 2.1) - minitest (5.24.0) - mutex_m (0.2.0) - net-http (0.4.1) - uri - nokogiri (1.18.9) - mini_portile2 (~> 2.8.2) + minitest (6.0.4) + drb (~> 2.0) + prism (~> 1.5) + net-http (0.9.1) + uri (>= 0.11.1) + nokogiri (1.19.2-aarch64-linux-gnu) + racc (~> 1.4) + nokogiri (1.19.2-aarch64-linux-musl) + racc (~> 1.4) + nokogiri (1.19.2-arm-linux-gnu) + racc (~> 1.4) + nokogiri (1.19.2-arm-linux-musl) + racc (~> 1.4) + nokogiri (1.19.2-arm64-darwin) + racc (~> 1.4) + nokogiri (1.19.2-x86_64-darwin) + racc (~> 1.4) + nokogiri (1.19.2-x86_64-linux-gnu) + racc (~> 1.4) + nokogiri (1.19.2-x86_64-linux-musl) racc (~> 1.4) octokit (4.25.1) faraday (>= 1, < 3) sawyer (~> 0.9) pathutil (0.16.2) forwardable-extended (~> 2.6) + prism (1.9.0) public_suffix (5.1.1) racc (1.8.1) rb-fsevent (0.11.2) rb-inotify (0.11.1) ffi (~> 1.0) - rexml (3.4.2) + rexml (3.4.4) rouge (3.30.0) - rubyzip (2.3.2) + rubyzip (2.4.1) safe_yaml (1.0.5) sass (3.7.4) sass-listen (~> 4.0.0) sass-listen (4.0.0) rb-fsevent (~> 0.9, >= 0.9.4) rb-inotify (~> 0.9, >= 0.9.7) - sawyer (0.9.2) + sawyer (0.9.3) addressable (>= 2.3.5) faraday (>= 0.17.3, < 3) + securerandom (0.4.1) simpleidn (0.2.3) terminal-table (1.8.0) unicode-display_width (~> 1.1, >= 1.1.1) - typhoeus (1.4.1) - ethon (>= 0.9.0) + typhoeus (1.6.0) + ethon (>= 0.18.0) tzinfo (2.0.6) concurrent-ruby (~> 1.0) unicode-display_width (1.8.0) - uri (0.13.2) - webrick (1.8.2) + uri (1.1.1) + webrick (1.9.2) PLATFORMS - ruby + aarch64-linux-gnu + aarch64-linux-musl + arm-linux-gnu + arm-linux-musl + arm64-darwin + x86_64-darwin + x86_64-linux-gnu + x86_64-linux-musl DEPENDENCIES + ffi (~> 1.15.5) github-pages webrick (~> 1.8) +CHECKSUMS + activesupport (8.1.3) sha256=21a5e0dfbd4c3ddd9e1317ec6a4d782fa226e7867dc70b0743acda81a1dca20e + addressable (2.9.0) sha256=7fdf6ac3660f7f4e867a0838be3f6cf722ace541dd97767fa42bc6cfa980c7af + base64 (0.3.0) sha256=27337aeabad6ffae05c265c450490628ef3ebd4b67be58257393227588f5a97b + bigdecimal (4.1.1) sha256=1c09efab961da45203c8316b0cdaec0ff391dfadb952dd459584b63ebf8054ca + coffee-script (2.4.1) sha256=82fe281e11b93c8117b98c5ea8063e71741870f1c4fbb27177d7d6333dd38765 + coffee-script-source (1.12.2) sha256=e12b16fd8927fbbf8b87cb2e9a85a6cf457c6881cc7ff8b1af15b31f70da07a4 + colorator (1.1.0) sha256=e2f85daf57af47d740db2a32191d1bdfb0f6503a0dfbc8327d0c9154d5ddfc38 + commonmarker (0.23.12) sha256=da2d2f89c7c7b51c42c6e69ace3ab5df39497683f86e83aca7087c671d523ccd + concurrent-ruby (1.3.6) sha256=6b56837e1e7e5292f9864f34b69c5a2cbc75c0cf5338f1ce9903d10fa762d5ab + connection_pool (3.0.2) sha256=33fff5ba71a12d2aa26cb72b1db8bba2a1a01823559fb01d29eb74c286e62e0a + csv (3.3.5) sha256=6e5134ac3383ef728b7f02725d9872934f523cb40b961479f69cf3afa6c8e73f + dnsruby (1.73.1) sha256=6cf327f5fe2768deadb5e3f3e899ff1ae110aefcef43fef32e1e55e71289e992 + drb (2.2.3) sha256=0b00d6fdb50995fe4a45dea13663493c841112e4068656854646f418fda13373 + em-websocket (0.5.3) sha256=f56a92bde4e6cb879256d58ee31f124181f68f8887bd14d53d5d9a292758c6a8 + ethon (0.18.0) sha256=b598afc9f30448cb068b850714b7d6948e941476095d04f90a4ac65b8d6efcb2 + eventmachine (1.2.7) sha256=994016e42aa041477ba9cff45cbe50de2047f25dd418eba003e84f0d16560972 + execjs (2.10.1) sha256=abe0ae028467eb8e30c10814eb934d07876a691aae7e803d813b7ce5a75e73f1 + faraday (2.14.1) sha256=a43cceedc1e39d188f4d2cdd360a8aaa6a11da0c407052e426ba8d3fb42ef61c + faraday-net_http (3.4.2) sha256=f147758260d3526939bf57ecf911682f94926a3666502e24c69992765875906c + ffi (1.15.5) sha256=6f2ed2fa68047962d6072b964420cba91d82ce6fa8ee251950c17fca6af3c2a0 + forwardable-extended (2.6.0) sha256=1bec948c469bbddfadeb3bd90eb8c85f6e627a412a3e852acfd7eaedbac3ec97 + gemoji (4.1.0) sha256=734434020cbe964ea9d19086798797a47d23a170892de0ce55b74aa65d2ddc1a + github-pages (232) sha256=2b40493d7327627e4ce45c47f4a9d4394e5eaa151f9d29bb924ff424c3132287 + github-pages-health-check (1.18.2) sha256=df893d4f5a4161477e8525b993dbe1c1eb63fbb86fb07b6e80996fd37a18843d + html-pipeline (2.14.3) sha256=8a1d4d7128b2141913387cac0f8ba898bb6812557001acc0c2b46910f59413a0 + http_parser.rb (0.8.1) sha256=9ae8df145b39aa5398b2f90090d651c67bd8e2ebfe4507c966579f641e11097a + i18n (1.14.8) sha256=285778639134865c5e0f6269e0b818256017e8cde89993fdfcbfb64d088824a5 + jekyll (3.10.0) sha256=c4213b761dc7dfe7d499eb742d0476a02d8503e440c2610e19774ee7f0db8d90 + jekyll-avatar (0.8.0) sha256=ea736277c2de54a21300122096700517972a722d5c68ca83f8723b4999abfd4b + jekyll-coffeescript (1.2.2) sha256=894e71c2071a834e76eb7e8044944440a0c81c2c7092532fed1503b13d331110 + jekyll-commonmark (1.4.0) sha256=1731e658fe09ce040271e6878f83ad45bbf8d17b10ad03bf343546cca30f4844 + jekyll-commonmark-ghpages (0.5.1) sha256=d56722f23393e45625e6e1bac6d3c64bb5f5cdf6ca547338160536d61c27a4a4 + jekyll-default-layout (0.1.5) sha256=c626be4e4a5deafca123539da2cd22ff873be350cafd4da134039efdf24320af + jekyll-feed (0.17.0) sha256=689aab16c877949bb9e7a5c436de6278318a51ecb974792232fd94d8b3acfcc3 + jekyll-gist (1.5.0) sha256=495b6483552a3e2975a2752964ea7acddd545bc6e13ce2be15a50cec8d4c9f0f + jekyll-github-metadata (2.16.1) sha256=4cf29988bdaf24774a7bc07fae71e54424ddfaa2895f742d8fa3036d0db65b4c + jekyll-include-cache (0.2.1) sha256=c7d4b9e551732a27442cb2ce853ba36a2f69c66603694b8c1184c99ab1a1a205 + jekyll-mentions (1.6.0) sha256=39e801024cb6f2319b3f78a29999d0068ef5f68bc5202b8757d5354fef311ed9 + jekyll-optional-front-matter (0.3.2) sha256=ecdc061d711472469fcf04da617653b553e914c038a17df3b6a5f6f92aeb761b + jekyll-paginate (1.1.0) sha256=880aadf4b02529a93541d508c5cbb744f014cbfc071d0263a31f25ec9066eb64 + jekyll-readme-index (0.3.0) sha256=d74cc4de46b2d350229be7409495149e656a31fb5a5fe3fe6135dbf7435e1e32 + jekyll-redirect-from (0.16.0) sha256=6635cae569ef9b0f90ffb71ec014ba977177fafb44d32a2b0526288d4d9be6db + jekyll-relative-links (0.6.1) sha256=d11301f57b39e94b6c04fff2a3b145fe2f6a27be631a403e2542fa2e1548dd6d + jekyll-remote-theme (0.4.3) sha256=d3fde726484fb3df04de9e347baf75aaa3d5bfea771a330412e0c52608e54b40 + jekyll-sass-converter (1.5.2) sha256=53773669e414dc3bb070113befacb808576025a28cfa4a4accc682e90a9c1101 + jekyll-seo-tag (2.8.0) sha256=3f2ed1916d56f14ebfa38e24acde9b7c946df70cb183af2cb5f0598f21ae6818 + jekyll-sitemap (1.4.0) sha256=0de08c5debc185ea5a8f980e1025c7cd3f8e0c35c8b6ef592f15c46235cf4218 + jekyll-swiss (1.0.0) sha256=c299a855dca881fe868f21545c5489be50ddfbc0d54a80e8dbeb5a2ddc4888a3 + jekyll-theme-architect (0.2.0) sha256=7275d3dcaa6b34fcf92f2fe5cee92d49d66706d3b523003b1e67e9c668ff0440 + jekyll-theme-cayman (0.2.0) sha256=3c5f14f9c72a8eb03ecc74f9a3e5ecbbc55f9381339978b42dec216921865f2a + jekyll-theme-dinky (0.2.0) sha256=720b257091f0de3aa9394b25fd97d1b2b12cfaf00e060aff170f60e218a32c7c + jekyll-theme-hacker (0.2.0) sha256=816bf9f992ded0b1e1e69d8dece2574e8480efb5e9f84a2e1ac83bd717b8f78a + jekyll-theme-leap-day (0.2.0) sha256=921ea8305ae0285a881c9aa9dbe2375ed6f404b4f90067458e596891ef5ac7d1 + jekyll-theme-merlot (0.2.0) sha256=cbf2b21b62423561ca5b62e406dbb08f085e3a45daa7b3b4b9b3f24d08ded545 + jekyll-theme-midnight (0.2.0) sha256=009ff367350e83ff6095d98837bb411adb07b59a76f59f1d4a33ef927bb391de + jekyll-theme-minimal (0.2.0) sha256=a225210c35573ad2c9e57b81f16f678ca6c314394ec692502ccc6189d7e52d82 + jekyll-theme-modernist (0.2.0) sha256=4be775bc5edd53864c5e40c000c34db0dfd82dac800cff50371ef11da66dfbcf + jekyll-theme-primer (0.6.0) sha256=ce27282798217eb0957ba01ab3bf12996476348b625736fa8448f7a1b8a307b3 + jekyll-theme-slate (0.2.0) sha256=5e40909de712bbbefbc7a29f17c55bffa326c222f0a13ee1656229a7d43c3439 + jekyll-theme-tactile (0.2.0) sha256=b7861b48aed5b2385d7a146b13f31cb6f37afe3107f4a6b93b1c932b2d242652 + jekyll-theme-time-machine (0.2.0) sha256=bc3490a7eccfc24ca671780c9d4f531500936a361690020b19defe6105d74fe2 + jekyll-titles-from-headings (0.5.3) sha256=77366754e361ea7b5d87881f5b1380835f5ce910c240a4d9ac2d7afe86d28481 + jekyll-watch (2.2.1) sha256=bc44ed43f5e0a552836245a54dbff3ea7421ecc2856707e8a1ee203a8387a7e1 + jemoji (0.13.0) sha256=5d4c3e8e2cbbb2b73997c31294f6f70c94e4d4fade039373e86835bcf5529e7c + json (2.19.3) sha256=289b0bb53052a1fa8c34ab33cc750b659ba14a5c45f3fcf4b18762dc67c78646 + kramdown (2.4.0) sha256=b62e5bcbd6ea20c7a6730ebbb2a107237856e14f29cebf5b10c876cc1a2481c5 + kramdown-parser-gfm (1.1.0) sha256=fb39745516427d2988543bf01fc4cf0ab1149476382393e0e9c48592f6581729 + liquid (4.0.4) sha256=4fcfebb1a045e47918388dbb7a0925e7c3893e58d2bd6c3b3c73ec17a2d8fdb3 + listen (3.10.0) sha256=c6e182db62143aeccc2e1960033bebe7445309c7272061979bb098d03760c9d2 + logger (1.7.0) sha256=196edec7cc44b66cfb40f9755ce11b392f21f7967696af15d274dde7edff0203 + mercenary (0.3.6) sha256=2a084b18f5692c86a633e185d5311ba6d11fc46c802eb414ae05368178078a82 + minima (2.5.1) sha256=520e52bc631fb16cbb8100660f6caa44f97859e2fa7e397d508deb18739567be + minitest (6.0.4) sha256=df1304664589d40f46089247fdc451f866b0ce0d7cae1457a15fc1eb7d48dca1 + net-http (0.9.1) sha256=25ba0b67c63e89df626ed8fac771d0ad24ad151a858af2cc8e6a716ca4336996 + nokogiri (1.19.2-aarch64-linux-gnu) sha256=c34d5c8208025587554608e98fd88ab125b29c80f9352b821964e9a5d5cfbd19 + nokogiri (1.19.2-aarch64-linux-musl) sha256=7f6b4b0202d507326841a4f790294bf75098aef50c7173443812e3ac5cb06515 + nokogiri (1.19.2-arm-linux-gnu) sha256=b7fa1139016f3dc850bda1260988f0d749934a939d04ef2da13bec060d7d5081 + nokogiri (1.19.2-arm-linux-musl) sha256=61114d44f6742ff72194a1b3020967201e2eb982814778d130f6471c11f9828c + nokogiri (1.19.2-arm64-darwin) sha256=58d8ea2e31a967b843b70487a44c14c8ba1866daa1b9da9be9dbdf1b43dee205 + nokogiri (1.19.2-x86_64-darwin) sha256=7d9af11fda72dfaa2961d8c4d5380ca0b51bc389dc5f8d4b859b9644f195e7a4 + nokogiri (1.19.2-x86_64-linux-gnu) sha256=fa8feca882b73e871a9845f3817a72e9734c8e974bdc4fbad6e4bc6e8076b94f + nokogiri (1.19.2-x86_64-linux-musl) sha256=93128448e61a9383a30baef041bf1f5817e22f297a1d400521e90294445069a8 + octokit (4.25.1) sha256=c02092ee82dcdfe84db0e0ea630a70d32becc54245a4f0bacfd21c010df09b96 + pathutil (0.16.2) sha256=e43b74365631cab4f6d5e4228f812927efc9cb2c71e62976edcb252ee948d589 + prism (1.9.0) sha256=7b530c6a9f92c24300014919c9dcbc055bf4cdf51ec30aed099b06cd6674ef85 + public_suffix (5.1.1) sha256=250ec74630d735194c797491c85e3c6a141d7b5d9bd0b66a3fa6268cf67066ed + racc (1.8.1) sha256=4a7f6929691dbec8b5209a0b373bc2614882b55fc5d2e447a21aaa691303d62f + rb-fsevent (0.11.2) sha256=43900b972e7301d6570f64b850a5aa67833ee7d87b458ee92805d56b7318aefe + rb-inotify (0.11.1) sha256=a0a700441239b0ff18eb65e3866236cd78613d6b9f78fea1f9ac47a85e47be6e + rexml (3.4.4) sha256=19e0a2c3425dfbf2d4fc1189747bdb2f849b6c5e74180401b15734bc97b5d142 + rouge (3.30.0) sha256=a3d353222aa72e49e2c86726c0bcfd719f82592f57d494474655f48e669eceb6 + rubyzip (2.4.1) sha256=8577c88edc1fde8935eb91064c5cb1aef9ad5494b940cf19c775ee833e075615 + safe_yaml (1.0.5) sha256=a6ac2d64b7eb027bdeeca1851fe7e7af0d668e133e8a88066a0c6f7087d9f848 + sass (3.7.4) sha256=808b0d39053aa69068df939e24671fe84fd5a9d3314486e1a1457d0934a4255d + sass-listen (4.0.0) sha256=ae9dcb76dd3e234329e5ba6e213f48e532c5a3e7b0b4d8a87f13aaca0cc18377 + sawyer (0.9.3) sha256=0d0f19298408047037638639fe62f4794483fb04320269169bd41af2bdcf5e41 + securerandom (0.4.1) sha256=cc5193d414a4341b6e225f0cb4446aceca8e50d5e1888743fac16987638ea0b1 + simpleidn (0.2.3) sha256=08ce96f03fa1605286be22651ba0fc9c0b2d6272c9b27a260bc88be05b0d2c29 + terminal-table (1.8.0) sha256=13371f069af18e9baa4e44d404a4ada9301899ce0530c237ac1a96c19f652294 + typhoeus (1.6.0) sha256=bacc41c23e379547e29801dc235cd1699b70b955a1ba3d32b2b877aa844c331d + tzinfo (2.0.6) sha256=8daf828cc77bcf7d63b0e3bdb6caa47e2272dcfaf4fbfe46f8c3a9df087a829b + unicode-display_width (1.8.0) sha256=0292132d364d59fcdd83f144910c48b3c8332b28a14c5c04bb093dd165600488 + uri (1.1.1) sha256=379fa58d27ffb1387eaada68c749d1426738bd0f654d812fcc07e7568f5c57c6 + webrick (1.9.2) sha256=beb4a15fc474defed24a3bda4ffd88a490d517c9e4e6118c3edce59e45864131 + BUNDLED WITH - 2.1.4 + 4.0.9 diff --git a/_config.yml b/_config.yml index 797fb89..ca3f098 100644 --- a/_config.yml +++ b/_config.yml @@ -64,4 +64,4 @@ exclude: - Gemfile - Gemfile.lock - CONTRIBUTING.md - \ No newline at end of file + - vendor \ No newline at end of file diff --git a/_sites/getting-started.md b/_sites/getting-started.md index 8e44bd4..cf52f9f 100644 --- a/_sites/getting-started.md +++ b/_sites/getting-started.md @@ -8,18 +8,7 @@ description: Useful resources to get you started with MQTT, the standard messagi

Getting started

-
1
- -
- -
-
2
+
1

Basic Concepts

MQTT Essentials

@@ -31,7 +20,7 @@ description: Useful resources to get you started with MQTT, the standard messagi
-
3
+
2

Getting started tutorials

How MQTT Works - Beginners Course

diff --git a/_sites/why-mqtt.md b/_sites/why-mqtt.md new file mode 100644 index 0000000..528c3eb --- /dev/null +++ b/_sites/why-mqtt.md @@ -0,0 +1,212 @@ +--- +title: Why MQTT +index: 0 +description: Learn why technical leaders and CTOs choose MQTT as the standard for scalable, reliable IoT and event-driven architectures. +layout: default +--- + + + +
+
+
+
+

Architecting for Scale

+

An objective look at why modern event-driven architectures rely on MQTT for decoupled system design and guaranteed delivery.

+
+ +
+

Engineering Principles

+

MQTT is a lightweight, publish-subscribe network protocol that transports messages between devices. Unlike HTTP, it is designed for environments where network bandwidth is limited or unreliable.

+ +
+

Radical Efficiency

+

REST APIs require verbose headers, often consuming more bytes than the JSON parameter itself. MQTT utilizes a compact binary protocol with a minimal 2-byte header. Across large fleets, this protocol efficiency translates directly to reduced network bandwidth and infrastructure computing costs.

+
+ +
+

Resilient Sessions

+

Persistent sessions buffer messages when connected clients unexpectedly drop. Upon reconnection, systems restore state gracefully without requiring manual intervention, immediate polling, or complex client-side offset reconciliation.

+
+ +
+

Publish/Subscribe Decoupling

+

Producers and consumers are completely isolated. A central broker maintains connection states and handles routing. This architectural shift creates organizational agility: adding a new downstream data warehouse integration requires zero code changes to the edge systems publishing the data.

+
+ +
+

Standardized Independence

+

Strategic lock-in is a systemic risk. MQTT is an open OASIS standard. Because both constrained hardware platforms and cloud providers natively support MQTT, integrating disparate infrastructure architectures relies on standard protocols rather than fragile, bespoke adapters.

+
+
+ +
+

Architectural Alternatives

+

A practical comparison of MQTT against other mature messaging models in production environments.

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CharacteristicMQTTApache KafkaAMQPREST / Webhooks
Core ParadigmIoT & Edge Pub/SubData Streaming / Append LogEnterprise QueuingSynchronous Request/Response
Target EnvironmentUnreliable networks, constrained edgeDatacenter to Datacenter, stable networksBackend microservices, internal VPCsStandard web integrations
Client FootprintExtremely minimal (Microcontroller capable)Heavy (JVM or persistent polling required)Moderate (Complex channel logic required)Heavy (Verbose HTTP payloads)
Connections & ScaleMillions of concurrent active clientsThousands of partitions/clientsTens of thousands of active channelsConstrained heavily by server thread limits
+
+
+
+
+
diff --git a/why-mqtt.md b/why-mqtt.md deleted file mode 100644 index 3df2c76..0000000 --- a/why-mqtt.md +++ /dev/null @@ -1,258 +0,0 @@ ---- -title: The Strategic Case for MQTT -description: Learn why technical leaders and CTOs choose MQTT as the standard for scalable, reliable IoT and event-driven architectures. -layout: default ---- - - - -
- -
-

The Strategic Case for MQTT

-

As businesses scale their digital footprints, relying on legacy polling or heavy REST APIs creates hidden infrastructure costs, vendor lock-in, and unreliable systems. MQTT solves the core challenges of modern, distributed architectures.

-
- -
-

Why Technical Leaders Choose MQTT

-
- -
-
-

1. Vendor Neutrality & Standardization

-

Strategically speaking, avoiding vendor lock-in is paramount. MQTT is an open OASIS standard. Integrating your systems via a ubiquitous standard rather than proprietary vendor SDKs provides architectural flexibility—whether you are deploying on-premise, in the cloud, or using hybrid environments.

-
-
-

2. Minimal Infrastructure Overhead

-

MQTT is exceptionally lightweight. Its minimal header size significantly reduces network bandwidth usage compared to HTTP. When scaled across thousands or millions of clients, this directly translates into massive reductions in cloud egress / ingress and operational costs.

-
-
-

3. Guaranteed Delivery at Scale

-

Network reliability is a myth. MQTT's built-in Quality of Service (QoS) levels abstract away the complexity of handling retries. It can guarantee message delivery exactly once, ensuring mission-critical state updates correctly hit your backend even across incredibly hostile networking environments.

-
-
- -
-

Architectural Superiority: MQTT vs HTTP

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CapabilityHTTP / RESTMQTT
Communication ParadigmSynchronous (Request/Response). Causes blocking and requires resource-heavy polling routines.Asynchronous (Publish/Subscribe). Event-driven, decoupled, and instantaneous.
State AwarenessStateless. Requires constant pinging and custom logic to detect client presence.Stateful. Utilizes standard "Last Will and Testament" features to gracefully handle and broadcast unexpected disconnects.
Data OverheadGigantic headers and verbose metadata. High impact on bandwidth and processing.Extremely lightweight binary protocol (2-byte header). Built from the ground up for constrained, low-powered networks.
Connection LifecycleShort-lived connections. Tremendous CPU and TLS handshake overhead on frequent reconnections.Persistent, long-lived connections optimized for continuous data streaming and low latency.
-
- -
-

Proven Enterprise Adoption

-

Major organizations across all verticals standardise on MQTT to drive their core product offerings.

-
- -
-
- Automotive Innovation -
-

Automotive & Connected Cars

-
-
-
- Industrial Manufacturing -
-

Industry 4.0 Manufacturing

-
-
-
- Smart Home Ecosystems -
-

Consumer Smart Home

-
-
-
- Transportation & Logistics -
-

Global Logistics Tracking

-
-
-
- -
From a3a340d87cf50ed5f5ac87115da58764d7e285ba Mon Sep 17 00:00:00 2001 From: DylanAmadan Date: Thu, 16 Apr 2026 19:36:50 +0100 Subject: [PATCH 3/4] feat: redesign why-mqtt landing page with business-focused cards and interactive use-case navigation --- _sass/style.scss | 3 +- _sites/why-mqtt.md | 148 +++++++++++++++++++++++++++++++++++++-------- 2 files changed, 126 insertions(+), 25 deletions(-) diff --git a/_sass/style.scss b/_sass/style.scss index c22f5e9..e6299f6 100644 --- a/_sass/style.scss +++ b/_sass/style.scss @@ -335,7 +335,7 @@ footer { color: #fff; width: 40%; margin: 30px 30%; - text-align: center; + text-align: left; line-height: 32px; font-size: 16px; } @@ -608,6 +608,7 @@ main { #homepage-intro { width: 65%; } + .use-case-img { width: 220px !important; height: 125px !important; diff --git a/_sites/why-mqtt.md b/_sites/why-mqtt.md index 528c3eb..f0a7ff4 100644 --- a/_sites/why-mqtt.md +++ b/_sites/why-mqtt.md @@ -124,6 +124,80 @@ layout: default font-weight: 600; color: var(--text-primary); } + + .minimal-table .mqtt-highlight { + background-color: #f7f7f8; + color: var(--text-primary); + font-weight: 500; + } + + .minimal-table th.mqtt-highlight { + background-color: #eeeeea; + font-weight: 600; + } + + .business-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); + gap: 24px; + margin-top: 30px; + } + + .business-card { + border: 1px solid var(--border-color); + padding: 30px; + display: flex; + flex-direction: column; + background: var(--bg-color); + } + + .business-card h3 { + font-size: 1.15rem; + font-weight: 600; + margin-bottom: 12px; + line-height: 1.4; + } + + .business-card p { + font-size: 0.95rem; + color: var(--text-secondary); + margin-bottom: 24px; + flex-grow: 1; + line-height: 1.6; + } + + .proof-point { + font-size: 0.85rem; + font-weight: 600; + color: var(--text-primary); + border-top: 1px solid var(--border-color); + padding-top: 16px; + margin-top: auto; + text-transform: uppercase; + letter-spacing: 0.05em; + } + .use-case-grid { + display: flex; + flex-wrap: wrap; + gap: 16px; + } + + .use-case-link { + display: inline-block; + padding: 12px 24px; + border: 1px solid var(--border-color); + color: var(--text-primary); + text-decoration: none; + font-weight: 500; + transition: all 0.2s ease; + background: var(--bg-color); + } + + .use-case-link:hover { + border-color: var(--text-primary); + background: #f9f9f9; + color: var(--text-primary); + }
@@ -131,44 +205,70 @@ layout: default

Architecting for Scale

-

An objective look at why modern event-driven architectures rely on MQTT for decoupled system design and guaranteed delivery.

+

Why modern event-driven architectures rely on MQTT for decoupled system design and guaranteed delivery.

-

Engineering Principles

-

MQTT is a lightweight, publish-subscribe network protocol that transports messages between devices. Unlike HTTP, it is designed for environments where network bandwidth is limited or unreliable.

+

Why MQTT for your Business

+ +
+
+

Built to survive the real world

+

Engineered for unreliable networks and constrained edge environments. It reliably delivers data or buffers it until connectivity is restored.

+
Proven in remote factory floors
+
-
-

Radical Efficiency

-

REST APIs require verbose headers, often consuming more bytes than the JSON parameter itself. MQTT utilizes a compact binary protocol with a minimal 2-byte header. Across large fleets, this protocol efficiency translates directly to reduced network bandwidth and infrastructure computing costs.

-
+
+

Scale without rebuilding

+

The exceptionally lightweight architecture natively scales from a ten-device pilot to ten million global production devices without re-engineering.

+
Scales linearly to massive fleets
+
-
-

Resilient Sessions

-

Persistent sessions buffer messages when connected clients unexpectedly drop. Upon reconnection, systems restore state gracefully without requiring manual intervention, immediate polling, or complex client-side offset reconciliation.

-
+
+

Zero vendor lock-in

+

As an open OASIS standard, your core messaging layer remains infrastructure-agnostic, letting you freely migrate workloads between clouds.

+
Interoperable across AWS, Azure & GCP
+
+ +
+

Trusted by industry leaders

+

Deployed globally as the mission-critical foundation for the largest, most demanding consumer and enterprise technologies in existence.

+
Powers BMW's vehicle fleet & Amazon Alexa
+
-
-

Publish/Subscribe Decoupling

-

Producers and consumers are completely isolated. A central broker maintains connection states and handles routing. This architectural shift creates organizational agility: adding a new downstream data warehouse integration requires zero code changes to the edge systems publishing the data.

+
+

Secure enterprise connective tissue

+

Intelligently unifies Operational Technology with IT backend systems, backed by strict end-to-end security models across the full stack.

+
The proven bridge for enterprise data lakes
+
+
-
-

Standardized Independence

-

Strategic lock-in is a systemic risk. MQTT is an open OASIS standard. Because both constrained hardware platforms and cloud providers natively support MQTT, integrating disparate infrastructure architectures relies on standard protocols rather than fragile, bespoke adapters.

+
+

Explore Industry Use Cases

+

Discover how organizations are utilizing MQTT across various sectors to drive operational efficiency and scale.

+ +
-

Architectural Alternatives

-

A practical comparison of MQTT against other mature messaging models in production environments.

+

Why Now?

+

MQTT is increasingly connecting to enterprise platforms like Apache Kafka and AMQP-based tools like EMQ. It is designed to fit seamlessly into existing enterprise architectures—acting as the edge-to-cloud bridge—rather than replacing your core backend messaging infrastructure.

- + @@ -177,28 +277,28 @@ layout: default - + - + - + - + From 4c1675f7ffc3d2bdb20fdc25b4146f062b51d004 Mon Sep 17 00:00:00 2001 From: DylanAmadan Date: Fri, 1 May 2026 00:03:51 +0100 Subject: [PATCH 4/4] chore: downgrade github-pages and jekyll dependencies to version 3.9.5 --- .bundle/config | 2 - .gitignore | 3 +- Gemfile | 1 - Gemfile.lock | 238 +++++++++------------------------------------ _sass/style.scss | 163 ++++++++++++++++++++++++++++++- _sites/why-mqtt.md | 197 +------------------------------------ 6 files changed, 212 insertions(+), 392 deletions(-) delete mode 100644 .bundle/config diff --git a/.bundle/config b/.bundle/config deleted file mode 100644 index 2369228..0000000 --- a/.bundle/config +++ /dev/null @@ -1,2 +0,0 @@ ---- -BUNDLE_PATH: "vendor/bundle" diff --git a/.gitignore b/.gitignore index facd6b7..ddb7f40 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,5 @@ _site .jekyll-cache .jekyll-metadata vendor -version-2.md \ No newline at end of file +version-2.md +.bundle/ \ No newline at end of file diff --git a/Gemfile b/Gemfile index a2b2ba3..f0fca15 100644 --- a/Gemfile +++ b/Gemfile @@ -3,4 +3,3 @@ source "https://rubygems.org" gem 'github-pages', group: :jekyll_plugins gem "webrick", "~> 1.8" -gem "ffi", "~> 1.15.5" diff --git a/Gemfile.lock b/Gemfile.lock index 57b5288..9311ca9 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,60 +1,51 @@ GEM remote: https://rubygems.org/ specs: - activesupport (8.1.3) + activesupport (7.1.3.4) base64 bigdecimal - concurrent-ruby (~> 1.0, >= 1.3.1) + concurrent-ruby (~> 1.0, >= 1.0.2) connection_pool (>= 2.2.5) drb i18n (>= 1.6, < 2) - json - logger (>= 1.4.2) minitest (>= 5.1) - securerandom (>= 0.3) - tzinfo (~> 2.0, >= 2.0.5) - uri (>= 0.13.1) - addressable (2.9.0) - public_suffix (>= 2.0.2, < 8.0) - base64 (0.3.0) - bigdecimal (4.1.1) + mutex_m + tzinfo (~> 2.0) + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + base64 (0.2.0) + bigdecimal (3.1.8) coffee-script (2.4.1) coffee-script-source execjs coffee-script-source (1.12.2) colorator (1.1.0) - commonmarker (0.23.12) - concurrent-ruby (1.3.6) - connection_pool (3.0.2) - csv (3.3.5) - dnsruby (1.73.1) - base64 (>= 0.2) - logger (~> 1.6) + commonmarker (0.23.10) + concurrent-ruby (1.3.3) + connection_pool (2.4.1) + dnsruby (1.72.1) simpleidn (~> 0.2.1) - drb (2.2.3) + drb (2.2.1) em-websocket (0.5.3) eventmachine (>= 0.12.9) http_parser.rb (~> 0) - ethon (0.18.0) + ethon (0.16.0) ffi (>= 1.15.0) - logger eventmachine (1.2.7) - execjs (2.10.1) - faraday (2.14.1) - faraday-net_http (>= 2.0, < 3.5) - json - logger - faraday-net_http (3.4.2) - net-http (~> 0.5) - ffi (1.15.5) + execjs (2.9.1) + faraday (2.9.2) + faraday-net_http (>= 2.0, < 3.2) + faraday-net_http (3.1.0) + net-http + ffi (1.17.0) forwardable-extended (2.6.0) gemoji (4.1.0) - github-pages (232) + github-pages (231) github-pages-health-check (= 1.18.2) - jekyll (= 3.10.0) + jekyll (= 3.9.5) jekyll-avatar (= 0.8.0) jekyll-coffeescript (= 1.2.2) - jekyll-commonmark-ghpages (= 0.5.1) + jekyll-commonmark-ghpages (= 0.4.0) jekyll-default-layout (= 0.1.5) jekyll-feed (= 0.17.0) jekyll-gist (= 1.5.0) @@ -91,10 +82,9 @@ GEM liquid (= 4.0.4) mercenary (~> 0.3) minima (= 2.5.1) - nokogiri (>= 1.16.2, < 2.0) + nokogiri (>= 1.13.6, < 2.0) rouge (= 3.30.0) terminal-table (~> 1.4) - webrick (~> 1.8) github-pages-health-check (1.18.2) addressable (~> 2.3) dnsruby (~> 1.60) @@ -104,13 +94,12 @@ GEM html-pipeline (2.14.3) activesupport (>= 2) nokogiri (>= 1.4) - http_parser.rb (0.8.1) - i18n (1.14.8) + http_parser.rb (0.8.0) + i18n (1.14.5) concurrent-ruby (~> 1.0) - jekyll (3.10.0) + jekyll (3.9.5) addressable (~> 2.4) colorator (~> 1.0) - csv (~> 3.0) em-websocket (~> 0.5) i18n (>= 0.7, < 2) jekyll-sass-converter (~> 1.0) @@ -121,7 +110,6 @@ GEM pathutil (~> 0.9) rouge (>= 1.7, < 4) safe_yaml (~> 1.0) - webrick (>= 1.0) jekyll-avatar (0.8.0) jekyll (>= 3.0, < 5.0) jekyll-coffeescript (1.2.2) @@ -129,9 +117,9 @@ GEM coffee-script-source (~> 1.12) jekyll-commonmark (1.4.0) commonmarker (~> 0.22) - jekyll-commonmark-ghpages (0.5.1) - commonmarker (>= 0.23.7, < 1.1.0) - jekyll (>= 3.9, < 4.0) + jekyll-commonmark-ghpages (0.4.0) + commonmarker (~> 0.23.7) + jekyll (~> 3.9.0) jekyll-commonmark (~> 1.4.0) rouge (>= 2.0, < 5.0) jekyll-default-layout (0.1.5) @@ -217,198 +205,66 @@ GEM gemoji (>= 3, < 5) html-pipeline (~> 2.2) jekyll (>= 3.0, < 5.0) - json (2.19.3) kramdown (2.4.0) rexml kramdown-parser-gfm (1.1.0) kramdown (~> 2.0) liquid (4.0.4) - listen (3.10.0) - logger + listen (3.9.0) rb-fsevent (~> 0.10, >= 0.10.3) rb-inotify (~> 0.9, >= 0.9.10) - logger (1.7.0) mercenary (0.3.6) + mini_portile2 (2.8.9) minima (2.5.1) jekyll (>= 3.5, < 5.0) jekyll-feed (~> 0.9) jekyll-seo-tag (~> 2.1) - minitest (6.0.4) - drb (~> 2.0) - prism (~> 1.5) - net-http (0.9.1) - uri (>= 0.11.1) - nokogiri (1.19.2-aarch64-linux-gnu) - racc (~> 1.4) - nokogiri (1.19.2-aarch64-linux-musl) - racc (~> 1.4) - nokogiri (1.19.2-arm-linux-gnu) - racc (~> 1.4) - nokogiri (1.19.2-arm-linux-musl) - racc (~> 1.4) - nokogiri (1.19.2-arm64-darwin) - racc (~> 1.4) - nokogiri (1.19.2-x86_64-darwin) - racc (~> 1.4) - nokogiri (1.19.2-x86_64-linux-gnu) - racc (~> 1.4) - nokogiri (1.19.2-x86_64-linux-musl) + minitest (5.24.0) + mutex_m (0.2.0) + net-http (0.4.1) + uri + nokogiri (1.18.9) + mini_portile2 (~> 2.8.2) racc (~> 1.4) octokit (4.25.1) faraday (>= 1, < 3) sawyer (~> 0.9) pathutil (0.16.2) forwardable-extended (~> 2.6) - prism (1.9.0) public_suffix (5.1.1) racc (1.8.1) rb-fsevent (0.11.2) rb-inotify (0.11.1) ffi (~> 1.0) - rexml (3.4.4) + rexml (3.4.2) rouge (3.30.0) - rubyzip (2.4.1) + rubyzip (2.3.2) safe_yaml (1.0.5) sass (3.7.4) sass-listen (~> 4.0.0) sass-listen (4.0.0) rb-fsevent (~> 0.9, >= 0.9.4) rb-inotify (~> 0.9, >= 0.9.7) - sawyer (0.9.3) + sawyer (0.9.2) addressable (>= 2.3.5) faraday (>= 0.17.3, < 3) - securerandom (0.4.1) simpleidn (0.2.3) terminal-table (1.8.0) unicode-display_width (~> 1.1, >= 1.1.1) - typhoeus (1.6.0) - ethon (>= 0.18.0) + typhoeus (1.4.1) + ethon (>= 0.9.0) tzinfo (2.0.6) concurrent-ruby (~> 1.0) unicode-display_width (1.8.0) - uri (1.1.1) - webrick (1.9.2) + uri (0.13.2) + webrick (1.8.2) PLATFORMS - aarch64-linux-gnu - aarch64-linux-musl - arm-linux-gnu - arm-linux-musl - arm64-darwin - x86_64-darwin - x86_64-linux-gnu - x86_64-linux-musl + ruby DEPENDENCIES - ffi (~> 1.15.5) github-pages webrick (~> 1.8) -CHECKSUMS - activesupport (8.1.3) sha256=21a5e0dfbd4c3ddd9e1317ec6a4d782fa226e7867dc70b0743acda81a1dca20e - addressable (2.9.0) sha256=7fdf6ac3660f7f4e867a0838be3f6cf722ace541dd97767fa42bc6cfa980c7af - base64 (0.3.0) sha256=27337aeabad6ffae05c265c450490628ef3ebd4b67be58257393227588f5a97b - bigdecimal (4.1.1) sha256=1c09efab961da45203c8316b0cdaec0ff391dfadb952dd459584b63ebf8054ca - coffee-script (2.4.1) sha256=82fe281e11b93c8117b98c5ea8063e71741870f1c4fbb27177d7d6333dd38765 - coffee-script-source (1.12.2) sha256=e12b16fd8927fbbf8b87cb2e9a85a6cf457c6881cc7ff8b1af15b31f70da07a4 - colorator (1.1.0) sha256=e2f85daf57af47d740db2a32191d1bdfb0f6503a0dfbc8327d0c9154d5ddfc38 - commonmarker (0.23.12) sha256=da2d2f89c7c7b51c42c6e69ace3ab5df39497683f86e83aca7087c671d523ccd - concurrent-ruby (1.3.6) sha256=6b56837e1e7e5292f9864f34b69c5a2cbc75c0cf5338f1ce9903d10fa762d5ab - connection_pool (3.0.2) sha256=33fff5ba71a12d2aa26cb72b1db8bba2a1a01823559fb01d29eb74c286e62e0a - csv (3.3.5) sha256=6e5134ac3383ef728b7f02725d9872934f523cb40b961479f69cf3afa6c8e73f - dnsruby (1.73.1) sha256=6cf327f5fe2768deadb5e3f3e899ff1ae110aefcef43fef32e1e55e71289e992 - drb (2.2.3) sha256=0b00d6fdb50995fe4a45dea13663493c841112e4068656854646f418fda13373 - em-websocket (0.5.3) sha256=f56a92bde4e6cb879256d58ee31f124181f68f8887bd14d53d5d9a292758c6a8 - ethon (0.18.0) sha256=b598afc9f30448cb068b850714b7d6948e941476095d04f90a4ac65b8d6efcb2 - eventmachine (1.2.7) sha256=994016e42aa041477ba9cff45cbe50de2047f25dd418eba003e84f0d16560972 - execjs (2.10.1) sha256=abe0ae028467eb8e30c10814eb934d07876a691aae7e803d813b7ce5a75e73f1 - faraday (2.14.1) sha256=a43cceedc1e39d188f4d2cdd360a8aaa6a11da0c407052e426ba8d3fb42ef61c - faraday-net_http (3.4.2) sha256=f147758260d3526939bf57ecf911682f94926a3666502e24c69992765875906c - ffi (1.15.5) sha256=6f2ed2fa68047962d6072b964420cba91d82ce6fa8ee251950c17fca6af3c2a0 - forwardable-extended (2.6.0) sha256=1bec948c469bbddfadeb3bd90eb8c85f6e627a412a3e852acfd7eaedbac3ec97 - gemoji (4.1.0) sha256=734434020cbe964ea9d19086798797a47d23a170892de0ce55b74aa65d2ddc1a - github-pages (232) sha256=2b40493d7327627e4ce45c47f4a9d4394e5eaa151f9d29bb924ff424c3132287 - github-pages-health-check (1.18.2) sha256=df893d4f5a4161477e8525b993dbe1c1eb63fbb86fb07b6e80996fd37a18843d - html-pipeline (2.14.3) sha256=8a1d4d7128b2141913387cac0f8ba898bb6812557001acc0c2b46910f59413a0 - http_parser.rb (0.8.1) sha256=9ae8df145b39aa5398b2f90090d651c67bd8e2ebfe4507c966579f641e11097a - i18n (1.14.8) sha256=285778639134865c5e0f6269e0b818256017e8cde89993fdfcbfb64d088824a5 - jekyll (3.10.0) sha256=c4213b761dc7dfe7d499eb742d0476a02d8503e440c2610e19774ee7f0db8d90 - jekyll-avatar (0.8.0) sha256=ea736277c2de54a21300122096700517972a722d5c68ca83f8723b4999abfd4b - jekyll-coffeescript (1.2.2) sha256=894e71c2071a834e76eb7e8044944440a0c81c2c7092532fed1503b13d331110 - jekyll-commonmark (1.4.0) sha256=1731e658fe09ce040271e6878f83ad45bbf8d17b10ad03bf343546cca30f4844 - jekyll-commonmark-ghpages (0.5.1) sha256=d56722f23393e45625e6e1bac6d3c64bb5f5cdf6ca547338160536d61c27a4a4 - jekyll-default-layout (0.1.5) sha256=c626be4e4a5deafca123539da2cd22ff873be350cafd4da134039efdf24320af - jekyll-feed (0.17.0) sha256=689aab16c877949bb9e7a5c436de6278318a51ecb974792232fd94d8b3acfcc3 - jekyll-gist (1.5.0) sha256=495b6483552a3e2975a2752964ea7acddd545bc6e13ce2be15a50cec8d4c9f0f - jekyll-github-metadata (2.16.1) sha256=4cf29988bdaf24774a7bc07fae71e54424ddfaa2895f742d8fa3036d0db65b4c - jekyll-include-cache (0.2.1) sha256=c7d4b9e551732a27442cb2ce853ba36a2f69c66603694b8c1184c99ab1a1a205 - jekyll-mentions (1.6.0) sha256=39e801024cb6f2319b3f78a29999d0068ef5f68bc5202b8757d5354fef311ed9 - jekyll-optional-front-matter (0.3.2) sha256=ecdc061d711472469fcf04da617653b553e914c038a17df3b6a5f6f92aeb761b - jekyll-paginate (1.1.0) sha256=880aadf4b02529a93541d508c5cbb744f014cbfc071d0263a31f25ec9066eb64 - jekyll-readme-index (0.3.0) sha256=d74cc4de46b2d350229be7409495149e656a31fb5a5fe3fe6135dbf7435e1e32 - jekyll-redirect-from (0.16.0) sha256=6635cae569ef9b0f90ffb71ec014ba977177fafb44d32a2b0526288d4d9be6db - jekyll-relative-links (0.6.1) sha256=d11301f57b39e94b6c04fff2a3b145fe2f6a27be631a403e2542fa2e1548dd6d - jekyll-remote-theme (0.4.3) sha256=d3fde726484fb3df04de9e347baf75aaa3d5bfea771a330412e0c52608e54b40 - jekyll-sass-converter (1.5.2) sha256=53773669e414dc3bb070113befacb808576025a28cfa4a4accc682e90a9c1101 - jekyll-seo-tag (2.8.0) sha256=3f2ed1916d56f14ebfa38e24acde9b7c946df70cb183af2cb5f0598f21ae6818 - jekyll-sitemap (1.4.0) sha256=0de08c5debc185ea5a8f980e1025c7cd3f8e0c35c8b6ef592f15c46235cf4218 - jekyll-swiss (1.0.0) sha256=c299a855dca881fe868f21545c5489be50ddfbc0d54a80e8dbeb5a2ddc4888a3 - jekyll-theme-architect (0.2.0) sha256=7275d3dcaa6b34fcf92f2fe5cee92d49d66706d3b523003b1e67e9c668ff0440 - jekyll-theme-cayman (0.2.0) sha256=3c5f14f9c72a8eb03ecc74f9a3e5ecbbc55f9381339978b42dec216921865f2a - jekyll-theme-dinky (0.2.0) sha256=720b257091f0de3aa9394b25fd97d1b2b12cfaf00e060aff170f60e218a32c7c - jekyll-theme-hacker (0.2.0) sha256=816bf9f992ded0b1e1e69d8dece2574e8480efb5e9f84a2e1ac83bd717b8f78a - jekyll-theme-leap-day (0.2.0) sha256=921ea8305ae0285a881c9aa9dbe2375ed6f404b4f90067458e596891ef5ac7d1 - jekyll-theme-merlot (0.2.0) sha256=cbf2b21b62423561ca5b62e406dbb08f085e3a45daa7b3b4b9b3f24d08ded545 - jekyll-theme-midnight (0.2.0) sha256=009ff367350e83ff6095d98837bb411adb07b59a76f59f1d4a33ef927bb391de - jekyll-theme-minimal (0.2.0) sha256=a225210c35573ad2c9e57b81f16f678ca6c314394ec692502ccc6189d7e52d82 - jekyll-theme-modernist (0.2.0) sha256=4be775bc5edd53864c5e40c000c34db0dfd82dac800cff50371ef11da66dfbcf - jekyll-theme-primer (0.6.0) sha256=ce27282798217eb0957ba01ab3bf12996476348b625736fa8448f7a1b8a307b3 - jekyll-theme-slate (0.2.0) sha256=5e40909de712bbbefbc7a29f17c55bffa326c222f0a13ee1656229a7d43c3439 - jekyll-theme-tactile (0.2.0) sha256=b7861b48aed5b2385d7a146b13f31cb6f37afe3107f4a6b93b1c932b2d242652 - jekyll-theme-time-machine (0.2.0) sha256=bc3490a7eccfc24ca671780c9d4f531500936a361690020b19defe6105d74fe2 - jekyll-titles-from-headings (0.5.3) sha256=77366754e361ea7b5d87881f5b1380835f5ce910c240a4d9ac2d7afe86d28481 - jekyll-watch (2.2.1) sha256=bc44ed43f5e0a552836245a54dbff3ea7421ecc2856707e8a1ee203a8387a7e1 - jemoji (0.13.0) sha256=5d4c3e8e2cbbb2b73997c31294f6f70c94e4d4fade039373e86835bcf5529e7c - json (2.19.3) sha256=289b0bb53052a1fa8c34ab33cc750b659ba14a5c45f3fcf4b18762dc67c78646 - kramdown (2.4.0) sha256=b62e5bcbd6ea20c7a6730ebbb2a107237856e14f29cebf5b10c876cc1a2481c5 - kramdown-parser-gfm (1.1.0) sha256=fb39745516427d2988543bf01fc4cf0ab1149476382393e0e9c48592f6581729 - liquid (4.0.4) sha256=4fcfebb1a045e47918388dbb7a0925e7c3893e58d2bd6c3b3c73ec17a2d8fdb3 - listen (3.10.0) sha256=c6e182db62143aeccc2e1960033bebe7445309c7272061979bb098d03760c9d2 - logger (1.7.0) sha256=196edec7cc44b66cfb40f9755ce11b392f21f7967696af15d274dde7edff0203 - mercenary (0.3.6) sha256=2a084b18f5692c86a633e185d5311ba6d11fc46c802eb414ae05368178078a82 - minima (2.5.1) sha256=520e52bc631fb16cbb8100660f6caa44f97859e2fa7e397d508deb18739567be - minitest (6.0.4) sha256=df1304664589d40f46089247fdc451f866b0ce0d7cae1457a15fc1eb7d48dca1 - net-http (0.9.1) sha256=25ba0b67c63e89df626ed8fac771d0ad24ad151a858af2cc8e6a716ca4336996 - nokogiri (1.19.2-aarch64-linux-gnu) sha256=c34d5c8208025587554608e98fd88ab125b29c80f9352b821964e9a5d5cfbd19 - nokogiri (1.19.2-aarch64-linux-musl) sha256=7f6b4b0202d507326841a4f790294bf75098aef50c7173443812e3ac5cb06515 - nokogiri (1.19.2-arm-linux-gnu) sha256=b7fa1139016f3dc850bda1260988f0d749934a939d04ef2da13bec060d7d5081 - nokogiri (1.19.2-arm-linux-musl) sha256=61114d44f6742ff72194a1b3020967201e2eb982814778d130f6471c11f9828c - nokogiri (1.19.2-arm64-darwin) sha256=58d8ea2e31a967b843b70487a44c14c8ba1866daa1b9da9be9dbdf1b43dee205 - nokogiri (1.19.2-x86_64-darwin) sha256=7d9af11fda72dfaa2961d8c4d5380ca0b51bc389dc5f8d4b859b9644f195e7a4 - nokogiri (1.19.2-x86_64-linux-gnu) sha256=fa8feca882b73e871a9845f3817a72e9734c8e974bdc4fbad6e4bc6e8076b94f - nokogiri (1.19.2-x86_64-linux-musl) sha256=93128448e61a9383a30baef041bf1f5817e22f297a1d400521e90294445069a8 - octokit (4.25.1) sha256=c02092ee82dcdfe84db0e0ea630a70d32becc54245a4f0bacfd21c010df09b96 - pathutil (0.16.2) sha256=e43b74365631cab4f6d5e4228f812927efc9cb2c71e62976edcb252ee948d589 - prism (1.9.0) sha256=7b530c6a9f92c24300014919c9dcbc055bf4cdf51ec30aed099b06cd6674ef85 - public_suffix (5.1.1) sha256=250ec74630d735194c797491c85e3c6a141d7b5d9bd0b66a3fa6268cf67066ed - racc (1.8.1) sha256=4a7f6929691dbec8b5209a0b373bc2614882b55fc5d2e447a21aaa691303d62f - rb-fsevent (0.11.2) sha256=43900b972e7301d6570f64b850a5aa67833ee7d87b458ee92805d56b7318aefe - rb-inotify (0.11.1) sha256=a0a700441239b0ff18eb65e3866236cd78613d6b9f78fea1f9ac47a85e47be6e - rexml (3.4.4) sha256=19e0a2c3425dfbf2d4fc1189747bdb2f849b6c5e74180401b15734bc97b5d142 - rouge (3.30.0) sha256=a3d353222aa72e49e2c86726c0bcfd719f82592f57d494474655f48e669eceb6 - rubyzip (2.4.1) sha256=8577c88edc1fde8935eb91064c5cb1aef9ad5494b940cf19c775ee833e075615 - safe_yaml (1.0.5) sha256=a6ac2d64b7eb027bdeeca1851fe7e7af0d668e133e8a88066a0c6f7087d9f848 - sass (3.7.4) sha256=808b0d39053aa69068df939e24671fe84fd5a9d3314486e1a1457d0934a4255d - sass-listen (4.0.0) sha256=ae9dcb76dd3e234329e5ba6e213f48e532c5a3e7b0b4d8a87f13aaca0cc18377 - sawyer (0.9.3) sha256=0d0f19298408047037638639fe62f4794483fb04320269169bd41af2bdcf5e41 - securerandom (0.4.1) sha256=cc5193d414a4341b6e225f0cb4446aceca8e50d5e1888743fac16987638ea0b1 - simpleidn (0.2.3) sha256=08ce96f03fa1605286be22651ba0fc9c0b2d6272c9b27a260bc88be05b0d2c29 - terminal-table (1.8.0) sha256=13371f069af18e9baa4e44d404a4ada9301899ce0530c237ac1a96c19f652294 - typhoeus (1.6.0) sha256=bacc41c23e379547e29801dc235cd1699b70b955a1ba3d32b2b877aa844c331d - tzinfo (2.0.6) sha256=8daf828cc77bcf7d63b0e3bdb6caa47e2272dcfaf4fbfe46f8c3a9df087a829b - unicode-display_width (1.8.0) sha256=0292132d364d59fcdd83f144910c48b3c8332b28a14c5c04bb093dd165600488 - uri (1.1.1) sha256=379fa58d27ffb1387eaada68c749d1426738bd0f654d812fcc07e7568f5c57c6 - webrick (1.9.2) sha256=beb4a15fc474defed24a3bda4ffd88a490d517c9e4e6118c3edce59e45864131 - BUNDLED WITH - 4.0.9 + 2.1.4 diff --git a/_sass/style.scss b/_sass/style.scss index e6299f6..f942a7f 100644 --- a/_sass/style.scss +++ b/_sass/style.scss @@ -335,7 +335,7 @@ footer { color: #fff; width: 40%; margin: 30px 30%; - text-align: left; + text-align: center; line-height: 32px; font-size: 16px; } @@ -683,4 +683,165 @@ main { .use-case-description { margin: 0; } +} + +/* Why MQTT page */ +.minimal-wrapper { + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; + line-height: 1.7; + --text-primary: #111111; + --text-secondary: #555555; + --border-color: #e5e5e5; + --bg-color: #ffffff; +} + +.minimal-container { + max-width: 900px; + margin: 0 auto; + padding: 60px 20px; + + h1, h2, h3 { color: var(--text-primary); margin-top: 0; } + p { color: var(--text-secondary); } +} + +.minimal-header { + margin-bottom: 60px; + border-bottom: 1px solid var(--border-color); + padding-bottom: 40px; + + h1 { + font-size: 3rem; + font-weight: 600; + letter-spacing: -0.02em; + margin-bottom: 1rem; + line-height: 1.1; + } + + p { + font-size: 1.25rem; + font-weight: 300; + max-width: 700px; + } +} + +.minimal-section { + margin-bottom: 60px; + + h2 { + font-size: 1.5rem; + font-weight: 500; + border-bottom: 1px solid var(--border-color); + padding-bottom: 15px; + margin-bottom: 30px; + } +} + +.business-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); + gap: 24px; + margin-top: 30px; +} + +.business-card { + border: 1px solid var(--border-color); + padding: 30px; + display: flex; + flex-direction: column; + background: var(--bg-color); + + h3 { + font-size: 1.15rem; + font-weight: 600; + margin-bottom: 12px; + line-height: 1.4; + } + + p { + font-size: 0.95rem; + color: var(--text-secondary); + margin-bottom: 24px; + flex-grow: 1; + line-height: 1.6; + } +} + +.proof-point { + font-size: 0.85rem; + font-weight: 600; + color: var(--text-primary); + border-top: 1px solid var(--border-color); + padding-top: 16px; + margin-top: auto; + text-transform: uppercase; + letter-spacing: 0.05em; +} + +.use-case-grid { + display: flex; + flex-wrap: wrap; + gap: 16px; +} + +.use-case-link { + display: inline-block; + padding: 12px 24px; + border: 1px solid var(--border-color); + color: var(--text-primary); + text-decoration: none; + font-weight: 500; + transition: all 0.2s ease; + background: var(--bg-color); + + &:hover { + border-color: var(--text-primary); + background: #f9f9f9; + color: var(--text-primary); + } +} + +.minimal-table-wrapper { + overflow-x: auto; + border: 1px solid var(--border-color); +} + +.minimal-table { + width: 100%; + border-collapse: collapse; + text-align: left; + font-size: 0.95rem; + min-width: 800px; + + th { + background: #fafafa; + padding: 20px; + font-weight: 500; + color: var(--text-primary); + border-bottom: 1px solid var(--border-color); + } + + td { + padding: 20px; + color: var(--text-secondary); + border-bottom: 1px solid var(--border-color); + vertical-align: top; + } + + tr:last-child td { border-bottom: none; } + + .row-header { + font-weight: 600; + color: var(--text-primary); + } + + .mqtt-highlight { + background-color: #f7f7f8; + color: var(--text-primary); + font-weight: 500; + } + + th.mqtt-highlight { + background-color: #eeeeea; + font-weight: 600; + } } \ No newline at end of file diff --git a/_sites/why-mqtt.md b/_sites/why-mqtt.md index f0a7ff4..059510a 100644 --- a/_sites/why-mqtt.md +++ b/_sites/why-mqtt.md @@ -5,201 +5,6 @@ description: Learn why technical leaders and CTOs choose MQTT as the standard fo layout: default --- - -
@@ -261,7 +66,7 @@ layout: default

Why Now?

-

MQTT is increasingly connecting to enterprise platforms like Apache Kafka and AMQP-based tools like EMQ. It is designed to fit seamlessly into existing enterprise architectures—acting as the edge-to-cloud bridge—rather than replacing your core backend messaging infrastructure.

+

MQTT is increasingly used as the edge layer for enterprise architectures, bridging device data to streaming platforms like Apache Kafka and enterprise messaging systems like RabbitMQ. It is designed to fit seamlessly into existing enterprise architectures—acting as the edge-to-cloud bridge—rather than replacing your core backend messaging infrastructure.

CharacteristicMQTTMQTT Apache Kafka AMQP REST / Webhooks
Core ParadigmIoT & Edge Pub/SubIoT & Edge Pub/Sub Data Streaming / Append Log Enterprise Queuing Synchronous Request/Response
Target EnvironmentUnreliable networks, constrained edgeUnreliable networks, constrained edge Datacenter to Datacenter, stable networks Backend microservices, internal VPCs Standard web integrations
Client FootprintExtremely minimal (Microcontroller capable)Extremely minimal (Microcontroller capable) Heavy (JVM or persistent polling required) Moderate (Complex channel logic required) Heavy (Verbose HTTP payloads)
Connections & ScaleMillions of concurrent active clientsMillions of concurrent active clients Thousands of partitions/clients Tens of thousands of active channels Constrained heavily by server thread limits