diff --git a/package-lock.json b/package-lock.json index db98e62d..69a7568a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21,7 +21,7 @@ "clsx": "^2.0.0", "curl": "^0.1.4", "fs": "^0.0.1-security", - "image-size": "^1.1.1", + "image-size": "^1.2.1", "jimp": "^0.22.12", "js-yaml": "^4.1.0", "nodejs": "^0.0.0", @@ -36,6 +36,7 @@ "react-slick": "^0.30.2", "reactjs-popup": "^2.0.6", "request": "^2.88.2", + "sharp": "^0.34.2", "slick-carousel": "^1.8.1" }, "devDependencies": { @@ -2621,6 +2622,16 @@ "node": ">=18.0" } }, + "node_modules/@emnapi/runtime": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.4.3.tgz", + "integrity": "sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, "node_modules/@formspree/core": { "version": "3.0.1", "license": "MIT", @@ -2682,6 +2693,402 @@ "@hapi/hoek": "^9.0.0" } }, + "node_modules/@img/sharp-darwin-arm64": { + "version": "0.34.2", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.2.tgz", + "integrity": "sha512-OfXHZPppddivUJnqyKoi5YVeHRkkNE2zUFT2gbpKxp/JZCFYEYubnMg+gOp6lWfasPrTS+KPosKqdI+ELYVDtg==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-arm64": "1.1.0" + } + }, + "node_modules/@img/sharp-darwin-x64": { + "version": "0.34.2", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.2.tgz", + "integrity": "sha512-dYvWqmjU9VxqXmjEtjmvHnGqF8GrVjM2Epj9rJ6BUIXvk8slvNDJbhGFvIoXzkDhrJC2jUxNLz/GUjjvSzfw+g==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-x64": "1.1.0" + } + }, + "node_modules/@img/sharp-libvips-darwin-arm64": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.1.0.tgz", + "integrity": "sha512-HZ/JUmPwrJSoM4DIQPv/BfNh9yrOA8tlBbqbLz4JZ5uew2+o22Ik+tHQJcih7QJuSa0zo5coHTfD5J8inqj9DA==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-darwin-x64": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.1.0.tgz", + "integrity": "sha512-Xzc2ToEmHN+hfvsl9wja0RlnXEgpKNmftriQp6XzY/RaSfwD9th+MSh0WQKzUreLKKINb3afirxW7A0fz2YWuQ==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.1.0.tgz", + "integrity": "sha512-s8BAd0lwUIvYCJyRdFqvsj+BJIpDBSxs6ivrOPm/R7piTs5UIwY5OjXrP2bqXC9/moGsyRa37eYWYCOGVXxVrA==", + "cpu": [ + "arm" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm64": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.1.0.tgz", + "integrity": "sha512-IVfGJa7gjChDET1dK9SekxFFdflarnUB8PwW8aGwEoF3oAsSDuNUTYS+SKDOyOJxQyDC1aPFMuRYLoDInyV9Ew==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-ppc64": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.1.0.tgz", + "integrity": "sha512-tiXxFZFbhnkWE2LA8oQj7KYR+bWBkiV2nilRldT7bqoEZ4HiDOcePr9wVDAZPi/Id5fT1oY9iGnDq20cwUz8lQ==", + "cpu": [ + "ppc64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-s390x": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.1.0.tgz", + "integrity": "sha512-xukSwvhguw7COyzvmjydRb3x/09+21HykyapcZchiCUkTThEQEOMtBj9UhkaBRLuBrgLFzQ2wbxdeCCJW/jgJA==", + "cpu": [ + "s390x" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-x64": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.1.0.tgz", + "integrity": "sha512-yRj2+reB8iMg9W5sULM3S74jVS7zqSzHG3Ol/twnAAkAhnGQnpjj6e4ayUz7V+FpKypwgs82xbRdYtchTTUB+Q==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-arm64": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.1.0.tgz", + "integrity": "sha512-jYZdG+whg0MDK+q2COKbYidaqW/WTz0cc1E+tMAusiDygrM4ypmSCjOJPmFTvHHJ8j/6cAGyeDWZOsK06tP33w==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-x64": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.1.0.tgz", + "integrity": "sha512-wK7SBdwrAiycjXdkPnGCPLjYb9lD4l6Ze2gSdAGVZrEL05AOUJESWU2lhlC+Ffn5/G+VKuSm6zzbQSzFX/P65A==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-linux-arm": { + "version": "0.34.2", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.2.tgz", + "integrity": "sha512-0DZzkvuEOqQUP9mo2kjjKNok5AmnOr1jB2XYjkaoNRwpAYMDzRmAqUIa1nRi58S2WswqSfPOWLNOr0FDT3H5RQ==", + "cpu": [ + "arm" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm": "1.1.0" + } + }, + "node_modules/@img/sharp-linux-arm64": { + "version": "0.34.2", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.2.tgz", + "integrity": "sha512-D8n8wgWmPDakc83LORcfJepdOSN6MvWNzzz2ux0MnIbOqdieRZwVYY32zxVx+IFUT8er5KPcyU3XXsn+GzG/0Q==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm64": "1.1.0" + } + }, + "node_modules/@img/sharp-linux-s390x": { + "version": "0.34.2", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.2.tgz", + "integrity": "sha512-EGZ1xwhBI7dNISwxjChqBGELCWMGDvmxZXKjQRuqMrakhO8QoMgqCrdjnAqJq/CScxfRn+Bb7suXBElKQpPDiw==", + "cpu": [ + "s390x" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-s390x": "1.1.0" + } + }, + "node_modules/@img/sharp-linux-x64": { + "version": "0.34.2", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.2.tgz", + "integrity": "sha512-sD7J+h5nFLMMmOXYH4DD9UtSNBD05tWSSdWAcEyzqW8Cn5UxXvsHAxmxSesYUsTOBmUnjtxghKDl15EvfqLFbQ==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-x64": "1.1.0" + } + }, + "node_modules/@img/sharp-linuxmusl-arm64": { + "version": "0.34.2", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.2.tgz", + "integrity": "sha512-NEE2vQ6wcxYav1/A22OOxoSOGiKnNmDzCYFOZ949xFmrWZOVII1Bp3NqVVpvj+3UeHMFyN5eP/V5hzViQ5CZNA==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-arm64": "1.1.0" + } + }, + "node_modules/@img/sharp-linuxmusl-x64": { + "version": "0.34.2", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.2.tgz", + "integrity": "sha512-DOYMrDm5E6/8bm/yQLCWyuDJwUnlevR8xtF8bs+gjZ7cyUNYXiSf/E8Kp0Ss5xasIaXSHzb888V1BE4i1hFhAA==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-x64": "1.1.0" + } + }, + "node_modules/@img/sharp-wasm32": { + "version": "0.34.2", + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.34.2.tgz", + "integrity": "sha512-/VI4mdlJ9zkaq53MbIG6rZY+QRN3MLbR6usYlgITEzi4Rpx5S6LFKsycOQjkOGmqTNmkIdLjEvooFKwww6OpdQ==", + "cpu": [ + "wasm32" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", + "optional": true, + "dependencies": { + "@emnapi/runtime": "^1.4.3" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-arm64": { + "version": "0.34.2", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-arm64/-/sharp-win32-arm64-0.34.2.tgz", + "integrity": "sha512-cfP/r9FdS63VA5k0xiqaNaEoGxBg9k7uE+RQGzuK9fHt7jib4zAVVseR9LsE4gJcNWgT6APKMNnCcnyOtmSEUQ==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-ia32": { + "version": "0.34.2", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.2.tgz", + "integrity": "sha512-QLjGGvAbj0X/FXl8n1WbtQ6iVBpWU7JO94u/P2M4a8CFYsvQi4GW2mRy/JqkRx0qpBzaOdKJKw8uc930EX2AHw==", + "cpu": [ + "ia32" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-x64": { + "version": "0.34.2", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.2.tgz", + "integrity": "sha512-aUdT6zEYtDKCaxkofmmJDJYGCf0+pJg3eU9/oBuqvEeoB9dKI6ZLc/1iLJCTuJQDO4ptntAlkUmHgGjyuobZbw==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, "node_modules/@jest/schemas": { "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", @@ -5133,6 +5540,19 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/color": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", + "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1", + "color-string": "^1.9.0" + }, + "engines": { + "node": ">=12.5.0" + } + }, "node_modules/color-convert": { "version": "2.0.1", "license": "MIT", @@ -5147,6 +5567,16 @@ "version": "1.1.4", "license": "MIT" }, + "node_modules/color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "license": "MIT", + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, "node_modules/color-support": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", @@ -5950,9 +6380,10 @@ } }, "node_modules/detect-libc": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", - "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz", + "integrity": "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==", + "license": "Apache-2.0", "engines": { "node": ">=8" } @@ -8012,9 +8443,10 @@ "integrity": "sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g==" }, "node_modules/image-size": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.1.1.tgz", - "integrity": "sha512-541xKlUw6jr/6gGuk92F+mYM5zaFAc5ahphvkqvNe2bQ6gVBkd6bfrmVJ2t4KDAfikAYZyIqTnktX3i6/aQDrQ==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.2.1.tgz", + "integrity": "sha512-rH+46sQJ2dlwfjfhCyNx5thzrv+dtmBIhPHk0zgRUukHzZ/kRueTJXoYYsclBaKcSMBWuGbOFXtioLpzTb5euw==", + "license": "MIT", "dependencies": { "queue": "6.0.2" }, @@ -13515,11 +13947,10 @@ } }, "node_modules/semver": { - "version": "7.6.0", + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, "bin": { "semver": "bin/semver.js" }, @@ -13540,20 +13971,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/semver/node_modules/lru-cache": { - "version": "6.0.0", - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/semver/node_modules/yallist": { - "version": "4.0.0", - "license": "ISC" - }, "node_modules/send": { "version": "0.19.0", "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", @@ -13750,6 +14167,47 @@ "version": "1.1.0", "license": "MIT" }, + "node_modules/sharp": { + "version": "0.34.2", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.34.2.tgz", + "integrity": "sha512-lszvBmB9QURERtyKT2bNmsgxXK0ShJrL/fvqlonCo7e6xBF8nT8xU6pW+PMIbLsz0RxQk3rgH9kd8UmvOzlMJg==", + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "color": "^4.2.3", + "detect-libc": "^2.0.4", + "semver": "^7.7.2" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-darwin-arm64": "0.34.2", + "@img/sharp-darwin-x64": "0.34.2", + "@img/sharp-libvips-darwin-arm64": "1.1.0", + "@img/sharp-libvips-darwin-x64": "1.1.0", + "@img/sharp-libvips-linux-arm": "1.1.0", + "@img/sharp-libvips-linux-arm64": "1.1.0", + "@img/sharp-libvips-linux-ppc64": "1.1.0", + "@img/sharp-libvips-linux-s390x": "1.1.0", + "@img/sharp-libvips-linux-x64": "1.1.0", + "@img/sharp-libvips-linuxmusl-arm64": "1.1.0", + "@img/sharp-libvips-linuxmusl-x64": "1.1.0", + "@img/sharp-linux-arm": "0.34.2", + "@img/sharp-linux-arm64": "0.34.2", + "@img/sharp-linux-s390x": "0.34.2", + "@img/sharp-linux-x64": "0.34.2", + "@img/sharp-linuxmusl-arm64": "0.34.2", + "@img/sharp-linuxmusl-x64": "0.34.2", + "@img/sharp-wasm32": "0.34.2", + "@img/sharp-win32-arm64": "0.34.2", + "@img/sharp-win32-ia32": "0.34.2", + "@img/sharp-win32-x64": "0.34.2" + } + }, "node_modules/shebang-command": { "version": "2.0.0", "license": "MIT", @@ -13861,6 +14319,21 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.3.1" + } + }, + "node_modules/simple-swizzle/node_modules/is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", + "license": "MIT" + }, "node_modules/sirv": { "version": "2.0.4", "license": "MIT", diff --git a/package.json b/package.json index b0f10a40..5bb9ba48 100644 --- a/package.json +++ b/package.json @@ -9,6 +9,8 @@ }, "scripts": { "docusaurus": "docusaurus", + "prestart": "node scripts/resize-images.js", + "prebuild": "node scripts/resize-images.js", "start": "docusaurus start", "build": "docusaurus build", "swizzle": "docusaurus swizzle", @@ -33,7 +35,7 @@ "clsx": "^2.0.0", "curl": "^0.1.4", "fs": "^0.0.1-security", - "image-size": "^1.1.1", + "image-size": "^1.2.1", "jimp": "^0.22.12", "js-yaml": "^4.1.0", "nodejs": "^0.0.0", @@ -48,6 +50,7 @@ "react-slick": "^0.30.2", "reactjs-popup": "^2.0.6", "request": "^2.88.2", + "sharp": "^0.34.2", "slick-carousel": "^1.8.1" }, "devDependencies": { @@ -72,4 +75,4 @@ "engines": { "node": "18.x" } -} +} \ No newline at end of file diff --git a/scripts/resize-images.js b/scripts/resize-images.js new file mode 100644 index 00000000..c89f38af --- /dev/null +++ b/scripts/resize-images.js @@ -0,0 +1,49 @@ +const sharp = require('sharp'); +const fs = require('fs'); +const path = require('path'); +const sizeOf = require('image-size'); +const inputDir = path.join(__dirname, '../static', 'img', 'blogposts', 'full-size-images'); +const outputDir = path.join(__dirname, '../static', 'img', 'blogposts', 'resized-images'); +const containerHeight = 180; +const containerWidth = 273; +const containerAspectRatio = containerWidth / containerHeight; +console.log('container Aspect Ratio:', containerAspectRatio); + +if (!fs.existsSync(outputDir)) { + fs.mkdirSync(outputDir, { recursive: true }); +} + +fs.readdirSync(inputDir).forEach((file) => { + const inputPath = path.join(inputDir, file); + if (fs.existsSync(inputPath)) { + const dimensions = sizeOf(inputPath); + + const aspectRatio = dimensions.width / dimensions.height; + const outputPath = path.join(outputDir, file); + let targetWidth, targetHeight + let width; + if (aspectRatio <= containerAspectRatio) { + targetHeight = containerHeight + targetWidth = Math.round(targetHeight * aspectRatio); + } else { + targetWidth = containerWidth*2; /* factor 2 to increase the resolution*/ + targetHeight = Math.round(targetWidth / aspectRatio); + } + + // Check that the image fits within the container + if (targetWidth > containerWidth * 2) { + targetWidth = containerWidth * 2; + targetHeight = Math.round(targetWidth / aspectRatio); + } + if (targetHeight > containerHeight) { + targetHeight = containerHeight; + targetWidth = Math.round(targetHeight * aspectRatio); + } + + if (/\.(png|jpg)$/i.test(file)) { + sharp(inputPath) + .resize(targetWidth, targetHeight) + .toFile(outputPath) + } + } +}); \ No newline at end of file diff --git a/src/components/blog/BlogpostCard.tsx b/src/components/blog/BlogpostCard.tsx index 69f14fc0..4ea8a6a9 100644 --- a/src/components/blog/BlogpostCard.tsx +++ b/src/components/blog/BlogpostCard.tsx @@ -32,8 +32,6 @@ export default function BlogpostCard({ blogpost, timeIndex }) { {"Illustration diff --git a/src/components/blog/_config.yml b/src/components/blog/_config.yml deleted file mode 100644 index fabb6ff4..00000000 --- a/src/components/blog/_config.yml +++ /dev/null @@ -1,839 +0,0 @@ -copyright: - author: QuantStack - url: https://quantstack.net - type_title: All rights reserved - -blog: - - url: https://medium.com/@QuantStack/introducing-mamba-2-0-0e8d5c6d1d0c - title: "Introducing Mamba 2.0" - image: https://miro.medium.com/v2/resize:fit:828/format:webp/0*q3RzcOZXWZzyfDIG - summary: "We are excited to present the first release candidate of Mamba 2.0, a significant upgrade to the mamba package manager. This update brings considerable enhancements for both users and developers, following an extensive year-long development effort." - date: July 16, 2024 - authors: Antoine Prouvost, Joel Lamotte, Johan Mabille, Hind Montassif - - - url: https://medium.com/@QuantStack/quantstack-open-source-internship-program-049755b6d44b - title: "QuantStack open-source internship program" - image: https://miro.medium.com/v2/resize:fit:2000/format:webp/0*3Drh_jUVUNWjdFfe - summary: "Today, we are announcing a new internship program that aims to empower a new cohort of open-source contributors and future maintainers to make an impact within our ecosystem." - date: July 9, 2024 - authors: Sylvain Corlay - - - url: https://medium.com/@QuantStack/jupytercad-2-0-4b9c4e18d22a - title: "JupyterCAD 2.0" - image: https://miro.medium.com/v2/resize:fit:828/format:webp/0*F-C-m6ksqJ3MGU7b - summary: "We are thrilled to introduce JupyterCAD 2.0, the newest version of the JupyterLab-based CAD modeler." - date: July 5, 2024 - authors: Trung Le, Martin Renou - - - url: https://blog.jupyter.org/jupytergis-d63b7adf9d0c - title: "JupyterGIS" - image: https://miro.medium.com/v2/resize:fit:1400/format:webp/1*IkYCf2cbk3SaxaROQ0eUsA.png - summary: "We are thrilled to announce that the European Space Agency (ESA) is funding our proposal “Real-time collaboration and collaborative editing for GIS workflows with Jupyter and QGIS.”" - date: June 12, 2024 - authors: Sylvain Corlay, Anne Fouilloux, Monika Weissschnur - - - url: https://medium.com/@SylvainCorlay/commit-cdf57415b94b - title: "Commit!" - image: https://miro.medium.com/v2/0*3gKzwBOWprSRs35k - summary: "Open-source projects are not just about the latest exciting updates and features, but also the principles and people that drive these projects to success. In this blog post, I reflect on the dynamics…" - date: May 29, 2024 - authors: Sylvain Corlay - - - url: https://quantstack.net/fanny.html - title: "In memoriam: Fanny Loustau Chartez" - image: https://quantstack.net/img/avatar/Fanny@2x.jpg - summary: "It is with great sadness that we announce the passing of our colleague and friend, Fanny Loustau Chartez, who served as the Chief Financial Officer of QuantStack since 2021." - date: May 16, 2024 - authors: Sylvain Corlay - - - url: https://medium.com/@PyDataParis/announcing-pydata-paris-2024-700220accc72 - title: "Announcing PyData Paris 2024" - image: https://miro.medium.com/v2/resize:fit:1100/format:webp/0*jYrq6Du7WpJDOTUf - summary: "We are thrilled to announce the upcoming PyData Paris 2024, the gathering of the open-source data science and AI/ML community in France. PyData Paris will take place at the Cité des Sciences from September 25 to September 26, 2024." - date: March 11, 2024 - authors: Sylvain Corlay - - - url: https://blog.jupyter.org/meet-xeus-r-a-future-proof-jupyter-kernel-for-r-1adc5fdd09ab - title: "Meet Xeus-R: a future-proof Jupyter kernel for R" - image: https://miro.medium.com/v2/resize:fit:1400/format:webp/1*cFmKZKFycjvG1v_Xub4snQ.png - summary: "Today, we, a collaborative team led by Romain François and supported by QuantStack, are thrilled to announce the initial release of Xeus-R, a future-proof Jupyter kernel for R." - date: January 22nd, 2024 - authors: Romain François - - - url: https://medium.com/@QuantStack/quantstack-2023-in-review-94fea0a35520 - title: "QuantStack: 2023 in review" - image: https://miro.medium.com/v2/resize:fit:2000/format:webp/0*rwQcR7xvAIr_7pzY - summary: "Since QuantStack was founded in 2016, we have remained committed to releasing our work under permissive open-source licenses. Here are some highlights of the 2023 achievements. Buckle up!" - date: January 3rd, 2024 - authors: Sylvain Corlay - - - url: https://blog.jupyter.org/recent-keyboard-navigation-improvements-in-jupyter-4df32f97628d - title: Recent keyboard navigation improvements in Jupyter - image: https://upload.wikimedia.org/wikipedia/commons/thumb/5/5e/W3C_icon.svg/320px-W3C_icon.svg.png - summary: "Upcoming versions of JupyterLab (4.1.0) and Notebook (7.1.0) will include major keyboard accessibility fixes." - date: December 16th, 2023 - authors: Nicolas Brichet, Gabriel Fouasnon - - - url: https://blog.jupyter.org/and-voici-e02367197ba2 - title: And Voici! - image: https://miro.medium.com/v2/resize:fit:1400/format:webp/1*Tjh9IaZrdJhTQzxyIOgI8Q.png - summary: "Voici (meaning “here is” in French) is a novel project reshaping Jupyter-based interactive dashboards by combining Voilà and JupyterLite features. It facilitates the creation of dynamic, in-browser environments for data visualization and exploration." - date: December 6th, 2023 - authors: Trung Duc Le, Martin Renou - - - url: https://blog.jupyter.org/plug-your-application-into-the-jupyter-world-805e48918801 - title: Plug your application into the Jupyter world - image: https://miro.medium.com/v2/resize:fit:1400/format:webp/1*ENzq7i52UtqxESs4UTKBYw.png - summary: "Kernels are a simple but powerful abstraction in the Jupyter architecture. They encapsulate language interpreters and make them accessible through a standardized interface. This is the key to…" - date: October 23rd, 2023 - authors: David Brochart - - - url: https://blog.jupyter.org/voil%C3%A0-0-5-0-homecoming-66f2465aa86f - title: Voilà 0.5 - Homecoming - image: https://miro.medium.com/v2/resize:fit:4800/format:webp/1*W1dHdjWC0CYoLjCWXXxU2w.png - summary: Following the launch of Jupyter Notebook 7, it is now Voilà’s turn to join the JupyterLab family. In Version 0.5.0, the front-end of Voilà has been rebuilt from scratch using JupyterLab 4.0 components, just like in the case of Notebook 7. - date: September 25th, 2023 - authors: Jeremy Tuloup, Martin Renou, Trung Duc Le - - - url: https://blog.jupyter.org/announcing-jupyter-notebook-7-8d6d66126dcf - title: Announcing Jupyter Notebook 7 - image: https://miro.medium.com/v2/resize:fit:1400/format:webp/0*1RXUtbuPrEJC95ut.jpg - summary: Jupyter Notebook 7 is the most significant release of the Jupyter Notebook in years. Some highlights of this release include real-time collaboration, interactive debugging, table of contents, theming and dark mode, internationalization, improved accessibility, compact view on mobile devices. - date: July 26th, 2023 - authors: Jeremy Tuloup - - - url: https://blog.jupyter.org/jupytercon-2023-recordings-now-live-on-youtube-17564b75a2a - title: 🎉 JupyterCon 2023 recordings now live on YouTube! 🎉 - image: https://miro.medium.com/v2/resize:fit:1400/format:webp/1*j0Cai6fnoYoJ-axQzIvpaA.png - summary: Get ready to relive the magic of JupyterCon 2023, because the long-awaited moment is finally here! The JupyterCon YouTube channel has just dropped a treasure trove of content — all the talk and keynote recordings from the most epic conference of the year. - date: July 22nd, 2023 - authors: Gayle Ollington, Sylvain Corlay - - - url: https://blog.jupyter.org/a-theme-editor-for-jupyterlab-8f08ab62894d - title: A theme editor for JupyterLab - image: https://miro.medium.com/v2/resize:fit:4800/format:webp/0*5OLBiA8tmTbD1Nan.png - summary: To lower the bar for customizing JupyterLab we created a new tool providing a simple interface for tuning the JupyterLab appearance interactively. - date: June 19th, 2023 - authors: Florence Haudin - - - url: https://blog.jupyter.org/collaborative-cad-in-jupyterlab-8eb9e8f81f0 - title: Collaborative CAD in JupyterLab - image: https://miro.medium.com/v2/resize:fit:1400/format:webp/1*9r3Xz-v5wyuz8aAKY2WV-A.png - summary: Introducing JupyterCAD, a tool that integrates Computer-Aided Design (CAD) capabilities into JupyterLab. - date: June 2nd, 2023 - authors: Duc Trung Le, Martin Renou - - - url: https://blog.jupyter.org/congratulations-distinguished-contributors-7a7b215b8bd0 - title: Congratulations, Distinguished Contributors! - image: https://miro.medium.com/v2/resize:fit:720/format:webp/1*awcttRVT1kQ1dWqJig7DWQ.jpeg - summary: We are proud to announce the recipients of the Jupyter Distinguished Contributor (JDC) award for the 2022 cohort of contributors. - date: June 2nd, 2023 - authors: Johan Mabille - - - url: https://blog.jupyter.org/embed-interactive-itkwidgets-3d-renderings-into-jupyterlite-deployments-10eb9ea30980 - title: Embed interactive itkwidgets 3D renderings into JupyterLite deployments - image: https://miro.medium.com/v2/resize:fit:1100/0*_zowwA1kefuHdpEX.gif - summary: A tutorial that demonstrates a zero-server, interactive 3D rendering notebook and walks through the quick and easy configuration that can be customized to your needs. - date: March 15th, 2023 - authors: Matt McCormick, Brianna Major, Jeremy Tuloup, Wei Ouyang, Stephen Aylward - - - url: https://blog.jupyter.org/improving-the-accessibility-of-jupyter-6c695db518d3 - title: Improving the accessibility of Jupyter - image: https://miro.medium.com/v2/resize:fit:4800/0*7imwXY7uST5QSNfi - summary: This article presents some of the recent accessibility improvements in the Jupyter Notebook codebase. - date: February 24th, 2023 - authors: Nicolas Brichet, Johan Mabille, Jeremy Tuloup, Frédéric Collonval, Sylvain Corlay - - - url: https://blog.jupyter.org/a-jupyter-kernel-for-gnu-octave-b6d29e56341f - title: A Jupyter kernel for GNU Octave - image: https://miro.medium.com/max/4800/0*_HZJpXD-awr4mPDG - summary: We are happy to announce the xeus-octave project, a Jupyter kernel for GNU Octave. Xeus-octave was created by Giulio Girardi, recently joined by Antoine Prouvost - and has been incorporated into the Project Jupyter governance. - date: January 11th, 2023 - authors: Giulio Girardi, Antoine Prouvost - - - url: https://medium.com/@QuantStack/quantstack-2022-in-review-7d4704b1db42 - title: "QuantStack: 2022 in review" - image: https://miro.medium.com/max/1400/1*QnDNfCXtgb2vLbmmag9ngQ.webp - summary: 2022 was an amazing year of innovation for the open-source developers at QuantStack. Developments range from major improvements to the Jupyter project to the packaging ecosystem and high-performance computing. - date: December 26th, 2022 - authors: Sylvain Corlay - - - url: https://medium.com/@AntoineProuvost/managing-conflicts-with-mamba-6a5fa10ed6a - title: Managing conflicts with Mamba - image: https://miro.medium.com/max/4800/1*4FgY6y9QfGLMO3qtim-zSw.png - summary: A key aspect of package management is finding a set of compatible versions of the required packages. Indeed, even in the case when few packages are explicitly required, second-order dependencies may… - date: November 29th, 2022 - authors: Antoine Prouvost - - - url: https://blog.jupyter.org/jupytercon-is-back-in-2023-90e5c25eeec9 - title: JupyterCon is back in 2023 - image: https://miro.medium.com/max/1400/1*Mn75xGD3GWU0tpI7Rx9utQ.png - summary: JupyterCon 2023 will be held May 10–12 (Thursday to Friday) in the city of light, Paris, France at the largest science museum in Europe, the Cité des Sciences et de l’Industrie. - date: October 17th, 2022 - authors: Gayle Ollington - - - url: https://blog.jupyter.org/accelerating-jupyterlab-68942bb8d602 - title: Accelerating JupyterLab - image: https://miro.medium.com/max/1400/1*EZX55-XLmck_LfFfV3KeaA.png - summary: The next major release of JupyterLab will be significantly faster than previous versions. This was achieved both through systematic tracking of performance bugs and through significant upgrades to the Jupyter communication protocol and rendering mechanism for documents. - date: September 15th, 2022 - authors: Frédéric Collonval, Johan Mabille, David Brochart, Afshin Darian - - - url: https://blog.jupyter.org/upgrading-nbgrader-99c56ae56c47 - title: Upgrading nbgrader - image: https://miro.medium.com/max/922/1*C1fPJUhN8pk86GIXCQq5AA.png - summary: Project Jupyter provides a broad collection of open-source tools for interactive computing that has become ubiquitous in data science and scientific computing, and is very popular in educational… - date: September 15th, 2022 - authors: Nicolas Brichet - - - url: https://blog.jupyter.org/visual-programming-in-jupyterlab-with-blockly-7731ec3e113c - title: Visual programming in JupyterLab with Blockly - image: https://miro.medium.com/max/1400/0*yEQ8djozBKDLcCxZ - summary: When moving from block-based programming to a more classical language like Python, students often have to switch to a completely new environment. In order to provide a smooth ramp of complexity for learners, we designed a JupyterLab extension for Blockly so that Jupyter can be used from the very first steps of their learning journey. - date: July 29th, 2022 - authors: Denisa Checiu, Carlos Herrero - - - url: https://blog.jupyter.org/mamba-meets-jupyterlite-88ef49ac4dc8 - title: Mamba meets JupyterLite - image: https://miro.medium.com/max/1400/1*JCiZIwwkFen5kwEA2rK4SA.png - summary: "JupyterLite is a Jupyter distribution that runs entirely in the web browser without any server components. To achieve this, all language kernels must also run in the browser. A significant benefit of…" - date: July 14th, 2022 - authors: Thorsten Beier, Martin Renou - - - url: https://blog.jupyter.org/inspector-jupyterlab-404cce3e1df6 - title: Inspector JupyterLab - image: https://miro.medium.com/max/1215/1*pRzjLlwQIIMhJmx2G_3-Mw.png - summary: "JupyterLab provides multiple ways to improve your coding workflow: code highlighting, code completion, theming, debugger with rich variable rendering and more." - date: April 11th, 2022 - authors: Martin Renou - - - url: https://blog.pyodide.org/posts/canvas-renderer-matplotlib-in-pyodide/ - title: HTML5 based renderer for Matplotlib in Pyodide - image: https://blog.pyodide.org/posts/canvas-renderer-matplotlib-in-pyodide/featured.png - summary: In this post, we present a new backend for Matplotlib enabling the rendering of figures in the browser by leveraging the <canvas> element. This showcases how JavaScript and Python can interact with each other, thanks to Pyodide. - date: April 1st, 2022 - authors: Madhur Tandon - - - url: https://wolfv.medium.com/the-future-of-mamba-fdf6d628b3df - title: The future of mamba - image: https://miro.medium.com/max/1400/1*uF6b_NEqPQqQafnOnrdVXg.png - summary: The recent adoption of libmamba by the conda project was a great validation of our work. Several other game-changing innovations are in the works by the mamba team. Stay tuned! - date: March 31st, 2022 - authors: Wolf Vollprecht - - - url: https://blog.jupyter.org/congratulations-distinguished-contributors-bc349fa60d68 - title: Congratulations, Distinguished Contributors! - image: https://miro.medium.com/max/1400/1*Cw8VcAfJKv42NLtAN6v-rw.png - summary: We are proud to announce the recipients of the Jupyter Distinguished Contributor (JDC) award for the 2021 cohort of contributors. - date: March 16th, 2022 - authors: Johan Mabille - - - url: https://blog.jupyter.org/jupyter-everywhere-f8151c2cc6e8 - title: "Jupyter Everywhere" - image: https://miro.medium.com/max/1342/0*TK59W6sOJHNg-Sgi.jpg - summary: Easily embed a console, a notebook, or a fully-fledged IDE on any web page. - date: March 15th, 2022 - authors: Martin Renou, Jeremy Tuloup - - - url: https://medium.com/@kmathewos92/ros2-support-for-zethus-e6ecfcdb1c4c - title: "ROS2 support for Zethus" - image: https://miro.medium.com/max/1400/1*PjL5c71-hE2rO4EyqrVu9Q.png - summary: Zethus is an Open Source library for Robot visualization in the browser. Initially developed by Rapyuta Robotics, it provides a web-based… - date: February 17th, 2022 - authors: Kedus Mathewos - - - url: https://medium.com/@QuantStack/quantstack-2021-in-review-fe5eac2e0f6d - title: "QuantStack: 2021 in review" - image: https://miro.medium.com/max/5000/1*sTrv_3hnvCHQdh_6SOYVIg.png - summary: This was a crazy year of innovation for the open-source team at QuantStack. From JupyterLab to the packaging ecosystem and high-performance computing, we made some major strides in all areas, while almost doubling the size of the team. - date: December 18th, 2021 - authors: Sylvain Corlay - - - url: https://blog.jupyter.org/jupyter-games-cda20dc15a21 - title: Jupyter Games - image: https://miro.medium.com/max/4854/1*gXbeqCDvKyaRySdAX6SnKg.png - summary: Making their own tiny video games can be a great way for kids to learn programming in a playful matter. While Jupyter is widely used as a scientific and educational tool, Jupyter is seldom used as a… - date: December 14th, 2021 - authors: Thorsten Beier - - - url: https://blog.jupyter.org/need-for-speed-voil%C3%A0-edition-a9e1300ab3b2 - title: "Need for speed: Voilà edition" - image: https://miro.medium.com/max/2000/1*gSWxQGu60SG5DdH8MIzCjw.png - summary: Voilà turns Jupyter notebooks into standalone applications without requiring any modification to the content. You want to share your content with non-technical readers? Just call Voilà with the… - date: December 10th, 2021 - authors: Duc Trung Le - - - url: https://adelsalle.medium.com/towards-a-more-secure-conda-ecosystem-5ce65a27d7d5 - title: Towards a more secure conda ecosystem - image: https://miro.medium.com/max/2000/1*-dT0h3rEi07pzgl_wnkj_g.png - summary: Supply chain security is crucial to the overall security of package managers, which are a major attack vector of information systems. Today, we are pleased to announce that mamba has gained the… - date: November 16th, 2021 - authors: Adrien Delsalle - - - url: https://johan-mabille.medium.com/toward-a-faster-and-thinner-xsimd-9e4eef41bc17 - title: Toward a faster and thinner xsimd - image: https://miro.medium.com/max/1094/1*5jX4Eemb2CsUkRo3V2FGow.png - summary: xsimd, the SIMD library by QuantStack, got more and more adoption in recent years. While it helped improve the library, adoption also brought new requirements. Among them was the abitility to... - date: October 29th, 2021 - authors: Serge Guelton, Johan Mabille - - - url: https://blog.jupyter.org/xeus-lite-379e96bb199d - title: Xeus-Lite - image: https://miro.medium.com/max/4020/1*PUlJi6czJovO90t-Dsgt5g.png - summary: JupyterLite is a JupyterLab distribution that runs entirely in the web browser, backed by in-browser language kernels. Xeus is C++ library for writing Jupyter kernels. In this blogpost we show how… - date: October 25th, 2021 - authors: Thorsten Beier - - - url: https://wolfv.medium.com/the-mamba-project-and-the-czi-grant-ec88fb27c25 - title: The mamba project and the CZI grant - image: https://miro.medium.com/max/2000/1*6hKli3Nr3p6eX3TN5hRaSQ.png - summary: "For those who don't know yet: mamba is a fast, cross-platform & non-language-specific package manager widely used in the scientific space. Mamba works with conda -packages and works great in tandem…" - date: October 19th, 2021 - authors: Wolf Vollprecht - - - url: https://blog.jupyter.org/looking-at-notebooks-from-a-new-perspective-bfd06797f188 - title: Looking at notebooks from a new perspective - image: https://miro.medium.com/max/3000/1*g3OWLubcUFgVIGBfPYztJQ.png - summary: Jupyter notebooks are a great tool for practitioners of scientific computing from the research phase of their work to the communication of their results. The interleaving of code and rich text makes… - date: October 5th, 2021 - authors: Mariana Meireles - - - url: https://blog.jupyter.org/xeus-2-0-cb460d4daed4 - title: Xeus 2.0 - image: https://miro.medium.com/max/4800/1*kGCA9WV-Gf5tiNqqy9vTMQ.png - summary: We have just released Xeus 2.0. This is a major release of the library. While it includes backward-incompatible changes, they are very limited and upgrading your kernels should be relatively easy… - date: September 28th, 2021 - authors: Johan Mabille, Sylvain Corlay - - - url: https://blog.jupyter.org/from-jupyter-to-the-moon-2e432df402c8 - title: From Jupyter to the Moon - image: https://miro.medium.com/max/2750/1*Or2bu8twFwywgACqLOE9AA.png - summary: A key principle in Jupyter’s design is language agnosticism, and one of the main extension points of the Jupyter ecosystem is the kernel, the part of the architecture responsible for executing the… - date: September 24th, 2021 - authors: Thorsten Beier - - - url: https://blog.jupyter.org/jupyterlite-jupyter-%EF%B8%8F-webassembly-%EF%B8%8F-python-f6e2e41ab3fa - title: Jupyter ❤️ WebAssembly ❤️ Python - image: https://miro.medium.com/max/1024/1*CMvcTaLSAD5A-WHCtnIFwA.png - summary: JupyterLite is a JupyterLab distribution that runs entirely in the web browser, backed by in-browser language kernels. JupyterLite is a reboot of several attempts at making a full static Jupyter… - date: July 13th, 2021 - authors: Jeremy Tuloup - - - url: https://wolfv.medium.com/mamba-0-15-0-475d1dca0418 - title: Mamba 0.15.0 - image: https://miro.medium.com/max/2000/1*neAjO4lTmq4TIZTmMGkKNg.png - summary: We’ve just dropped one of the biggest releases of mamba (the fast conda package manager)— along with some nice improvements in libsolv! This is a quick update on some new and improved features in… - date: July 9th, 2021 - authors: Wolf Vollprecht, Adrien Delsalle - - - url: https://www.polytechnique.edu/fondation/content/le-calcul-haute-performance-au-service-de-l%E2%80%99innovation - title: Le calcul haute performance au service de l'innovation (in French) - image: https://xpuissancevous.fr/assets/frontend/images/header/logo_share.png - summary: Led by Professor Marc Massot (Center for Applied Mathematics), the HPC@Maths initiative aims at developing a strong expertise in high-performance computing at École Polytechnique. This project is supported by the X Foundation, and by QuantStack. - date: June 18th, 2021 - authors: Fondation École Polytechnique - - - url: https://blog.jupyter.org/how-we-made-jupyter-notebooks-collaborative-with-yjs-b8dff6a9d8af - title: How we made Jupyter notebooks collaborative with Yjs - image: https://miro.medium.com/max/1600/0*HvwrxmA_sBtU0SaO - summary: Collaborative editing — à la Google Docs — is a feature that you still rarely find in applications. One of the few good things that came out of this pandemic is that more people seem to care about… - date: June 12th, 2021 - authors: Kevin Jahns - - - url: https://blog.jupyter.org/retrolab-a-jupyterlab-distribution-with-a-retro-look-and-feel-8096b8b223d0 - title: RetroLab - A JupyterLab distribution with a retro look and feel - image: https://miro.medium.com/max/3840/1*n9MydI9CDW9vlav1gMlo0Q.png - summary: RetroLab is an alternative JupyterLab distribution, built from the ground-up, providing a notebook interface with a retro look and feel. Currently at version 3.0, JupyterLab provides an advanced… - date: May 27th, 2021 - authors: Jeremy Tuloup - - - url: https://adelsalle.medium.com/rhumba-the-fast-r-distribution-is-available-on-windows-fa975b2aefa2 - title: Rhumba, the fast R distribution is available on Windows - image: https://miro.medium.com/max/700/1*23wOYejHZA5dLluhyLUYhA.gif - summary: A few months ago, Mariana Meireles created Rhumba, a fast R package manager and distribution leveraging the conda-forge initiative and the mamba library. Today, we’re happy to announce a new major… - date: May 18th, 2021 - authors: Adrien Delsalle - - - url: https://blog.jupyter.org/enabling-the-jupyterlab-debugger-with-ipykernel-8d7248f522b0 - title: Enabling the JupyterLab Debugger with ipykernel - image: https://miro.medium.com/max/4214/1*jSQWLvCYoV-L-kp_lTkRKg.gif - summary: JupyterLab 3.0 includes a visual debugger that allows to interactively set breakpoints, step into functions, and inspect variables with any Jupyter kernel that implements the Jupyter debugger… - date: May 13th, 2021 - authors: Sylvain Corlay, Johan Mabille - - - url: https://medium.com/@mari_meir/jupyter-%EF%B8%8F-%EF%B8%8F-cytoscape-e2e77be8e0f9 - title: Jupyter ❤️ Cytoscape - image: https://miro.medium.com/max/250/1*fib_QqwBNksN4YiJiAneQg.png - summary: Cytoscape is an open source software platform for visualizing complex networks and integrating these with any type of attribute data. While the project was started in the life sciences community, it… - date: May 11th, 2021 - authors: Mariana Meireles - - - url: https://johan-mabille.medium.com/zarray-a-dynamic-expression-system-based-on-xtensor-ded69f37ff5e - title: "zarray: a dynamic expression system based on xtensor" - image: https://miro.medium.com/max/782/0*MH-GD9T19Fjn32ur.png - summary: In this article we demonstrate how we pushed xtensor one step further, implementing a dynamic expression system on top of it. xtensor is a comprehensive C++framework for multi-dimensional array… - date: Apr 29th, 2021 - authors: Johan Mabille - - - url: https://blog.jupyter.org/nbterm-jupyter-notebooks-in-the-terminal-6a2b55d08b70 - title: "nbterm: Jupyter Notebooks in the terminal" - image: https://miro.medium.com/max/1120/1*jZFC3kPJqxMSUeCGd7PHxw.jpeg - summary: Jupyter notebooks are mostly known for their web-based user interface, such as JupyterLab or the Classic Notebook. They offer a great user experience, allow for rich output rendering, provide… - date: Apr 26th, 2021 - authors: David Brochart - - - url: https://blog.jupyter.org/abracadabra-bringing-the-magics-to-xeus-python-9d17bcfacb4 - title: Abracadabra! Bringing the Magics to Xeus-Python - image: https://miro.medium.com/max/1120/1*PTiGVyDsazc_ziz6Bk4EnA.gif - summary: Last year, we set ourselves to implement a visual debugger for JupyterLab. This endeavor required major developments in the JupyterLab… - date: Feb 18th, 2021 - authors: Martin Renou - - - url: https://medium.com/robostack/cross-platform-conda-packages-for-ros-fa1974fd1de3 - title: Cross-platform Conda Packages for ROS - image: https://miro.medium.com/max/2000/0*CWMpP2kGWulIQeHf.jpg - summary: 2020 has been a busy year for the RoboStack project. We collaboratively published ros-noetic on four platforms (Windows, macOS, Linux x64 and ARM64) and revamped how ROS packages can be released on… - date: February 16th, 2021 - authors: Wolf Vollprecht, Tobias Fischer - - - url: https://blog.jupyter.org/genomic-data-representation-in-jupyter-c57a5bb518d6 - title: Genomic Data representation in Jupyter - image: https://miro.medium.com/max/1120/1*681fIddZAaQc8w72MmmIiw.gif - summary: If there is one thing that recent events tell us, it is that genomics is a large source of data, and that its manipulation and understanding allow for the quick development of new drugs and… - date: February 8th, 2021 - authors: Jean-David Harrouet - - - url: https://blog.jupyter.org/an-sql-solution-for-jupyter-ef4a00a0d925?postPublishedType=initial - title: An SQL Solution for Jupyter - image: https://miro.medium.com/max/992/1*tbfa_AWoqb-yB1Tk6Uq3ng.png - summary: A few months ago we released xeus-sqlite, a Jupyter kernel that allows users to make SQLite queries directly from the notebook. With the needs of the Jupyter data science community in mind we decided… - date: February 3rd, 2021 - authors: Mariana Meireles - - - - url: https://blog.jupyter.org/a-curiously-recurring-widget-library-261a65bd56fe - title: A Curiously Recurring Widget Library - image: https://miro.medium.com/max/1120/1*i1D4_PqaKhej-XRSKkoyBw.png - summary: Diving into the implementation of xwidgets… - date: January 27th, 2021 - authors: Sylvain Corlay - - - url: https://blog.jupyter.org/robotic-process-automation-with-jupyterlab-713b5630e457 - title: Robotic Process Automation with JupyterLab - image: https://miro.medium.com/max/1120/1*3HNfLnwDpXNZ6n6HPD2lXQ.png - summary: Robotic Process Automation (RPA) differs from classical automation tools in that the actions to automate can be developed by observing a user perform a task in a graphical user interface, across… - date: January 18th, 2021 - authors: Martin Renou, Johan Mabille - - - url: https://blog.jupyter.org/dashboarding-with-jupyterlab-3-789fcb1a5857 - title: Dashboarding with JupyterLab 3.0 - image: https://miro.medium.com/max/2000/1*t4EW3oCIrt5FaMXUyjYPFw.gif - summary: Project Jupyter offers a complete suite of open-source tools for the scientific computing community, reaching from the exploratory phase of a project to the presentation of the results. In this last… - date: January 8th, 2021 - authors: Carlos Herrero, Jeremy Tuloup - - - url: https://blog.jupyter.org/jupyterlab-3-0-is-out-4f58385e25bb - title: JupyterLab 3.0 is Released! - image: https://miro.medium.com/max/1400/1*iZTmCAefbExeTZNJKWy4cQ.png - summary: The 3.0 release of JupyterLab brings many new features to users and substantial improvements to the extension distribution system. - date: January 5th, 2021 - authors: Jeremy Tuloup - - - url: https://blog.llvm.org/posts/2020-12-21-interactive-cpp-for-data-science/ - title: Interactive C++ for Data Science - image: https://blog.llvm.org/img/cling-2020-12-21-figure3.png - summary: This post will discuss some applications of Cling developed to support data science researchers. In particular, interactively probing data and interfaces makes complex libraries and complex data more accessible users. - date: Dec 23, 2020 - authors: Vassil Vassilev, David Lange, Simeon Ehrig, Sylvain Corlay - - - url: https://david-brochart.medium.com/xtensor-%EF%B8%8F-zarr-4f5cf25c65e5 - title: Xtensor ❤️ Zarr - image: https://miro.medium.com/max/2160/1*N1w2lJOA9n0HKw0Hlf0ruQ.png - summary: A C++ implementation of the Zarr specification… - date: Dec 15, 2020 - authors: David Brochart - - - url: https://blog.jupyter.org/a-c-backend-for-vega-lite-bd2524b247c2 - title: A C++ API for Vega-Lite - image: https://miro.medium.com/max/700/1*UkIPGquufhYT7-S62MTECg.png - summary: In this post, we present the first public release of XVega, a C++ library for producing Vega-Lite charts. Data science workflows differ from traditional software development in that engineers make… - date: Dec 2, 2020 - authors: Madhur Tandon - - - url: https://blog.jupyter.org/ipygany-jupyter-into-the-third-dimension-29a97597fc33 - title: Ipygany, Jupyter into the Third Dimension - image: https://miro.medium.com/max/1000/1*IB4Bf4aEC5RXJJ1gY1zGFw.png - summary: From Paraview to Mayavi, there are multiple solutions for data analysis on 3D meshes on the desktop. Most of these tools provide high-level APIs that can be driven with a scripting language like… - date: Oct 14, 2020 - authors: Martin Renou - - - url: https://medium.com/@mari_meir/rhumba-a-faster-r-distribution-d619fb93043a - title: Rhumba, a Faster R Distribution - image: https://miro.medium.com/max/1260/1*qNdIl4oTgd0F6JAExK7CNg.gif - summary: CRAN is the official package manager for the R ecosystem. Unfortunately, simple operations such as creating new environments or installing packages with it can be very time-consuming due to the fact… - date: Oct 13, 2020 - authors: Mariana Meireles - - - url: https://blog.jupyter.org/the-templating-system-of-nbconvert-6-47ea781eacd2 - title: The Templating System of Nbconvert 6 - image: https://miro.medium.com/max/1200/1*nrUKm5eexRd9ReMergNnEw.png - summary: One of the main changes in nbconvert 6 is the refactor of the template system, which should be easier to extend and build upon. In this article, we dive into the template system, and provide a… - date: Sep 26, 2020 - authors: Sylvain Corlay - - - url: https://medium.com/@mari_meir/memestra-a21c0c1f362 - title: Memestra! - image: https://miro.medium.com/max/1200/1*usMYAuVljfxl9LnSPnseVg.png - summary: Modern IDE features such as interactive debugging, linting, code formatting, and refactoring tools are now available in JupyterLab, thanks to the JupyterLab-LSP extension and the recent release of… - date: Sep 21, 2020 - authors: Mariana Meireles - - - url: https://medium.com/@martinRenou/real-time-rendering-of-water-caustics-59cda1d74aa - title: Real-time Rendering of Water Caustics - image: https://miro.medium.com/max/875/1*lbqTcvsdT_5D2LT1h5bO2g.png - summary: In this article, I present an attempt for generalizing caustics computation in real-time using WebGL and ThreeJS. The fact that it is an attempt is important, finding a solution that works well in… - date: Aug 27, 2020 - authors: Martin Renou - - - url: https://blog.jupyter.org/jupyterlab-ros-3dc9dab7f421 - title: JupyterLab, the Cloud Robotics Command Station - image: https://miro.medium.com/max/3200/1*zfaBPxiCzlnoNoKrVpcrIA.png - summary: Building the next generation of robotics cloud computing using ROS and JupyterLab - date: Aug 11, 2020 - authors: Carlos Herrero, Wolf Vollprecht - - - url: https://blog.jupyter.org/slicerjupyter-a-3d-slicer-kernel-for-interactive-publications-6f2ad829f635 - title: SlicerJupyter, a 3-D Slicer Kernel for Interactive Publications - image: https://miro.medium.com/max/341/1*ePhHKkjqV-AW0mvDkaeurw.png - summary: Use Jupyter and 3D Slicer kernel to implement biomedical data processing workflows in a notebook. - date: Jul 8, 2020 - authors: Sylvain Corlay, Jean-Christophe Fillion-Robin, Mike Grauer, Andras Lasso, Matt MacCormick, Isaiah Norton, Steve Pieper, Martin Renou, Mike Sarahan - - - url: https://medium.com/@QuantStack/open-software-packaging-for-science-61cecee7fc23 - title: Open Software Packaging for Science - image: https://raw.githubusercontent.com/TheSnakePit/design/83d7450620172e41f54e65c76f1374b52dfab8a1/mamba.svg - summary: Modern scientific applications typically depend on a very large number of libraries written in various programming languages, ranging from Fortran to TypeScript, C, C++, Python, etc. So, we need to… - date: Jun 19, 2020 - authors: Wolf Vollprecht, Mario Buikhuizen, Marianne Corvellec, Johan Mabille, David Brochart - - - url: https://blog.jupyter.org/a-jupyter-kernel-for-sqlite-9549c5dcf551 - title: A Jupyter Kernel for SQLite - image: https://miro.medium.com/max/604/1*pzPTGCJVgIO10N7OwOGWKw.png - summary: While it is well known in the Python scientific computing community, Jupyter is in fact a language-agnostic development environment. High-quality language kernels exist for the main languages of data… - date: Jun 11, 2020 - authors: Mariana Meireles - - - url: https://blog.jupyter.org/plasma-a-learning-platform-powered-by-jupyter-1b850fcd8624 - title: PLASMA, a Learning Platform Powered by Jupyter - image: https://miro.medium.com/max/933/0*wWdglu7KBVC08Lcc.png - summary: Jupyter has been a great choice for education for many years. The Jupyter Notebook has become one of the most popular tools to conduct workshops, tutorials, and teach online classes. Recently we have… - date: May 11, 2020 - authors: Jeremy Tuloup - - - url: https://blog.jupyter.org/interactive-graph-visualization-in-jupyter-with-ipycytoscape-a8828a54ab63 - title: Interactive Graph Visualization in Jupyter with IPycytoscape - image: https://miro.medium.com/max/933/1*d9UZBB4OB3LXVm7fTHBHaw.png - summary: The Jupyter widgets ecosystem offers a broad variety of data visualization tools for exploratory analysis in the notebook. However, we… - date: Apr 30, 2020 - authors: Mariana Meireles - - - url: https://blog.jupyter.org/a-visual-debugger-for-jupyter-914e61716559 - title: A Visual Debugger for Jupyter - image: https://miro.medium.com/max/933/0*9pVDg58cTz5Yezw8.gif - summary: Most of the progress made in software projects comes from incrementalism. The ability to quickly see the outcome of an execution and iterate has been one of the main reasons for the success of… - date: Mar 25, 2020 - authors: Jeremy Tuloup, Borys Palka, Johan Mabille, Martin Renou, Afshin Darian, Sylvain Corlay - - - url: https://blog.jupyter.org/report-on-the-jupyter-community-workshop-on-dashboarding-14f8ad9f3c0 - title: Field Report on the Jupyter Community Workshop on Dashboarding - image: https://miro.medium.com/max/933/1*e8gJ4j2hCn4XMPagp6etOA.jpeg - summary: From June 3rd to June 6th 2019, thirty-five developers from the Jupyter community met in Paris for a four-day workshop on dashboarding with Project Jupyter. For four days, attendees worked full time… - date: Feb 14, 2020 - authors: Sylvain Corlay - - - url: https://medium.com/@wolfv/introducing-scikit-geometry-ae1dccaad5fd - title: Introducing Scikit-Geometry - image: https://miro.medium.com/max/1260/1*Ns12n2k0T3m0Hoe-5gg4kQ.png - summary: As a robotics researcher (but also in many other fields) computations on geometric primitives are used very frequently— but it’s harder than anticipated to find the right abstractions in a nice… - date: Jan 24, 2020 - authors: Wolf Vollprecht - - - url: https://medium.com/@johan.mabille/how-we-wrote-xtensor-8-n-iterators-7df77e3223f7 - title: How we Wrote Xtensor (Episode 8) - Iterators - image: https://miro.medium.com/max/1260/0*mdtjNgTehPo6xzRO.png - summary: In the previous article, we implemented the broadcasting rules so that we can compute the shape of arbitrary complex trees that involve arrays with different but compatible shapes. This is the first… - date: Jan 7, 2020 - authors: Johan Mabille - - - url: https://medium.com/@wolfv/2019-in-review-d7d03fb0d17d - title: 2019 in Review - image: https://miro.medium.com/max/3600/1*64DQjEYUaRMtHA2Ou3It8w.png - summary: This year has seen major changes in xeus and xeus-python, driven by the requirements for developing a visual debugger. We have implemented a prototype that supports the Debug Adapter Protocol from… - date: Jan 2, 2020 - authors: Wolf Vollprecht - - - url: https://medium.com/@wolfv/robot-development-with-jupyter-ddae16d4e688 - title: Robot Development with Jupyter - image: https://miro.medium.com/max/1260/1*rqyB9qBQUlonff3PR9YuvA.png - summary: Jupyter and Voilà are two popular packages in the data science ecosystem. But the Jupyter plugins jupyter-ros and jupyter-amphion make them more interesting than ever for robotics applications. This… - date: Dec 31, 2019 - authors: Wolf Vollprecht - - - url: https://medium.com/@johan.mabille/how-we-wrote-xtensor-7-n-broadcasting-cf37a974d029 - title: How we Wrote Xtensor (Episode 7) - Broadcasting - image: https://miro.medium.com/max/1260/0*mdtjNgTehPo6xzRO.png - summary: In the previous article, we implemented operator and mathematical function overloads so that we can build arbitrary complex expression trees and access their elements. Before we can assign an… - date: Nov 24, 2019 - authors: Johan Mabille - - - url: https://blog.jupyter.org/voila-gridstack-template-8a431c2b353e - title: Configure your Dashboards with the Voilà Gridstack Template - image: https://miro.medium.com/max/933/1*Pl6z5oPeFixFjxMEYzEpIA.gif - summary: Voilà is a new dashboarding solution from Jupyter ecosystem. It provides an easy-to-use tool to convert your Jupyter notebooks into standalone web applications. If you have not used it before, you… - date: Nov 11, 2019 - authors: Bartosz Telenczuk - - - url: https://blog.jupyter.org/a-slideshow-template-for-voil%C3%A0-apps-435f67d10b4f - title: A Slideshow template for Voilà - image: https://miro.medium.com/max/512/1*JLepfTuigc_h1Gfy768BWg.png - summary: Last June, QuantStack announced the first release of Voilà, a solution to turn Jupyter notebooks into standalone web applications. Voilà enforces security (preventing arbitrary code execution) while… - date: Oct 29, 2019 - authors: Marianne Corvellec - - - url: https://medium.com/@wolfv/ros-on-conda-forge-dca6827ac4b6 - title: ROS on Conda-forge - image: https://miro.medium.com/max/1260/1*Vs520qK74Y0O3O5BtlgB7g.png - summary: ROS is a fantastic and very large suite of software tools for Robotics. It’s used in many applications and with great success, ranging from the hobbyist market to industrial use cases. Most people… - date: Oct 28, 2019 - authors: Wolf Vollprecht - - - url: https://blog.jupyter.org/ipycanvas-a-python-canvas-for-jupyter-bbb51e4777f7 - title: IPycanvas, a Python Canvas for Jupyter - image: https://miro.medium.com/max/933/1*LHrtcPJMCWVMgsvNR6tR6w.png - summary: As you may already know, the Jupyter Notebook and JupyterLab are Browser-based applications. Browsers are incredibly powerful, they allow you to swap rich and interactive graphical interfaces… - date: Oct 25, 2019 - authors: Martin Renou - - - url: https://blog.jupyter.org/field-report-on-the-kernel-community-workshop-a4ad73a1a718 - title: Field Report on the Kernel Community Workshop - image: https://miro.medium.com/max/933/1*AKYqXS6qtE0k6EcTKl3BEQ.jpeg - summary: From May 27th to May 29th, thirty developers from the Jupyter community met in Paris for a three-days workshop on the Jupyter kernel… - date: Oct 7, 2019 - authors: Sylvain Corlay - - - url: https://medium.com/@johan.mabille/how-we-wrote-xtensor-6-n-operator-overloading-984c2e5b4171 - title: How we Wrote Xtensor (Episode 6) - Operator Overloading - image: https://miro.medium.com/max/1260/0*lB4lCWmmeVGAfBUq.png - summary: In the previous article, we introduced expression templates and developed the skeleton of the xfunction class, meant to represent a node of the abstract syntax tree of a tensor expression. We left… - date: Sep 25, 2019 - authors: Johan Mabille - - - url: https://blog.jupyter.org/interactive-gis-in-jupyter-with-ipyleaflet-52f9657fa7a - title: Interactive GIS in Jupyter with IPyleaflet - image: https://miro.medium.com/max/667/1*YA26aVkLDM1KXjNtGu5-Hw.gif - summary: As Jupyter grew in popularity, a broad ecosystem of visualization packages based on Jupyter widgets has been developed, bringing even more interactivity to the Jupyter world. In this article, we dive… - date: Sep 25, 2019 - authors: Sylvain Corlay, Martin Renou - - - url: https://medium.com/@johan.mabille/how-we-wrote-xtensor-5-n-expression-templates-d07332e73d1d - title: How we Wrote Xtensor (Episode 5) - Expression Templates - image: https://miro.medium.com/max/506/1*s4m7A7i78pzy-swZZwHkAA.png - summary: In the previous articles, we started to implement an N-D container, xarray, which has value semantics and provides all the methods required to access its data. The next step is to give it computation… - date: Sep 5, 2019 - authors: Johan Mabille - - - url: https://blog.jupyter.org/building-a-calculator-jupyter-kernel-4aed5764a295 - title: Building a Calculator Jupyter Kernel - image: https://miro.medium.com/max/933/0*h6rfGRuTgOkwonN9 - summary: In order to provide a language-agnostic scientific development environment, the Jupyter project is built upon a well-specified protocol to communicate with the Kernel, the part of the infrastructure… - date: Jul 16, 2019 - authors: Vasavan Thiru, Thibault Lacharme - - - url: https://medium.com/@johan.mabille/how-we-wrote-xtensor-4-n-value-semantics-6baa6856d313 - title: How we Wrote Xtensor (Episode 4) - Value Semantics - image: https://miro.medium.com/proxy/1*HsU43Jzp1vJZpX2g8XPJsg.png - summary: xtensor is a comprehensive framework for N-D arrays processing, including an extensible expression system, lazy evaluation, and many other… - date: Jul 16, 2019 - authors: Johan Mabille - - - url: https://blog.jupyter.org/introducing-templates-for-jupyter-widget-layouts-f72bcb35a662 - title: Introducing Templates for Jupyter Widget Layouts - image: https://miro.medium.com/max/933/1*YQrJiSx2g6GfhkIqK24RUw.png - summary: Notebooks come alive with Jupyter widgets, which allow users to produce interactive GUIs inline in the Jupyter notebook or JupyterLab. You can either use them to add a few interactive controls and… - date: Jul 4, 2019 - authors: Bartosz Telenczuk - - - url: https://medium.com/@johan.mabille/how-we-wrote-xtensor-3-n-the-constructors-65a177260638 - title: How we Wrote Xtensor (Episode 3) - The Constructors - image: https://miro.medium.com/proxy/1*HsU43Jzp1vJZpX2g8XPJsg.png - summary: In the previous article, we detailed the implementation of a generic access operator for our N-D container. Two more things to implement before the xarray class can be used in practice are… - date: Jun 24, 2019 - authors: Johan Mabille - - - url: https://medium.com/@johan.mabille/how-we-wrote-xtensor-2-n-access-operators-57e8e3852263 - title: How we Wrote Xtensor (Episode 2) - Access Operators - image: https://miro.medium.com/proxy/1*HsU43Jzp1vJZpX2g8XPJsg.png - summary: In the previous article, we started to design an N-dimensional container. We detailed the implementation of methods related to shape, strides, and memory layout. Let us now get to the access… - date: Jun 20, 2019 - authors: Johan Mabille - - - url: https://medium.com/@johan.mabille/how-we-wrote-xtensor-1-n-n-dimensional-containers-f79f9f4966a7 - title: How we Wrote Xtensor (Episode 1) - N-Dimensional Containers - image: https://miro.medium.com/max/900/1*HsU43Jzp1vJZpX2g8XPJsg.png - summary: xtensor is a C++ library meant for numerical analysis with multi-dimensional array expressions. It exposes an API similar to that of NumPy… - date: Jun 17, 2019 - authors: Johan Mabille - - - url: https://blog.jupyter.org/and-voil%C3%A0-f6a2c08a4a93 - title: And Voilà! - image: https://miro.medium.com/max/933/1*F0IS2B1XS6NCxp0Eh7linQ.png - summary: The goal of Project Jupyter is to improve the workflows of researchers, educators, scientists, and other practitioners of scientific computing, from the exploratory phase of their work to the… - date: Jun 11, 2019 - authors: Sylvain Corlay, Maarten Breddels - - - url: https://medium.com/@wolfv/mamba-development-news-29e32aaa8d6c - title: Mamba Development News - image: https://miro.medium.com/max/1800/1*g1iLyOfddtgWnkq3irRVmA.png - summary: "Mamba is a drop-in replacement for conda, the awesome cross-platform package manager. In our opinion, conda has one tiny problem: it’s too slow when many packages are installed, or when installing…" - date: Jun 10, 2019 - authors: Wolf Vollprecht - - - url: https://medium.com/@wolfv/building-an-open-source-continuous-benchmark-system-717839093962 - title: Building an Open-Source Continuous Benchmark System - image: https://miro.medium.com/max/3686/1*Oopw8DH88w_5ryddn-TIcw.png - summary: "Concourse is a continuous integration software, and we use it for two purposes: multi-project continuous integration, and continuous benchmarking. It’s easy to setup on a low cost server, using…" - date: May 29, 2019 - authors: Wolf Vollprecht - - - url: https://blog.jupyter.org/ros-jupyter-b7e82b5e1202 - title: ROS @ Jupyter - image: https://miro.medium.com/max/933/1*35w3erSL2xz0mp9le6YNyg.png - summary: Historically, the ROS (Robot Operating System) community has relied on Qt for building complex user interfaces. Nowadays, the Jupyter notebook and the ipywidgets framework offer a compelling… - date: Apr 7, 2019 - authors: Wolf Vollprecht - - - url: https://medium.com/@wolfv/making-conda-fast-again-4da4debfb3b7 - title: Making Conda Fast Again - image: https://miro.medium.com/max/1260/1*5gXPul2JQUjm6oe8Gt6WgQ.png - summary: "You might have seen the announcement on Twitter: at QuantStack we’ve been working on making a prototype of a conda-compatible package manager called mamba. Conda is a great tool to distribute data…" - date: Mar 28, 2019 - authors: Wolf Vollprecht - - - url: https://towardsdatascience.com/interactive-spreadsheets-in-jupyter-32ab6ec0f4ff - title: Interactive spreadsheets in Jupyter - image: https://miro.medium.com/max/3322/1*sKQkf8JV8xTIq9pxVBHGow.png - summary: ipysheet is a new interactive widgets library that aims at implementing the core features of a good spreadsheet application and more… - date: Mar 8, 2019 - authors: Martin Renou - - - url: https://blog.jupyter.org/a-new-python-kernel-for-jupyter-fcdf211e30a8 - title: A New Python Kernel for Jupyter - image: https://miro.medium.com/max/604/1*YIXmS4xfX9MxQ6dHZLU8-g.png - summary: Project Jupyter aims at providing a consistent set of tools for interactive computing workflows across multiple programming languages. Jupyter projects are popular at all stages of a research project… - date: Jan 9, 2019 - authors: Martin Renou - - - url: https://medium.com/@johan.mabille/xframe-towards-a-c-dataframe-26e1ccde211b - title: "Xframe: Towards a C++ Dataframe" - image: https://miro.medium.com/max/1260/1*oIyi7fqvyjIwEw49XkMFig.png - summary: For a very long time, the C++ programming language lacked a high-level toolset for scientific computing. Data structures such as N-dimensional arrays, data frames, are the bread and butter of the R… - date: Jan 4, 2019 - authors: Johan Mabille - - - url: https://medium.com/@johan.mabille/designing-language-bindings-with-xtensor-f32aa0f20db - title: Designing Language Bindings with Xtensor - image: https://raw.githubusercontent.com/xtensor-stack/xtensor/master/docs/source/xtensor.svg - summary: xtensor and its satellite projects make it easy to implement a feature once in C++ and expose it to the main languages of data science, such as Python, Julia and R with little extra work. Although… - date: Nov 30, 2018 - authors: Johan Mabille - - - url: https://towardsdatascience.com/video-streaming-in-the-jupyter-notebook-635bc5809e85 - title: Video Streaming in the Jupyter Notebook - image: https://miro.medium.com/max/1400/1*HTd5uPpq8hsVhxv0MeVfAg.gif - summary: ipywidgets plays an essential part in the Jupyter ecosystem; it brings interactivity between user and data. Widgets are eventful Python objects that often have a visual representation in the Jupyter… - date: Nov 19, 2018 - authors: Martin Renou - - - url: https://towardsdatascience.com/the-xtensor-vision-552dd978e9ad - title: The Xtensor Vision - image: https://miro.medium.com/max/3200/0*VgDZuseWa2S05e6A - summary: Here we’re laying out a vision for the xtensor project, the n-dimensional array in the C++ language — that makes it easy to write high-performance code and bind it to the languages of data science… - date: Nov 10, 2018 - authors: Wolf Vollprecht - - - url: https://serge-sans-paille.github.io/pythran-stories/bye-bye-boostsimd-welcome-xsimd.html - title: Bye bye Boost.SIMD, Welcome XSimd - image: https://raw.githubusercontent.com/xtensor-stack/xsimd/master/docs/source/xsimd.svg - summary: Boost.simd provides a C++ abstraction of vector type, allowing for efficient vectorization of array computations. It has been (optionally) used as part of the expression template engine of Pythran for a long time, a great collaboration that led to several patches in boost.simd, and great performance for Pythran. - date: Oct 31, 2019 - authors: Serge Guelton - - - url: https://medium.com/@QuantStack/xtensor-c-and-the-julia-challenge-643d4b119761 - title: Xtensor, C++, and the Julia Challenge - image: https://miro.medium.com/max/1260/1*FU8d3qA5_wXxxd7Q_ZUEUQ.png - summary: Last month, Simon Danisch launched the Julia Language Challenge, a programming challenge from a member of the Julia community to other programming languages. with high performances. This can be… - date: Oct 24, 2018 - authors: Sylvain Corlay, Johan Mabille, Wolf Vollprecht - - - url: https://medium.com/@wolfv/the-julia-challenge-in-c-21272d36c002 - title: The Julia Challenge in C++ - image: https://raw.githubusercontent.com/JuliaLang/julia-logo-graphics/master/images/julia-logo-color.png - summary: Recently, some folks of the Julia community were boasting about the expressiveness of the Julia programming language, compared to older languages. That’s how they started the Julia Challenge. The… - date: Oct 12, 2018 - authors: Wolf Vollprecht - - - url: https://blog.jupyter.org/interpreted-c-for-gis-with-jupyter-ae191bc6fb8e - title: Interpreter C++ for GIS with Jupyter - image: https://miro.medium.com/max/933/1*FzUw4j635uJgWHZzc8_QiQ.png - summary: The recent release of the Jupyter kernel for C++, based on the Cling interpreter enabled a number of new workflows for the users of the C++ programming language. More than a limited set of base… - date: Apr 24, 2018 - authors: Martin Renou - - - url: https://blog.jupyter.org/authoring-custom-jupyter-widgets-2884a462e724 - title: Authoring Custom Jupyter Widgets - image: https://miro.medium.com/max/933/1*FnkBH8yA-PfCNCxXA2PNIw.gif - summary: Jupyter interactive widgets enhance the notebook experience by allowing users to create graphical user interfaces. They enable richer interaction with the data and computing resources. While the base… - date: Mar 5, 2018 - authors: Olivier Borderies, Olivier Coudray, Pierre Marion - - - url: https://blog.jupyter.org/jupyter-receives-the-acm-software-system-award-d433b0dfe3a2 - title: Jupyter Receives the ACM Software System Award - image: https://miro.medium.com/max/1333/1*4gB92wu3PVYsKabkNCkgjg.png - summary: It is our pleasure to announce that Project Jupyter has been awarded the 2017 ACM Software System Award, a significant honor for the project. We are humbled to join an illustrious list of projects… - date: Mar 2, 2018 - authors: Project Jupyter - - - url: https://blog.jupyter.org/a-diagram-editor-for-jupyterlab-a254121ff919 - title: A Diagram Editor for JupyterLab - image: https://raw.githubusercontent.com/QuantStack/jupyterlab-drawio/master/drawio.gif - summary: The new JupyterLab interface is much more than a replacement for the classic notebook. It aims to bring together all the pieces required for a complete scientific workflow. The extension-based… - date: Feb 26, 2018 - authors: Wolf Vollprecht - - - url: https://medium.com/@wolfv/fast-reductions-in-xtensor-with-simd-212a8543960a - title: Fast Reductions in Xtensor with Xsimd - image: https://miro.medium.com/max/1260/1*lKyNuvdkZlJwhwdatalQmw.png - summary: "xtensor has a wealth of mathematical functions available already: we support a lot of the NumPy API right there in C++. One of the areas where we were a bit slower than NumPy in the past were…" - date: Feb 20, 2018 - authors: Wolf Vollprecht - - - url: https://medium.com/@wolfv/faster-xtensor-87fcbe7f5293 - title: Faster Xtensor - image: https://miro.medium.com/max/1260/1*NXfksdUzAtHjlw3y8wwqDg.jpeg - summary: Knowing the size of the memory that is to be allocated at compile time can improve the runtime performance a lot — the compiler can already reserve the required space on the stack (instead of having… - date: Feb 18, 2018 - authors: Wolf Vollprecht - - - url: https://blog.jupyter.org/interactive-workflows-for-c-with-jupyter-fe9b54227d92 - title: Interactive Workflows for C++ with Jupyter - image: https://miro.medium.com/max/933/1*t_9qAXtdkSXr-0tO9VvOzQ.png - summary: Scientists, educators and engineers not only use programming languages to build software systems, but also in interactive workflows, using the tools available to explore a problem and reason about… - date: Nov 29, 2017 - authors: Sylvain Corlay, Loic Gouarin, Johan Mabille, Wolf Vollprecht - - - url: https://medium.com/@SylvainCorlay/scientific-computing-in-a-polyglot-world-with-xtensor-d81ff3865d6 - title: Scientific Computing in a Polyglot World with Xtensor - image: https://miro.medium.com/max/540/1*mtoK6AtRa0pNGGm576Yj0w.jpeg - summary: The One Language to Rule Them All probably does not exist yet. In the world of interactive scientific computing, countless articles and blog posts argue on the merits of R, Python, Julia and other… - date: May 5, 2017 - authors: Sylvain Corlay \ No newline at end of file diff --git a/src/components/blog/blogpostsDetails.json b/src/components/blog/blogpostsDetails.json index b6833fe3..6f6f6a0a 100644 --- a/src/components/blog/blogpostsDetails.json +++ b/src/components/blog/blogpostsDetails.json @@ -2,1743 +2,1207 @@ { "url": "https://blog.jupyter.org/jupyterlite-0-6-0-is-released-b4bc69bfc8f4", "title": "JupyterLite 0.6.0 is released! 🎉", - "image": "img/blogposts/JupyterLite-06.png", + "image": "img/blogposts/resized-images/JupyterLite-06.png", "summary": "The new 0.6.0 release includes a number of new features, bug fixes, and enhancements. This release also brings significant improvements to the user experience and new customization options for JupyterLite deployments.", "date": "June 12, 2025", "authors": "Jeremy Tuloup", - "imageID": "blogpost-image-132", - "imageNaturalWidth": 1744, - "imageNaturalHeight": 544, - "imageRenderedWidth": 273, - "imageRenderedHeight": 85.16 + "imageID": "blogpost-image-134" }, { "url": "https://blog.jupyter.org/jupyterlab-4-4-and-notebook-7-4-are-available-aca2782d4f3d", "title": "JupyterLab 4.4 and Notebook 7.4 are available!", - "image": "img/blogposts/JupyterLab-44.png", + "image": "img/blogposts/resized-images/JupyterLab-44.png", "summary": "JupyterLab 4.4 has been released! This new minor release of JupyterLab includes 28 new features and enhancements, 76 bug fixes, 63 maintenance tasks and 34 documentation improvements.", "date": "May 21, 2025", "authors": "Jeremy Tuloup", - "imageID": "blogpost-image-131", - "imageNaturalWidth": 740, - "imageNaturalHeight": 357, - "imageRenderedWidth": 269.78, - "imageRenderedHeight": 131.70 + "imageID": "blogpost-image-133" }, { "url": "https://blog.jupyter.org/congratulations-distinguished-contributors-2504029fc5a9", "title": "Congratulations, Distinguished Contributors!", - "image": "/img/blogposts/Congratulations-Distinguished-Contributors-2025.png", + "image": "/img/blogposts/resized-images/Congratulations-Distinguished-Contributors-2025.png", "summary": "We are proud to announce the recipients of the Jupyter Distinguished Contributor (JDC) award for the 2024 cohort of contributors.", "date": "May 15, 2025", "authors": "Johan Mabille", - "imageID": "blogpost-image-130", - "imageNaturalWidth": 1232, - "imageNaturalHeight": 822, - "imageRenderedWidth": 273, - "imageRenderedHeight": 180 + "imageID": "blogpost-image-132" }, { "url": "https://david-brochart.medium.com/making-qt-collaborative-using-crdts-94c470703253", "title": "Making Qt collaborative using CRDTs", - "image": "/img/blogposts/Collaborative-Qt.png", + "image": "/img/blogposts/resized-images/Collaborative-Qt.png", "summary": "A journal on creating a collaborative application with Qt", "date": "March 31, 2025", "authors": "David Brochart", - "imageID": "blogpost-image-129", - "imageNaturalWidth": 976, - "imageNaturalHeight": 288, - "imageRenderedWidth": 273, - "imageRenderedHeight": 80.56 + "imageID": "blogpost-image-131" }, { "url": "https://blog.jupyter.org/r-in-the-browser-announcing-our-webassembly-distribution-9450e9539ed5", "title": "R in the Browser: Announcing Our WebAssembly Distribution", - "image": "/img/blogposts/Xeus-R-Lite.png", + "image": "/img/blogposts/resized-images/Xeus-R-Lite.png", "summary": "R is now available in emscripten-forge, enabling the Xeus-R kernel in JupyterLite.", "date": "February 28, 2025", "authors": "Isabel Paredes", - "imageID": "blogpost-image-129", - "imageNaturalWidth": 1920, - "imageNaturalHeight": 840, - "imageRenderedWidth": 273, - "imageRenderedHeight": 119.43 + "imageID": "blogpost-image-130" }, { "url": "https://blog.jupyter.org/real-time-collaboration-and-collaborative-editing-for-gis-workflows-with-jupyter-and-qgis-d25dbe2832a6", "title": "Real-time collaboration and collaborative editing for GIS workflows with Jupyter and QGIS", - "image": "/img/blogposts/Collaborative-GIS.png", + "image": "/img/blogposts/resized-images/Collaborative-GIS.png", "summary": "We are excited to announce JupyterGIS, a web-based, collaborative, and extensible interface for GIS, leveraging the JupyterLab application framework and integrating seamlessly with the Jupyter notebook interface.", "date": "February 26, 2025", "authors": "Meriem Ben Ismail, Nicolas Brichet, David Brochart, Matt Fisher, Anne Fouilloux, Greg Mooney, Martin Renou, Arjun Verma", - "imageID": "blogpost-image-128", - "imageNaturalWidth": 3840, - "imageNaturalHeight": 2041, - "imageRenderedWidth": 273, - "imageRenderedHeight": 145.10 + "imageID": "blogpost-image-129" }, { "url": "https://medium.com/@PyDataParis/pydata-paris-2025-50ff2bf2dc39", "title": "PyData Paris 2025 Keynotes", - "image": "/img/blogposts/PyData-Paris-2025-Keynotes.png", + "image": "/img/blogposts/resized-images/PyData-Paris-2025-Keynotes.png", "summary": "We are thrilled to announce the keynote speakers for the upcoming PyData Paris 2025, the leading gathering of the open-source data science and AI/ML community in France.", "date": "February 19, 2025", "authors": "Sandrine Pataut", - "imageID": "blogpost-image-127", - "imageNaturalWidth": 372, - "imageNaturalHeight": 353, - "imageRenderedWidth": 171.27, - "imageRenderedHeight": 180 + "imageID": "blogpost-image-128" }, { "url": "https://blog.jupyter.org/announcing-jupytercad-3-0-d8f4b7b0a719", "title": "Announcing JupyterCAD 3.0", - "image": "/img/blogposts/Announcing-JupyterCAD-3.0.png", + "image": "/img/blogposts/resized-images/Announcing-JupyterCAD-3.0.png", "summary": "We are thrilled to introduce JupyterCAD 3.0, the newest version of the collaborative CAD modeler designed for JupyterLab.", "date": "February 17, 2025", "authors": "Arjun Verma, Trung Le, Martin Renou", - "imageID": "blogpost-image-126", - "imageNaturalWidth": 2940, - "imageNaturalHeight": 1462, - "imageRenderedWidth": 273, - "imageRenderedHeight": 136.25 + "imageID": "blogpost-image-127" }, { "url": "https://johan-mabille.medium.com/sparrow-1f23817f6696", "title": "Sparrow", - "image": "/img/blogposts/sparrow.png", + "image": "/img/blogposts/resized-images/sparrow.png", "summary": "We are thrilled to introduce Sparrow, a new library designed to simplify the integration of Apache Arrow’s columnar format into C++ applications.", "date": "January 31, 2025", "authors": "Johan Mabille, Alexis Placet, Thorsten Beier, Joël Lamotte", - "imageID": "blogpost-image-125", - "imageNaturalWidth": 1600, - "imageNaturalHeight": 800, - "imageRenderedWidth": 273, - "imageRenderedHeight": 136.5 + "imageID": "blogpost-image-126" }, { "url": "https://blog.jupyter.org/jupyterlite-terminal-edb3f80dc1c0", "title": "JupyterLite Terminal", - "image": "/img/blogposts/Jupyterlite-Terminal.gif", + "image": "/img/blogposts/resized-images/Jupyterlite-Terminal.png", "summary": "QuantStack are delighted to announce that we have been working on a new Terminal for JupyterLite.", "date": "November 13, 2024", "authors": "Ian Thomas", - "imageID": "blogpost-image-124", - "imageNaturalWidth": 2000, - "imageNaturalHeight": 1200, - "imageRenderedWidth": 273, - "imageRenderedHeight": 163.8 + "imageID": "blogpost-image-125" }, { "url": "https://blog.jupyter.org/automate-your-releases-with-the-jupyter-releaser-701e7b9841e6", "title": "Automate your releases with the Jupyter Releaser 🚀", - "image": "/img/blogposts/Automate-releases-jupyter-releaser.png", + "image": "/img/blogposts/resized-images/Automate-releases-jupyter-releaser.png", "summary": "Jupyter Releaser is an automation tool developed by the Jupyter team to streamline and standardize the release process across Jupyter projects.", "date": "October 28, 2024", "authors": "Jeremy Tuloup", - "imageID": "blogpost-image-123", - "imageNaturalWidth": 1700, - "imageNaturalHeight": 900, - "imageRenderedWidth": 273, - "imageRenderedHeight": 144.529411765 + "imageID": "blogpost-image-124" }, { "url": "https://medium.com/@QuantStack/quantstack-steps-up-to-support-apache-arrow-with-new-dedicated-team-9ddc952f20e2", "title": "QuantStack Steps Up to Support Apache Arrow with New Dedicated Team", - "image": "/img/blogposts/QuantStack-Steps-Up-to-Support-Apache-Arrow-with-New-Dedicated-Team.png", + "image": "/img/blogposts/resized-images/QuantStack-Steps-Up-to-Support-Apache-Arrow-with-New-Dedicated-Team.png", "summary": " We are thrilled to announce that QuantStack is starting a new team dedicated to the maintenance and development of Apache Arrow.", "date": "October 22, 2024", "authors": "Sylvain Corlay", - "imageID": "blogpost-image-123", - "imageNaturalWidth": 1700, - "imageNaturalHeight": 900, - "imageRenderedWidth": 273, - "imageRenderedHeight": 144.529411765 + "imageID": "blogpost-image-123" }, { "url": "https://blog.jupyter.org/interactive-mapping-with-ipyopenlayers-2b8bc93bb6c4", "title": "Interactive Mapping with ipyopenlayers", - "image": "/img/blogposts/Interactive-Mapping-with-ipyopenlayers.png", + "image": "/img/blogposts/resized-images/Interactive-Mapping-with-ipyopenlayers.png", "summary": " In this article, we present the main features of ipyopenlayers and demonstrate how this library can transform your geospatial data into dynamic, interactive visualizations.", "date": "September 6, 2024", "authors": "Nour Cheour", - "imageID": "blogpost-image-122", - "imageNaturalWidth": 1400, - "imageNaturalHeight": 642, - "imageRenderedWidth": 273, - "imageRenderedHeight": 125.64857142857142 + "imageID": "blogpost-image-122" }, { "url": "https://blog.jupyter.org/announcing-the-2023-jupyter-distinguished-contributor-award-recipients-1b2cc4ba203f", "title": "Announcing the 2023 cohort of Jupyter distinguished contributors", - "image": "/img/blogposts/Announcing-the-2023-Jupyter-Distinguished-Contributors.png", + "image": "/img/blogposts/resized-images/Announcing-the-2023-Jupyter-Distinguished-Contributors.png", "summary": "We are delighted to announce the recipients of the Jupyter Distinguished Contributor (JDC) award for the 2023 cohort.", "date": "September 4, 2024", "authors": "Johan Mabille, on behalf of the Jupyter Distinguished Contributors", - "imageID": "blogpost-image-121", - "imageNaturalWidth": 670, - "imageNaturalHeight": 160, - "imageRenderedWidth": 273, - "imageRenderedHeight": 65.19402985074626 + "imageID": "blogpost-image-121" }, { "url": "https://blog.jupyter.org/ipydatagrid-is-now-part-of-project-jupyter-3b3dfb877664", "title": "Ipydatagrid is now part of Project Jupyter", - "image": "/img/blogposts/Ipydatagrid-is-now-part-of-ProjectJupyter.png", + "image": "/img/blogposts/resized-images/Ipydatagrid-is-now-part-of-ProjectJupyter.png", "summary": "Today, we are proud to announce that the ipydatagrid open source project has been incorporated into Project Jupyter as part of the Jupyter Widgets subproject.", "date": "August 22, 2024", "authors": "Sylvain Corlay, on behalf of the Jupyter Widgets Council", - "imageID": "blogpost-image-120", - "imageNaturalWidth": 1490, - "imageNaturalHeight": 760, - "imageRenderedWidth": 273, - "imageRenderedHeight": 138.2281879194631 + "imageID": "blogpost-image-120" }, { "url": "https://medium.com/@QuantStack/introducing-mamba-2-0-0e8d5c6d1d0c", "title": "Introducing Mamba 2.0", - "image": "/img/blogposts/Introducing-Mamba-2-0.png", + "image": "/img/blogposts/resized-images/Introducing-Mamba-2-0.png", "summary": "We are excited to present the first release candidate of Mamba 2.0, a significant upgrade to the mamba package manager. This update brings considerable enhancements for both users and developers, following an extensive year-long development effort.", "date": "July 16, 2024", "authors": "Antoine Prouvost, Joël Lamotte, Johan Mabille, Hind Montassif", - "imageID": "blogpost-image-119", - "imageNaturalWidth": 828, - "imageNaturalHeight": 328, - "imageRenderedWidth": 273, - "imageRenderedHeight": 108.14492753623189 + "imageID": "blogpost-image-119" }, { "url": "https://medium.com/@QuantStack/quantstack-open-source-internship-program-049755b6d44b", "title": "QuantStack open-source internship program", - "image": "/img/blogposts/QuantStack-open-source-internship-program.png", + "image": "/img/blogposts/resized-images/QuantStack-open-source-internship-program.png", "summary": "Today, we are announcing a new internship program that aims to empower a new cohort of open-source contributors and future maintainers to make an impact within our ecosystem.", "date": "July 9, 2024", "authors": "Sylvain Corlay", - "imageID": "blogpost-image-118", - "imageNaturalWidth": 1240, - "imageNaturalHeight": 405, - "imageRenderedWidth": 273, - "imageRenderedHeight": 89.16532258064517 + "imageID": "blogpost-image-118" }, { "url": "https://medium.com/@QuantStack/jupytercad-2-0-4b9c4e18d22a", "title": "JupyterCAD 2.0", - "image": "/img/blogposts/JupyterCAD-2-0.png", + "image": "/img/blogposts/resized-images/JupyterCAD-2-0.png", "summary": "We are thrilled to introduce JupyterCAD 2.0, the newest version of the JupyterLab-based CAD modeler.", "date": "July 5, 2024", "authors": "Trung Le, Martin Renou", - "imageID": "blogpost-image-117", - "imageNaturalWidth": 828, - "imageNaturalHeight": 441, - "imageRenderedWidth": 273, - "imageRenderedHeight": 145.40217391304347 + "imageID": "blogpost-image-117" }, { "url": "https://blog.jupyter.org/jupytergis-d63b7adf9d0c", "title": "JupyterGIS", - "image": "/img/blogposts/JupyterGIS.png", + "image": "/img/blogposts/resized-images/JupyterGIS.png", "summary": "We are thrilled to announce that the European Space Agency (ESA) is funding our proposal “Real-time collaboration and collaborative editing for GIS workflows with Jupyter and QGIS.”", "date": "June 12, 2024", "authors": "Sylvain Corlay, Anne Fouilloux, Monika Weissschnur", - "imageID": "blogpost-image-116", - "imageNaturalWidth": 1400, - "imageNaturalHeight": 621, - "imageRenderedWidth": 273, - "imageRenderedHeight": 121.09500000000001 + "imageID": "blogpost-image-116" }, { "url": "https://medium.com/@SylvainCorlay/commit-cdf57415b94b", "title": "Commit!", - "image": "/img/blogposts/Commit.png", + "image": "/img/blogposts/resized-images/Commit.png", "summary": "Open-source projects are not just about the latest exciting updates and features, but also the principles and people that drive these projects to success. In this blog post, I reflect on the dynamics…", "date": "May 29, 2024", "authors": "Sylvain Corlay", - "imageID": "blogpost-image-115", - "imageNaturalWidth": 1600, - "imageNaturalHeight": 896, - "imageRenderedWidth": 273, - "imageRenderedHeight": 152.88 + "imageID": "blogpost-image-115" }, { "url": "/blogs/Fanny", "title": "In memoriam: Fanny Loustau Chartez", - "image": "/img/blogposts/In-memoriam-Fanny-Loustau-Chartez.jpg", + "image": "/img/blogposts/resized-images/In-memoriam-Fanny-Loustau-Chartez.jpg", "summary": "It is with great sadness that we announce the passing of our colleague and friend, Fanny Loustau Chartez, who served as the Chief Financial Officer of QuantStack since 2021.", "date": "May 16, 2024", "authors": "Sylvain Corlay", - "imageID": "blogpost-image-114", - "imageNaturalWidth": 333, - "imageNaturalHeight": 333, - "imageRenderedWidth": 180, - "imageRenderedHeight": 180 + "imageID": "blogpost-image-114" }, { "url": "https://medium.com/@PyDataParis/announcing-pydata-paris-2024-700220accc72", "title": "Announcing PyData Paris 2024", - "image": "/img/blogposts/Announcing-PyData-Paris-2024.png", + "image": "/img/blogposts/resized-images/Announcing-PyData-Paris-2024.png", "summary": "We are thrilled to announce the upcoming PyData Paris 2024, the gathering of the open-source data science and AI/ML community in France. PyData Paris will take place at the Cité des Sciences from September 25 to September 26, 2024.", "date": "March 11, 2024", "authors": "Sylvain Corlay", - "imageID": "blogpost-image-113", - "imageNaturalWidth": 1100, - "imageNaturalHeight": 733, - "imageRenderedWidth": 273, - "imageRenderedHeight": 181.91727272727275 + "imageID": "blogpost-image-113" }, { "url": "https://blog.jupyter.org/meet-xeus-r-a-future-proof-jupyter-kernel-for-r-1adc5fdd09ab", "title": "Meet Xeus-R: a future-proof Jupyter kernel for R", - "image": "/img/blogposts/Meet-Xeus-R-a-future-proof-Jupyter-kernel-for-R.png", + "image": "/img/blogposts/resized-images/Meet-Xeus-R-a-future-proof-Jupyter-kernel-for-R.png", "summary": "Today, we, a collaborative team led by Romain François and supported by QuantStack, are thrilled to announce the initial release of Xeus-R, a future-proof Jupyter kernel for R.", "date": "January 22nd, 2024", "authors": "Romain François", - "imageID": "blogpost-image-112", - "imageNaturalWidth": 1400, - "imageNaturalHeight": 540, - "imageRenderedWidth": 273, - "imageRenderedHeight": 105.3 + "imageID": "blogpost-image-112" }, { "url": "https://medium.com/@QuantStack/quantstack-2023-in-review-94fea0a35520", "title": "QuantStack: 2023 in review", - "image": "/img/blogposts/QuantStack-2023-in-review.png", + "image": "/img/blogposts/resized-images/QuantStack-2023-in-review.png", "summary": "Since QuantStack was founded in 2016, we have remained committed to releasing our work under permissive open-source licenses. Here are some highlights of the 2023 achievements. Buckle up!", "date": "January 3rd, 2024", "authors": "Sylvain Corlay", - "imageID": "blogpost-image-111", - "imageNaturalWidth": 1600, - "imageNaturalHeight": 893, - "imageRenderedWidth": 273, - "imageRenderedHeight": 152.368125 + "imageID": "blogpost-image-111" }, { "url": "https://blog.jupyter.org/recent-keyboard-navigation-improvements-in-jupyter-4df32f97628d", "title": "Recent keyboard navigation improvements in Jupyter", - "image": "/img/blogposts/Recent-keyboard-navigation-improvements-in-Jupyter.png", + "image": "/img/blogposts/resized-images/Recent-keyboard-navigation-improvements-in-Jupyter.png", "summary": "Upcoming versions of JupyterLab (4.1.0) and Notebook (7.1.0) will include major keyboard accessibility fixes.", "date": "December 16th, 2023", "authors": "Nicolas Brichet, Gabriel Fouasnon", - "imageID": "blogpost-image-110", - "imageNaturalWidth": 320, - "imageNaturalHeight": 172, - "imageRenderedWidth": 273, - "imageRenderedHeight": 146.7375 + "imageID": "blogpost-image-110" }, { "url": "https://blog.jupyter.org/and-voici-e02367197ba2", "title": "And Voici!", - "image": "/img/blogposts/And-Voici.png", + "image": "/img/blogposts/resized-images/And-Voici.png", "summary": "Voici (meaning “here is” in French) is a novel project reshaping Jupyter-based interactive dashboards by combining Voilà and JupyterLite features. It facilitates the creation of dynamic, in-browser environments for data visualization and exploration.", "date": "December 6th, 2023", "authors": "Trung Duc Le, Martin Renou", - "imageID": "blogpost-image-109", - "imageNaturalWidth": 1400, - "imageNaturalHeight": 559, - "imageRenderedWidth": 273, - "imageRenderedHeight": 109.005 + "imageID": "blogpost-image-109" }, { "url": "https://blog.jupyter.org/plug-your-application-into-the-jupyter-world-805e48918801", "title": "Plug your application into the Jupyter world", - "image": "/img/blogposts/Plug-your-application-into-the-Jupyter-world.png", + "image": "/img/blogposts/resized-images/Plug-your-application-into-the-Jupyter-world.png", "summary": "Kernels are a simple but powerful abstraction in the Jupyter architecture. They encapsulate language interpreters and make them accessible through a standardized interface. This is the key to…", "date": "October 23rd, 2023", "authors": "David Brochart", - "imageID": "blogpost-image-108", - "imageNaturalWidth": 715, - "imageNaturalHeight": 300, - "imageRenderedWidth": 273, - "imageRenderedHeight": 114.54545454545455 + "imageID": "blogpost-image-108" }, { "url": "https://blog.jupyter.org/voil%C3%A0-0-5-0-homecoming-66f2465aa86f", "title": "Voilà 0.5 - Homecoming", - "image": "/img/blogposts/Voila-0-5-Homecoming.png", + "image": "/img/blogposts/resized-images/Voila-0-5-Homecoming.png", "summary": "Following the launch of Jupyter Notebook 7, it is now Voilà’s turn to join the JupyterLab family. In Version 0.5.0, the front-end of Voilà has been rebuilt from scratch using JupyterLab 4.0 components, just like in the case of Notebook 7.", "date": "September 25th, 2023", "authors": "Jeremy Tuloup, Martin Renou, Trung Duc Le", - "imageID": "blogpost-image-107", - "imageNaturalWidth": 1512, - "imageNaturalHeight": 1111, - "imageRenderedWidth": 244.96849684968495, - "imageRenderedHeight": 180 + "imageID": "blogpost-image-107" }, { "url": "https://blog.jupyter.org/announcing-jupyter-notebook-7-8d6d66126dcf", "title": "Announcing Jupyter Notebook 7", - "image": "/img/blogposts/Announcing-Jupyter-Notebook-7.jpg", + "image": "/img/blogposts/resized-images/Announcing-Jupyter-Notebook-7.jpg", "summary": "Jupyter Notebook 7 is the most significant release of the Jupyter Notebook in years. Some highlights of this release include real-time collaboration, interactive debugging, table of contents, theming and dark mode, internationalization, improved accessibility, compact view on mobile devices.", "date": "July 26th, 2023", "authors": "Jeremy Tuloup", - "imageID": "blogpost-image-106", - "imageNaturalWidth": 1400, - "imageNaturalHeight": 788, - "imageRenderedWidth": 273, - "imageRenderedHeight": 153.66 + "imageID": "blogpost-image-106" }, { "url": "https://blog.jupyter.org/jupytercon-2023-recordings-now-live-on-youtube-17564b75a2a", "title": "🎉 JupyterCon 2023 recordings now live on YouTube! 🎉", - "image": "/img/blogposts/JupyterCon-2023-recordings-now-live-on-YouTube.png", + "image": "/img/blogposts/resized-images/JupyterCon-2023-recordings-now-live-on-YouTube.png", "summary": "Get ready to relive the magic of JupyterCon 2023, because the long-awaited moment is finally here! The JupyterCon YouTube channel has just dropped a treasure trove of content — all the talk and keynote recordings from the most epic conference of the year.", "date": "July 22nd, 2023", "authors": "Gayle Ollington, Sylvain Corlay", - "imageID": "blogpost-image-105", - "imageNaturalWidth": 1011, - "imageNaturalHeight": 328, - "imageRenderedWidth": 273, - "imageRenderedHeight": 88.56973293768546 + "imageID": "blogpost-image-105" }, { "url": "https://blog.jupyter.org/a-theme-editor-for-jupyterlab-8f08ab62894d", "title": "A theme editor for JupyterLab", - "image": "/img/blogposts/A-theme-editor-for-JupyterLab.png", + "image": "/img/blogposts/resized-images/A-theme-editor-for-JupyterLab.png", "summary": "To lower the bar for customizing JupyterLab we created a new tool providing a simple interface for tuning the JupyterLab appearance interactively.", "date": "June 19th, 2023", "authors": "Florence Haudin", - "imageID": "blogpost-image-104", - "imageNaturalWidth": 1400, - "imageNaturalHeight": 1015, - "imageRenderedWidth": 248.27586206896552, - "imageRenderedHeight": 180 + "imageID": "blogpost-image-104" }, { "url": "https://blog.jupyter.org/collaborative-cad-in-jupyterlab-8eb9e8f81f0", "title": "Collaborative CAD in JupyterLab", - "image": "/img/blogposts/Collaborative-CAD-in-JupyterLab.png", + "image": "/img/blogposts/resized-images/Collaborative-CAD-in-JupyterLab.png", "summary": "Introducing JupyterCAD, a tool that integrates Computer-Aided Design (CAD) capabilities into JupyterLab.", "date": "June 2nd, 2023", "authors": "Duc Trung Le, Martin Renou", - "imageID": "blogpost-image-103", - "imageNaturalWidth": 1400, - "imageNaturalHeight": 627, - "imageRenderedWidth": 273, - "imageRenderedHeight": 122.265 + "imageID": "blogpost-image-103" }, { "url": "https://blog.jupyter.org/congratulations-distinguished-contributors-7a7b215b8bd0", "title": "Congratulations, Distinguished Contributors!", - "image": "/img/blogposts/Congratulations-Distinguished-Contributors.png", + "image": "/img/blogposts/resized-images/Congratulations-Distinguished-Contributors.png", "summary": "We are proud to announce the recipients of the Jupyter Distinguished Contributor (JDC) award for the 2022 cohort of contributors.", "date": "June 2nd, 2023", "authors": "Johan Mabille", - "imageID": "blogpost-image-102", - "imageNaturalWidth": 1202, - "imageNaturalHeight": 672, - "imageRenderedWidth": 273, - "imageRenderedHeight": 152.62562396006655 + "imageID": "blogpost-image-102" }, { "url": "https://blog.jupyter.org/embed-interactive-itkwidgets-3d-renderings-into-jupyterlite-deployments-10eb9ea30980", "title": "Embed interactive itkwidgets 3D renderings into JupyterLite deployments", - "image": "/img/blogposts/Embed-interactive-itkwidgets-3D-renderings-into-JupyterLite-deployments.gif", + "image": "/img/blogposts/resized-images/Embed-interactive-itkwidgets-3D-renderings-into-JupyterLite-deployments.png", "summary": "A tutorial that demonstrates a zero-server, interactive 3D rendering notebook and walks through the quick and easy configuration that can be customized to your needs.", "date": "March 15th, 2023", "authors": "Matt McCormick, Brianna Major, Jeremy Tuloup, Wei Ouyang, Stephen Aylward", - "imageID": "blogpost-image-101", - "imageNaturalWidth": 600, - "imageNaturalHeight": 641, - "imageRenderedWidth": 168.48673946957877, - "imageRenderedHeight": 180 + "imageID": "blogpost-image-101" }, { "url": "https://blog.jupyter.org/improving-the-accessibility-of-jupyter-6c695db518d3", "title": "Improving the accessibility of Jupyter", - "image": "/img/blogposts/Improving-the-accessibility-of-Jupyter.png", + "image": "/img/blogposts/resized-images/Improving-the-accessibility-of-Jupyter.png", "summary": "This article presents some of the recent accessibility improvements in the Jupyter Notebook codebase.", "date": "February 24th, 2023", "authors": "Nicolas Brichet, Johan Mabille, Jeremy Tuloup, Frédéric Collonval, Sylvain Corlay", - "imageID": "blogpost-image-100", - "imageNaturalWidth": 1238, - "imageNaturalHeight": 482, - "imageRenderedWidth": 273, - "imageRenderedHeight": 106.28917609046849 + "imageID": "blogpost-image-100" }, { "url": "https://blog.jupyter.org/a-jupyter-kernel-for-gnu-octave-b6d29e56341f", "title": "A Jupyter kernel for GNU Octave", - "image": "/img/blogposts/A-Jupyter-kernel-for-GNU-Octave.png", + "image": "/img/blogposts/resized-images/A-Jupyter-kernel-for-GNU-Octave.png", "summary": "We are happy to announce the xeus-octave project, a Jupyter kernel for GNU Octave. Xeus-octave was created by Giulio Girardi, recently joined by Antoine Prouvost - and has been incorporated into the Project Jupyter governance.", "date": "January 11th, 2023", "authors": "Giulio Girardi, Antoine Prouvost", - "imageID": "blogpost-image-99", - "imageNaturalWidth": 1308, - "imageNaturalHeight": 482, - "imageRenderedWidth": 273, - "imageRenderedHeight": 100.60091743119266 + "imageID": "blogpost-image-99" }, { "url": "https://medium.com/@QuantStack/quantstack-2022-in-review-7d4704b1db42", "title": "QuantStack: 2022 in review", - "image": "/img/blogposts/QuantStack-2022-in-review.webp", + "image": "/img/blogposts/resized-images/QuantStack-2022-in-review.png", "summary": "2022 was an amazing year of innovation for the open-source developers at QuantStack. Developments range from major improvements to the Jupyter project to the packaging ecosystem and high-performance computing.", "date": "December 26th, 2022", "authors": "Sylvain Corlay", - "imageID": "blogpost-image-98", - "imageNaturalWidth": 1400, - "imageNaturalHeight": 781, - "imageRenderedWidth": 273, - "imageRenderedHeight": 152.295 + "imageID": "blogpost-image-98" }, { "url": "https://medium.com/@AntoineProuvost/managing-conflicts-with-mamba-6a5fa10ed6a", "title": "Managing conflicts with Mamba", - "image": "/img/blogposts/Managing-conflicts-with-Mamba.png", + "image": "/img/blogposts/resized-images/Managing-conflicts-with-Mamba.png", "summary": "A key aspect of package management is finding a set of compatible versions of the required packages. Indeed, even in the case when few packages are explicitly required, second-order dependencies may…", "date": "November 29th, 2022", "authors": "Antoine Prouvost", - "imageID": "blogpost-image-97", - "imageNaturalWidth": 2072, - "imageNaturalHeight": 1460, - "imageRenderedWidth": 273, - "imageRenderedHeight": 192.36486486486487 + "imageID": "blogpost-image-97" }, { "url": "https://blog.jupyter.org/jupytercon-is-back-in-2023-90e5c25eeec9", "title": "JupyterCon is back in 2023", - "image": "/img/blogposts/JupyterCon-is-back-in-2023.png", + "image": "/img/blogposts/resized-images/JupyterCon-is-back-in-2023.png", "summary": "JupyterCon 2023 will be held May 10–12 (Thursday to Friday) in the city of light, Paris, France at the largest science museum in Europe, the Cité des Sciences et de l’Industrie.", "date": "October 17th, 2022", "authors": "Gayle Ollington", - "imageID": "blogpost-image-96", - "imageNaturalWidth": 1400, - "imageNaturalHeight": 783, - "imageRenderedWidth": 273, - "imageRenderedHeight": 152.685 + "imageID": "blogpost-image-96" }, { "url": "https://blog.jupyter.org/accelerating-jupyterlab-68942bb8d602", "title": "Accelerating JupyterLab", - "image": "/img/blogposts/Accelerating-JupyterLab.png", + "image": "/img/blogposts/resized-images/Accelerating-JupyterLab.png", "summary": "The next major release of JupyterLab will be significantly faster than previous versions. This was achieved both through systematic tracking of performance bugs and through significant upgrades to the Jupyter communication protocol and rendering mechanism for documents.", "date": "September 15th, 2022", "authors": "Frédéric Collonval, Johan Mabille, David Brochart, Afshin Darian", - "imageID": "blogpost-image-95", - "imageNaturalWidth": 1400, - "imageNaturalHeight": 781, - "imageRenderedWidth": 273, - "imageRenderedHeight": 152.295 + "imageID": "blogpost-image-95" }, { "url": "https://blog.jupyter.org/upgrading-nbgrader-99c56ae56c47", "title": "Upgrading nbgrader", - "image": "/img/blogposts/Upgrading-nbgrader.png", + "image": "/img/blogposts/resized-images/Upgrading-nbgrader.png", "summary": "Project Jupyter provides a broad collection of open-source tools for interactive computing that has become ubiquitous in data science and scientific computing, and is very popular in educational…", "date": "September 15th, 2022", "authors": "Nicolas Brichet", - "imageID": "blogpost-image-94", - "imageNaturalWidth": 512, - "imageNaturalHeight": 256, - "imageRenderedWidth": 273, - "imageRenderedHeight": 136.5 + "imageID": "blogpost-image-94" }, { "url": "https://blog.jupyter.org/visual-programming-in-jupyterlab-with-blockly-7731ec3e113c", "title": "Visual programming in JupyterLab with Blockly", - "image": "/img/blogposts/Visual-programming-in-JupyterLab-with-Blockly.png", + "image": "/img/blogposts/resized-images/Visual-programming-in-JupyterLab-with-Blockly.png", "summary": "When moving from block-based programming to a more classical language like Python, students often have to switch to a completely new environment. In order to provide a smooth ramp of complexity for learners, we designed a JupyterLab extension for Blockly so that Jupyter can be used from the very first steps of their learning journey.", "date": "July 29th, 2022", "authors": "Denisa Checiu, Carlos Herrero", - "imageID": "blogpost-image-93", - "imageNaturalWidth": 1400, - "imageNaturalHeight": 770, - "imageRenderedWidth": 273, - "imageRenderedHeight": 150.15 + "imageID": "blogpost-image-93" }, { "url": "https://blog.jupyter.org/mamba-meets-jupyterlite-88ef49ac4dc8", "title": "Mamba meets JupyterLite", - "image": "/img/blogposts/Mamba-meets-JupyterLite.png", + "image": "/img/blogposts/resized-images/Mamba-meets-JupyterLite.png", "summary": "JupyterLite is a Jupyter distribution that runs entirely in the web browser without any server components. To achieve this, all language kernels must also run in the browser. A significant benefit of…", "date": "July 14th, 2022", "authors": "Thorsten Beier, Martin Renou", - "imageID": "blogpost-image-92", - "imageNaturalWidth": 1400, - "imageNaturalHeight": 1032, - "imageRenderedWidth": 244.1860465116279, - "imageRenderedHeight": 180 + "imageID": "blogpost-image-92" }, { "url": "https://blog.jupyter.org/inspector-jupyterlab-404cce3e1df6", "title": "Inspector JupyterLab", - "image": "/img/blogposts/Inspector-JupyterLab.png", + "image": "/img/blogposts/resized-images/Inspector-JupyterLab.png", "summary": "JupyterLab provides multiple ways to improve your coding workflow: code highlighting, code completion, theming, debugger with rich variable rendering and more.", "date": "April 11th, 2022", "authors": "Martin Renou", - "imageID": "blogpost-image-91", - "imageNaturalWidth": 675, - "imageNaturalHeight": 540, - "imageRenderedWidth": 225, - "imageRenderedHeight": 180 + "imageID": "blogpost-image-91" }, { "url": "https://blog.pyodide.org/posts/canvas-renderer-matplotlib-in-pyodide/", "title": "HTML5 based renderer for Matplotlib in Pyodide", - "image": "/img/blogposts/HTML5--based-renderer-for-Matplotlib-in-Pyodide.png", + "image": "/img/blogposts/resized-images/HTML5--based-renderer-for-Matplotlib-in-Pyodide.png", "summary": "In this post, we present a new backend for Matplotlib enabling the rendering of figures in the browser by leveraging the <canvas> element. This showcases how JavaScript and Python can interact with each other, thanks to Pyodide.", "date": "April 1st, 2022", "authors": "Madhur Tandon", - "imageID": "blogpost-image-90", - "imageNaturalWidth": 2268, - "imageNaturalHeight": 1062, - "imageRenderedWidth": 273, - "imageRenderedHeight": 127.83333333333333 + "imageID": "blogpost-image-90" }, { "url": "https://wolfv.medium.com/the-future-of-mamba-fdf6d628b3df", "title": "The future of mamba", - "image": "/img/blogposts/The-future-of-mamba.png", + "image": "/img/blogposts/resized-images/The-future-of-mamba.png", "summary": "The recent adoption of libmamba by the conda project was a great validation of our work. Several other game-changing innovations are in the works by the mamba team. Stay tuned!", "date": "March 31st, 2022", "authors": "Wolf Vollprecht", - "imageID": "blogpost-image-89", - "imageNaturalWidth": 1400, - "imageNaturalHeight": 836, - "imageRenderedWidth": 273, - "imageRenderedHeight": 163.01999999999998 + "imageID": "blogpost-image-89" }, { "url": "https://blog.jupyter.org/congratulations-distinguished-contributors-bc349fa60d68", "title": "Congratulations, Distinguished Contributors!", - "image": "/img/blogposts/Congratulations-Distinguished-Contributors.png", + "image": "/img/blogposts/resized-images/Congratulations-Distinguished-Contributors.png", "summary": "We are proud to announce the recipients of the Jupyter Distinguished Contributor (JDC) award for the 2021 cohort of contributors.", "date": "March 16th, 2022", "authors": "Johan Mabille", - "imageID": "blogpost-image-88", - "imageNaturalWidth": 1202, - "imageNaturalHeight": 672, - "imageRenderedWidth": 273, - "imageRenderedHeight": 152.62562396006655 + "imageID": "blogpost-image-88" }, { "url": "https://blog.jupyter.org/jupyter-everywhere-f8151c2cc6e8", "title": "Jupyter Everywhere", - "image": "/img/blogposts/Jupyter-Everywhere.jpg", + "image": "/img/blogposts/resized-images/Jupyter-Everywhere.jpg", "summary": "Easily embed a console, a notebook, or a fully-fledged IDE on any web page.", "date": "March 15th, 2022", "authors": "Martin Renou, Jeremy Tuloup", - "imageID": "blogpost-image-87", - "imageNaturalWidth": 671, - "imageNaturalHeight": 372, - "imageRenderedWidth": 273, - "imageRenderedHeight": 151.35022354694487 + "imageID": "blogpost-image-87" }, { "url": "https://medium.com/@kmathewos92/ros2-support-for-zethus-e6ecfcdb1c4c", "title": "ROS2 support for Zethus", - "image": "/img/blogposts/ROS2-support-for-Zethus.png", + "image": "/img/blogposts/resized-images/ROS2-support-for-Zethus.png", "summary": "Zethus is an Open Source library for Robot visualization in the browser. Initially developed by Rapyuta Robotics, it provides a web-based…", "date": "February 17th, 2022", "authors": "Kedus Mathewos", - "imageID": "blogpost-image-86", - "imageNaturalWidth": 1400, - "imageNaturalHeight": 788, - "imageRenderedWidth": 273, - "imageRenderedHeight": 153.66 + "imageID": "blogpost-image-86" }, { "url": "https://medium.com/@QuantStack/quantstack-2021-in-review-fe5eac2e0f6d", "title": "QuantStack: 2021 in review", - "image": "/img/blogposts/QuantStack-2021-in-review.png", + "image": "/img/blogposts/resized-images/QuantStack-2021-in-review.png", "summary": "This was a crazy year of innovation for the open-source team at QuantStack. From JupyterLab to the packaging ecosystem and high-performance computing, we made some major strides in all areas, while almost doubling the size of the team.", "date": "December 18th, 2021", "authors": "Sylvain Corlay", - "imageID": "blogpost-image-85", - "imageNaturalWidth": 2500, - "imageNaturalHeight": 1400, - "imageRenderedWidth": 273, - "imageRenderedHeight": 152.88 + "imageID": "blogpost-image-85" }, { "url": "https://blog.jupyter.org/jupyter-games-cda20dc15a21", "title": "Jupyter Games", - "image": "/img/blogposts/Jupyter-Games.png", + "image": "/img/blogposts/resized-images/Jupyter-Games.png", "summary": "Making their own tiny video games can be a great way for kids to learn programming in a playful matter. While Jupyter is widely used as a scientific and educational tool, Jupyter is seldom used as a…", "date": "December 14th, 2021", "authors": "Thorsten Beier", - "imageID": "blogpost-image-84", - "imageNaturalWidth": 2427, - "imageNaturalHeight": 1203, - "imageRenderedWidth": 273, - "imageRenderedHeight": 135.31891223733004 + "imageID": "blogpost-image-84" }, { "url": "https://blog.jupyter.org/need-for-speed-voil%C3%A0-edition-a9e1300ab3b2", "title": "Need for speed: Voilà edition", - "image": "/img/blogposts/Need-for-speed-Voila-edition.png", + "image": "/img/blogposts/resized-images/Need-for-speed-Voila-edition.png", "summary": "Voilà turns Jupyter notebooks into standalone applications without requiring any modification to the content. You want to share your content with non-technical readers? Just call Voilà with the…", "date": "December 10th, 2021", "authors": "Duc Trung Le", - "imageID": "blogpost-image-83", - "imageNaturalWidth": 2000, - "imageNaturalHeight": 691, - "imageRenderedWidth": 273, - "imageRenderedHeight": 94.3215 + "imageID": "blogpost-image-83" }, { "url": "https://adelsalle.medium.com/towards-a-more-secure-conda-ecosystem-5ce65a27d7d5", "title": "Towards a more secure conda ecosystem", - "image": "/img/blogposts/Towards-a-more-secure-conda-ecosystem.png", + "image": "/img/blogposts/resized-images/Towards-a-more-secure-conda-ecosystem.png", "summary": "Supply chain security is crucial to the overall security of package managers, which are a major attack vector of information systems. Today, we are pleased to announce that mamba has gained the…", "date": "November 16th, 2021", "authors": "Adrien Delsalle", - "imageID": "blogpost-image-82", - "imageNaturalWidth": 2000, - "imageNaturalHeight": 625, - "imageRenderedWidth": 273, - "imageRenderedHeight": 85.3125 + "imageID": "blogpost-image-82" }, { "url": "https://johan-mabille.medium.com/toward-a-faster-and-thinner-xsimd-9e4eef41bc17", "title": "Toward a faster and thinner xsimd", - "image": "/img/blogposts/Toward-a-faster-and-thinner-xsimd.png", + "image": "/img/blogposts/resized-images/Toward-a-faster-and-thinner-xsimd.png", "summary": "xsimd, the SIMD library by QuantStack, got more and more adoption in recent years. While it helped improve the library, adoption also brought new requirements. Among them was the abitility to...", "date": "October 29th, 2021", "authors": "Serge Guelton, Johan Mabille", - "imageID": "blogpost-image-81", - "imageNaturalWidth": 832, - "imageNaturalHeight": 251, - "imageRenderedWidth": 273, - "imageRenderedHeight": 82.359375 + "imageID": "blogpost-image-81" }, { "url": "https://blog.jupyter.org/xeus-lite-379e96bb199d", "title": "Xeus-Lite", - "image": "/img/blogposts/Xeus-Lite.png", + "image": "/img/blogposts/resized-images/Xeus-Lite.png", "summary": "JupyterLite is a JupyterLab distribution that runs entirely in the web browser, backed by in-browser language kernels. Xeus is C++ library for writing Jupyter kernels. In this blogpost we show how…", "date": "October 25th, 2021", "authors": "Thorsten Beier", - "imageID": "blogpost-image-80", - "imageNaturalWidth": 2010, - "imageNaturalHeight": 1582, - "imageRenderedWidth": 228.69785082174462, - "imageRenderedHeight": 180 + "imageID": "blogpost-image-80" }, { "url": "https://wolfv.medium.com/the-mamba-project-and-the-czi-grant-ec88fb27c25", "title": "The mamba project and the CZI grant", - "image": "/img/blogposts/The-mamba-project-and-the-CZI-grant.png", + "image": "/img/blogposts/resized-images/The-mamba-project-and-the-CZI-grant.png", "summary": "For those who don't know yet: mamba is a fast, cross-platform & non-language-specific package manager widely used in the scientific space. Mamba works with conda -packages and works great in tandem…", "date": "October 19th, 2021", "authors": "Wolf Vollprecht", - "imageID": "blogpost-image-79", - "imageNaturalWidth": 2000, - "imageNaturalHeight": 877, - "imageRenderedWidth": 273, - "imageRenderedHeight": 119.7105 + "imageID": "blogpost-image-79" }, { "url": "https://blog.jupyter.org/looking-at-notebooks-from-a-new-perspective-bfd06797f188", "title": "Looking at notebooks from a new perspective", - "image": "/img/blogposts/Looking-at-notebooks-from-a-new-perspective.png", + "image": "/img/blogposts/resized-images/Looking-at-notebooks-from-a-new-perspective.png", "summary": "Jupyter notebooks are a great tool for practitioners of scientific computing from the research phase of their work to the communication of their results. The interleaving of code and rich text makes…", "date": "October 5th, 2021", "authors": "Mariana Meireles", - "imageID": "blogpost-image-78", - "imageNaturalWidth": 1500, - "imageNaturalHeight": 750, - "imageRenderedWidth": 273, - "imageRenderedHeight": 136.5 + "imageID": "blogpost-image-78" }, { "url": "https://blog.jupyter.org/xeus-2-0-cb460d4daed4", "title": "Xeus 2.0", - "image": "/img/blogposts/Xeus-2-0.png", + "image": "/img/blogposts/resized-images/Xeus-2-0.png", "summary": "We have just released Xeus 2.0. This is a major release of the library. While it includes backward-incompatible changes, they are very limited and upgrading your kernels should be relatively easy…", "date": "September 28th, 2021", "authors": "Johan Mabille, Sylvain Corlay", - "imageID": "blogpost-image-77", - "imageNaturalWidth": 1000, - "imageNaturalHeight": 600, - "imageRenderedWidth": 273, - "imageRenderedHeight": 163.79999999999998 + "imageID": "blogpost-image-77" }, { "url": "https://blog.jupyter.org/from-jupyter-to-the-moon-2e432df402c8", "title": "From Jupyter to the Moon", - "image": "/img/blogposts/From-Jupyter-to-the-Moon.png", + "image": "/img/blogposts/resized-images/From-Jupyter-to-the-Moon.png", "summary": "A key principle in Jupyter’s design is language agnosticism, and one of the main extension points of the Jupyter ecosystem is the kernel, the part of the architecture responsible for executing the…", "date": "September 24th, 2021", "authors": "Thorsten Beier", - "imageID": "blogpost-image-76", - "imageNaturalWidth": 1375, - "imageNaturalHeight": 562, - "imageRenderedWidth": 273, - "imageRenderedHeight": 111.58254545454547 + "imageID": "blogpost-image-76" }, { "url": "https://blog.jupyter.org/jupyterlite-jupyter-%EF%B8%8F-webassembly-%EF%B8%8F-python-f6e2e41ab3fa", "title": "Jupyter ❤️ WebAssembly ❤️ Python", - "image": "/img/blogposts/Jupyter-WebAssembly-Python.png", + "image": "/img/blogposts/resized-images/Jupyter-WebAssembly-Python.png", "summary": "JupyterLite is a JupyterLab distribution that runs entirely in the web browser, backed by in-browser language kernels. JupyterLite is a reboot of several attempts at making a full static Jupyter…", "date": "July 13th, 2021", "authors": "Jeremy Tuloup", - "imageID": "blogpost-image-75", - "imageNaturalWidth": 512, - "imageNaturalHeight": 512, - "imageRenderedWidth": 180, - "imageRenderedHeight": 180 + "imageID": "blogpost-image-75" }, { "url": "https://wolfv.medium.com/mamba-0-15-0-475d1dca0418", "title": "Mamba 0.15.0", - "image": "/img/blogposts/Mamba-0-15-0.png", + "image": "/img/blogposts/resized-images/Mamba-0-15-0.png", "summary": "We’ve just dropped one of the biggest releases of mamba (the fast conda package manager)— along with some nice improvements in libsolv! This is a quick update on some new and improved features in…", "date": "July 9th, 2021", "authors": "Wolf Vollprecht, Adrien Delsalle", - "imageID": "blogpost-image-74", - "imageNaturalWidth": 2000, - "imageNaturalHeight": 904, - "imageRenderedWidth": 273, - "imageRenderedHeight": 123.396 + "imageID": "blogpost-image-74" }, { "url": "https://www.polytechnique.edu/fondation/content/le-calcul-haute-performance-au-service-de-l%E2%80%99innovation", "title": "Le calcul haute performance au service de l'innovation (in French)", - "image": "/img/blogposts/Le-calcul-haute-performance-au-service-de-l'innovation-in-French.png", + "image": "/img/blogposts/resized-images/Le-calcul-haute-performance-au-service-de-l'innovation-in-French.png", "summary": "Led by Professor Marc Massot (Center for Applied Mathematics), the HPC@Maths initiative aims at developing a strong expertise in high-performance computing at École Polytechnique. This project is supported by the X Foundation, and by QuantStack.", "date": "June 18th, 2021", "authors": "Fondation École Polytechnique", - "imageID": "blogpost-image-73", - "imageNaturalWidth": 280, - "imageNaturalHeight": 396, - "imageRenderedWidth": 127.27272727272727, - "imageRenderedHeight": 180 + "imageID": "blogpost-image-73" }, { "url": "https://blog.jupyter.org/how-we-made-jupyter-notebooks-collaborative-with-yjs-b8dff6a9d8af", "title": "How we made Jupyter notebooks collaborative with Yjs", - "image": "/img/blogposts/How-we-made-Jupyter-notebooks-collaborative-with-Yjs.png", + "image": "/img/blogposts/resized-images/How-we-made-Jupyter-notebooks-collaborative-with-Yjs.png", "summary": "Collaborative editing — à la Google Docs — is a feature that you still rarely find in applications. One of the few good things that came out of this pandemic is that more people seem to care about…", "date": "June 12th, 2021", "authors": "Kevin Jahns", - "imageID": "blogpost-image-72", - "imageNaturalWidth": 800, - "imageNaturalHeight": 258, - "imageRenderedWidth": 273, - "imageRenderedHeight": 88.04249999999999 + "imageID": "blogpost-image-72" }, { "url": "https://blog.jupyter.org/retrolab-a-jupyterlab-distribution-with-a-retro-look-and-feel-8096b8b223d0", "title": "RetroLab - A JupyterLab distribution with a retro look and feel", - "image": "/img/blogposts/RetroLab-A-JupyterLab-distribution-with-a-retro-look-and-feel.png", + "image": "/img/blogposts/resized-images/RetroLab-A-JupyterLab-distribution-with-a-retro-look-and-feel.png", "summary": "RetroLab is an alternative JupyterLab distribution, built from the ground-up, providing a notebook interface with a retro look and feel. Currently at version 3.0, JupyterLab provides an advanced…", "date": "May 27th, 2021", "authors": "Jeremy Tuloup", - "imageID": "blogpost-image-71", - "imageNaturalWidth": 1000, - "imageNaturalHeight": 750, - "imageRenderedWidth": 240, - "imageRenderedHeight": 180 + "imageID": "blogpost-image-71" }, { "url": "https://adelsalle.medium.com/rhumba-the-fast-r-distribution-is-available-on-windows-fa975b2aefa2", "title": "Rhumba, the fast R distribution is available on Windows", - "image": "/img/blogposts/Rhumba-the-fast-R-distribution-is-available-on-Windows.gif", + "image": "/img/blogposts/resized-images/Rhumba-the-fast-R-distribution-is-available-on-Windows.png", "summary": "A few months ago, Mariana Meireles created Rhumba, a fast R package manager and distribution leveraging the conda-forge initiative and the mamba library. Today, we’re happy to announce a new major…", "date": "May 18th, 2021", "authors": "Adrien Delsalle", - "imageID": "blogpost-image-70", - "imageNaturalWidth": 1285, - "imageNaturalHeight": 771, - "imageRenderedWidth": 273, - "imageRenderedHeight": 163.79999999999998 + "imageID": "blogpost-image-70" }, { "url": "https://blog.jupyter.org/enabling-the-jupyterlab-debugger-with-ipykernel-8d7248f522b0", "title": "Enabling the JupyterLab Debugger with ipykernel", - "image": "/img/blogposts/Enabling-the-JupyterLab-Debugger-with-ipykernel.gif", + "image": "/img/blogposts/resized-images/Enabling-the-JupyterLab-Debugger-with-ipykernel.png", "summary": "JupyterLab 3.0 includes a visual debugger that allows to interactively set breakpoints, step into functions, and inspect variables with any Jupyter kernel that implements the Jupyter debugger…", "date": "May 13th, 2021", "authors": "Sylvain Corlay, Johan Mabille", - "imageID": "blogpost-image-69", - "imageNaturalWidth": 2107, - "imageNaturalHeight": 1134, - "imageRenderedWidth": 273, - "imageRenderedHeight": 146.93023255813952 + "imageID": "blogpost-image-69" }, { "url": "https://medium.com/@mari_meir/jupyter-%EF%B8%8F-%EF%B8%8F-cytoscape-e2e77be8e0f9", "title": "Jupyter ❤️ Cytoscape", - "image": "/img/blogposts/Jupyter-Cytoscape.png", + "image": "/img/blogposts/resized-images/Jupyter-Cytoscape.png", "summary": "Cytoscape is an open source software platform for visualizing complex networks and integrating these with any type of attribute data. While the project was started in the life sciences community, it…", "date": "May 11th, 2021", "authors": "Mariana Meireles", - "imageID": "blogpost-image-68", - "imageNaturalWidth": 250, - "imageNaturalHeight": 250, - "imageRenderedWidth": 180, - "imageRenderedHeight": 180 + "imageID": "blogpost-image-68" }, { "url": "https://johan-mabille.medium.com/zarray-a-dynamic-expression-system-based-on-xtensor-ded69f37ff5e", "title": "zarray: a dynamic expression system based on xtensor", - "image": "/img/blogposts/zarray-a-dynamic-expression-system-based-on-xtensor.png", + "image": "/img/blogposts/resized-images/zarray-a-dynamic-expression-system-based-on-xtensor.png", "summary": "In this article we demonstrate how we pushed xtensor one step further, implementing a dynamic expression system on top of it. xtensor is a comprehensive C++framework for multi-dimensional array…", "date": "Apr 29th, 2021", "authors": "Johan Mabille", - "imageID": "blogpost-image-67", - "imageNaturalWidth": 391, - "imageNaturalHeight": 391, - "imageRenderedWidth": 180, - "imageRenderedHeight": 180 + "imageID": "blogpost-image-67" }, { "url": "https://blog.jupyter.org/nbterm-jupyter-notebooks-in-the-terminal-6a2b55d08b70", "title": "nbterm: Jupyter Notebooks in the terminal", - "image": "/img/blogposts/nbterm-Jupyter-Notebooks-in-the-terminal.png", + "image": "/img/blogposts/resized-images/nbterm-Jupyter-Notebooks-in-the-terminal.png", "summary": "Jupyter notebooks are mostly known for their web-based user interface, such as JupyterLab or the Classic Notebook. They offer a great user experience, allow for rich output rendering, provide…", "date": "Apr 26th, 2021", "authors": "David Brochart", - "imageID": "blogpost-image-66", - "imageNaturalWidth": 1120, - "imageNaturalHeight": 436, - "imageRenderedWidth": 273, - "imageRenderedHeight": 106.27499999999999 + "imageID": "blogpost-image-66" }, { "url": "https://blog.jupyter.org/abracadabra-bringing-the-magics-to-xeus-python-9d17bcfacb4", "title": "Abracadabra! Bringing the Magics to Xeus-Python", - "image": "/img/blogposts/Abracadabra-Bringing-the-Magics-to-Xeus-Python.gif", + "image": "/img/blogposts/resized-images/Abracadabra-Bringing-the-Magics-to-Xeus-Python.png", "summary": "Last year, we set ourselves to implement a visual debugger for JupyterLab. This endeavor required major developments in the JupyterLab…", "date": "Feb 18th, 2021", "authors": "Martin Renou", - "imageID": "blogpost-image-65", - "imageNaturalWidth": 1250, - "imageNaturalHeight": 750, - "imageRenderedWidth": 273, - "imageRenderedHeight": 163.79999999999998 + "imageID": "blogpost-image-65" }, { "url": "https://medium.com/robostack/cross-platform-conda-packages-for-ros-fa1974fd1de3", "title": "Cross-platform Conda Packages for ROS", - "image": "/img/blogposts/Cross-platform-Conda-Packages-for-ROS.jpg", + "image": "/img/blogposts/resized-images/Cross-platform-Conda-Packages-for-ROS.jpg", "summary": "2020 has been a busy year for the RoboStack project. We collaboratively published ros-noetic on four platforms (Windows, macOS, Linux x64 and ARM64) and revamped how ROS packages can be released on…", "date": "February 16th, 2021", "authors": "Wolf Vollprecht, Tobias Fischer", - "imageID": "blogpost-image-64", - "imageNaturalWidth": 2000, - "imageNaturalHeight": 1345, - "imageRenderedWidth": 273, - "imageRenderedHeight": 183.5925 + "imageID": "blogpost-image-64" }, { "url": "https://blog.jupyter.org/genomic-data-representation-in-jupyter-c57a5bb518d6", "title": "Genomic Data representation in Jupyter", - "image": "/img/blogposts/Genomic-Data-representation-in-Jupyter.gif", + "image": "/img/blogposts/resized-images/Genomic-Data-representation-in-Jupyter.png", "summary": "If there is one thing that recent events tell us, it is that genomics is a large source of data, and that its manipulation and understanding allow for the quick development of new drugs and…", "date": "February 8th, 2021", "authors": "Jean-David Harrouet", - "imageID": "blogpost-image-63", - "imageNaturalWidth": 800, - "imageNaturalHeight": 487, - "imageRenderedWidth": 273, - "imageRenderedHeight": 166.18875 + "imageID": "blogpost-image-63" }, { "url": "https://blog.jupyter.org/an-sql-solution-for-jupyter-ef4a00a0d925?postPublishedType=initial", "title": "An SQL Solution for Jupyter", - "image": "/img/blogposts/An-SQL-Solution-for-Jupyter.png", + "image": "/img/blogposts/resized-images/An-SQL-Solution-for-Jupyter.png", "summary": "A few months ago we released xeus-sqlite, a Jupyter kernel that allows users to make SQLite queries directly from the notebook. With the needs of the Jupyter data science community in mind we decided…", "date": "February 3rd, 2021", "authors": "Mariana Meireles", - "imageID": "blogpost-image-62", - "imageNaturalWidth": 620, - "imageNaturalHeight": 530, - "imageRenderedWidth": 210.56603773584905, - "imageRenderedHeight": 180 + "imageID": "blogpost-image-62" }, { "url": "https://blog.jupyter.org/a-curiously-recurring-widget-library-261a65bd56fe", "title": "A Curiously Recurring Widget Library", - "image": "/img/blogposts/A-Curiously-Recurring-Widget-Library.png", + "image": "/img/blogposts/resized-images/A-Curiously-Recurring-Widget-Library.png", "summary": "Diving into the implementation of xwidgets…", "date": "January 27th, 2021", "authors": "Sylvain Corlay", - "imageID": "blogpost-image-61", - "imageNaturalWidth": 1120, - "imageNaturalHeight": 803, - "imageRenderedWidth": 251.0585305105853, - "imageRenderedHeight": 180 + "imageID": "blogpost-image-61" }, { "url": "https://blog.jupyter.org/robotic-process-automation-with-jupyterlab-713b5630e457", "title": "Robotic Process Automation with JupyterLab", - "image": "/img/blogposts/Robotic-Process-Automation-with-JupyterLab.png", + "image": "/img/blogposts/resized-images/Robotic-Process-Automation-with-JupyterLab.png", "summary": "Robotic Process Automation (RPA) differs from classical automation tools in that the actions to automate can be developed by observing a user perform a task in a graphical user interface, across…", "date": "January 18th, 2021", "authors": "Martin Renou, Johan Mabille", - "imageID": "blogpost-image-60", - "imageNaturalWidth": 700, - "imageNaturalHeight": 313, - "imageRenderedWidth": 273, - "imageRenderedHeight": 122.07 + "imageID": "blogpost-image-60" }, { "url": "https://blog.jupyter.org/dashboarding-with-jupyterlab-3-789fcb1a5857", "title": "Dashboarding with JupyterLab 3.0", - "image": "/img/blogposts/Dashboarding-with-JupyterLab-3-0.gif", + "image": "/img/blogposts/resized-images/Dashboarding-with-JupyterLab-3-0.png", "summary": "Project Jupyter offers a complete suite of open-source tools for the scientific computing community, reaching from the exploratory phase of a project to the presentation of the results. In this last…", "date": "January 8th, 2021", "authors": "Carlos Herrero, Jeremy Tuloup", - "imageID": "blogpost-image-59", - "imageNaturalWidth": 1918, - "imageNaturalHeight": 968, - "imageRenderedWidth": 273, - "imageRenderedHeight": 137.78102189781023 + "imageID": "blogpost-image-59" }, { "url": "https://blog.jupyter.org/jupyterlab-3-0-is-out-4f58385e25bb", "title": "JupyterLab 3.0 is Released!", - "image": "/img/blogposts/JupyterLab-3-0-is-Released.png", + "image": "/img/blogposts/resized-images/JupyterLab-3-0-is-Released.png", "summary": "The 3.0 release of JupyterLab brings many new features to users and substantial improvements to the extension distribution system.", "date": "January 5th, 2021", "authors": "Jeremy Tuloup", - "imageID": "blogpost-image-58", - "imageNaturalWidth": 1000, - "imageNaturalHeight": 750, - "imageRenderedWidth": 240, - "imageRenderedHeight": 180 + "imageID": "blogpost-image-58" }, { "url": "https://blog.llvm.org/posts/2020-12-21-interactive-cpp-for-data-science/", "title": "Interactive C++ for Data Science", - "image": "/img/blogposts/Interactive-C++-for-Data-Science.png", + "image": "/img/blogposts/resized-images/Interactive-C++-for-Data-Science.png", "summary": "This post will discuss some applications of Cling developed to support data science researchers. In particular, interactively probing data and interfaces makes complex libraries and complex data more accessible users.", "date": "Dec 23, 2020", "authors": "Vassil Vassilev, David Lange, Simeon Ehrig, Sylvain Corlay", - "imageID": "blogpost-image-57", - "imageNaturalWidth": 1000, - "imageNaturalHeight": 599, - "imageRenderedWidth": 273, - "imageRenderedHeight": 163.52700000000002 + "imageID": "blogpost-image-57" }, { "url": "https://david-brochart.medium.com/xtensor-%EF%B8%8F-zarr-4f5cf25c65e5", "title": "Xtensor ❤️ Zarr", - "image": "/img/blogposts/Xtensor-Zarr.png", + "image": "/img/blogposts/resized-images/Xtensor-Zarr.png", "summary": "A C++ implementation of the Zarr specification…", "date": "Dec 15, 2020", "authors": "David Brochart", - "imageID": "blogpost-image-56", - "imageNaturalWidth": 2160, - "imageNaturalHeight": 949, - "imageRenderedWidth": 273, - "imageRenderedHeight": 119.94305555555555 + "imageID": "blogpost-image-56" }, { "url": "https://blog.jupyter.org/a-c-backend-for-vega-lite-bd2524b247c2", "title": "A C++ API for Vega-Lite", - "image": "/img/blogposts/A-C++-API-for-Vega-Lite.png", + "image": "/img/blogposts/resized-images/A-C++-API-for-Vega-Lite.png", "summary": "In this post, we present the first public release of XVega, a C++ library for producing Vega-Lite charts. Data science workflows differ from traditional software development in that engineers make…", "date": "Dec 2, 2020", "authors": "Madhur Tandon", - "imageID": "blogpost-image-55", - "imageNaturalWidth": 700, - "imageNaturalHeight": 567, - "imageRenderedWidth": 222.2222222222222, - "imageRenderedHeight": 180 + "imageID": "blogpost-image-55" }, { "url": "https://blog.jupyter.org/ipygany-jupyter-into-the-third-dimension-29a97597fc33", "title": "Ipygany, Jupyter into the Third Dimension", - "image": "/img/blogposts/Ipygany-Jupyter-into-the-Third-Dimension.png", + "image": "/img/blogposts/resized-images/Ipygany-Jupyter-into-the-Third-Dimension.png", "summary": "From Paraview to Mayavi, there are multiple solutions for data analysis on 3D meshes on the desktop. Most of these tools provide high-level APIs that can be driven with a scripting language like…", "date": "Oct 14, 2020", "authors": "Martin Renou", - "imageID": "blogpost-image-54", - "imageNaturalWidth": 1000, - "imageNaturalHeight": 710, - "imageRenderedWidth": 273, - "imageRenderedHeight": 193.83 + "imageID": "blogpost-image-54" }, { "url": "https://medium.com/@mari_meir/rhumba-a-faster-r-distribution-d619fb93043a", "title": "Rhumba, a Faster R Distribution", - "image": "/img/blogposts/Rhumba-a-Faster-R-Distribution.gif", + "image": "/img/blogposts/resized-images/Rhumba-a-Faster-R-Distribution.png", "summary": "CRAN is the official package manager for the R ecosystem. Unfortunately, simple operations such as creating new environments or installing packages with it can be very time-consuming due to the fact…", "date": "Oct 13, 2020", "authors": "Mariana Meireles", - "imageID": "blogpost-image-53", - "imageNaturalWidth": 990, - "imageNaturalHeight": 779, - "imageRenderedWidth": 228.7548138639281, - "imageRenderedHeight": 180 + "imageID": "blogpost-image-53" }, { "url": "https://blog.jupyter.org/the-templating-system-of-nbconvert-6-47ea781eacd2", "title": "The Templating System of Nbconvert 6", - "image": "/img/blogposts/The-Templating-System-of-Nbconvert-6.png", + "image": "/img/blogposts/resized-images/The-Templating-System-of-Nbconvert-6.png", "summary": "One of the main changes in nbconvert 6 is the refactor of the template system, which should be easier to extend and build upon. In this article, we dive into the template system, and provide a…", "date": "Sep 26, 2020", "authors": "Sylvain Corlay", - "imageID": "blogpost-image-52", - "imageNaturalWidth": 1200, - "imageNaturalHeight": 950, - "imageRenderedWidth": 227.36842105263156, - "imageRenderedHeight": 180 + "imageID": "blogpost-image-52" }, { "url": "https://medium.com/@mari_meir/memestra-a21c0c1f362", "title": "Memestra!", - "image": "/img/blogposts/Memestra.png", + "image": "/img/blogposts/resized-images/Memestra.png", "summary": "Modern IDE features such as interactive debugging, linting, code formatting, and refactoring tools are now available in JupyterLab, thanks to the JupyterLab-LSP extension and the recent release of…", "date": "Sep 21, 2020", "authors": "Mariana Meireles", - "imageID": "blogpost-image-51", - "imageNaturalWidth": 1200, - "imageNaturalHeight": 730, - "imageRenderedWidth": 273, - "imageRenderedHeight": 166.07500000000002 + "imageID": "blogpost-image-51" }, { "url": "https://medium.com/@martinRenou/real-time-rendering-of-water-caustics-59cda1d74aa", "title": "Real-time Rendering of Water Caustics", - "image": "/img/blogposts/Real-time-Rendering-of-Water-Caustics.png", + "image": "/img/blogposts/resized-images/Real-time-Rendering-of-Water-Caustics.png", "summary": "In this article, I present an attempt for generalizing caustics computation in real-time using WebGL and ThreeJS. The fact that it is an attempt is important, finding a solution that works well in…", "date": "Aug 27, 2020", "authors": "Martin Renou", - "imageID": "blogpost-image-50", - "imageNaturalWidth": 875, - "imageNaturalHeight": 658, - "imageRenderedWidth": 239.36170212765958, - "imageRenderedHeight": 180 + "imageID": "blogpost-image-50" }, { "url": "https://blog.jupyter.org/jupyterlab-ros-3dc9dab7f421", "title": "JupyterLab, the Cloud Robotics Command Station", - "image": "/img/blogposts/JupyterLab-the-Cloud-Robotics-Command-Station.png", + "image": "/img/blogposts/resized-images/JupyterLab-the-Cloud-Robotics-Command-Station.png", "summary": "Building the next generation of robotics cloud computing using ROS and JupyterLab", "date": "Aug 11, 2020", "authors": "Carlos Herrero, Wolf Vollprecht", - "imageID": "blogpost-image-49", - "imageNaturalWidth": 2560, - "imageNaturalHeight": 1330, - "imageRenderedWidth": 273, - "imageRenderedHeight": 141.83203125 + "imageID": "blogpost-image-49" }, { "url": "https://blog.jupyter.org/slicerjupyter-a-3d-slicer-kernel-for-interactive-publications-6f2ad829f635", "title": "SlicerJupyter, a 3-D Slicer Kernel for Interactive Publications", - "image": "/img/blogposts/SlicerJupyter-a-3-D-Slicer-Kernel-for-Interactive-Publications.png", + "image": "/img/blogposts/resized-images/SlicerJupyter-a-3-D-Slicer-Kernel-for-Interactive-Publications.png", "summary": "Use Jupyter and 3D Slicer kernel to implement biomedical data processing workflows in a notebook.", "date": "Jul 8, 2020", "authors": "Sylvain Corlay, Jean-Christophe Fillion-Robin, Mike Grauer, Andras Lasso, Matt MacCormick, Isaiah Norton, Steve Pieper, Martin Renou, Mike Sarahan", - "imageID": "blogpost-image-48", - "imageNaturalWidth": 256, - "imageNaturalHeight": 256, - "imageRenderedWidth": 180, - "imageRenderedHeight": 180 + "imageID": "blogpost-image-48" }, { "url": "https://medium.com/@QuantStack/open-software-packaging-for-science-61cecee7fc23", "title": "Open Software Packaging for Science", - "image": "/img/blogposts/Open-Software-Packaging-for-Science.svg", + "image": "/img/blogposts/resized-images/Open-Software-Packaging-for-Science.png", "summary": "Modern scientific applications typically depend on a very large number of libraries written in various programming languages, ranging from Fortran to TypeScript, C, C++, Python, etc. So, we need to…", "date": "Jun 19, 2020", "authors": "Wolf Vollprecht, Mario Buikhuizen, Marianne Corvellec, Johan Mabille, David Brochart", - "imageID": "blogpost-image-47", - "imageNaturalWidth": 684, - "imageNaturalHeight": 526, - "imageRenderedWidth": 234.0684410646388, - "imageRenderedHeight": 180 + "imageID": "blogpost-image-47" }, { "url": "https://blog.jupyter.org/a-jupyter-kernel-for-sqlite-9549c5dcf551", "title": "A Jupyter Kernel for SQLite", - "image": "/img/blogposts/A-Jupyter-Kernel-for-SQLite.png", + "image": "/img/blogposts/resized-images/A-Jupyter-Kernel-for-SQLite.png", "summary": "While it is well known in the Python scientific computing community, Jupyter is in fact a language-agnostic development environment. High-quality language kernels exist for the main languages of data…", "date": "Jun 11, 2020", "authors": "Mariana Meireles", - "imageID": "blogpost-image-46", - "imageNaturalWidth": 453, - "imageNaturalHeight": 267, - "imageRenderedWidth": 273, - "imageRenderedHeight": 160.90728476821192 + "imageID": "blogpost-image-46" }, { "url": "https://blog.jupyter.org/plasma-a-learning-platform-powered-by-jupyter-1b850fcd8624", "title": "PLASMA, a Learning Platform Powered by Jupyter", - "image": "/img/blogposts/PLASMA-a-Learning-Platform-Powered-by-Jupyter.png", + "image": "/img/blogposts/resized-images/PLASMA-a-Learning-Platform-Powered-by-Jupyter.png", "summary": "Jupyter has been a great choice for education for many years. The Jupyter Notebook has become one of the most popular tools to conduct workshops, tutorials, and teach online classes. Recently we have…", "date": "May 11, 2020", "authors": "Jeremy Tuloup", - "imageID": "blogpost-image-45", - "imageNaturalWidth": 933, - "imageNaturalHeight": 212, - "imageRenderedWidth": 273, - "imageRenderedHeight": 62.032154340836016 + "imageID": "blogpost-image-45" }, { "url": "https://blog.jupyter.org/interactive-graph-visualization-in-jupyter-with-ipycytoscape-a8828a54ab63", "title": "Interactive Graph Visualization in Jupyter with IPycytoscape", - "image": "/img/blogposts/Interactive-Graph-Visualization-in-Jupyter-with-IPycytoscape.png", + "image": "/img/blogposts/resized-images/Interactive-Graph-Visualization-in-Jupyter-with-IPycytoscape.png", "summary": "The Jupyter widgets ecosystem offers a broad variety of data visualization tools for exploratory analysis in the notebook. However, we…", "date": "Apr 30, 2020", "authors": "Mariana Meireles", - "imageID": "blogpost-image-44", - "imageNaturalWidth": 933, - "imageNaturalHeight": 911, - "imageRenderedWidth": 184.34687156970364, - "imageRenderedHeight": 180 + "imageID": "blogpost-image-44" }, { "url": "https://blog.jupyter.org/a-visual-debugger-for-jupyter-914e61716559", "title": "A Visual Debugger for Jupyter", - "image": "/img/blogposts/A-Visual-Debuger-for-Jupyter.gif", + "image": "/img/blogposts/resized-images/A-Visual-Debuger-for-Jupyter.png", "summary": "Most of the progress made in software projects comes from incrementalism. The ability to quickly see the outcome of an execution and iterate has been one of the main reasons for the success of…", "date": "Mar 25, 2020", "authors": "Jeremy Tuloup, Borys Palka, Johan Mabille, Martin Renou, Afshin Darian, Sylvain Corlay", - "imageID": "blogpost-image-43", - "imageNaturalWidth": 1198, - "imageNaturalHeight": 798, - "imageRenderedWidth": 273, - "imageRenderedHeight": 181.84808013355592 + "imageID": "blogpost-image-43" }, { "url": "https://blog.jupyter.org/report-on-the-jupyter-community-workshop-on-dashboarding-14f8ad9f3c0", "title": "Field Report on the Jupyter Community Workshop on Dashboarding", - "image": "/img/blogposts/Field-Report-on-the-Jupyter-Community-Workshop-on-Dashboarding.png", + "image": "/img/blogposts/resized-images/Field-Report-on-the-Jupyter-Community-Workshop-on-Dashboarding.png", "summary": "From June 3rd to June 6th 2019, thirty-five developers from the Jupyter community met in Paris for a four-day workshop on dashboarding with Project Jupyter. For four days, attendees worked full time…", "date": "Feb 14, 2020", "authors": "Sylvain Corlay", - "imageID": "blogpost-image-42", - "imageNaturalWidth": 933, - "imageNaturalHeight": 700, - "imageRenderedWidth": 239.91428571428574, - "imageRenderedHeight": 180 + "imageID": "blogpost-image-42" }, { "url": "https://medium.com/@wolfv/introducing-scikit-geometry-ae1dccaad5fd", "title": "Introducing Scikit-Geometry", - "image": "/img/blogposts/Introducing-Scikit-Geometry.png", + "image": "/img/blogposts/resized-images/Introducing-Scikit-Geometry.png", "summary": "As a robotics researcher (but also in many other fields) computations on geometric primitives are used very frequently— but it’s harder than anticipated to find the right abstractions in a nice…", "date": "Jan 24, 2020", "authors": "Wolf Vollprecht", - "imageID": "blogpost-image-41", - "imageNaturalWidth": 1260, - "imageNaturalHeight": 466, - "imageRenderedWidth": 273, - "imageRenderedHeight": 100.96666666666667 + "imageID": "blogpost-image-41" }, { "url": "https://medium.com/@johan.mabille/how-we-wrote-xtensor-8-n-iterators-7df77e3223f7", "title": "How we Wrote Xtensor (Episode 8) - Iterators", - "image": "/img/blogposts/How-we-Wrote-Xtensor-Episode-8-Iterators.png", + "image": "/img/blogposts/resized-images/How-we-Wrote-Xtensor-Episode-8-Iterators.png", "summary": "In the previous article, we implemented the broadcasting rules so that we can compute the shape of arbitrary complex trees that involve arrays with different but compatible shapes. This is the first…", "date": "Jan 7, 2020", "authors": "Johan Mabille", - "imageID": "blogpost-image-40", - "imageNaturalWidth": 1232, - "imageNaturalHeight": 260, - "imageRenderedWidth": 273, - "imageRenderedHeight": 57.61363636363636 + "imageID": "blogpost-image-40" }, { "url": "https://medium.com/@wolfv/2019-in-review-d7d03fb0d17d", "title": "2019 in Review", - "image": "/img/blogposts/2019-in-Review.png", + "image": "/img/blogposts/resized-images/2019-in-Review.png", "summary": "This year has seen major changes in xeus and xeus-python, driven by the requirements for developing a visual debugger. We have implemented a prototype that supports the Debug Adapter Protocol from…", "date": "Jan 2, 2020", "authors": "Wolf Vollprecht", - "imageID": "blogpost-image-39", - "imageNaturalWidth": 2000, - "imageNaturalHeight": 909, - "imageRenderedWidth": 273, - "imageRenderedHeight": 124.07849999999999 + "imageID": "blogpost-image-39" }, { "url": "https://medium.com/@wolfv/robot-development-with-jupyter-ddae16d4e688", "title": "Robot Development with Jupyter", - "image": "/img/blogposts/Robot-Development-with-Jupyter.png", + "image": "/img/blogposts/resized-images/Robot-Development-with-Jupyter.png", "summary": "Jupyter and Voilà are two popular packages in the data science ecosystem. But the Jupyter plugins jupyter-ros and jupyter-amphion make them more interesting than ever for robotics applications. This…", "date": "Dec 31, 2019", "authors": "Wolf Vollprecht", - "imageID": "blogpost-image-38", - "imageNaturalWidth": 870, - "imageNaturalHeight": 551, - "imageRenderedWidth": 273, - "imageRenderedHeight": 172.9 + "imageID": "blogpost-image-38" }, { "url": "https://medium.com/@johan.mabille/how-we-wrote-xtensor-7-n-broadcasting-cf37a974d029", "title": "How we Wrote Xtensor (Episode 7) - Broadcasting", - "image": "/img/blogposts/How-we-Wrote-Xtensor-Episode-7-Broadcasting.png", + "image": "/img/blogposts/resized-images/How-we-Wrote-Xtensor-Episode-7-Broadcasting.png", "summary": "In the previous article, we implemented operator and mathematical function overloads so that we can build arbitrary complex expression trees and access their elements. Before we can assign an…", "date": "Nov 24, 2019", "authors": "Johan Mabille", - "imageID": "blogpost-image-37", - "imageNaturalWidth": 1232, - "imageNaturalHeight": 260, - "imageRenderedWidth": 273, - "imageRenderedHeight": 57.61363636363636 + "imageID": "blogpost-image-37" }, { "url": "https://blog.jupyter.org/voila-gridstack-template-8a431c2b353e", "title": "Configure your Dashboards with the Voilà Gridstack Template", - "image": "/img/blogposts/Configure-your-Dashboards-with-the-Voila-Gridstack-Template.gif", + "image": "/img/blogposts/resized-images/Configure-your-Dashboards-with-the-Voila-Gridstack-Template.png", "summary": "Voilà is a new dashboarding solution from Jupyter ecosystem. It provides an easy-to-use tool to convert your Jupyter notebooks into standalone web applications. If you have not used it before, you…", "date": "Nov 11, 2019", "authors": "Bartosz Telenczuk", - "imageID": "blogpost-image-36", - "imageNaturalWidth": 931, - "imageNaturalHeight": 512, - "imageRenderedWidth": 273, - "imageRenderedHeight": 150.13533834586465 + "imageID": "blogpost-image-36" }, { "url": "https://blog.jupyter.org/a-slideshow-template-for-voil%C3%A0-apps-435f67d10b4f", "title": "A Slideshow template for Voilà", - "image": "/img/blogposts/A-Slideshow-template-for-Voila.png", + "image": "/img/blogposts/resized-images/A-Slideshow-template-for-Voila.png", "summary": "Last June, QuantStack announced the first release of Voilà, a solution to turn Jupyter notebooks into standalone web applications. Voilà enforces security (preventing arbitrary code execution) while…", "date": "Oct 29, 2019", "authors": "Marianne Corvellec", - "imageID": "blogpost-image-35", - "imageNaturalWidth": 384, - "imageNaturalHeight": 159, - "imageRenderedWidth": 273, - "imageRenderedHeight": 113.0390625 + "imageID": "blogpost-image-35" }, { "url": "https://medium.com/@wolfv/ros-on-conda-forge-dca6827ac4b6", "title": "ROS on Conda-forge", - "image": "/img/blogposts/ROS-on-Conda-forge.png", + "image": "/img/blogposts/resized-images/ROS-on-Conda-forge.png", "summary": "ROS is a fantastic and very large suite of software tools for Robotics. It’s used in many applications and with great success, ranging from the hobbyist market to industrial use cases. Most people…", "date": "Oct 28, 2019", "authors": "Wolf Vollprecht", - "imageID": "blogpost-image-34", - "imageNaturalWidth": 1260, - "imageNaturalHeight": 833, - "imageRenderedWidth": 273, - "imageRenderedHeight": 180.48333333333335 + "imageID": "blogpost-image-34" }, { "url": "https://blog.jupyter.org/ipycanvas-a-python-canvas-for-jupyter-bbb51e4777f7", "title": "IPycanvas, a Python Canvas for Jupyter", - "image": "/img/blogposts/IPycanvas-a-Python-Canvas-for-Jupyter.png", + "image": "/img/blogposts/resized-images/IPycanvas-a-Python-Canvas-for-Jupyter.png", "summary": "As you may already know, the Jupyter Notebook and JupyterLab are Browser-based applications. Browsers are incredibly powerful, they allow you to swap rich and interactive graphical interfaces…", "date": "Oct 25, 2019", "authors": "Martin Renou", - "imageID": "blogpost-image-33", - "imageNaturalWidth": 933, - "imageNaturalHeight": 621, - "imageRenderedWidth": 273, - "imageRenderedHeight": 181.7073954983923 + "imageID": "blogpost-image-33" }, { "url": "https://blog.jupyter.org/field-report-on-the-kernel-community-workshop-a4ad73a1a718", "title": "Field Report on the Kernel Community Workshop", - "image": "/img/blogposts/Field-Report-on-the-Kernel-Community-Workshop.png", + "image": "/img/blogposts/resized-images/Field-Report-on-the-Kernel-Community-Workshop.png", "summary": "From May 27th to May 29th, thirty developers from the Jupyter community met in Paris for a three-days workshop on the Jupyter kernel…", "date": "Oct 7, 2019", "authors": "Sylvain Corlay", - "imageID": "blogpost-image-32", - "imageNaturalWidth": 933, - "imageNaturalHeight": 700, - "imageRenderedWidth": 239.91428571428574, - "imageRenderedHeight": 180 + "imageID": "blogpost-image-32" }, { "url": "https://medium.com/@johan.mabille/how-we-wrote-xtensor-6-n-operator-overloading-984c2e5b4171", "title": "How we Wrote Xtensor (Episode 6) - Operator Overloading", - "image": "/img/blogposts/How-we-Wrote-Xtensor-Episode-6-Operator-Overloading.png", + "image": "/img/blogposts/resized-images/How-we-Wrote-Xtensor-Episode-6-Operator-Overloading.png", "summary": "In the previous article, we introduced expression templates and developed the skeleton of the xfunction class, meant to represent a node of the abstract syntax tree of a tensor expression. We left…", "date": "Sep 25, 2019", "authors": "Johan Mabille", - "imageID": "blogpost-image-31", - "imageNaturalWidth": 1232, - "imageNaturalHeight": 260, - "imageRenderedWidth": 273, - "imageRenderedHeight": 57.61363636363636 + "imageID": "blogpost-image-31" }, { "url": "https://blog.jupyter.org/interactive-gis-in-jupyter-with-ipyleaflet-52f9657fa7a", "title": "Interactive GIS in Jupyter with IPyleaflet", - "image": "/img/blogposts/Interactive-GIS-in-Jupyter-with-IPyleaflet.gif", + "image": "/img/blogposts/resized-images/Interactive-GIS-in-Jupyter-with-IPyleaflet.png", "summary": "As Jupyter grew in popularity, a broad ecosystem of visualization packages based on Jupyter widgets has been developed, bringing even more interactivity to the Jupyter world. In this article, we dive…", "date": "Sep 25, 2019", "authors": "Sylvain Corlay, Martin Renou", - "imageID": "blogpost-image-30", - "imageNaturalWidth": 500, - "imageNaturalHeight": 500, - "imageRenderedWidth": 180, - "imageRenderedHeight": 180 + "imageID": "blogpost-image-30" }, { "url": "https://medium.com/@johan.mabille/how-we-wrote-xtensor-5-n-expression-templates-d07332e73d1d", "title": "How we Wrote Xtensor (Episode 5) - Expression Templates", - "image": "/img/blogposts/How-we-Wrote-Xtensor-Episode-5-Expression-Templates.png", + "image": "/img/blogposts/resized-images/How-we-Wrote-Xtensor-Episode-5-Expression-Templates.png", "summary": "In the previous articles, we started to implement an N-D container, xarray, which has value semantics and provides all the methods required to access its data. The next step is to give it computation…", "date": "Sep 5, 2019", "authors": "Johan Mabille", - "imageID": "blogpost-image-29", - "imageNaturalWidth": 281, - "imageNaturalHeight": 221, - "imageRenderedWidth": 228.86877828054298, - "imageRenderedHeight": 180 + "imageID": "blogpost-image-29" }, { "url": "https://blog.jupyter.org/building-a-calculator-jupyter-kernel-4aed5764a295", "title": "Building a Calculator Jupyter Kernel", - "image": "/img/blogposts/Building-a-Calculator-Jupyter-Kernel.png", + "image": "/img/blogposts/resized-images/Building-a-Calculator-Jupyter-Kernel.png", "summary": "In order to provide a language-agnostic scientific development environment, the Jupyter project is built upon a well-specified protocol to communicate with the Kernel, the part of the infrastructure…", "date": "Jul 16, 2019", "authors": "Vasavan Thiru, Thibault Lacharme", - "imageID": "blogpost-image-28", - "imageNaturalWidth": 933, - "imageNaturalHeight": 622, - "imageRenderedWidth": 273, - "imageRenderedHeight": 182 + "imageID": "blogpost-image-28" }, { "url": "https://medium.com/@johan.mabille/how-we-wrote-xtensor-4-n-value-semantics-6baa6856d313", "title": "How we Wrote Xtensor (Episode 4) - Value Semantics", - "image": "/img/blogposts/How-we-Wrote-Xtensor-Episode-4-Value-Semantics.png", + "image": "/img/blogposts/resized-images/How-we-Wrote-Xtensor-Episode-4-Value-Semantics.png", "summary": "xtensor is a comprehensive framework for N-D arrays processing, including an extensible expression system, lazy evaluation, and many other…", "date": "Jul 16, 2019", "authors": "Johan Mabille", - "imageID": "blogpost-image-27", - "imageNaturalWidth": 1388, - "imageNaturalHeight": 293, - "imageRenderedWidth": 273, - "imageRenderedHeight": 57.62896253602305 + "imageID": "blogpost-image-27" }, { "url": "https://blog.jupyter.org/introducing-templates-for-jupyter-widget-layouts-f72bcb35a662", "title": "Introducing Templates for Jupyter Widget Layouts", - "image": "/img/blogposts/Introducing-Templates-for-Jupyter-Widget-Layouts.png", + "image": "/img/blogposts/resized-images/Introducing-Templates-for-Jupyter-Widget-Layouts.png", "summary": "Notebooks come alive with Jupyter widgets, which allow users to produce interactive GUIs inline in the Jupyter notebook or JupyterLab. You can either use them to add a few interactive controls and…", "date": "Jul 4, 2019", "authors": "Bartosz Telenczuk", - "imageID": "blogpost-image-26", - "imageNaturalWidth": 933, - "imageNaturalHeight": 746, - "imageRenderedWidth": 225.1206434316354, - "imageRenderedHeight": 180 + "imageID": "blogpost-image-26" }, { "url": "https://medium.com/@johan.mabille/how-we-wrote-xtensor-3-n-the-constructors-65a177260638", "title": "How we Wrote Xtensor (Episode 3) - The Constructors", - "image": "/img/blogposts/How-we-Wrote-Xtensor-Episode-3-The-Constructors.png", + "image": "/img/blogposts/resized-images/How-we-Wrote-Xtensor-Episode-3-The-Constructors.png", "summary": "In the previous article, we detailed the implementation of a generic access operator for our N-D container. Two more things to implement before the xarray class can be used in practice are…", "date": "Jun 24, 2019", "authors": "Johan Mabille", - "imageID": "blogpost-image-25", - "imageNaturalWidth": 1388, - "imageNaturalHeight": 293, - "imageRenderedWidth": 273, - "imageRenderedHeight": 57.62896253602305 + "imageID": "blogpost-image-25" }, { "url": "https://medium.com/@johan.mabille/how-we-wrote-xtensor-2-n-access-operators-57e8e3852263", "title": "How we Wrote Xtensor (Episode 2) - Access Operators", - "image": "/img/blogposts/How-we-Wrote-Xtensor-Episode-2-Access-Operators.png", + "image": "/img/blogposts/resized-images/How-we-Wrote-Xtensor-Episode-2-Access-Operators.png", "summary": "In the previous article, we started to design an N-dimensional container. We detailed the implementation of methods related to shape, strides, and memory layout. Let us now get to the access…", "date": "Jun 20, 2019", "authors": "Johan Mabille", - "imageID": "blogpost-image-24", - "imageNaturalWidth": 1388, - "imageNaturalHeight": 293, - "imageRenderedWidth": 273, - "imageRenderedHeight": 57.62896253602305 + "imageID": "blogpost-image-24" }, { "url": "https://medium.com/@johan.mabille/how-we-wrote-xtensor-1-n-n-dimensional-containers-f79f9f4966a7", "title": "How we Wrote Xtensor (Episode 1) - N-Dimensional Containers", - "image": "/img/blogposts/How-we-Wrote-Xtensor-Episode-1-N-Dimensional-Containers.png", + "image": "/img/blogposts/resized-images/How-we-Wrote-Xtensor-Episode-1-N-Dimensional-Containers.png", "summary": "xtensor is a C++ library meant for numerical analysis with multi-dimensional array expressions. It exposes an API similar to that of NumPy…", "date": "Jun 17, 2019", "authors": "Johan Mabille", - "imageID": "blogpost-image-23", - "imageNaturalWidth": 900, - "imageNaturalHeight": 190, - "imageRenderedWidth": 273, - "imageRenderedHeight": 57.63333333333334 + "imageID": "blogpost-image-23" }, { "url": "https://blog.jupyter.org/and-voil%C3%A0-f6a2c08a4a93", "title": "And Voilà!", - "image": "/img/blogposts/And-Voila.png", + "image": "/img/blogposts/resized-images/And-Voila.png", "summary": "The goal of Project Jupyter is to improve the workflows of researchers, educators, scientists, and other practitioners of scientific computing, from the exploratory phase of their work to the…", "date": "Jun 11, 2019", "authors": "Sylvain Corlay, Maarten Breddels", - "imageID": "blogpost-image-22", - "imageNaturalWidth": 933, - "imageNaturalHeight": 576, - "imageRenderedWidth": 273, - "imageRenderedHeight": 168.540192926045 + "imageID": "blogpost-image-22" }, { "url": "https://medium.com/@wolfv/mamba-development-news-29e32aaa8d6c", "title": "Mamba Development News", - "image": "/img/blogposts/Mamba-Development-News.png", + "image": "/img/blogposts/resized-images/Mamba-Development-News.png", "summary": "Mamba is a drop-in replacement for conda, the awesome cross-platform package manager. In our opinion, conda has one tiny problem: it’s too slow when many packages are installed, or when installing…", "date": "Jun 10, 2019", "authors": "Wolf Vollprecht", - "imageID": "blogpost-image-21", - "imageNaturalWidth": 1800, - "imageNaturalHeight": 1243, - "imageRenderedWidth": 273, - "imageRenderedHeight": 188.52166666666668 + "imageID": "blogpost-image-21" }, { "url": "https://medium.com/@wolfv/building-an-open-source-continuous-benchmark-system-717839093962", "title": "Building an Open-Source Continuous Benchmark System", - "image": "/img/blogposts/Building-an-Open-Source-Continuous-Benchmark-System.png", + "image": "/img/blogposts/resized-images/Building-an-Open-Source-Continuous-Benchmark-System.png", "summary": "Concourse is a continuous integration software, and we use it for two purposes: multi-project continuous integration, and continuous benchmarking. It’s easy to setup on a low cost server, using…", "date": "May 29, 2019", "authors": "Wolf Vollprecht", - "imageID": "blogpost-image-20", - "imageNaturalWidth": 2048, - "imageNaturalHeight": 558, - "imageRenderedWidth": 273, - "imageRenderedHeight": 74.3818359375 + "imageID": "blogpost-image-20" }, { "url": "https://blog.jupyter.org/ros-jupyter-b7e82b5e1202", "title": "ROS @ Jupyter", - "image": "/img/blogposts/ROS-@-Jupyter.png", + "image": "/img/blogposts/resized-images/ROS-@-Jupyter.png", "summary": "Historically, the ROS (Robot Operating System) community has relied on Qt for building complex user interfaces. Nowadays, the Jupyter notebook and the ipywidgets framework offer a compelling…", "date": "Apr 7, 2019", "authors": "Wolf Vollprecht", - "imageID": "blogpost-image-19", - "imageNaturalWidth": 933, - "imageNaturalHeight": 560, - "imageRenderedWidth": 273, - "imageRenderedHeight": 163.85852090032154 + "imageID": "blogpost-image-19" }, { "url": "https://medium.com/@wolfv/making-conda-fast-again-4da4debfb3b7", "title": "Making Conda Fast Again", - "image": "/img/blogposts/Making-Conda-Fast-Again.png", + "image": "/img/blogposts/resized-images/Making-Conda-Fast-Again.png", "summary": "You might have seen the announcement on Twitter: at QuantStack we’ve been working on making a prototype of a conda-compatible package manager called mamba. Conda is a great tool to distribute data…", "date": "Mar 28, 2019", "authors": "Wolf Vollprecht", - "imageID": "blogpost-image-18", - "imageNaturalWidth": 960, - "imageNaturalHeight": 377, - "imageRenderedWidth": 273, - "imageRenderedHeight": 107.20937500000001 + "imageID": "blogpost-image-18" }, { "url": "https://medium.com/data-science/interactive-spreadsheets-in-jupyter-32ab6ec0f4ff", "title": "Interactive spreadsheets in Jupyter", - "image": "/img/blogposts/Interactive-spreadsheets-in-Jupyter.png", + "image": "/img/blogposts/resized-images/Interactive-spreadsheets-in-Jupyter.png", "summary": "ipysheet is a new interactive widgets library that aims at implementing the core features of a good spreadsheet application and more…", "date": "Mar 8, 2019", "authors": "Martin Renou", - "imageID": "blogpost-image-17", - "imageNaturalWidth": 1661, - "imageNaturalHeight": 1084, - "imageRenderedWidth": 273, - "imageRenderedHeight": 178.1649608669476 + "imageID": "blogpost-image-17" }, { "url": "https://blog.jupyter.org/a-new-python-kernel-for-jupyter-fcdf211e30a8", "title": "A New Python Kernel for Jupyter", - "image": "/img/blogposts/A-New-Python-Kernel-for-Jupyter.png", + "image": "/img/blogposts/resized-images/A-New-Python-Kernel-for-Jupyter.png", "summary": "Project Jupyter aims at providing a consistent set of tools for interactive computing workflows across multiple programming languages. Jupyter projects are popular at all stages of a research project…", "date": "Jan 9, 2019", "authors": "Martin Renou", - "imageID": "blogpost-image-16", - "imageNaturalWidth": 453, - "imageNaturalHeight": 227, - "imageRenderedWidth": 273, - "imageRenderedHeight": 136.80132450331126 + "imageID": "blogpost-image-16" }, { "url": "https://medium.com/@johan.mabille/xframe-towards-a-c-dataframe-26e1ccde211b", "title": "Xframe: Towards a C++ Dataframe", - "image": "/img/blogposts/Xframe-Towards-a-C++-Dataframe.png", + "image": "/img/blogposts/resized-images/Xframe-Towards-a-C++-Dataframe.png", "summary": "For a very long time, the C++ programming language lacked a high-level toolset for scientific computing. Data structures such as N-dimensional arrays, data frames, are the bread and butter of the R…", "date": "Jan 4, 2019", "authors": "Johan Mabille", - "imageID": "blogpost-image-15", - "imageNaturalWidth": 1260, - "imageNaturalHeight": 375, - "imageRenderedWidth": 273, - "imageRenderedHeight": 81.25 + "imageID": "blogpost-image-15" }, { "url": "https://medium.com/@johan.mabille/designing-language-bindings-with-xtensor-f32aa0f20db", "title": "Designing Language Bindings with Xtensor", - "image": "/img/blogposts/Designing-Language-Bindings-with-Xtensor.svg", + "image": "/img/blogposts/resized-images/Designing-Language-Bindings-with-Xtensor.png", "summary": "xtensor and its satellite projects make it easy to implement a feature once in C++ and expose it to the main languages of data science, such as Python, Julia and R with little extra work. Although…", "date": "Nov 30, 2018", "authors": "Johan Mabille", - "imageID": "blogpost-image-14", - "imageNaturalWidth": 710, - "imageNaturalHeight": 150, - "imageRenderedWidth": 273, - "imageRenderedHeight": 57.67605633802817 + "imageID": "blogpost-image-14" }, { "url": "https://medium.com/data-science/video-streaming-in-the-jupyter-notebook-635bc5809e85", "title": "Video Streaming in the Jupyter Notebook", - "image": "/img/blogposts/Video-Streaming-in-the-Jupyter-Notebook.gif", + "image": "/img/blogposts/resized-images/Video-Streaming-in-the-Jupyter-Notebook.png", "summary": "ipywidgets plays an essential part in the Jupyter ecosystem; it brings interactivity between user and data. Widgets are eventful Python objects that often have a visual representation in the Jupyter…", "date": "Nov 19, 2018", "authors": "Martin Renou", - "imageID": "blogpost-image-13", - "imageNaturalWidth": 1131, - "imageNaturalHeight": 683, - "imageRenderedWidth": 273, - "imageRenderedHeight": 164.86206896551724 + "imageID": "blogpost-image-13" }, { "url": "https://towardsdatascience.com/the-xtensor-vision-552dd978e9ad", "title": "The Xtensor Vision", - "image": "/img/blogposts/The-Xtensor-Vision.png", + "image": "/img/blogposts/resized-images/The-Xtensor-Vision.png", "summary": "Here we’re laying out a vision for the xtensor project, the n-dimensional array in the C++ language — that makes it easy to write high-performance code and bind it to the languages of data science…", "date": "Nov 10, 2018", "authors": "Wolf Vollprecht", - "imageID": "blogpost-image-12", - "imageNaturalWidth": 1600, - "imageNaturalHeight": 551, - "imageRenderedWidth": 273, - "imageRenderedHeight": 94.014375 + "imageID": "blogpost-image-12" }, { "url": "https://serge-sans-paille.github.io/pythran-stories/bye-bye-boostsimd-welcome-xsimd.html", "title": "Bye bye Boost.SIMD, Welcome XSimd", - "image": "/img/blogposts/Bye-bye-Boost-SIMD-Welcome-XSimd.svg", + "image": "/img/blogposts/resized-images/Bye-bye-Boost-SIMD-Welcome-XSimd.png", "summary": "Boost.simd provides a C++ abstraction of vector type, allowing for efficient vectorization of array computations. It has been (optionally) used as part of the expression template engine of Pythran for a long time, a great collaboration that led to several patches in boost.simd, and great performance for Pythran.", "date": "Oct 31, 2019", "authors": "Serge Guelton", - "imageID": "blogpost-image-11", - "imageNaturalWidth": 555, - "imageNaturalHeight": 168, - "imageRenderedWidth": 273, - "imageRenderedHeight": 82.63783783783784 + "imageID": "blogpost-image-11" }, { "url": "https://medium.com/@QuantStack/xtensor-c-and-the-julia-challenge-643d4b119761", "title": "Xtensor, C++, and the Julia Challenge", - "image": "/img/blogposts/Xtensor-C++-and-the-Julia-Challenge.png", + "image": "/img/blogposts/resized-images/Xtensor-C++-and-the-Julia-Challenge.png", "summary": "Last month, Simon Danisch launched the Julia Language Challenge, a programming challenge from a member of the Julia community to other programming languages. with high performances. This can be…", "date": "Oct 24, 2018", "authors": "Sylvain Corlay, Johan Mabille, Wolf Vollprecht", - "imageID": "blogpost-image-10", - "imageNaturalWidth": 810, - "imageNaturalHeight": 170, - "imageRenderedWidth": 273, - "imageRenderedHeight": 57.2962962962963 + "imageID": "blogpost-image-10" }, { "url": "https://medium.com/@wolfv/the-julia-challenge-in-c-21272d36c002", "title": "The Julia Challenge in C++", - "image": "/img/blogposts/The-Julia-Challenge-in-C++.png", + "image": "/img/blogposts/resized-images/The-Julia-Challenge-in-C++.png", "summary": "Recently, some folks of the Julia community were boasting about the expressiveness of the Julia programming language, compared to older languages. That’s how they started the Julia Challenge. The…", "date": "Oct 12, 2018", "authors": "Wolf Vollprecht", - "imageID": "blogpost-image-9", - "imageNaturalWidth": 320, - "imageNaturalHeight": 200, - "imageRenderedWidth": 273, - "imageRenderedHeight": 170.625 + "imageID": "blogpost-image-9" }, { "url": "https://blog.jupyter.org/interpreted-c-for-gis-with-jupyter-ae191bc6fb8e", "title": "Interpreter C++ for GIS with Jupyter", - "image": "/img/blogposts/Interpreter-C++-for-GIS-with-Jupyter.png", + "image": "/img/blogposts/resized-images/Interpreter-C++-for-GIS-with-Jupyter.png", "summary": "The recent release of the Jupyter kernel for C++, based on the Cling interpreter enabled a number of new workflows for the users of the C++ programming language. More than a limited set of base…", "date": "Apr 24, 2018", "authors": "Martin Renou", - "imageID": "blogpost-image-8", - "imageNaturalWidth": 933, - "imageNaturalHeight": 662, - "imageRenderedWidth": 273, - "imageRenderedHeight": 193.70418006430867 + "imageID": "blogpost-image-8" }, { "url": "https://blog.jupyter.org/authoring-custom-jupyter-widgets-2884a462e724", "title": "Authoring Custom Jupyter Widgets", - "image": "/img/blogposts/Authoring-Custom-Jupyter-Widgets.gif", + "image": "/img/blogposts/resized-images/Authoring-Custom-Jupyter-Widgets.png", "summary": "Jupyter interactive widgets enhance the notebook experience by allowing users to create graphical user interfaces. They enable richer interaction with the data and computing resources. While the base…", "date": "Mar 5, 2018", "authors": "Olivier Borderies, Olivier Coudray, Pierre Marion", - "imageID": "blogpost-image-7", - "imageNaturalWidth": 1196, - "imageNaturalHeight": 648, - "imageRenderedWidth": 273, - "imageRenderedHeight": 147.91304347826087 + "imageID": "blogpost-image-7" }, { "url": "https://blog.jupyter.org/jupyter-receives-the-acm-software-system-award-d433b0dfe3a2", "title": "Jupyter Receives the ACM Software System Award", - "image": "/img/blogposts/Jupyter-Receives-the-ACM-Software-System-Award.png", + "image": "/img/blogposts/resized-images/Jupyter-Receives-the-ACM-Software-System-Award.png", "summary": "It is our pleasure to announce that Project Jupyter has been awarded the 2017 ACM Software System Award, a significant honor for the project. We are humbled to join an illustrious list of projects…", "date": "Mar 2, 2018", "authors": "Project Jupyter", - "imageID": "blogpost-image-6", - "imageNaturalWidth": 1089, - "imageNaturalHeight": 280, - "imageRenderedWidth": 273, - "imageRenderedHeight": 70.19283746556474 + "imageID": "blogpost-image-6" }, { "url": "https://blog.jupyter.org/a-diagram-editor-for-jupyterlab-a254121ff919", "title": "A Diagram Editor for JupyterLab", - "image": "/img/blogposts/A-Diagram-Editor-for-JupyterLab.gif", + "image": "/img/blogposts/resized-images/A-Diagram-Editor-for-JupyterLab.png", "summary": "The new JupyterLab interface is much more than a replacement for the classic notebook. It aims to bring together all the pieces required for a complete scientific workflow. The extension-based…", "date": "Feb 26, 2018", "authors": "Wolf Vollprecht", - "imageID": "blogpost-image-5", - "imageNaturalWidth": 1000, - "imageNaturalHeight": 600, - "imageRenderedWidth": 273, - "imageRenderedHeight": 163.79999999999998 + "imageID": "blogpost-image-5" }, { "url": "https://medium.com/@wolfv/fast-reductions-in-xtensor-with-simd-212a8543960a", "title": "Fast Reductions in Xtensor with Xsimd", - "image": "/img/blogposts/Fast-Reductions-in-Xtensor-with-Xsimd.png", + "image": "/img/blogposts/resized-images/Fast-Reductions-in-Xtensor-with-Xsimd.png", "summary": "xtensor has a wealth of mathematical functions available already: we support a lot of the NumPy API right there in C++. One of the areas where we were a bit slower than NumPy in the past were…", "date": "Feb 20, 2018", "authors": "Wolf Vollprecht", - "imageID": "blogpost-image-4", - "imageNaturalWidth": 1260, - "imageNaturalHeight": 665, - "imageRenderedWidth": 273, - "imageRenderedHeight": 144.08333333333334 + "imageID": "blogpost-image-4" }, { "url": "https://medium.com/@wolfv/faster-xtensor-87fcbe7f5293", "title": "Faster Xtensor", - "image": "/img/blogposts/Faster-Xtensor.png", + "image": "/img/blogposts/resized-images/Faster-Xtensor.png", "summary": "Knowing the size of the memory that is to be allocated at compile time can improve the runtime performance a lot — the compiler can already reserve the required space on the stack (instead of having…", "date": "Feb 18, 2018", "authors": "Wolf Vollprecht", - "imageID": "blogpost-image-3", - "imageNaturalWidth": 1260, - "imageNaturalHeight": 995, - "imageRenderedWidth": 227.9396984924623, - "imageRenderedHeight": 180 + "imageID": "blogpost-image-3" }, { "url": "https://blog.jupyter.org/interactive-workflows-for-c-with-jupyter-fe9b54227d92", "title": "Interactive Workflows for C++ with Jupyter", - "image": "/img/blogposts/Interactive-Workflows-for-C++-with-Jupyter.png", + "image": "/img/blogposts/resized-images/Interactive-Workflows-for-C++-with-Jupyter.png", "summary": "Scientists, educators and engineers not only use programming languages to build software systems, but also in interactive workflows, using the tools available to explore a problem and reason about…", "date": "Nov 29, 2017", "authors": "Sylvain Corlay, Loic Gouarin, Johan Mabille, Wolf Vollprecht", - "imageID": "blogpost-image-2", - "imageNaturalWidth": 933, - "imageNaturalHeight": 628, - "imageRenderedWidth": 273, - "imageRenderedHeight": 183.7556270096463 + "imageID": "blogpost-image-2" }, { "url": "https://medium.com/@SylvainCorlay/scientific-computing-in-a-polyglot-world-with-xtensor-d81ff3865d6", "title": "Scientific Computing in a Polyglot World with Xtensor", - "image": "/img/blogposts/Scientific-Computing-in-a-Polyglot-World-with-Xtensor.png", + "image": "/img/blogposts/resized-images/Scientific-Computing-in-a-Polyglot-World-with-Xtensor.png", "summary": "The One Language to Rule Them All probably does not exist yet. In the world of interactive scientific computing, countless articles and blog posts argue on the merits of R, Python, Julia and other…", "date": "May 5, 2017", "authors": "Sylvain Corlay", - "imageID": "blogpost-image-1", - "imageNaturalWidth": 300, - "imageNaturalHeight": 300, - "imageRenderedWidth": 180, - "imageRenderedHeight": 180 + "imageID": "blogpost-image-1" } ] diff --git a/src/components/blog/resize.js b/src/components/blog/resize.js deleted file mode 100644 index e2be94bf..00000000 --- a/src/components/blog/resize.js +++ /dev/null @@ -1,16 +0,0 @@ -const Jimp = require("jimp"); - -async function resize(inputPath, outputPath) { - // Reading Image - const image = await Jimp.read(inputPath); - // Used RESIZE_BEZIER as cb for finer images - image - .resize(1024, 768, Jimp.RESIZE_BEZIER, function (err) { - if (err) throw err; - }) - .write(outputPath); - } - - resize(); - console.log("Image is processed successfully"); - \ No newline at end of file diff --git a/src/components/blog/yml-to-json.js b/src/components/blog/yml-to-json.js deleted file mode 100644 index be2d9aa0..00000000 --- a/src/components/blog/yml-to-json.js +++ /dev/null @@ -1,148 +0,0 @@ -const imagesDirectory = "../../../static/img/blogposts/"; -const yaml = require("js-yaml"); -const fs = require("fs"); -const https = require("https"); -const ymlFileName = "_config.yml"; -const jsonFileName = "blogpostsDetails"; -let yamlFile = fs.readFileSync(ymlFileName, "utf8"); -let obj = yaml.load(yamlFile); -const blogpostsDetailsYml = obj["blog"]; -const NUMBER_OF_BLOGS = blogpostsDetailsYml.length; -const sizeOf = require("image-size"); -const imageContainerDimensions = [273, 180]; - -function JSONToFile(data, filename) { - fs.writeFileSync(`${filename}.json`, JSON.stringify(data, null, 2)); -} - -function defineImagesNames(data) { - const imageUrls = []; - const imagePaths = []; - let fileExtension = ""; - data.map((blogpost, index) => { - imageUrls.push(blogpost.image); - - if (blogpost.image.includes(".png")) { - fileExtension = ".png"; - } else if (blogpost.image.includes(".jpg" || ".jpeg")) { - fileExtension = ".jpg"; - } else if (blogpost.image.includes(".webp")) { - fileExtension = ".webp"; - } else if (blogpost.image.includes(".gif")) { - fileExtension = ".gif"; - } else if (blogpost.image.includes(".svg")) { - fileExtension = ".svg"; - } - else { - fileExtension = ".png"; - } - let name = blogpost.title; - name = name.split("!").join(""); - name = name.split(" - ").join("-"); - name = name.split(",").join(""); - name = name.split("🎉 ").join(""); - name = name.split(" 🎉").join(""); - name = name.split(" ❤️ ").join("-"); - name = name.split(": ").join("-"); - name = name.split(".").join("-"); - name = name.split("(").join(""); - name = name.split(")").join(""); - name = name.replace("à", "a"); - name = name.substring(0, 80).split(" ").join("-") + fileExtension; - imagePaths.push(imagesDirectory + name); - }); - - return [imageUrls, imagePaths]; -} - -function downloadImage(url, filepath) { - return new Promise((resolve, reject) => { - const request = https.get(url, (res) => { - const protocol = "https"; - const hostname = res.socket._host; - - if (res.statusCode === 200) { - res - .pipe(fs.createWriteStream(filepath)) - .on("error", reject) - .once("close", () => resolve(filepath)); - } else if (res.statusCode === 301 && res.headers.location) { - // Handle 301 redirect - const newUrl = protocol + "://" + hostname + res.headers.location; - // Close the current response and retry with the new URL - res.resume(); - downloadImage(newUrl, filepath).then(resolve).catch(reject); - } else { - res.resume(); // Consume response data to free up memory - reject(new Error(`Request failed with status code: ${res.statusCode}`)); - } - }); - request.on("error", (err) => { - reject(err); - }); - }); -} - -function getImageDimensions(blogpost) { - const pathPrefix = "../../../static"; - const completePath = pathPrefix + blogpost.image; - const dimensions = sizeOf(completePath); - return [dimensions.width, dimensions.height]; -} - -function changeBlogpostsDetails( - blogpostsDetailsYml, - paths, - imageContainerDimensions -) { - const data = [...blogpostsDetailsYml]; - - data.map((blogpost, index) => { - const timeIndex = NUMBER_OF_BLOGS - index; /* starting at 1*/ - - blogpost.imageID = "blogpost-image-" + timeIndex; - blogpost.image = paths[index].replace("../../../static", ""); - const [width, height] = getImageDimensions(blogpost); - blogpost.imageNaturalWidth = width; - blogpost.imageNaturalHeight = height; - - const imageAspectRatio = width / height; - const containerWidth = imageContainerDimensions[0]; - const containerHeight = imageContainerDimensions[1]; - - if (imageAspectRatio <= 1.4) { - blogpost.imageRenderedWidth = containerHeight * imageAspectRatio; - blogpost.imageRenderedHeight = containerHeight; - } else { - blogpost.imageRenderedWidth = containerWidth; - blogpost.imageRenderedHeight = containerWidth / imageAspectRatio; - } - - if (timeIndex === 114) { - blogpost.url = "/blogs/Fanny"; - } - }); - return data; -} - -function downloadLastImage(urls, paths) { - downloadImage(urls[NUMBER_OF_BLOGS], paths[NUMBER_OF_BLOGS]); -} - -/**step 1: load .yml file and convert data to an object called blogpostsDetails *********** */ -/**step 2: define path of images from the name of blog posts and their chronological index */ -const [urls, paths] = defineImagesNames(blogpostsDetailsYml); -console.log(paths); -/**step 3: download last image of last blogpost */ -//downloadLastImage(urls, paths); -/** step 4: change the path to images in blogpostsDetails, - * add their natural dimensions and the rendered ones********** */ -const modifiedBlogpostsDetails = changeBlogpostsDetails( - blogpostsDetailsYml, - paths, - imageContainerDimensions -); - -/** step 5: save modified blogposts details in a .json file - * these data are the one used for building the react blogposts cards */ -JSONToFile(modifiedBlogpostsDetails, jsonFileName); diff --git a/static/img/blogposts/An-SQL-Solution-for-Jupyter.png b/static/img/blogposts/An-SQL-Solution-for-Jupyter.png deleted file mode 100644 index 1c660614..00000000 Binary files a/static/img/blogposts/An-SQL-Solution-for-Jupyter.png and /dev/null differ diff --git a/static/img/blogposts/How-we-Wrote-Xtensor-Episode-5-Expression-Templates.png b/static/img/blogposts/How-we-Wrote-Xtensor-Episode-5-Expression-Templates.png deleted file mode 100644 index 1f9069b6..00000000 Binary files a/static/img/blogposts/How-we-Wrote-Xtensor-Episode-5-Expression-Templates.png and /dev/null differ diff --git a/static/img/blogposts/QuantStack-2022-in-review.webp b/static/img/blogposts/QuantStack-2022-in-review.webp deleted file mode 100644 index 535da23f..00000000 Binary files a/static/img/blogposts/QuantStack-2022-in-review.webp and /dev/null differ diff --git a/static/img/blogposts/Recent-keyboard-navigation-improvements-in-Jupyter.png b/static/img/blogposts/Recent-keyboard-navigation-improvements-in-Jupyter.png deleted file mode 100644 index 6e0eaf07..00000000 Binary files a/static/img/blogposts/Recent-keyboard-navigation-improvements-in-Jupyter.png and /dev/null differ diff --git a/static/img/blogposts/Rhumba-a-Faster-R-Distribution.gif b/static/img/blogposts/Rhumba-a-Faster-R-Distribution.gif deleted file mode 100644 index 0c86def3..00000000 Binary files a/static/img/blogposts/Rhumba-a-Faster-R-Distribution.gif and /dev/null differ diff --git a/static/img/blogposts/Rhumba-the-fast-R-distribution-is-available-on-Windows.gif b/static/img/blogposts/Rhumba-the-fast-R-distribution-is-available-on-Windows.gif deleted file mode 100644 index f11a9798..00000000 Binary files a/static/img/blogposts/Rhumba-the-fast-R-distribution-is-available-on-Windows.gif and /dev/null differ diff --git "a/static/img/blogposts/Update errored version updates version formatting by HaudinFlorence \302\267 Pull Request #2233 \302\267 conda-forge_conda-forge.github.io.html" "b/static/img/blogposts/Update errored version updates version formatting by HaudinFlorence \302\267 Pull Request #2233 \302\267 conda-forge_conda-forge.github.io.html" deleted file mode 100644 index 40839e12..00000000 --- "a/static/img/blogposts/Update errored version updates version formatting by HaudinFlorence \302\267 Pull Request #2233 \302\267 conda-forge_conda-forge.github.io.html" +++ /dev/null @@ -1,10456 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Update errored version updates version formatting by HaudinFlorence · Pull Request #2233 · conda-forge/conda-forge.github.io - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - -
- Skip to content - - - - - - - - - - - - - - - - - - - -
-
- - - - - - - - - - - - - -
- -
- - - - - - - - -
- - - - - -
- - - - - - - - - - - -
-
-
- - - - - - - - - - - - - - - - - - - - - - -
- Open in github.dev - Open in a new github.dev tab - Open in codespace - - - - - - -
- - -
- - -
- -
- - -
-
-
- - - -
- -
- - - - - Code - - - - - - -
- -
-
-
- -
- -
- -

- Update errored version updates version formatting - #2233 -

-
-
- -
-
- - - -
- - - - -
-
-
-
-
- - Open - -
- - - - -
- - - wants to merge - 1 - commit into - - - - -
-
- - base: - main - - - - -
-
-
- Choose a base branch - -
- - -
- -
- - - - -
- - - - - - - - - - - - - - -
- - -
-
-
-
- - -
-
- -
- -
- -from - - - - - -
-
- - - - - - - - - - - - - - - - -
-
- -
- -
- -
- - - - - - -
-
-
-
-
- - Open - -
- - - - -
-

- - Update errored version updates version formatting - - #2233 -

- -
- - - wants to merge - 1 - commit into - - - - -from - - - - - -
-
- - - - -
-
-
-
-
-
-
-
- - - - - - - - -
-
-

Conversation

-
- - - -
- -
- -
- HaudinFlorence - - -
-
-
-
-
- - - - - - - - - -

- - - - -

- - -
-
-
-
- -
- - - - - - Contributor - - - - -
- -

-
- @HaudinFlorence - - - HaudinFlorence - - - - - - - commented - - - Jul 18, 2024 - - - -
- -

-
- -
-
- - -
-

PR Checklist:

-
    -
  • note any issues closed by this PR with closing keywords
  • -
  • if you are adding a new page under docs/ or community/, you have added it to the sidebar in the corresponding _sidebar.json file
  • -
  • put any other relevant information below
  • -
-

This PR aims at fixing task 11 of issue #2137
-For the errored version updates, it replaces <pre> by <Markdown> components with relevant properties.

-
-
- -
- -
- -
-
-
- - -
-
- - -
- - - -
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
- -
-
-
-
-
-
-
-
- - -
- - - -
-
-
-

- Select a reply -

- -
-
- -
-
- -
- -
- Loading - - -
-
- -
- - -
- - -
- -

- The content you are editing has changed. - Please copy your edits and refresh the page. -

- - - -
- - - - - - - - -
-
-
-
- - - Slash commands -
- -
Beta
- -
-
- Loading - -
-
-
- -
-
-
-
- - - Slash commands -
- -
Beta
- -
-
-
- -

An unexpected error has occurred

-
-
-
-
- - -
- -
- -
-
- -
- - - - - - - - - - - - -
-
-
- -
-
-
-

Nothing to preview

-
-
- -
-
-
- - -
- -
- - - -
- - - -
-
- - -
- - -
-
- -
- -
-
-
- - - - - -
- - -
- -
-
-
- -
-
-
-
- -
-
- - @HaudinFlorence -
-
- - - -
- - - -
- -
- -
- -
- - 10f2af3 - -
-
-
-
-
…ponent.
-
-
- -
-
-
- - -
- - - - - - -
- - -
- -
- -
-
@HaudinFlorence - HaudinFlorence - - - requested a review - from a team - as a code owner - - - - July 18, 2024 12:47 - - -
-
- - -
- -
- - -
- -
- @netlify - - - Netlify - -
- - -
- -
-
-
-
- - - - - - - - - -

- - - - -

- - -
-
-
-
- -
- - - - - - - - -
- -

-
- - - - netlify - bot - - - - - - commented - - - Jul 18, 2024 - - - -
- -

-
- - -
- - - - - - - - -
-

👷 Deploy Preview for conda-forge-previews processing.

- - - - - - - - - - - - - - - - - -
NameLink
🔨 Latest commit10f2af3
🔍 Latest deploy loghttps://app.netlify.com/sites/conda-forge-previews/deploys/6698f2dcba0cbd0008a41128
-
-
- - -
- -
- -
-
-
- -
- -

- - - - -

- -
- -
-
- -
- - -
- - - - - - - -
- - -
- - -
- -
- @HaudinFlorence - -
- - -
- -
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - Copy link - -
-
- - - -
- - Reference in new issue - - -
- -

Reference in new issue

-
- -
- -
-
-
-
-
- - - conda-forge.github.io - - - -
- Repositories -
-
-
- - - -
-
- Loading - -
-
-
-
-
-
-
-
-
-
-
- -
- - - - - - -
-
-
- - -
- -
-
-
- -
-
- - - - - - - -
- - -
- - - - Report content - - - -
-
-
- -
- - - - - - Contributor - - - - - Author - - -
- -

-
- - - - HaudinFlorence - - - - - - - commented - - - Jul 18, 2024 - - - -
- -

-
- - -
-
- - -
- -

Choose a reason for hiding this comment

-

The reason will be displayed to describe this comment to others. Learn more about hiding comments.

-
- - -
- -
- - - - - - - - -
-

I am not sure whether <a href="https://github.com/...">bot CI job</a> should be parse in the error message.

-
-
- - -
- -
- -
-
-
- -
-
-
- - -
-
- - -
- - - -
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
- -
-
-
-
-
-
-
-
- - -
- - - -
-
-
-

- Select a reply -

- -
-
- -
-
- -
- -
- Loading - - -
-
- -
- - -
- - -
- -

- The content you are editing has changed. - Please copy your edits and refresh the page. -

- - - -
- - - - - - - - -
-
-
-
- - - Slash commands -
- -
Beta
- -
-
- Loading - -
-
-
- -
-
-
-
- - - Slash commands -
- -
Beta
- -
-
-
- -

An unexpected error has occurred

-
-
-
-
- - -
- -
- -
-
- -
- - - - - - - - - - - - -
-
-
- -
-
-
-

Nothing to preview

-
-
- -
-
-
- - -
- -
- - - -
- - - -
-
- - -
- - -
-
- -
- - -
- - - - - - - -
-
- -
- - - -
- -
- - - -
- -

Merge state

-
-

Add more commits by pushing to the update-errored-version-updates-formatting branch on HaudinFlorence/conda-forge.github.io.

- - - - -
- -
- - - -
-
- -
-
- -
- - - -

- Review requested -

- - - Review has been requested on this pull request. It is not required to merge. - Learn more about requesting a pull request review. - - -
- -
- -
-
- -
- - 1 pending reviewer - -
- - - - - - -
-
-
-
-
- - @conda-forge/core - - - - - conda-forge/core - - - was requested for review - - - -
-
-
-
- -
- - - - - -
-
- -
- -
- -

Some checks were not successful

- - - 4 in progress, 1 failing, and 1 pending checks - -
- -
-
-
-
- -
- -
- - - @github-actions - - - -
- - deploy / deploy (pull_request) - - - - In progress - - - — - - This check has started... - -
- -
- Required - - Details -
- -
-
-
- -
- - - @pre-commit-ci - - - -
- - pre-commit.ci - pr - - - - - — - checks completed with failures -
- -
- Required - - Details -
- -
-
-
-
- -
- -
- - - @netlify - - - -
- - Header rules - conda-forge-previews - - - - In progress - - - — - - This check has started... - -
- -
- - Details -
- -
-
-
-
- -
- -
- - - @netlify - - - -
- - Pages changed - conda-forge-previews - - - - In progress - - - — - - This check has started... - -
- -
- - Details -
- -
-
-
-
- -
- -
- - - @netlify - - - -
- - Redirect rules - conda-forge-previews - - - - In progress - - - — - - This check has started... - -
- -
- - Details -
- -
-
-
- -
- - - @netlify - - - -
- - netlify/conda-forge-previews/deploy-preview - - - - Pending - - - — - - Deploy Preview processing. - -
- -
- - Details -
- -
-
-
- - - -
-
- - - - - -
-
Required statuses must pass before merging
- - All required statuses and check runs on this pull request must run successfully to enable automatic merging. - -
- - - -
-
-
- - - -
- -
- - - - - - - -
- - - -
-

Update branch attempt failed

-

Oops, something went wrong.

- -
-
- -
- - -
-
-
- @HaudinFlorence -
-
-
- - -
- -

Add a comment

- - - -
-
- - -
- - -
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
- -
-
-
-
-
-
-
-
- - -
- - - -
-
-
-

- Select a reply -

- -
-
- -
-
- -
- -
- Loading - - -
-
- -
- - -
- - - - -
- - - - -
-
-
-
- - - Slash commands -
- -
Beta
- -
-
- Loading - -
-
-
- -
-
-
-
- - - Slash commands -
- -
Beta
- -
-
-
- -

An unexpected error has occurred

-
-
-
-
- - -
- - -
- -
-
- -
- - - - - - - - - - - - -
-
- -
- -
-
- - - -
-
-
-
- -
-
- -
- -
-
- - -
-
-
-
-
- -
-
-
- Remember, contributions to this repository should follow - its - - - contributing guidelines and security policy. -
- - -
- - ProTip! - Add comments to specific lines under Files changed. -
-
- - -
-
-
- -
-
-
- - - - - - - - - -
- - - -
- Labels -
- - -
- None yet -
- -
- - - - - - - - - -
-
- -
- -
- Development -
- - - - -

Successfully merging this pull request may close these issues.

- -

None yet

- - - - -
-
-
- - -
- - - - - -
-
-
- 1 participant -
-
- - @HaudinFlorence -
-
-
- - - - - - - - - - - - - -
- -
-
- - - - - - - -
-
-
-

- Allowing edits by maintainers -

- -
-
- -
-
- -
- -

- If checked, users with write access to conda-forge/conda-forge.github.io - can add new commits to your - update-errored-version-updates-formatting branch. -

- -

You can always change this setting later.

- -
- - Note: By granting write access, maintainers could potentially edit your repository's workflows to - reveal values of secrets and gain access to other branches. - - - -
-
- -
- - - - - -
- -
-
-
- - -
- -
-
- - - -
- - -
- -
- - -
-
- -
- -
-

Footer

- - - - -
-
- - - - - © 2024 GitHub, Inc. - -
- - -
-
- - - - - - - - - - - - - - - - - - - - -
- -
Contributor -Author -HaudinFlorence commented - -I am not sure whether <a href="https://github.com/...">bot CI job</a> should be parse in the error message.
-
- - - - \ No newline at end of file diff --git a/static/img/blogposts/2019-in-Review.png b/static/img/blogposts/full-size-images/2019-in-Review.png similarity index 100% rename from static/img/blogposts/2019-in-Review.png rename to static/img/blogposts/full-size-images/2019-in-Review.png diff --git a/static/img/blogposts/A-C++-API-for-Vega-Lite.png b/static/img/blogposts/full-size-images/A-C++-API-for-Vega-Lite.png similarity index 100% rename from static/img/blogposts/A-C++-API-for-Vega-Lite.png rename to static/img/blogposts/full-size-images/A-C++-API-for-Vega-Lite.png diff --git a/static/img/blogposts/A-Curiously-Recurring-Widget-Library.png b/static/img/blogposts/full-size-images/A-Curiously-Recurring-Widget-Library.png similarity index 100% rename from static/img/blogposts/A-Curiously-Recurring-Widget-Library.png rename to static/img/blogposts/full-size-images/A-Curiously-Recurring-Widget-Library.png diff --git a/static/img/blogposts/full-size-images/A-Diagram-Editor-for-JupyterLab.png b/static/img/blogposts/full-size-images/A-Diagram-Editor-for-JupyterLab.png new file mode 100644 index 00000000..cc6e0b31 Binary files /dev/null and b/static/img/blogposts/full-size-images/A-Diagram-Editor-for-JupyterLab.png differ diff --git a/static/img/blogposts/A-Jupyter-Kernel-for-SQLite.png b/static/img/blogposts/full-size-images/A-Jupyter-Kernel-for-SQLite.png similarity index 100% rename from static/img/blogposts/A-Jupyter-Kernel-for-SQLite.png rename to static/img/blogposts/full-size-images/A-Jupyter-Kernel-for-SQLite.png diff --git a/static/img/blogposts/A-Jupyter-kernel-for-GNU-Octave.png b/static/img/blogposts/full-size-images/A-Jupyter-kernel-for-GNU-Octave.png similarity index 100% rename from static/img/blogposts/A-Jupyter-kernel-for-GNU-Octave.png rename to static/img/blogposts/full-size-images/A-Jupyter-kernel-for-GNU-Octave.png diff --git a/static/img/blogposts/A-New-Python-Kernel-for-Jupyter.png b/static/img/blogposts/full-size-images/A-New-Python-Kernel-for-Jupyter.png similarity index 100% rename from static/img/blogposts/A-New-Python-Kernel-for-Jupyter.png rename to static/img/blogposts/full-size-images/A-New-Python-Kernel-for-Jupyter.png diff --git a/static/img/blogposts/A-Slideshow-template-for-Voila.png b/static/img/blogposts/full-size-images/A-Slideshow-template-for-Voila.png similarity index 100% rename from static/img/blogposts/A-Slideshow-template-for-Voila.png rename to static/img/blogposts/full-size-images/A-Slideshow-template-for-Voila.png diff --git a/static/img/blogposts/full-size-images/A-Visual-Debuger-for-Jupyter.png b/static/img/blogposts/full-size-images/A-Visual-Debuger-for-Jupyter.png new file mode 100644 index 00000000..76cebb31 Binary files /dev/null and b/static/img/blogposts/full-size-images/A-Visual-Debuger-for-Jupyter.png differ diff --git a/static/img/blogposts/A-theme-editor-for-JupyterLab.png b/static/img/blogposts/full-size-images/A-theme-editor-for-JupyterLab.png similarity index 100% rename from static/img/blogposts/A-theme-editor-for-JupyterLab.png rename to static/img/blogposts/full-size-images/A-theme-editor-for-JupyterLab.png diff --git a/static/img/blogposts/full-size-images/Abracadabra-Bringing-the-Magics-to-Xeus-Python.png b/static/img/blogposts/full-size-images/Abracadabra-Bringing-the-Magics-to-Xeus-Python.png new file mode 100644 index 00000000..d263e30b Binary files /dev/null and b/static/img/blogposts/full-size-images/Abracadabra-Bringing-the-Magics-to-Xeus-Python.png differ diff --git a/static/img/blogposts/Accelerating-JupyterLab.png b/static/img/blogposts/full-size-images/Accelerating-JupyterLab.png similarity index 100% rename from static/img/blogposts/Accelerating-JupyterLab.png rename to static/img/blogposts/full-size-images/Accelerating-JupyterLab.png diff --git a/static/img/blogposts/full-size-images/An-SQL-Solution-for-Jupyter.png b/static/img/blogposts/full-size-images/An-SQL-Solution-for-Jupyter.png new file mode 100644 index 00000000..64a2e029 Binary files /dev/null and b/static/img/blogposts/full-size-images/An-SQL-Solution-for-Jupyter.png differ diff --git a/static/img/blogposts/And-Voici.png b/static/img/blogposts/full-size-images/And-Voici.png similarity index 100% rename from static/img/blogposts/And-Voici.png rename to static/img/blogposts/full-size-images/And-Voici.png diff --git a/static/img/blogposts/And-Voila.png b/static/img/blogposts/full-size-images/And-Voila.png similarity index 100% rename from static/img/blogposts/And-Voila.png rename to static/img/blogposts/full-size-images/And-Voila.png diff --git a/static/img/blogposts/Announcing-Jupyter-Notebook-7.jpg b/static/img/blogposts/full-size-images/Announcing-Jupyter-Notebook-7.jpg similarity index 100% rename from static/img/blogposts/Announcing-Jupyter-Notebook-7.jpg rename to static/img/blogposts/full-size-images/Announcing-Jupyter-Notebook-7.jpg diff --git a/static/img/blogposts/Announcing-JupyterCAD-3.0.png b/static/img/blogposts/full-size-images/Announcing-JupyterCAD-3.0.png similarity index 100% rename from static/img/blogposts/Announcing-JupyterCAD-3.0.png rename to static/img/blogposts/full-size-images/Announcing-JupyterCAD-3.0.png diff --git a/static/img/blogposts/Announcing-PyData-Paris-2024.png b/static/img/blogposts/full-size-images/Announcing-PyData-Paris-2024.png similarity index 100% rename from static/img/blogposts/Announcing-PyData-Paris-2024.png rename to static/img/blogposts/full-size-images/Announcing-PyData-Paris-2024.png diff --git a/static/img/blogposts/Announcing-the-2023-Jupyter-Distinguished-Contributors.png b/static/img/blogposts/full-size-images/Announcing-the-2023-Jupyter-Distinguished-Contributors.png similarity index 100% rename from static/img/blogposts/Announcing-the-2023-Jupyter-Distinguished-Contributors.png rename to static/img/blogposts/full-size-images/Announcing-the-2023-Jupyter-Distinguished-Contributors.png diff --git a/static/img/blogposts/full-size-images/Authoring-Custom-Jupyter-Widgets.png b/static/img/blogposts/full-size-images/Authoring-Custom-Jupyter-Widgets.png new file mode 100644 index 00000000..5be50cd4 Binary files /dev/null and b/static/img/blogposts/full-size-images/Authoring-Custom-Jupyter-Widgets.png differ diff --git a/static/img/blogposts/Automate-releases-jupyter-releaser.png b/static/img/blogposts/full-size-images/Automate-releases-jupyter-releaser.png similarity index 100% rename from static/img/blogposts/Automate-releases-jupyter-releaser.png rename to static/img/blogposts/full-size-images/Automate-releases-jupyter-releaser.png diff --git a/static/img/blogposts/Building-a-Calculator-Jupyter-Kernel.png b/static/img/blogposts/full-size-images/Building-a-Calculator-Jupyter-Kernel.png similarity index 100% rename from static/img/blogposts/Building-a-Calculator-Jupyter-Kernel.png rename to static/img/blogposts/full-size-images/Building-a-Calculator-Jupyter-Kernel.png diff --git a/static/img/blogposts/Building-an-Open-Source-Continuous-Benchmark-System.png b/static/img/blogposts/full-size-images/Building-an-Open-Source-Continuous-Benchmark-System.png similarity index 100% rename from static/img/blogposts/Building-an-Open-Source-Continuous-Benchmark-System.png rename to static/img/blogposts/full-size-images/Building-an-Open-Source-Continuous-Benchmark-System.png diff --git a/static/img/blogposts/full-size-images/Bye-bye-Boost-SIMD-Welcome-XSimd.png b/static/img/blogposts/full-size-images/Bye-bye-Boost-SIMD-Welcome-XSimd.png new file mode 100644 index 00000000..4cf782c5 Binary files /dev/null and b/static/img/blogposts/full-size-images/Bye-bye-Boost-SIMD-Welcome-XSimd.png differ diff --git a/static/img/blogposts/Collaborative-CAD-in-JupyterLab.png b/static/img/blogposts/full-size-images/Collaborative-CAD-in-JupyterLab.png similarity index 100% rename from static/img/blogposts/Collaborative-CAD-in-JupyterLab.png rename to static/img/blogposts/full-size-images/Collaborative-CAD-in-JupyterLab.png diff --git a/static/img/blogposts/Collaborative-GIS.png b/static/img/blogposts/full-size-images/Collaborative-GIS.png similarity index 100% rename from static/img/blogposts/Collaborative-GIS.png rename to static/img/blogposts/full-size-images/Collaborative-GIS.png diff --git a/static/img/blogposts/Collaborative-Qt.png b/static/img/blogposts/full-size-images/Collaborative-Qt.png similarity index 100% rename from static/img/blogposts/Collaborative-Qt.png rename to static/img/blogposts/full-size-images/Collaborative-Qt.png diff --git a/static/img/blogposts/Commit.png b/static/img/blogposts/full-size-images/Commit.png similarity index 100% rename from static/img/blogposts/Commit.png rename to static/img/blogposts/full-size-images/Commit.png diff --git a/static/img/blogposts/full-size-images/Configure-your-Dashboards-with-the-Voila-Gridstack-Template.png b/static/img/blogposts/full-size-images/Configure-your-Dashboards-with-the-Voila-Gridstack-Template.png new file mode 100644 index 00000000..119f377e Binary files /dev/null and b/static/img/blogposts/full-size-images/Configure-your-Dashboards-with-the-Voila-Gridstack-Template.png differ diff --git a/static/img/blogposts/Congratulations-Distinguished-Contributors-2025.png b/static/img/blogposts/full-size-images/Congratulations-Distinguished-Contributors-2025.png similarity index 100% rename from static/img/blogposts/Congratulations-Distinguished-Contributors-2025.png rename to static/img/blogposts/full-size-images/Congratulations-Distinguished-Contributors-2025.png diff --git a/static/img/blogposts/Congratulations-Distinguished-Contributors.png b/static/img/blogposts/full-size-images/Congratulations-Distinguished-Contributors.png similarity index 100% rename from static/img/blogposts/Congratulations-Distinguished-Contributors.png rename to static/img/blogposts/full-size-images/Congratulations-Distinguished-Contributors.png diff --git a/static/img/blogposts/Cross-platform-Conda-Packages-for-ROS.jpg b/static/img/blogposts/full-size-images/Cross-platform-Conda-Packages-for-ROS.jpg similarity index 100% rename from static/img/blogposts/Cross-platform-Conda-Packages-for-ROS.jpg rename to static/img/blogposts/full-size-images/Cross-platform-Conda-Packages-for-ROS.jpg diff --git a/static/img/blogposts/full-size-images/Dashboarding-with-JupyterLab-3-0.png b/static/img/blogposts/full-size-images/Dashboarding-with-JupyterLab-3-0.png new file mode 100644 index 00000000..10b6df56 Binary files /dev/null and b/static/img/blogposts/full-size-images/Dashboarding-with-JupyterLab-3-0.png differ diff --git a/static/img/blogposts/full-size-images/Designing-Language-Bindings-with-Xtensor.png b/static/img/blogposts/full-size-images/Designing-Language-Bindings-with-Xtensor.png new file mode 100644 index 00000000..be5164a0 Binary files /dev/null and b/static/img/blogposts/full-size-images/Designing-Language-Bindings-with-Xtensor.png differ diff --git a/static/img/blogposts/full-size-images/Embed-interactive-itkwidgets-3D-renderings-into-JupyterLite-deployments.png b/static/img/blogposts/full-size-images/Embed-interactive-itkwidgets-3D-renderings-into-JupyterLite-deployments.png new file mode 100644 index 00000000..e036ea05 Binary files /dev/null and b/static/img/blogposts/full-size-images/Embed-interactive-itkwidgets-3D-renderings-into-JupyterLite-deployments.png differ diff --git a/static/img/blogposts/full-size-images/Enabling-the-JupyterLab-Debugger-with-ipykernel.png b/static/img/blogposts/full-size-images/Enabling-the-JupyterLab-Debugger-with-ipykernel.png new file mode 100644 index 00000000..d1ee012f Binary files /dev/null and b/static/img/blogposts/full-size-images/Enabling-the-JupyterLab-Debugger-with-ipykernel.png differ diff --git a/static/img/blogposts/Fast-Reductions-in-Xtensor-with-Xsimd.png b/static/img/blogposts/full-size-images/Fast-Reductions-in-Xtensor-with-Xsimd.png similarity index 100% rename from static/img/blogposts/Fast-Reductions-in-Xtensor-with-Xsimd.png rename to static/img/blogposts/full-size-images/Fast-Reductions-in-Xtensor-with-Xsimd.png diff --git a/static/img/blogposts/Faster-Xtensor.png b/static/img/blogposts/full-size-images/Faster-Xtensor.png similarity index 100% rename from static/img/blogposts/Faster-Xtensor.png rename to static/img/blogposts/full-size-images/Faster-Xtensor.png diff --git a/static/img/blogposts/Field-Report-on-the-Jupyter-Community-Workshop-on-Dashboarding.png b/static/img/blogposts/full-size-images/Field-Report-on-the-Jupyter-Community-Workshop-on-Dashboarding.png similarity index 100% rename from static/img/blogposts/Field-Report-on-the-Jupyter-Community-Workshop-on-Dashboarding.png rename to static/img/blogposts/full-size-images/Field-Report-on-the-Jupyter-Community-Workshop-on-Dashboarding.png diff --git a/static/img/blogposts/Field-Report-on-the-Kernel-Community-Workshop.png b/static/img/blogposts/full-size-images/Field-Report-on-the-Kernel-Community-Workshop.png similarity index 100% rename from static/img/blogposts/Field-Report-on-the-Kernel-Community-Workshop.png rename to static/img/blogposts/full-size-images/Field-Report-on-the-Kernel-Community-Workshop.png diff --git a/static/img/blogposts/From-Jupyter-to-the-Moon.png b/static/img/blogposts/full-size-images/From-Jupyter-to-the-Moon.png similarity index 100% rename from static/img/blogposts/From-Jupyter-to-the-Moon.png rename to static/img/blogposts/full-size-images/From-Jupyter-to-the-Moon.png diff --git a/static/img/blogposts/full-size-images/Genomic-Data-representation-in-Jupyter.png b/static/img/blogposts/full-size-images/Genomic-Data-representation-in-Jupyter.png new file mode 100644 index 00000000..37daad95 Binary files /dev/null and b/static/img/blogposts/full-size-images/Genomic-Data-representation-in-Jupyter.png differ diff --git a/static/img/blogposts/HTML5--based-renderer-for-Matplotlib-in-Pyodide.png b/static/img/blogposts/full-size-images/HTML5--based-renderer-for-Matplotlib-in-Pyodide.png similarity index 100% rename from static/img/blogposts/HTML5--based-renderer-for-Matplotlib-in-Pyodide.png rename to static/img/blogposts/full-size-images/HTML5--based-renderer-for-Matplotlib-in-Pyodide.png diff --git a/static/img/blogposts/How-we-Wrote-Xtensor-Episode-1-N-Dimensional-Containers.png b/static/img/blogposts/full-size-images/How-we-Wrote-Xtensor-Episode-1-N-Dimensional-Containers.png similarity index 100% rename from static/img/blogposts/How-we-Wrote-Xtensor-Episode-1-N-Dimensional-Containers.png rename to static/img/blogposts/full-size-images/How-we-Wrote-Xtensor-Episode-1-N-Dimensional-Containers.png diff --git a/static/img/blogposts/How-we-Wrote-Xtensor-Episode-2-Access-Operators.png b/static/img/blogposts/full-size-images/How-we-Wrote-Xtensor-Episode-2-Access-Operators.png similarity index 100% rename from static/img/blogposts/How-we-Wrote-Xtensor-Episode-2-Access-Operators.png rename to static/img/blogposts/full-size-images/How-we-Wrote-Xtensor-Episode-2-Access-Operators.png diff --git a/static/img/blogposts/How-we-Wrote-Xtensor-Episode-3-The-Constructors.png b/static/img/blogposts/full-size-images/How-we-Wrote-Xtensor-Episode-3-The-Constructors.png similarity index 100% rename from static/img/blogposts/How-we-Wrote-Xtensor-Episode-3-The-Constructors.png rename to static/img/blogposts/full-size-images/How-we-Wrote-Xtensor-Episode-3-The-Constructors.png diff --git a/static/img/blogposts/How-we-Wrote-Xtensor-Episode-4-Value-Semantics.png b/static/img/blogposts/full-size-images/How-we-Wrote-Xtensor-Episode-4-Value-Semantics.png similarity index 100% rename from static/img/blogposts/How-we-Wrote-Xtensor-Episode-4-Value-Semantics.png rename to static/img/blogposts/full-size-images/How-we-Wrote-Xtensor-Episode-4-Value-Semantics.png diff --git a/static/img/blogposts/full-size-images/How-we-Wrote-Xtensor-Episode-5-Expression-Templates.png b/static/img/blogposts/full-size-images/How-we-Wrote-Xtensor-Episode-5-Expression-Templates.png new file mode 100644 index 00000000..5df4a64d Binary files /dev/null and b/static/img/blogposts/full-size-images/How-we-Wrote-Xtensor-Episode-5-Expression-Templates.png differ diff --git a/static/img/blogposts/How-we-Wrote-Xtensor-Episode-6-Operator-Overloading.png b/static/img/blogposts/full-size-images/How-we-Wrote-Xtensor-Episode-6-Operator-Overloading.png similarity index 100% rename from static/img/blogposts/How-we-Wrote-Xtensor-Episode-6-Operator-Overloading.png rename to static/img/blogposts/full-size-images/How-we-Wrote-Xtensor-Episode-6-Operator-Overloading.png diff --git a/static/img/blogposts/How-we-Wrote-Xtensor-Episode-7-Broadcasting.png b/static/img/blogposts/full-size-images/How-we-Wrote-Xtensor-Episode-7-Broadcasting.png similarity index 100% rename from static/img/blogposts/How-we-Wrote-Xtensor-Episode-7-Broadcasting.png rename to static/img/blogposts/full-size-images/How-we-Wrote-Xtensor-Episode-7-Broadcasting.png diff --git a/static/img/blogposts/How-we-Wrote-Xtensor-Episode-8-Iterators.png b/static/img/blogposts/full-size-images/How-we-Wrote-Xtensor-Episode-8-Iterators.png similarity index 100% rename from static/img/blogposts/How-we-Wrote-Xtensor-Episode-8-Iterators.png rename to static/img/blogposts/full-size-images/How-we-Wrote-Xtensor-Episode-8-Iterators.png diff --git a/static/img/blogposts/How-we-made-Jupyter-notebooks-collaborative-with-Yjs.png b/static/img/blogposts/full-size-images/How-we-made-Jupyter-notebooks-collaborative-with-Yjs.png similarity index 100% rename from static/img/blogposts/How-we-made-Jupyter-notebooks-collaborative-with-Yjs.png rename to static/img/blogposts/full-size-images/How-we-made-Jupyter-notebooks-collaborative-with-Yjs.png diff --git a/static/img/blogposts/IPycanvas-a-Python-Canvas-for-Jupyter.png b/static/img/blogposts/full-size-images/IPycanvas-a-Python-Canvas-for-Jupyter.png similarity index 100% rename from static/img/blogposts/IPycanvas-a-Python-Canvas-for-Jupyter.png rename to static/img/blogposts/full-size-images/IPycanvas-a-Python-Canvas-for-Jupyter.png diff --git a/static/img/blogposts/Improving-the-accessibility-of-Jupyter.png b/static/img/blogposts/full-size-images/Improving-the-accessibility-of-Jupyter.png similarity index 100% rename from static/img/blogposts/Improving-the-accessibility-of-Jupyter.png rename to static/img/blogposts/full-size-images/Improving-the-accessibility-of-Jupyter.png diff --git a/static/img/blogposts/In-memoriam-Fanny-Loustau-Chartez.jpg b/static/img/blogposts/full-size-images/In-memoriam-Fanny-Loustau-Chartez.jpg similarity index 100% rename from static/img/blogposts/In-memoriam-Fanny-Loustau-Chartez.jpg rename to static/img/blogposts/full-size-images/In-memoriam-Fanny-Loustau-Chartez.jpg diff --git a/static/img/blogposts/Inspector-JupyterLab.png b/static/img/blogposts/full-size-images/Inspector-JupyterLab.png similarity index 100% rename from static/img/blogposts/Inspector-JupyterLab.png rename to static/img/blogposts/full-size-images/Inspector-JupyterLab.png diff --git a/static/img/blogposts/Interactive-C++-for-Data-Science.png b/static/img/blogposts/full-size-images/Interactive-C++-for-Data-Science.png similarity index 100% rename from static/img/blogposts/Interactive-C++-for-Data-Science.png rename to static/img/blogposts/full-size-images/Interactive-C++-for-Data-Science.png diff --git a/static/img/blogposts/full-size-images/Interactive-GIS-in-Jupyter-with-IPyleaflet.png b/static/img/blogposts/full-size-images/Interactive-GIS-in-Jupyter-with-IPyleaflet.png new file mode 100644 index 00000000..394e3057 Binary files /dev/null and b/static/img/blogposts/full-size-images/Interactive-GIS-in-Jupyter-with-IPyleaflet.png differ diff --git a/static/img/blogposts/Interactive-Graph-Visualization-in-Jupyter-with-IPycytoscape.png b/static/img/blogposts/full-size-images/Interactive-Graph-Visualization-in-Jupyter-with-IPycytoscape.png similarity index 100% rename from static/img/blogposts/Interactive-Graph-Visualization-in-Jupyter-with-IPycytoscape.png rename to static/img/blogposts/full-size-images/Interactive-Graph-Visualization-in-Jupyter-with-IPycytoscape.png diff --git a/static/img/blogposts/Interactive-Mapping-with-ipyopenlayers.png b/static/img/blogposts/full-size-images/Interactive-Mapping-with-ipyopenlayers.png similarity index 100% rename from static/img/blogposts/Interactive-Mapping-with-ipyopenlayers.png rename to static/img/blogposts/full-size-images/Interactive-Mapping-with-ipyopenlayers.png diff --git a/static/img/blogposts/Interactive-Workflows-for-C++-with-Jupyter.png b/static/img/blogposts/full-size-images/Interactive-Workflows-for-C++-with-Jupyter.png similarity index 100% rename from static/img/blogposts/Interactive-Workflows-for-C++-with-Jupyter.png rename to static/img/blogposts/full-size-images/Interactive-Workflows-for-C++-with-Jupyter.png diff --git a/static/img/blogposts/Interactive-spreadsheets-in-Jupyter.png b/static/img/blogposts/full-size-images/Interactive-spreadsheets-in-Jupyter.png similarity index 100% rename from static/img/blogposts/Interactive-spreadsheets-in-Jupyter.png rename to static/img/blogposts/full-size-images/Interactive-spreadsheets-in-Jupyter.png diff --git a/static/img/blogposts/Interpreter-C++-for-GIS-with-Jupyter.png b/static/img/blogposts/full-size-images/Interpreter-C++-for-GIS-with-Jupyter.png similarity index 100% rename from static/img/blogposts/Interpreter-C++-for-GIS-with-Jupyter.png rename to static/img/blogposts/full-size-images/Interpreter-C++-for-GIS-with-Jupyter.png diff --git a/static/img/blogposts/Introducing-Mamba-2-0.png b/static/img/blogposts/full-size-images/Introducing-Mamba-2-0.png similarity index 100% rename from static/img/blogposts/Introducing-Mamba-2-0.png rename to static/img/blogposts/full-size-images/Introducing-Mamba-2-0.png diff --git a/static/img/blogposts/Introducing-Scikit-Geometry.png b/static/img/blogposts/full-size-images/Introducing-Scikit-Geometry.png similarity index 100% rename from static/img/blogposts/Introducing-Scikit-Geometry.png rename to static/img/blogposts/full-size-images/Introducing-Scikit-Geometry.png diff --git a/static/img/blogposts/Introducing-Templates-for-Jupyter-Widget-Layouts.png b/static/img/blogposts/full-size-images/Introducing-Templates-for-Jupyter-Widget-Layouts.png similarity index 100% rename from static/img/blogposts/Introducing-Templates-for-Jupyter-Widget-Layouts.png rename to static/img/blogposts/full-size-images/Introducing-Templates-for-Jupyter-Widget-Layouts.png diff --git a/static/img/blogposts/Ipydatagrid-is-now-part-of-ProjectJupyter.png b/static/img/blogposts/full-size-images/Ipydatagrid-is-now-part-of-ProjectJupyter.png similarity index 100% rename from static/img/blogposts/Ipydatagrid-is-now-part-of-ProjectJupyter.png rename to static/img/blogposts/full-size-images/Ipydatagrid-is-now-part-of-ProjectJupyter.png diff --git a/static/img/blogposts/Ipygany-Jupyter-into-the-Third-Dimension.png b/static/img/blogposts/full-size-images/Ipygany-Jupyter-into-the-Third-Dimension.png similarity index 100% rename from static/img/blogposts/Ipygany-Jupyter-into-the-Third-Dimension.png rename to static/img/blogposts/full-size-images/Ipygany-Jupyter-into-the-Third-Dimension.png diff --git a/static/img/blogposts/Jupyter-Cytoscape.png b/static/img/blogposts/full-size-images/Jupyter-Cytoscape.png similarity index 100% rename from static/img/blogposts/Jupyter-Cytoscape.png rename to static/img/blogposts/full-size-images/Jupyter-Cytoscape.png diff --git a/static/img/blogposts/Jupyter-Everywhere.jpg b/static/img/blogposts/full-size-images/Jupyter-Everywhere.jpg similarity index 100% rename from static/img/blogposts/Jupyter-Everywhere.jpg rename to static/img/blogposts/full-size-images/Jupyter-Everywhere.jpg diff --git a/static/img/blogposts/Jupyter-Games.png b/static/img/blogposts/full-size-images/Jupyter-Games.png similarity index 100% rename from static/img/blogposts/Jupyter-Games.png rename to static/img/blogposts/full-size-images/Jupyter-Games.png diff --git a/static/img/blogposts/Jupyter-Receives-the-ACM-Software-System-Award.png b/static/img/blogposts/full-size-images/Jupyter-Receives-the-ACM-Software-System-Award.png similarity index 100% rename from static/img/blogposts/Jupyter-Receives-the-ACM-Software-System-Award.png rename to static/img/blogposts/full-size-images/Jupyter-Receives-the-ACM-Software-System-Award.png diff --git a/static/img/blogposts/Jupyter-WebAssembly-Python.png b/static/img/blogposts/full-size-images/Jupyter-WebAssembly-Python.png similarity index 100% rename from static/img/blogposts/Jupyter-WebAssembly-Python.png rename to static/img/blogposts/full-size-images/Jupyter-WebAssembly-Python.png diff --git a/static/img/blogposts/JupyterCAD-2-0.png b/static/img/blogposts/full-size-images/JupyterCAD-2-0.png similarity index 100% rename from static/img/blogposts/JupyterCAD-2-0.png rename to static/img/blogposts/full-size-images/JupyterCAD-2-0.png diff --git a/static/img/blogposts/JupyterCon-2023-recordings-now-live-on-YouTube.png b/static/img/blogposts/full-size-images/JupyterCon-2023-recordings-now-live-on-YouTube.png similarity index 100% rename from static/img/blogposts/JupyterCon-2023-recordings-now-live-on-YouTube.png rename to static/img/blogposts/full-size-images/JupyterCon-2023-recordings-now-live-on-YouTube.png diff --git a/static/img/blogposts/JupyterCon-is-back-in-2023.png b/static/img/blogposts/full-size-images/JupyterCon-is-back-in-2023.png similarity index 100% rename from static/img/blogposts/JupyterCon-is-back-in-2023.png rename to static/img/blogposts/full-size-images/JupyterCon-is-back-in-2023.png diff --git a/static/img/blogposts/JupyterGIS.png b/static/img/blogposts/full-size-images/JupyterGIS.png similarity index 100% rename from static/img/blogposts/JupyterGIS.png rename to static/img/blogposts/full-size-images/JupyterGIS.png diff --git a/static/img/blogposts/JupyterLab-3-0-is-Released.png b/static/img/blogposts/full-size-images/JupyterLab-3-0-is-Released.png similarity index 100% rename from static/img/blogposts/JupyterLab-3-0-is-Released.png rename to static/img/blogposts/full-size-images/JupyterLab-3-0-is-Released.png diff --git a/static/img/blogposts/JupyterLab-44.png b/static/img/blogposts/full-size-images/JupyterLab-44.png similarity index 100% rename from static/img/blogposts/JupyterLab-44.png rename to static/img/blogposts/full-size-images/JupyterLab-44.png diff --git a/static/img/blogposts/JupyterLab-the-Cloud-Robotics-Command-Station.png b/static/img/blogposts/full-size-images/JupyterLab-the-Cloud-Robotics-Command-Station.png similarity index 100% rename from static/img/blogposts/JupyterLab-the-Cloud-Robotics-Command-Station.png rename to static/img/blogposts/full-size-images/JupyterLab-the-Cloud-Robotics-Command-Station.png diff --git a/static/img/blogposts/JupyterLite-06.png b/static/img/blogposts/full-size-images/JupyterLite-06.png similarity index 100% rename from static/img/blogposts/JupyterLite-06.png rename to static/img/blogposts/full-size-images/JupyterLite-06.png diff --git a/static/img/blogposts/full-size-images/Jupyterlite-Terminal.png b/static/img/blogposts/full-size-images/Jupyterlite-Terminal.png new file mode 100644 index 00000000..d3cb5618 Binary files /dev/null and b/static/img/blogposts/full-size-images/Jupyterlite-Terminal.png differ diff --git a/static/img/blogposts/Le-calcul-haute-performance-au-service-de-l'innovation-in-French.png b/static/img/blogposts/full-size-images/Le-calcul-haute-performance-au-service-de-l'innovation-in-French.png similarity index 100% rename from static/img/blogposts/Le-calcul-haute-performance-au-service-de-l'innovation-in-French.png rename to static/img/blogposts/full-size-images/Le-calcul-haute-performance-au-service-de-l'innovation-in-French.png diff --git a/static/img/blogposts/Looking-at-notebooks-from-a-new-perspective.png b/static/img/blogposts/full-size-images/Looking-at-notebooks-from-a-new-perspective.png similarity index 100% rename from static/img/blogposts/Looking-at-notebooks-from-a-new-perspective.png rename to static/img/blogposts/full-size-images/Looking-at-notebooks-from-a-new-perspective.png diff --git a/static/img/blogposts/Making-Conda-Fast-Again.png b/static/img/blogposts/full-size-images/Making-Conda-Fast-Again.png similarity index 100% rename from static/img/blogposts/Making-Conda-Fast-Again.png rename to static/img/blogposts/full-size-images/Making-Conda-Fast-Again.png diff --git a/static/img/blogposts/Mamba-0-15-0.png b/static/img/blogposts/full-size-images/Mamba-0-15-0.png similarity index 100% rename from static/img/blogposts/Mamba-0-15-0.png rename to static/img/blogposts/full-size-images/Mamba-0-15-0.png diff --git a/static/img/blogposts/Mamba-Development-News.png b/static/img/blogposts/full-size-images/Mamba-Development-News.png similarity index 100% rename from static/img/blogposts/Mamba-Development-News.png rename to static/img/blogposts/full-size-images/Mamba-Development-News.png diff --git a/static/img/blogposts/Mamba-meets-JupyterLite.png b/static/img/blogposts/full-size-images/Mamba-meets-JupyterLite.png similarity index 100% rename from static/img/blogposts/Mamba-meets-JupyterLite.png rename to static/img/blogposts/full-size-images/Mamba-meets-JupyterLite.png diff --git a/static/img/blogposts/Managing-conflicts-with-Mamba.png b/static/img/blogposts/full-size-images/Managing-conflicts-with-Mamba.png similarity index 100% rename from static/img/blogposts/Managing-conflicts-with-Mamba.png rename to static/img/blogposts/full-size-images/Managing-conflicts-with-Mamba.png diff --git a/static/img/blogposts/Meet-Xeus-R-a-future-proof-Jupyter-kernel-for-R.png b/static/img/blogposts/full-size-images/Meet-Xeus-R-a-future-proof-Jupyter-kernel-for-R.png similarity index 100% rename from static/img/blogposts/Meet-Xeus-R-a-future-proof-Jupyter-kernel-for-R.png rename to static/img/blogposts/full-size-images/Meet-Xeus-R-a-future-proof-Jupyter-kernel-for-R.png diff --git a/static/img/blogposts/Memestra.png b/static/img/blogposts/full-size-images/Memestra.png similarity index 100% rename from static/img/blogposts/Memestra.png rename to static/img/blogposts/full-size-images/Memestra.png diff --git a/static/img/blogposts/Need-for-speed-Voila-edition.png b/static/img/blogposts/full-size-images/Need-for-speed-Voila-edition.png similarity index 100% rename from static/img/blogposts/Need-for-speed-Voila-edition.png rename to static/img/blogposts/full-size-images/Need-for-speed-Voila-edition.png diff --git a/static/img/blogposts/full-size-images/Open-Software-Packaging-for-Science.png b/static/img/blogposts/full-size-images/Open-Software-Packaging-for-Science.png new file mode 100644 index 00000000..747bf319 Binary files /dev/null and b/static/img/blogposts/full-size-images/Open-Software-Packaging-for-Science.png differ diff --git a/static/img/blogposts/PLASMA-a-Learning-Platform-Powered-by-Jupyter.png b/static/img/blogposts/full-size-images/PLASMA-a-Learning-Platform-Powered-by-Jupyter.png similarity index 100% rename from static/img/blogposts/PLASMA-a-Learning-Platform-Powered-by-Jupyter.png rename to static/img/blogposts/full-size-images/PLASMA-a-Learning-Platform-Powered-by-Jupyter.png diff --git a/static/img/blogposts/Plug-your-application-into-the-Jupyter-world.png b/static/img/blogposts/full-size-images/Plug-your-application-into-the-Jupyter-world.png similarity index 100% rename from static/img/blogposts/Plug-your-application-into-the-Jupyter-world.png rename to static/img/blogposts/full-size-images/Plug-your-application-into-the-Jupyter-world.png diff --git a/static/img/blogposts/PyData-Paris-2025-Keynotes.png b/static/img/blogposts/full-size-images/PyData-Paris-2025-Keynotes.png similarity index 100% rename from static/img/blogposts/PyData-Paris-2025-Keynotes.png rename to static/img/blogposts/full-size-images/PyData-Paris-2025-Keynotes.png diff --git a/static/img/blogposts/QuantStack-2021-in-review.png b/static/img/blogposts/full-size-images/QuantStack-2021-in-review.png similarity index 100% rename from static/img/blogposts/QuantStack-2021-in-review.png rename to static/img/blogposts/full-size-images/QuantStack-2021-in-review.png diff --git a/static/img/blogposts/full-size-images/QuantStack-2022-in-review.png b/static/img/blogposts/full-size-images/QuantStack-2022-in-review.png new file mode 100644 index 00000000..f4594109 Binary files /dev/null and b/static/img/blogposts/full-size-images/QuantStack-2022-in-review.png differ diff --git a/static/img/blogposts/QuantStack-2023-in-review.png b/static/img/blogposts/full-size-images/QuantStack-2023-in-review.png similarity index 100% rename from static/img/blogposts/QuantStack-2023-in-review.png rename to static/img/blogposts/full-size-images/QuantStack-2023-in-review.png diff --git a/static/img/blogposts/QuantStack-Steps-Up-to-Support-Apache-Arrow-with-New-Dedicated-Team.png b/static/img/blogposts/full-size-images/QuantStack-Steps-Up-to-Support-Apache-Arrow-with-New-Dedicated-Team.png similarity index 100% rename from static/img/blogposts/QuantStack-Steps-Up-to-Support-Apache-Arrow-with-New-Dedicated-Team.png rename to static/img/blogposts/full-size-images/QuantStack-Steps-Up-to-Support-Apache-Arrow-with-New-Dedicated-Team.png diff --git a/static/img/blogposts/QuantStack-open-source-internship-program.png b/static/img/blogposts/full-size-images/QuantStack-open-source-internship-program.png similarity index 100% rename from static/img/blogposts/QuantStack-open-source-internship-program.png rename to static/img/blogposts/full-size-images/QuantStack-open-source-internship-program.png diff --git a/static/img/blogposts/ROS-@-Jupyter.png b/static/img/blogposts/full-size-images/ROS-@-Jupyter.png similarity index 100% rename from static/img/blogposts/ROS-@-Jupyter.png rename to static/img/blogposts/full-size-images/ROS-@-Jupyter.png diff --git a/static/img/blogposts/ROS-on-Conda-forge.png b/static/img/blogposts/full-size-images/ROS-on-Conda-forge.png similarity index 100% rename from static/img/blogposts/ROS-on-Conda-forge.png rename to static/img/blogposts/full-size-images/ROS-on-Conda-forge.png diff --git a/static/img/blogposts/ROS2-support-for-Zethus.png b/static/img/blogposts/full-size-images/ROS2-support-for-Zethus.png similarity index 100% rename from static/img/blogposts/ROS2-support-for-Zethus.png rename to static/img/blogposts/full-size-images/ROS2-support-for-Zethus.png diff --git a/static/img/blogposts/Real-time-Rendering-of-Water-Caustics.png b/static/img/blogposts/full-size-images/Real-time-Rendering-of-Water-Caustics.png similarity index 100% rename from static/img/blogposts/Real-time-Rendering-of-Water-Caustics.png rename to static/img/blogposts/full-size-images/Real-time-Rendering-of-Water-Caustics.png diff --git a/static/img/blogposts/full-size-images/Recent-keyboard-navigation-improvements-in-Jupyter.png b/static/img/blogposts/full-size-images/Recent-keyboard-navigation-improvements-in-Jupyter.png new file mode 100644 index 00000000..d6113491 Binary files /dev/null and b/static/img/blogposts/full-size-images/Recent-keyboard-navigation-improvements-in-Jupyter.png differ diff --git a/static/img/blogposts/RetroLab-A-JupyterLab-distribution-with-a-retro-look-and-feel.png b/static/img/blogposts/full-size-images/RetroLab-A-JupyterLab-distribution-with-a-retro-look-and-feel.png similarity index 100% rename from static/img/blogposts/RetroLab-A-JupyterLab-distribution-with-a-retro-look-and-feel.png rename to static/img/blogposts/full-size-images/RetroLab-A-JupyterLab-distribution-with-a-retro-look-and-feel.png diff --git a/static/img/blogposts/full-size-images/Rhumba-a-Faster-R-Distribution.png b/static/img/blogposts/full-size-images/Rhumba-a-Faster-R-Distribution.png new file mode 100644 index 00000000..5445a3fd Binary files /dev/null and b/static/img/blogposts/full-size-images/Rhumba-a-Faster-R-Distribution.png differ diff --git a/static/img/blogposts/full-size-images/Rhumba-the-fast-R-distribution-is-available-on-Windows.png b/static/img/blogposts/full-size-images/Rhumba-the-fast-R-distribution-is-available-on-Windows.png new file mode 100644 index 00000000..db92739d Binary files /dev/null and b/static/img/blogposts/full-size-images/Rhumba-the-fast-R-distribution-is-available-on-Windows.png differ diff --git a/static/img/blogposts/Robot-Development-with-Jupyter.png b/static/img/blogposts/full-size-images/Robot-Development-with-Jupyter.png similarity index 100% rename from static/img/blogposts/Robot-Development-with-Jupyter.png rename to static/img/blogposts/full-size-images/Robot-Development-with-Jupyter.png diff --git a/static/img/blogposts/Robotic-Process-Automation-with-JupyterLab.png b/static/img/blogposts/full-size-images/Robotic-Process-Automation-with-JupyterLab.png similarity index 100% rename from static/img/blogposts/Robotic-Process-Automation-with-JupyterLab.png rename to static/img/blogposts/full-size-images/Robotic-Process-Automation-with-JupyterLab.png diff --git a/static/img/blogposts/Scientific-Computing-in-a-Polyglot-World-with-Xtensor.png b/static/img/blogposts/full-size-images/Scientific-Computing-in-a-Polyglot-World-with-Xtensor.png similarity index 100% rename from static/img/blogposts/Scientific-Computing-in-a-Polyglot-World-with-Xtensor.png rename to static/img/blogposts/full-size-images/Scientific-Computing-in-a-Polyglot-World-with-Xtensor.png diff --git a/static/img/blogposts/SlicerJupyter-a-3-D-Slicer-Kernel-for-Interactive-Publications.png b/static/img/blogposts/full-size-images/SlicerJupyter-a-3-D-Slicer-Kernel-for-Interactive-Publications.png similarity index 100% rename from static/img/blogposts/SlicerJupyter-a-3-D-Slicer-Kernel-for-Interactive-Publications.png rename to static/img/blogposts/full-size-images/SlicerJupyter-a-3-D-Slicer-Kernel-for-Interactive-Publications.png diff --git a/static/img/blogposts/The-Julia-Challenge-in-C++.png b/static/img/blogposts/full-size-images/The-Julia-Challenge-in-C++.png similarity index 100% rename from static/img/blogposts/The-Julia-Challenge-in-C++.png rename to static/img/blogposts/full-size-images/The-Julia-Challenge-in-C++.png diff --git a/static/img/blogposts/The-Templating-System-of-Nbconvert-6.png b/static/img/blogposts/full-size-images/The-Templating-System-of-Nbconvert-6.png similarity index 100% rename from static/img/blogposts/The-Templating-System-of-Nbconvert-6.png rename to static/img/blogposts/full-size-images/The-Templating-System-of-Nbconvert-6.png diff --git a/static/img/blogposts/The-Xtensor-Vision.png b/static/img/blogposts/full-size-images/The-Xtensor-Vision.png similarity index 100% rename from static/img/blogposts/The-Xtensor-Vision.png rename to static/img/blogposts/full-size-images/The-Xtensor-Vision.png diff --git a/static/img/blogposts/The-future-of-mamba.png b/static/img/blogposts/full-size-images/The-future-of-mamba.png similarity index 100% rename from static/img/blogposts/The-future-of-mamba.png rename to static/img/blogposts/full-size-images/The-future-of-mamba.png diff --git a/static/img/blogposts/The-mamba-project-and-the-CZI-grant.png b/static/img/blogposts/full-size-images/The-mamba-project-and-the-CZI-grant.png similarity index 100% rename from static/img/blogposts/The-mamba-project-and-the-CZI-grant.png rename to static/img/blogposts/full-size-images/The-mamba-project-and-the-CZI-grant.png diff --git a/static/img/blogposts/Toward-a-faster-and-thinner-xsimd.png b/static/img/blogposts/full-size-images/Toward-a-faster-and-thinner-xsimd.png similarity index 100% rename from static/img/blogposts/Toward-a-faster-and-thinner-xsimd.png rename to static/img/blogposts/full-size-images/Toward-a-faster-and-thinner-xsimd.png diff --git a/static/img/blogposts/Towards-a-more-secure-conda-ecosystem.png b/static/img/blogposts/full-size-images/Towards-a-more-secure-conda-ecosystem.png similarity index 100% rename from static/img/blogposts/Towards-a-more-secure-conda-ecosystem.png rename to static/img/blogposts/full-size-images/Towards-a-more-secure-conda-ecosystem.png diff --git a/static/img/blogposts/Upgrading-nbgrader.png b/static/img/blogposts/full-size-images/Upgrading-nbgrader.png similarity index 100% rename from static/img/blogposts/Upgrading-nbgrader.png rename to static/img/blogposts/full-size-images/Upgrading-nbgrader.png diff --git a/static/img/blogposts/full-size-images/Video-Streaming-in-the-Jupyter-Notebook.png b/static/img/blogposts/full-size-images/Video-Streaming-in-the-Jupyter-Notebook.png new file mode 100644 index 00000000..f3baa654 Binary files /dev/null and b/static/img/blogposts/full-size-images/Video-Streaming-in-the-Jupyter-Notebook.png differ diff --git a/static/img/blogposts/Visual-programming-in-JupyterLab-with-Blockly.png b/static/img/blogposts/full-size-images/Visual-programming-in-JupyterLab-with-Blockly.png similarity index 100% rename from static/img/blogposts/Visual-programming-in-JupyterLab-with-Blockly.png rename to static/img/blogposts/full-size-images/Visual-programming-in-JupyterLab-with-Blockly.png diff --git a/static/img/blogposts/Voila-0-5-Homecoming.png b/static/img/blogposts/full-size-images/Voila-0-5-Homecoming.png similarity index 100% rename from static/img/blogposts/Voila-0-5-Homecoming.png rename to static/img/blogposts/full-size-images/Voila-0-5-Homecoming.png diff --git a/static/img/blogposts/Xeus-2-0.png b/static/img/blogposts/full-size-images/Xeus-2-0.png similarity index 100% rename from static/img/blogposts/Xeus-2-0.png rename to static/img/blogposts/full-size-images/Xeus-2-0.png diff --git a/static/img/blogposts/Xeus-Lite.png b/static/img/blogposts/full-size-images/Xeus-Lite.png similarity index 100% rename from static/img/blogposts/Xeus-Lite.png rename to static/img/blogposts/full-size-images/Xeus-Lite.png diff --git a/static/img/blogposts/Xeus-R-Lite.png b/static/img/blogposts/full-size-images/Xeus-R-Lite.png similarity index 100% rename from static/img/blogposts/Xeus-R-Lite.png rename to static/img/blogposts/full-size-images/Xeus-R-Lite.png diff --git a/static/img/blogposts/Xframe-Towards-a-C++-Dataframe.png b/static/img/blogposts/full-size-images/Xframe-Towards-a-C++-Dataframe.png similarity index 100% rename from static/img/blogposts/Xframe-Towards-a-C++-Dataframe.png rename to static/img/blogposts/full-size-images/Xframe-Towards-a-C++-Dataframe.png diff --git a/static/img/blogposts/Xtensor-C++-and-the-Julia-Challenge.png b/static/img/blogposts/full-size-images/Xtensor-C++-and-the-Julia-Challenge.png similarity index 100% rename from static/img/blogposts/Xtensor-C++-and-the-Julia-Challenge.png rename to static/img/blogposts/full-size-images/Xtensor-C++-and-the-Julia-Challenge.png diff --git a/static/img/blogposts/Xtensor-Zarr.png b/static/img/blogposts/full-size-images/Xtensor-Zarr.png similarity index 100% rename from static/img/blogposts/Xtensor-Zarr.png rename to static/img/blogposts/full-size-images/Xtensor-Zarr.png diff --git a/static/img/blogposts/nbterm-Jupyter-Notebooks-in-the-terminal.png b/static/img/blogposts/full-size-images/nbterm-Jupyter-Notebooks-in-the-terminal.png similarity index 100% rename from static/img/blogposts/nbterm-Jupyter-Notebooks-in-the-terminal.png rename to static/img/blogposts/full-size-images/nbterm-Jupyter-Notebooks-in-the-terminal.png diff --git a/static/img/blogposts/sparrow.png b/static/img/blogposts/full-size-images/sparrow.png similarity index 100% rename from static/img/blogposts/sparrow.png rename to static/img/blogposts/full-size-images/sparrow.png diff --git a/static/img/blogposts/zarray-a-dynamic-expression-system-based-on-xtensor.png b/static/img/blogposts/full-size-images/zarray-a-dynamic-expression-system-based-on-xtensor.png similarity index 100% rename from static/img/blogposts/zarray-a-dynamic-expression-system-based-on-xtensor.png rename to static/img/blogposts/full-size-images/zarray-a-dynamic-expression-system-based-on-xtensor.png diff --git a/static/img/blogposts/A-Diagram-Editor-for-JupyterLab.gif b/static/img/blogposts/gifs/A-Diagram-Editor-for-JupyterLab.gif similarity index 100% rename from static/img/blogposts/A-Diagram-Editor-for-JupyterLab.gif rename to static/img/blogposts/gifs/A-Diagram-Editor-for-JupyterLab.gif diff --git a/static/img/blogposts/A-Visual-Debuger-for-Jupyter.gif b/static/img/blogposts/gifs/A-Visual-Debuger-for-Jupyter.gif similarity index 100% rename from static/img/blogposts/A-Visual-Debuger-for-Jupyter.gif rename to static/img/blogposts/gifs/A-Visual-Debuger-for-Jupyter.gif diff --git a/static/img/blogposts/Abracadabra-Bringing-the-Magics-to-Xeus-Python.gif b/static/img/blogposts/gifs/Abracadabra-Bringing-the-Magics-to-Xeus-Python.gif similarity index 100% rename from static/img/blogposts/Abracadabra-Bringing-the-Magics-to-Xeus-Python.gif rename to static/img/blogposts/gifs/Abracadabra-Bringing-the-Magics-to-Xeus-Python.gif diff --git a/static/img/blogposts/Authoring-Custom-Jupyter-Widgets.gif b/static/img/blogposts/gifs/Authoring-Custom-Jupyter-Widgets.gif similarity index 100% rename from static/img/blogposts/Authoring-Custom-Jupyter-Widgets.gif rename to static/img/blogposts/gifs/Authoring-Custom-Jupyter-Widgets.gif diff --git a/static/img/blogposts/Configure-your-Dashboards-with-the-Voila-Gridstack-Template.gif b/static/img/blogposts/gifs/Configure-your-Dashboards-with-the-Voila-Gridstack-Template.gif similarity index 100% rename from static/img/blogposts/Configure-your-Dashboards-with-the-Voila-Gridstack-Template.gif rename to static/img/blogposts/gifs/Configure-your-Dashboards-with-the-Voila-Gridstack-Template.gif diff --git a/static/img/blogposts/Dashboarding-with-JupyterLab-3-0.gif b/static/img/blogposts/gifs/Dashboarding-with-JupyterLab-3-0.gif similarity index 100% rename from static/img/blogposts/Dashboarding-with-JupyterLab-3-0.gif rename to static/img/blogposts/gifs/Dashboarding-with-JupyterLab-3-0.gif diff --git a/static/img/blogposts/Embed-interactive-itkwidgets-3D-renderings-into-JupyterLite-deployments.gif b/static/img/blogposts/gifs/Embed-interactive-itkwidgets-3D-renderings-into-JupyterLite-deployments.gif similarity index 100% rename from static/img/blogposts/Embed-interactive-itkwidgets-3D-renderings-into-JupyterLite-deployments.gif rename to static/img/blogposts/gifs/Embed-interactive-itkwidgets-3D-renderings-into-JupyterLite-deployments.gif diff --git a/static/img/blogposts/Enabling-the-JupyterLab-Debugger-with-ipykernel.gif b/static/img/blogposts/gifs/Enabling-the-JupyterLab-Debugger-with-ipykernel.gif similarity index 100% rename from static/img/blogposts/Enabling-the-JupyterLab-Debugger-with-ipykernel.gif rename to static/img/blogposts/gifs/Enabling-the-JupyterLab-Debugger-with-ipykernel.gif diff --git a/static/img/blogposts/Genomic-Data-representation-in-Jupyter.gif b/static/img/blogposts/gifs/Genomic-Data-representation-in-Jupyter.gif similarity index 100% rename from static/img/blogposts/Genomic-Data-representation-in-Jupyter.gif rename to static/img/blogposts/gifs/Genomic-Data-representation-in-Jupyter.gif diff --git a/static/img/blogposts/Interactive-GIS-in-Jupyter-with-IPyleaflet.gif b/static/img/blogposts/gifs/Interactive-GIS-in-Jupyter-with-IPyleaflet.gif similarity index 100% rename from static/img/blogposts/Interactive-GIS-in-Jupyter-with-IPyleaflet.gif rename to static/img/blogposts/gifs/Interactive-GIS-in-Jupyter-with-IPyleaflet.gif diff --git a/static/img/blogposts/Jupyterlite-Terminal.gif b/static/img/blogposts/gifs/Jupyterlite-Terminal.gif similarity index 100% rename from static/img/blogposts/Jupyterlite-Terminal.gif rename to static/img/blogposts/gifs/Jupyterlite-Terminal.gif diff --git a/static/img/blogposts/gifs/Rhumba-a-Faster-R-Distribution.gif b/static/img/blogposts/gifs/Rhumba-a-Faster-R-Distribution.gif new file mode 100644 index 00000000..c6b1f47e Binary files /dev/null and b/static/img/blogposts/gifs/Rhumba-a-Faster-R-Distribution.gif differ diff --git a/static/img/blogposts/gifs/Rhumba-the-fast-R-distribution-is-available-on-Windows.gif b/static/img/blogposts/gifs/Rhumba-the-fast-R-distribution-is-available-on-Windows.gif new file mode 100644 index 00000000..63533601 Binary files /dev/null and b/static/img/blogposts/gifs/Rhumba-the-fast-R-distribution-is-available-on-Windows.gif differ diff --git a/static/img/blogposts/Video-Streaming-in-the-Jupyter-Notebook.gif b/static/img/blogposts/gifs/Video-Streaming-in-the-Jupyter-Notebook.gif similarity index 100% rename from static/img/blogposts/Video-Streaming-in-the-Jupyter-Notebook.gif rename to static/img/blogposts/gifs/Video-Streaming-in-the-Jupyter-Notebook.gif diff --git a/static/img/blogposts/resized-images/2019-in-Review.png b/static/img/blogposts/resized-images/2019-in-Review.png new file mode 100644 index 00000000..360768f1 Binary files /dev/null and b/static/img/blogposts/resized-images/2019-in-Review.png differ diff --git a/static/img/blogposts/resized-images/A-C++-API-for-Vega-Lite.png b/static/img/blogposts/resized-images/A-C++-API-for-Vega-Lite.png new file mode 100644 index 00000000..4b4cd630 Binary files /dev/null and b/static/img/blogposts/resized-images/A-C++-API-for-Vega-Lite.png differ diff --git a/static/img/blogposts/resized-images/A-Curiously-Recurring-Widget-Library.png b/static/img/blogposts/resized-images/A-Curiously-Recurring-Widget-Library.png new file mode 100644 index 00000000..7ede7bf7 Binary files /dev/null and b/static/img/blogposts/resized-images/A-Curiously-Recurring-Widget-Library.png differ diff --git a/static/img/blogposts/resized-images/A-Diagram-Editor-for-JupyterLab.png b/static/img/blogposts/resized-images/A-Diagram-Editor-for-JupyterLab.png new file mode 100644 index 00000000..a74120b4 Binary files /dev/null and b/static/img/blogposts/resized-images/A-Diagram-Editor-for-JupyterLab.png differ diff --git a/static/img/blogposts/resized-images/A-Jupyter-Kernel-for-SQLite.png b/static/img/blogposts/resized-images/A-Jupyter-Kernel-for-SQLite.png new file mode 100644 index 00000000..0038232f Binary files /dev/null and b/static/img/blogposts/resized-images/A-Jupyter-Kernel-for-SQLite.png differ diff --git a/static/img/blogposts/resized-images/A-Jupyter-kernel-for-GNU-Octave.png b/static/img/blogposts/resized-images/A-Jupyter-kernel-for-GNU-Octave.png new file mode 100644 index 00000000..02bd6249 Binary files /dev/null and b/static/img/blogposts/resized-images/A-Jupyter-kernel-for-GNU-Octave.png differ diff --git a/static/img/blogposts/resized-images/A-New-Python-Kernel-for-Jupyter.png b/static/img/blogposts/resized-images/A-New-Python-Kernel-for-Jupyter.png new file mode 100644 index 00000000..eac4bfeb Binary files /dev/null and b/static/img/blogposts/resized-images/A-New-Python-Kernel-for-Jupyter.png differ diff --git a/static/img/blogposts/resized-images/A-Slideshow-template-for-Voila.png b/static/img/blogposts/resized-images/A-Slideshow-template-for-Voila.png new file mode 100644 index 00000000..0b35358f Binary files /dev/null and b/static/img/blogposts/resized-images/A-Slideshow-template-for-Voila.png differ diff --git a/static/img/blogposts/resized-images/A-Visual-Debuger-for-Jupyter.png b/static/img/blogposts/resized-images/A-Visual-Debuger-for-Jupyter.png new file mode 100644 index 00000000..16bd2f50 Binary files /dev/null and b/static/img/blogposts/resized-images/A-Visual-Debuger-for-Jupyter.png differ diff --git a/static/img/blogposts/resized-images/A-theme-editor-for-JupyterLab.png b/static/img/blogposts/resized-images/A-theme-editor-for-JupyterLab.png new file mode 100644 index 00000000..e2ffc943 Binary files /dev/null and b/static/img/blogposts/resized-images/A-theme-editor-for-JupyterLab.png differ diff --git a/static/img/blogposts/resized-images/Abracadabra-Bringing-the-Magics-to-Xeus-Python.png b/static/img/blogposts/resized-images/Abracadabra-Bringing-the-Magics-to-Xeus-Python.png new file mode 100644 index 00000000..78886e36 Binary files /dev/null and b/static/img/blogposts/resized-images/Abracadabra-Bringing-the-Magics-to-Xeus-Python.png differ diff --git a/static/img/blogposts/resized-images/Accelerating-JupyterLab.png b/static/img/blogposts/resized-images/Accelerating-JupyterLab.png new file mode 100644 index 00000000..82da30aa Binary files /dev/null and b/static/img/blogposts/resized-images/Accelerating-JupyterLab.png differ diff --git a/static/img/blogposts/resized-images/An-SQL-Solution-for-Jupyter.png b/static/img/blogposts/resized-images/An-SQL-Solution-for-Jupyter.png new file mode 100644 index 00000000..84ae7e8c Binary files /dev/null and b/static/img/blogposts/resized-images/An-SQL-Solution-for-Jupyter.png differ diff --git a/static/img/blogposts/resized-images/And-Voici.png b/static/img/blogposts/resized-images/And-Voici.png new file mode 100644 index 00000000..60a86331 Binary files /dev/null and b/static/img/blogposts/resized-images/And-Voici.png differ diff --git a/static/img/blogposts/resized-images/And-Voila.png b/static/img/blogposts/resized-images/And-Voila.png new file mode 100644 index 00000000..c02b0d54 Binary files /dev/null and b/static/img/blogposts/resized-images/And-Voila.png differ diff --git a/static/img/blogposts/resized-images/Announcing-Jupyter-Notebook-7.jpg b/static/img/blogposts/resized-images/Announcing-Jupyter-Notebook-7.jpg new file mode 100644 index 00000000..984ae44e Binary files /dev/null and b/static/img/blogposts/resized-images/Announcing-Jupyter-Notebook-7.jpg differ diff --git a/static/img/blogposts/resized-images/Announcing-JupyterCAD-3.0.png b/static/img/blogposts/resized-images/Announcing-JupyterCAD-3.0.png new file mode 100644 index 00000000..9acd36ca Binary files /dev/null and b/static/img/blogposts/resized-images/Announcing-JupyterCAD-3.0.png differ diff --git a/static/img/blogposts/resized-images/Announcing-PyData-Paris-2024.png b/static/img/blogposts/resized-images/Announcing-PyData-Paris-2024.png new file mode 100644 index 00000000..95c0226e Binary files /dev/null and b/static/img/blogposts/resized-images/Announcing-PyData-Paris-2024.png differ diff --git a/static/img/blogposts/resized-images/Announcing-the-2023-Jupyter-Distinguished-Contributors.png b/static/img/blogposts/resized-images/Announcing-the-2023-Jupyter-Distinguished-Contributors.png new file mode 100644 index 00000000..350a45c7 Binary files /dev/null and b/static/img/blogposts/resized-images/Announcing-the-2023-Jupyter-Distinguished-Contributors.png differ diff --git a/static/img/blogposts/resized-images/Authoring-Custom-Jupyter-Widgets.png b/static/img/blogposts/resized-images/Authoring-Custom-Jupyter-Widgets.png new file mode 100644 index 00000000..4a8cf571 Binary files /dev/null and b/static/img/blogposts/resized-images/Authoring-Custom-Jupyter-Widgets.png differ diff --git a/static/img/blogposts/resized-images/Automate-releases-jupyter-releaser.png b/static/img/blogposts/resized-images/Automate-releases-jupyter-releaser.png new file mode 100644 index 00000000..6899c768 Binary files /dev/null and b/static/img/blogposts/resized-images/Automate-releases-jupyter-releaser.png differ diff --git a/static/img/blogposts/resized-images/Building-a-Calculator-Jupyter-Kernel.png b/static/img/blogposts/resized-images/Building-a-Calculator-Jupyter-Kernel.png new file mode 100644 index 00000000..18d8ef8f Binary files /dev/null and b/static/img/blogposts/resized-images/Building-a-Calculator-Jupyter-Kernel.png differ diff --git a/static/img/blogposts/resized-images/Building-an-Open-Source-Continuous-Benchmark-System.png b/static/img/blogposts/resized-images/Building-an-Open-Source-Continuous-Benchmark-System.png new file mode 100644 index 00000000..2bb6c425 Binary files /dev/null and b/static/img/blogposts/resized-images/Building-an-Open-Source-Continuous-Benchmark-System.png differ diff --git a/static/img/blogposts/resized-images/Bye-bye-Boost-SIMD-Welcome-XSimd.png b/static/img/blogposts/resized-images/Bye-bye-Boost-SIMD-Welcome-XSimd.png new file mode 100644 index 00000000..d7deaa8b Binary files /dev/null and b/static/img/blogposts/resized-images/Bye-bye-Boost-SIMD-Welcome-XSimd.png differ diff --git a/static/img/blogposts/resized-images/Collaborative-CAD-in-JupyterLab.png b/static/img/blogposts/resized-images/Collaborative-CAD-in-JupyterLab.png new file mode 100644 index 00000000..e5ff9755 Binary files /dev/null and b/static/img/blogposts/resized-images/Collaborative-CAD-in-JupyterLab.png differ diff --git a/static/img/blogposts/resized-images/Collaborative-GIS.png b/static/img/blogposts/resized-images/Collaborative-GIS.png new file mode 100644 index 00000000..b77a1ca5 Binary files /dev/null and b/static/img/blogposts/resized-images/Collaborative-GIS.png differ diff --git a/static/img/blogposts/resized-images/Collaborative-Qt.png b/static/img/blogposts/resized-images/Collaborative-Qt.png new file mode 100644 index 00000000..07a1f146 Binary files /dev/null and b/static/img/blogposts/resized-images/Collaborative-Qt.png differ diff --git a/static/img/blogposts/resized-images/Commit.png b/static/img/blogposts/resized-images/Commit.png new file mode 100644 index 00000000..4b8034a1 Binary files /dev/null and b/static/img/blogposts/resized-images/Commit.png differ diff --git a/static/img/blogposts/resized-images/Configure-your-Dashboards-with-the-Voila-Gridstack-Template.png b/static/img/blogposts/resized-images/Configure-your-Dashboards-with-the-Voila-Gridstack-Template.png new file mode 100644 index 00000000..4c4db9b5 Binary files /dev/null and b/static/img/blogposts/resized-images/Configure-your-Dashboards-with-the-Voila-Gridstack-Template.png differ diff --git a/static/img/blogposts/resized-images/Congratulations-Distinguished-Contributors-2025.png b/static/img/blogposts/resized-images/Congratulations-Distinguished-Contributors-2025.png new file mode 100644 index 00000000..70f81816 Binary files /dev/null and b/static/img/blogposts/resized-images/Congratulations-Distinguished-Contributors-2025.png differ diff --git a/static/img/blogposts/resized-images/Congratulations-Distinguished-Contributors.png b/static/img/blogposts/resized-images/Congratulations-Distinguished-Contributors.png new file mode 100644 index 00000000..88f2125a Binary files /dev/null and b/static/img/blogposts/resized-images/Congratulations-Distinguished-Contributors.png differ diff --git a/static/img/blogposts/resized-images/Cross-platform-Conda-Packages-for-ROS.jpg b/static/img/blogposts/resized-images/Cross-platform-Conda-Packages-for-ROS.jpg new file mode 100644 index 00000000..a2077f43 Binary files /dev/null and b/static/img/blogposts/resized-images/Cross-platform-Conda-Packages-for-ROS.jpg differ diff --git a/static/img/blogposts/resized-images/Dashboarding-with-JupyterLab-3-0.png b/static/img/blogposts/resized-images/Dashboarding-with-JupyterLab-3-0.png new file mode 100644 index 00000000..045f3076 Binary files /dev/null and b/static/img/blogposts/resized-images/Dashboarding-with-JupyterLab-3-0.png differ diff --git a/static/img/blogposts/resized-images/Designing-Language-Bindings-with-Xtensor.png b/static/img/blogposts/resized-images/Designing-Language-Bindings-with-Xtensor.png new file mode 100644 index 00000000..d3441c76 Binary files /dev/null and b/static/img/blogposts/resized-images/Designing-Language-Bindings-with-Xtensor.png differ diff --git a/static/img/blogposts/resized-images/Embed-interactive-itkwidgets-3D-renderings-into-JupyterLite-deployments.png b/static/img/blogposts/resized-images/Embed-interactive-itkwidgets-3D-renderings-into-JupyterLite-deployments.png new file mode 100644 index 00000000..6dc5d15c Binary files /dev/null and b/static/img/blogposts/resized-images/Embed-interactive-itkwidgets-3D-renderings-into-JupyterLite-deployments.png differ diff --git a/static/img/blogposts/resized-images/Enabling-the-JupyterLab-Debugger-with-ipykernel.png b/static/img/blogposts/resized-images/Enabling-the-JupyterLab-Debugger-with-ipykernel.png new file mode 100644 index 00000000..96330ea1 Binary files /dev/null and b/static/img/blogposts/resized-images/Enabling-the-JupyterLab-Debugger-with-ipykernel.png differ diff --git a/static/img/blogposts/resized-images/Fast-Reductions-in-Xtensor-with-Xsimd.png b/static/img/blogposts/resized-images/Fast-Reductions-in-Xtensor-with-Xsimd.png new file mode 100644 index 00000000..18d1a2a2 Binary files /dev/null and b/static/img/blogposts/resized-images/Fast-Reductions-in-Xtensor-with-Xsimd.png differ diff --git a/static/img/blogposts/resized-images/Faster-Xtensor.png b/static/img/blogposts/resized-images/Faster-Xtensor.png new file mode 100644 index 00000000..33d57a47 Binary files /dev/null and b/static/img/blogposts/resized-images/Faster-Xtensor.png differ diff --git a/static/img/blogposts/resized-images/Field-Report-on-the-Jupyter-Community-Workshop-on-Dashboarding.png b/static/img/blogposts/resized-images/Field-Report-on-the-Jupyter-Community-Workshop-on-Dashboarding.png new file mode 100644 index 00000000..fc4a9550 Binary files /dev/null and b/static/img/blogposts/resized-images/Field-Report-on-the-Jupyter-Community-Workshop-on-Dashboarding.png differ diff --git a/static/img/blogposts/resized-images/Field-Report-on-the-Kernel-Community-Workshop.png b/static/img/blogposts/resized-images/Field-Report-on-the-Kernel-Community-Workshop.png new file mode 100644 index 00000000..9a10f1ac Binary files /dev/null and b/static/img/blogposts/resized-images/Field-Report-on-the-Kernel-Community-Workshop.png differ diff --git a/static/img/blogposts/resized-images/From-Jupyter-to-the-Moon.png b/static/img/blogposts/resized-images/From-Jupyter-to-the-Moon.png new file mode 100644 index 00000000..1a7d386c Binary files /dev/null and b/static/img/blogposts/resized-images/From-Jupyter-to-the-Moon.png differ diff --git a/static/img/blogposts/resized-images/Genomic-Data-representation-in-Jupyter.png b/static/img/blogposts/resized-images/Genomic-Data-representation-in-Jupyter.png new file mode 100644 index 00000000..e88898a3 Binary files /dev/null and b/static/img/blogposts/resized-images/Genomic-Data-representation-in-Jupyter.png differ diff --git a/static/img/blogposts/resized-images/HTML5--based-renderer-for-Matplotlib-in-Pyodide.png b/static/img/blogposts/resized-images/HTML5--based-renderer-for-Matplotlib-in-Pyodide.png new file mode 100644 index 00000000..d44d7a5a Binary files /dev/null and b/static/img/blogposts/resized-images/HTML5--based-renderer-for-Matplotlib-in-Pyodide.png differ diff --git a/static/img/blogposts/resized-images/How-we-Wrote-Xtensor-Episode-1-N-Dimensional-Containers.png b/static/img/blogposts/resized-images/How-we-Wrote-Xtensor-Episode-1-N-Dimensional-Containers.png new file mode 100644 index 00000000..2df9d235 Binary files /dev/null and b/static/img/blogposts/resized-images/How-we-Wrote-Xtensor-Episode-1-N-Dimensional-Containers.png differ diff --git a/static/img/blogposts/resized-images/How-we-Wrote-Xtensor-Episode-2-Access-Operators.png b/static/img/blogposts/resized-images/How-we-Wrote-Xtensor-Episode-2-Access-Operators.png new file mode 100644 index 00000000..61aa7543 Binary files /dev/null and b/static/img/blogposts/resized-images/How-we-Wrote-Xtensor-Episode-2-Access-Operators.png differ diff --git a/static/img/blogposts/resized-images/How-we-Wrote-Xtensor-Episode-3-The-Constructors.png b/static/img/blogposts/resized-images/How-we-Wrote-Xtensor-Episode-3-The-Constructors.png new file mode 100644 index 00000000..61aa7543 Binary files /dev/null and b/static/img/blogposts/resized-images/How-we-Wrote-Xtensor-Episode-3-The-Constructors.png differ diff --git a/static/img/blogposts/resized-images/How-we-Wrote-Xtensor-Episode-4-Value-Semantics.png b/static/img/blogposts/resized-images/How-we-Wrote-Xtensor-Episode-4-Value-Semantics.png new file mode 100644 index 00000000..61aa7543 Binary files /dev/null and b/static/img/blogposts/resized-images/How-we-Wrote-Xtensor-Episode-4-Value-Semantics.png differ diff --git a/static/img/blogposts/resized-images/How-we-Wrote-Xtensor-Episode-5-Expression-Templates.png b/static/img/blogposts/resized-images/How-we-Wrote-Xtensor-Episode-5-Expression-Templates.png new file mode 100644 index 00000000..d9098291 Binary files /dev/null and b/static/img/blogposts/resized-images/How-we-Wrote-Xtensor-Episode-5-Expression-Templates.png differ diff --git a/static/img/blogposts/resized-images/How-we-Wrote-Xtensor-Episode-6-Operator-Overloading.png b/static/img/blogposts/resized-images/How-we-Wrote-Xtensor-Episode-6-Operator-Overloading.png new file mode 100644 index 00000000..99cec4be Binary files /dev/null and b/static/img/blogposts/resized-images/How-we-Wrote-Xtensor-Episode-6-Operator-Overloading.png differ diff --git a/static/img/blogposts/resized-images/How-we-Wrote-Xtensor-Episode-7-Broadcasting.png b/static/img/blogposts/resized-images/How-we-Wrote-Xtensor-Episode-7-Broadcasting.png new file mode 100644 index 00000000..794a86de Binary files /dev/null and b/static/img/blogposts/resized-images/How-we-Wrote-Xtensor-Episode-7-Broadcasting.png differ diff --git a/static/img/blogposts/resized-images/How-we-Wrote-Xtensor-Episode-8-Iterators.png b/static/img/blogposts/resized-images/How-we-Wrote-Xtensor-Episode-8-Iterators.png new file mode 100644 index 00000000..794a86de Binary files /dev/null and b/static/img/blogposts/resized-images/How-we-Wrote-Xtensor-Episode-8-Iterators.png differ diff --git a/static/img/blogposts/resized-images/How-we-made-Jupyter-notebooks-collaborative-with-Yjs.png b/static/img/blogposts/resized-images/How-we-made-Jupyter-notebooks-collaborative-with-Yjs.png new file mode 100644 index 00000000..d9a9e149 Binary files /dev/null and b/static/img/blogposts/resized-images/How-we-made-Jupyter-notebooks-collaborative-with-Yjs.png differ diff --git a/static/img/blogposts/resized-images/IPycanvas-a-Python-Canvas-for-Jupyter.png b/static/img/blogposts/resized-images/IPycanvas-a-Python-Canvas-for-Jupyter.png new file mode 100644 index 00000000..369c6cd2 Binary files /dev/null and b/static/img/blogposts/resized-images/IPycanvas-a-Python-Canvas-for-Jupyter.png differ diff --git a/static/img/blogposts/resized-images/Improving-the-accessibility-of-Jupyter.png b/static/img/blogposts/resized-images/Improving-the-accessibility-of-Jupyter.png new file mode 100644 index 00000000..8161d09b Binary files /dev/null and b/static/img/blogposts/resized-images/Improving-the-accessibility-of-Jupyter.png differ diff --git a/static/img/blogposts/resized-images/In-memoriam-Fanny-Loustau-Chartez.jpg b/static/img/blogposts/resized-images/In-memoriam-Fanny-Loustau-Chartez.jpg new file mode 100644 index 00000000..0e6c1598 Binary files /dev/null and b/static/img/blogposts/resized-images/In-memoriam-Fanny-Loustau-Chartez.jpg differ diff --git a/static/img/blogposts/resized-images/Inspector-JupyterLab.png b/static/img/blogposts/resized-images/Inspector-JupyterLab.png new file mode 100644 index 00000000..62d5923b Binary files /dev/null and b/static/img/blogposts/resized-images/Inspector-JupyterLab.png differ diff --git a/static/img/blogposts/resized-images/Interactive-C++-for-Data-Science.png b/static/img/blogposts/resized-images/Interactive-C++-for-Data-Science.png new file mode 100644 index 00000000..738e526d Binary files /dev/null and b/static/img/blogposts/resized-images/Interactive-C++-for-Data-Science.png differ diff --git a/static/img/blogposts/resized-images/Interactive-GIS-in-Jupyter-with-IPyleaflet.png b/static/img/blogposts/resized-images/Interactive-GIS-in-Jupyter-with-IPyleaflet.png new file mode 100644 index 00000000..0cb6b457 Binary files /dev/null and b/static/img/blogposts/resized-images/Interactive-GIS-in-Jupyter-with-IPyleaflet.png differ diff --git a/static/img/blogposts/resized-images/Interactive-Graph-Visualization-in-Jupyter-with-IPycytoscape.png b/static/img/blogposts/resized-images/Interactive-Graph-Visualization-in-Jupyter-with-IPycytoscape.png new file mode 100644 index 00000000..8f2b8a72 Binary files /dev/null and b/static/img/blogposts/resized-images/Interactive-Graph-Visualization-in-Jupyter-with-IPycytoscape.png differ diff --git a/static/img/blogposts/resized-images/Interactive-Mapping-with-ipyopenlayers.png b/static/img/blogposts/resized-images/Interactive-Mapping-with-ipyopenlayers.png new file mode 100644 index 00000000..e4466298 Binary files /dev/null and b/static/img/blogposts/resized-images/Interactive-Mapping-with-ipyopenlayers.png differ diff --git a/static/img/blogposts/resized-images/Interactive-Workflows-for-C++-with-Jupyter.png b/static/img/blogposts/resized-images/Interactive-Workflows-for-C++-with-Jupyter.png new file mode 100644 index 00000000..14252c14 Binary files /dev/null and b/static/img/blogposts/resized-images/Interactive-Workflows-for-C++-with-Jupyter.png differ diff --git a/static/img/blogposts/resized-images/Interactive-spreadsheets-in-Jupyter.png b/static/img/blogposts/resized-images/Interactive-spreadsheets-in-Jupyter.png new file mode 100644 index 00000000..966a0c0f Binary files /dev/null and b/static/img/blogposts/resized-images/Interactive-spreadsheets-in-Jupyter.png differ diff --git a/static/img/blogposts/resized-images/Interpreter-C++-for-GIS-with-Jupyter.png b/static/img/blogposts/resized-images/Interpreter-C++-for-GIS-with-Jupyter.png new file mode 100644 index 00000000..568d3a90 Binary files /dev/null and b/static/img/blogposts/resized-images/Interpreter-C++-for-GIS-with-Jupyter.png differ diff --git a/static/img/blogposts/resized-images/Introducing-Mamba-2-0.png b/static/img/blogposts/resized-images/Introducing-Mamba-2-0.png new file mode 100644 index 00000000..7232c50b Binary files /dev/null and b/static/img/blogposts/resized-images/Introducing-Mamba-2-0.png differ diff --git a/static/img/blogposts/resized-images/Introducing-Scikit-Geometry.png b/static/img/blogposts/resized-images/Introducing-Scikit-Geometry.png new file mode 100644 index 00000000..eadbfaa1 Binary files /dev/null and b/static/img/blogposts/resized-images/Introducing-Scikit-Geometry.png differ diff --git a/static/img/blogposts/resized-images/Introducing-Templates-for-Jupyter-Widget-Layouts.png b/static/img/blogposts/resized-images/Introducing-Templates-for-Jupyter-Widget-Layouts.png new file mode 100644 index 00000000..80304266 Binary files /dev/null and b/static/img/blogposts/resized-images/Introducing-Templates-for-Jupyter-Widget-Layouts.png differ diff --git a/static/img/blogposts/resized-images/Ipydatagrid-is-now-part-of-ProjectJupyter.png b/static/img/blogposts/resized-images/Ipydatagrid-is-now-part-of-ProjectJupyter.png new file mode 100644 index 00000000..97b649ad Binary files /dev/null and b/static/img/blogposts/resized-images/Ipydatagrid-is-now-part-of-ProjectJupyter.png differ diff --git a/static/img/blogposts/resized-images/Ipygany-Jupyter-into-the-Third-Dimension.png b/static/img/blogposts/resized-images/Ipygany-Jupyter-into-the-Third-Dimension.png new file mode 100644 index 00000000..604ebb27 Binary files /dev/null and b/static/img/blogposts/resized-images/Ipygany-Jupyter-into-the-Third-Dimension.png differ diff --git a/static/img/blogposts/resized-images/Jupyter-Cytoscape.png b/static/img/blogposts/resized-images/Jupyter-Cytoscape.png new file mode 100644 index 00000000..fa169ca4 Binary files /dev/null and b/static/img/blogposts/resized-images/Jupyter-Cytoscape.png differ diff --git a/static/img/blogposts/resized-images/Jupyter-Everywhere.jpg b/static/img/blogposts/resized-images/Jupyter-Everywhere.jpg new file mode 100644 index 00000000..58ca2485 Binary files /dev/null and b/static/img/blogposts/resized-images/Jupyter-Everywhere.jpg differ diff --git a/static/img/blogposts/resized-images/Jupyter-Games.png b/static/img/blogposts/resized-images/Jupyter-Games.png new file mode 100644 index 00000000..19b3d3b6 Binary files /dev/null and b/static/img/blogposts/resized-images/Jupyter-Games.png differ diff --git a/static/img/blogposts/resized-images/Jupyter-Receives-the-ACM-Software-System-Award.png b/static/img/blogposts/resized-images/Jupyter-Receives-the-ACM-Software-System-Award.png new file mode 100644 index 00000000..83905ff0 Binary files /dev/null and b/static/img/blogposts/resized-images/Jupyter-Receives-the-ACM-Software-System-Award.png differ diff --git a/static/img/blogposts/resized-images/Jupyter-WebAssembly-Python.png b/static/img/blogposts/resized-images/Jupyter-WebAssembly-Python.png new file mode 100644 index 00000000..58f4f5a5 Binary files /dev/null and b/static/img/blogposts/resized-images/Jupyter-WebAssembly-Python.png differ diff --git a/static/img/blogposts/resized-images/JupyterCAD-2-0.png b/static/img/blogposts/resized-images/JupyterCAD-2-0.png new file mode 100644 index 00000000..9a27fb0b Binary files /dev/null and b/static/img/blogposts/resized-images/JupyterCAD-2-0.png differ diff --git a/static/img/blogposts/resized-images/JupyterCon-2023-recordings-now-live-on-YouTube.png b/static/img/blogposts/resized-images/JupyterCon-2023-recordings-now-live-on-YouTube.png new file mode 100644 index 00000000..5cc21ef3 Binary files /dev/null and b/static/img/blogposts/resized-images/JupyterCon-2023-recordings-now-live-on-YouTube.png differ diff --git a/static/img/blogposts/resized-images/JupyterCon-is-back-in-2023.png b/static/img/blogposts/resized-images/JupyterCon-is-back-in-2023.png new file mode 100644 index 00000000..826f4d91 Binary files /dev/null and b/static/img/blogposts/resized-images/JupyterCon-is-back-in-2023.png differ diff --git a/static/img/blogposts/resized-images/JupyterGIS.png b/static/img/blogposts/resized-images/JupyterGIS.png new file mode 100644 index 00000000..c9804c6c Binary files /dev/null and b/static/img/blogposts/resized-images/JupyterGIS.png differ diff --git a/static/img/blogposts/resized-images/JupyterLab-3-0-is-Released.png b/static/img/blogposts/resized-images/JupyterLab-3-0-is-Released.png new file mode 100644 index 00000000..a3cfbd54 Binary files /dev/null and b/static/img/blogposts/resized-images/JupyterLab-3-0-is-Released.png differ diff --git a/static/img/blogposts/resized-images/JupyterLab-44.png b/static/img/blogposts/resized-images/JupyterLab-44.png new file mode 100644 index 00000000..34be9736 Binary files /dev/null and b/static/img/blogposts/resized-images/JupyterLab-44.png differ diff --git a/static/img/blogposts/resized-images/JupyterLab-the-Cloud-Robotics-Command-Station.png b/static/img/blogposts/resized-images/JupyterLab-the-Cloud-Robotics-Command-Station.png new file mode 100644 index 00000000..1b5a56a7 Binary files /dev/null and b/static/img/blogposts/resized-images/JupyterLab-the-Cloud-Robotics-Command-Station.png differ diff --git a/static/img/blogposts/resized-images/JupyterLite-06.png b/static/img/blogposts/resized-images/JupyterLite-06.png new file mode 100644 index 00000000..99242f1f Binary files /dev/null and b/static/img/blogposts/resized-images/JupyterLite-06.png differ diff --git a/static/img/blogposts/resized-images/Jupyterlite-Terminal.png b/static/img/blogposts/resized-images/Jupyterlite-Terminal.png new file mode 100644 index 00000000..d347772d Binary files /dev/null and b/static/img/blogposts/resized-images/Jupyterlite-Terminal.png differ diff --git a/static/img/blogposts/resized-images/Le-calcul-haute-performance-au-service-de-l'innovation-in-French.png b/static/img/blogposts/resized-images/Le-calcul-haute-performance-au-service-de-l'innovation-in-French.png new file mode 100644 index 00000000..18cee318 Binary files /dev/null and b/static/img/blogposts/resized-images/Le-calcul-haute-performance-au-service-de-l'innovation-in-French.png differ diff --git a/static/img/blogposts/resized-images/Looking-at-notebooks-from-a-new-perspective.png b/static/img/blogposts/resized-images/Looking-at-notebooks-from-a-new-perspective.png new file mode 100644 index 00000000..1dc7d70b Binary files /dev/null and b/static/img/blogposts/resized-images/Looking-at-notebooks-from-a-new-perspective.png differ diff --git a/static/img/blogposts/resized-images/Making-Conda-Fast-Again.png b/static/img/blogposts/resized-images/Making-Conda-Fast-Again.png new file mode 100644 index 00000000..2a8b07a6 Binary files /dev/null and b/static/img/blogposts/resized-images/Making-Conda-Fast-Again.png differ diff --git a/static/img/blogposts/resized-images/Mamba-0-15-0.png b/static/img/blogposts/resized-images/Mamba-0-15-0.png new file mode 100644 index 00000000..cb12b177 Binary files /dev/null and b/static/img/blogposts/resized-images/Mamba-0-15-0.png differ diff --git a/static/img/blogposts/resized-images/Mamba-Development-News.png b/static/img/blogposts/resized-images/Mamba-Development-News.png new file mode 100644 index 00000000..9456c5d5 Binary files /dev/null and b/static/img/blogposts/resized-images/Mamba-Development-News.png differ diff --git a/static/img/blogposts/resized-images/Mamba-meets-JupyterLite.png b/static/img/blogposts/resized-images/Mamba-meets-JupyterLite.png new file mode 100644 index 00000000..adae9671 Binary files /dev/null and b/static/img/blogposts/resized-images/Mamba-meets-JupyterLite.png differ diff --git a/static/img/blogposts/resized-images/Managing-conflicts-with-Mamba.png b/static/img/blogposts/resized-images/Managing-conflicts-with-Mamba.png new file mode 100644 index 00000000..a72c57ad Binary files /dev/null and b/static/img/blogposts/resized-images/Managing-conflicts-with-Mamba.png differ diff --git a/static/img/blogposts/resized-images/Meet-Xeus-R-a-future-proof-Jupyter-kernel-for-R.png b/static/img/blogposts/resized-images/Meet-Xeus-R-a-future-proof-Jupyter-kernel-for-R.png new file mode 100644 index 00000000..765b2e57 Binary files /dev/null and b/static/img/blogposts/resized-images/Meet-Xeus-R-a-future-proof-Jupyter-kernel-for-R.png differ diff --git a/static/img/blogposts/resized-images/Memestra.png b/static/img/blogposts/resized-images/Memestra.png new file mode 100644 index 00000000..a6cc39ec Binary files /dev/null and b/static/img/blogposts/resized-images/Memestra.png differ diff --git a/static/img/blogposts/resized-images/Need-for-speed-Voila-edition.png b/static/img/blogposts/resized-images/Need-for-speed-Voila-edition.png new file mode 100644 index 00000000..f8c8ff5b Binary files /dev/null and b/static/img/blogposts/resized-images/Need-for-speed-Voila-edition.png differ diff --git a/static/img/blogposts/resized-images/Open-Software-Packaging-for-Science.png b/static/img/blogposts/resized-images/Open-Software-Packaging-for-Science.png new file mode 100644 index 00000000..7232c50b Binary files /dev/null and b/static/img/blogposts/resized-images/Open-Software-Packaging-for-Science.png differ diff --git a/static/img/blogposts/resized-images/PLASMA-a-Learning-Platform-Powered-by-Jupyter.png b/static/img/blogposts/resized-images/PLASMA-a-Learning-Platform-Powered-by-Jupyter.png new file mode 100644 index 00000000..ffaf146a Binary files /dev/null and b/static/img/blogposts/resized-images/PLASMA-a-Learning-Platform-Powered-by-Jupyter.png differ diff --git a/static/img/blogposts/resized-images/Plug-your-application-into-the-Jupyter-world.png b/static/img/blogposts/resized-images/Plug-your-application-into-the-Jupyter-world.png new file mode 100644 index 00000000..2abef2ea Binary files /dev/null and b/static/img/blogposts/resized-images/Plug-your-application-into-the-Jupyter-world.png differ diff --git a/static/img/blogposts/resized-images/PyData-Paris-2025-Keynotes.png b/static/img/blogposts/resized-images/PyData-Paris-2025-Keynotes.png new file mode 100644 index 00000000..88f11b85 Binary files /dev/null and b/static/img/blogposts/resized-images/PyData-Paris-2025-Keynotes.png differ diff --git a/static/img/blogposts/resized-images/QuantStack-2021-in-review.png b/static/img/blogposts/resized-images/QuantStack-2021-in-review.png new file mode 100644 index 00000000..4e0d3b37 Binary files /dev/null and b/static/img/blogposts/resized-images/QuantStack-2021-in-review.png differ diff --git a/static/img/blogposts/resized-images/QuantStack-2022-in-review.png b/static/img/blogposts/resized-images/QuantStack-2022-in-review.png new file mode 100644 index 00000000..755b87d1 Binary files /dev/null and b/static/img/blogposts/resized-images/QuantStack-2022-in-review.png differ diff --git a/static/img/blogposts/resized-images/QuantStack-2023-in-review.png b/static/img/blogposts/resized-images/QuantStack-2023-in-review.png new file mode 100644 index 00000000..58778ecb Binary files /dev/null and b/static/img/blogposts/resized-images/QuantStack-2023-in-review.png differ diff --git a/static/img/blogposts/resized-images/QuantStack-Steps-Up-to-Support-Apache-Arrow-with-New-Dedicated-Team.png b/static/img/blogposts/resized-images/QuantStack-Steps-Up-to-Support-Apache-Arrow-with-New-Dedicated-Team.png new file mode 100644 index 00000000..c0119800 Binary files /dev/null and b/static/img/blogposts/resized-images/QuantStack-Steps-Up-to-Support-Apache-Arrow-with-New-Dedicated-Team.png differ diff --git a/static/img/blogposts/resized-images/QuantStack-open-source-internship-program.png b/static/img/blogposts/resized-images/QuantStack-open-source-internship-program.png new file mode 100644 index 00000000..3b688ff9 Binary files /dev/null and b/static/img/blogposts/resized-images/QuantStack-open-source-internship-program.png differ diff --git a/static/img/blogposts/resized-images/ROS-@-Jupyter.png b/static/img/blogposts/resized-images/ROS-@-Jupyter.png new file mode 100644 index 00000000..d5b09823 Binary files /dev/null and b/static/img/blogposts/resized-images/ROS-@-Jupyter.png differ diff --git a/static/img/blogposts/resized-images/ROS-on-Conda-forge.png b/static/img/blogposts/resized-images/ROS-on-Conda-forge.png new file mode 100644 index 00000000..8291ef02 Binary files /dev/null and b/static/img/blogposts/resized-images/ROS-on-Conda-forge.png differ diff --git a/static/img/blogposts/resized-images/ROS2-support-for-Zethus.png b/static/img/blogposts/resized-images/ROS2-support-for-Zethus.png new file mode 100644 index 00000000..1ee69ec9 Binary files /dev/null and b/static/img/blogposts/resized-images/ROS2-support-for-Zethus.png differ diff --git a/static/img/blogposts/resized-images/Real-time-Rendering-of-Water-Caustics.png b/static/img/blogposts/resized-images/Real-time-Rendering-of-Water-Caustics.png new file mode 100644 index 00000000..49211c0b Binary files /dev/null and b/static/img/blogposts/resized-images/Real-time-Rendering-of-Water-Caustics.png differ diff --git a/static/img/blogposts/resized-images/Recent-keyboard-navigation-improvements-in-Jupyter.png b/static/img/blogposts/resized-images/Recent-keyboard-navigation-improvements-in-Jupyter.png new file mode 100644 index 00000000..79aa485d Binary files /dev/null and b/static/img/blogposts/resized-images/Recent-keyboard-navigation-improvements-in-Jupyter.png differ diff --git a/static/img/blogposts/resized-images/RetroLab-A-JupyterLab-distribution-with-a-retro-look-and-feel.png b/static/img/blogposts/resized-images/RetroLab-A-JupyterLab-distribution-with-a-retro-look-and-feel.png new file mode 100644 index 00000000..3a2c6229 Binary files /dev/null and b/static/img/blogposts/resized-images/RetroLab-A-JupyterLab-distribution-with-a-retro-look-and-feel.png differ diff --git a/static/img/blogposts/resized-images/Rhumba-a-Faster-R-Distribution.png b/static/img/blogposts/resized-images/Rhumba-a-Faster-R-Distribution.png new file mode 100644 index 00000000..0a74a165 Binary files /dev/null and b/static/img/blogposts/resized-images/Rhumba-a-Faster-R-Distribution.png differ diff --git a/static/img/blogposts/resized-images/Rhumba-the-fast-R-distribution-is-available-on-Windows.png b/static/img/blogposts/resized-images/Rhumba-the-fast-R-distribution-is-available-on-Windows.png new file mode 100644 index 00000000..0a74a165 Binary files /dev/null and b/static/img/blogposts/resized-images/Rhumba-the-fast-R-distribution-is-available-on-Windows.png differ diff --git a/static/img/blogposts/resized-images/Robot-Development-with-Jupyter.png b/static/img/blogposts/resized-images/Robot-Development-with-Jupyter.png new file mode 100644 index 00000000..c04a9f88 Binary files /dev/null and b/static/img/blogposts/resized-images/Robot-Development-with-Jupyter.png differ diff --git a/static/img/blogposts/resized-images/Robotic-Process-Automation-with-JupyterLab.png b/static/img/blogposts/resized-images/Robotic-Process-Automation-with-JupyterLab.png new file mode 100644 index 00000000..849df9c9 Binary files /dev/null and b/static/img/blogposts/resized-images/Robotic-Process-Automation-with-JupyterLab.png differ diff --git a/static/img/blogposts/resized-images/Scientific-Computing-in-a-Polyglot-World-with-Xtensor.png b/static/img/blogposts/resized-images/Scientific-Computing-in-a-Polyglot-World-with-Xtensor.png new file mode 100644 index 00000000..023d4d65 Binary files /dev/null and b/static/img/blogposts/resized-images/Scientific-Computing-in-a-Polyglot-World-with-Xtensor.png differ diff --git a/static/img/blogposts/resized-images/SlicerJupyter-a-3-D-Slicer-Kernel-for-Interactive-Publications.png b/static/img/blogposts/resized-images/SlicerJupyter-a-3-D-Slicer-Kernel-for-Interactive-Publications.png new file mode 100644 index 00000000..3e5a6216 Binary files /dev/null and b/static/img/blogposts/resized-images/SlicerJupyter-a-3-D-Slicer-Kernel-for-Interactive-Publications.png differ diff --git a/static/img/blogposts/resized-images/The-Julia-Challenge-in-C++.png b/static/img/blogposts/resized-images/The-Julia-Challenge-in-C++.png new file mode 100644 index 00000000..7ccbcd5e Binary files /dev/null and b/static/img/blogposts/resized-images/The-Julia-Challenge-in-C++.png differ diff --git a/static/img/blogposts/resized-images/The-Templating-System-of-Nbconvert-6.png b/static/img/blogposts/resized-images/The-Templating-System-of-Nbconvert-6.png new file mode 100644 index 00000000..22a401de Binary files /dev/null and b/static/img/blogposts/resized-images/The-Templating-System-of-Nbconvert-6.png differ diff --git a/static/img/blogposts/resized-images/The-Xtensor-Vision.png b/static/img/blogposts/resized-images/The-Xtensor-Vision.png new file mode 100644 index 00000000..dbcb2e4e Binary files /dev/null and b/static/img/blogposts/resized-images/The-Xtensor-Vision.png differ diff --git a/static/img/blogposts/resized-images/The-future-of-mamba.png b/static/img/blogposts/resized-images/The-future-of-mamba.png new file mode 100644 index 00000000..83a1b72a Binary files /dev/null and b/static/img/blogposts/resized-images/The-future-of-mamba.png differ diff --git a/static/img/blogposts/resized-images/The-mamba-project-and-the-CZI-grant.png b/static/img/blogposts/resized-images/The-mamba-project-and-the-CZI-grant.png new file mode 100644 index 00000000..247e2968 Binary files /dev/null and b/static/img/blogposts/resized-images/The-mamba-project-and-the-CZI-grant.png differ diff --git a/static/img/blogposts/resized-images/Toward-a-faster-and-thinner-xsimd.png b/static/img/blogposts/resized-images/Toward-a-faster-and-thinner-xsimd.png new file mode 100644 index 00000000..ec4ee16b Binary files /dev/null and b/static/img/blogposts/resized-images/Toward-a-faster-and-thinner-xsimd.png differ diff --git a/static/img/blogposts/resized-images/Towards-a-more-secure-conda-ecosystem.png b/static/img/blogposts/resized-images/Towards-a-more-secure-conda-ecosystem.png new file mode 100644 index 00000000..373e9504 Binary files /dev/null and b/static/img/blogposts/resized-images/Towards-a-more-secure-conda-ecosystem.png differ diff --git a/static/img/blogposts/resized-images/Upgrading-nbgrader.png b/static/img/blogposts/resized-images/Upgrading-nbgrader.png new file mode 100644 index 00000000..30a5a127 Binary files /dev/null and b/static/img/blogposts/resized-images/Upgrading-nbgrader.png differ diff --git a/static/img/blogposts/resized-images/Video-Streaming-in-the-Jupyter-Notebook.png b/static/img/blogposts/resized-images/Video-Streaming-in-the-Jupyter-Notebook.png new file mode 100644 index 00000000..bfd48fc0 Binary files /dev/null and b/static/img/blogposts/resized-images/Video-Streaming-in-the-Jupyter-Notebook.png differ diff --git a/static/img/blogposts/resized-images/Visual-programming-in-JupyterLab-with-Blockly.png b/static/img/blogposts/resized-images/Visual-programming-in-JupyterLab-with-Blockly.png new file mode 100644 index 00000000..64fbbf05 Binary files /dev/null and b/static/img/blogposts/resized-images/Visual-programming-in-JupyterLab-with-Blockly.png differ diff --git a/static/img/blogposts/resized-images/Voila-0-5-Homecoming.png b/static/img/blogposts/resized-images/Voila-0-5-Homecoming.png new file mode 100644 index 00000000..943fccfc Binary files /dev/null and b/static/img/blogposts/resized-images/Voila-0-5-Homecoming.png differ diff --git a/static/img/blogposts/resized-images/Xeus-2-0.png b/static/img/blogposts/resized-images/Xeus-2-0.png new file mode 100644 index 00000000..84e8dbed Binary files /dev/null and b/static/img/blogposts/resized-images/Xeus-2-0.png differ diff --git a/static/img/blogposts/resized-images/Xeus-Lite.png b/static/img/blogposts/resized-images/Xeus-Lite.png new file mode 100644 index 00000000..ea0a5143 Binary files /dev/null and b/static/img/blogposts/resized-images/Xeus-Lite.png differ diff --git a/static/img/blogposts/resized-images/Xeus-R-Lite.png b/static/img/blogposts/resized-images/Xeus-R-Lite.png new file mode 100644 index 00000000..7e2ea588 Binary files /dev/null and b/static/img/blogposts/resized-images/Xeus-R-Lite.png differ diff --git a/static/img/blogposts/resized-images/Xframe-Towards-a-C++-Dataframe.png b/static/img/blogposts/resized-images/Xframe-Towards-a-C++-Dataframe.png new file mode 100644 index 00000000..84ae6351 Binary files /dev/null and b/static/img/blogposts/resized-images/Xframe-Towards-a-C++-Dataframe.png differ diff --git a/static/img/blogposts/resized-images/Xtensor-C++-and-the-Julia-Challenge.png b/static/img/blogposts/resized-images/Xtensor-C++-and-the-Julia-Challenge.png new file mode 100644 index 00000000..6664ccfe Binary files /dev/null and b/static/img/blogposts/resized-images/Xtensor-C++-and-the-Julia-Challenge.png differ diff --git a/static/img/blogposts/resized-images/Xtensor-Zarr.png b/static/img/blogposts/resized-images/Xtensor-Zarr.png new file mode 100644 index 00000000..1bf8504c Binary files /dev/null and b/static/img/blogposts/resized-images/Xtensor-Zarr.png differ diff --git a/static/img/blogposts/resized-images/nbterm-Jupyter-Notebooks-in-the-terminal.png b/static/img/blogposts/resized-images/nbterm-Jupyter-Notebooks-in-the-terminal.png new file mode 100644 index 00000000..0d616cc6 Binary files /dev/null and b/static/img/blogposts/resized-images/nbterm-Jupyter-Notebooks-in-the-terminal.png differ diff --git a/static/img/blogposts/resized-images/sparrow.png b/static/img/blogposts/resized-images/sparrow.png new file mode 100644 index 00000000..3b74637c Binary files /dev/null and b/static/img/blogposts/resized-images/sparrow.png differ diff --git a/static/img/blogposts/resized-images/zarray-a-dynamic-expression-system-based-on-xtensor.png b/static/img/blogposts/resized-images/zarray-a-dynamic-expression-system-based-on-xtensor.png new file mode 100644 index 00000000..360e33f9 Binary files /dev/null and b/static/img/blogposts/resized-images/zarray-a-dynamic-expression-system-based-on-xtensor.png differ diff --git a/static/img/blogposts/Bye-bye-Boost-SIMD-Welcome-XSimd.svg b/static/img/blogposts/svg/Bye-bye-Boost-SIMD-Welcome-XSimd.svg similarity index 100% rename from static/img/blogposts/Bye-bye-Boost-SIMD-Welcome-XSimd.svg rename to static/img/blogposts/svg/Bye-bye-Boost-SIMD-Welcome-XSimd.svg diff --git a/static/img/blogposts/Designing-Language-Bindings-with-Xtensor.svg b/static/img/blogposts/svg/Designing-Language-Bindings-with-Xtensor.svg similarity index 100% rename from static/img/blogposts/Designing-Language-Bindings-with-Xtensor.svg rename to static/img/blogposts/svg/Designing-Language-Bindings-with-Xtensor.svg diff --git a/static/img/blogposts/Open-Software-Packaging-for-Science.svg b/static/img/blogposts/svg/Open-Software-Packaging-for-Science.svg similarity index 100% rename from static/img/blogposts/Open-Software-Packaging-for-Science.svg rename to static/img/blogposts/svg/Open-Software-Packaging-for-Science.svg