From 697653a197ccaae926e21cc42d4410a378fe3639 Mon Sep 17 00:00:00 2001 From: Florence Haudin Date: Fri, 20 Jun 2025 17:25:50 +0200 Subject: [PATCH] Add RSS feed to the website. --- docusaurus.config.ts | 23 +- package-lock.json | 144 ++- package.json | 11 +- scripts/generate-rss-feed.js | 63 ++ src/components/blog/blogpostsDetails.js | 1229 ++++++++++++++++++++++ src/components/blog/index.tsx | 3 +- src/css/custom.css | 13 + static/img/icons/RSSSolid.svg | 17 + static/rss.xml | 191 ++++ static/rss_all.xml | 1235 +++++++++++++++++++++++ 10 files changed, 2877 insertions(+), 52 deletions(-) create mode 100644 scripts/generate-rss-feed.js create mode 100644 src/components/blog/blogpostsDetails.js create mode 100644 static/img/icons/RSSSolid.svg create mode 100644 static/rss.xml create mode 100644 static/rss_all.xml diff --git a/docusaurus.config.ts b/docusaurus.config.ts index 6d2520465..a6a058852 100644 --- a/docusaurus.config.ts +++ b/docusaurus.config.ts @@ -20,7 +20,7 @@ const config: Config = { organizationName: "/HaudinFlorence/", // Usually your GitHub org/user name. projectName: "quantstack.github.io", // Usually your repo name. - onBrokenLinks: "throw", + onBrokenLinks: "warn", onBrokenMarkdownLinks: "warn", staticDirectories: ["static"], @@ -52,6 +52,7 @@ const config: Config = { }, theme: { customCss: "./src/css/custom.css", + }, } satisfies Preset.Options, ], @@ -61,6 +62,17 @@ const config: Config = { // Replace with your project's social card //image: 'img/docusaurus-social-card.jpg', /** @type {import('@docusaurus/preset-classic').ThemeConfig} */ + headTags: [ + { + tagName: 'link', + attributes: { + rel: 'alternate', + type: 'application/rss+xml', + title: 'RSS Feed', + href: '/rss.xml', + }, + }, + ], navbar: { title: "", logo: { @@ -99,6 +111,13 @@ const config: Config = { label: "Blog", position: "left", }, + { + href: 'rss.xml', + position: 'left', + target: '_blank', + rel: 'noopener noreferrer', + className: "rss-icon", + }, { to: "/contact/", label: "CONTACT US", @@ -106,6 +125,8 @@ const config: Config = { className: "contact", }, + + { to: "https://github.com/QuantStack", title: "GitHub", diff --git a/package-lock.json b/package-lock.json index 76851a060..cc6e52546 100644 --- a/package-lock.json +++ b/package-lock.json @@ -36,6 +36,7 @@ "react-slick": "^0.30.2", "reactjs-popup": "^2.0.6", "request": "^2.88.2", + "rss": "^1.2.2", "sharp": "^0.34.2", "slick-carousel": "^1.8.1" }, @@ -44,7 +45,9 @@ "@docusaurus/tsconfig": "3.8.1", "@docusaurus/types": "3.8.1", "@types/node": "^20.12.12", - "typescript": "~5.2.2" + "@types/react": "^19.1.8", + "@types/react-dom": "^19.1.6", + "typescript": "^5.8.3" }, "engines": { "node": "18.x" @@ -309,30 +312,30 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.27.5", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.27.5.tgz", - "integrity": "sha512-KiRAp/VoJaWkkte84TvUd9qjdbZAdiqyvMxrGl1N6vzFogKmaLgoM3L1kgtLicp2HP5fBJS8JrZKLVIZGVJAVg==", + "version": "7.27.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.27.7.tgz", + "integrity": "sha512-xgu/ySj2mTiUFmdE9yCMfBxLp4DHd5DwmbbD05YAuICfodYT3VvRxbrh81LGQ/8UpSdtMdfKMn3KouYDX59DGQ==", "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.27.4", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.27.4.tgz", - "integrity": "sha512-bXYxrXFubeYdvB0NhD/NBB3Qi6aZeV20GOWVI47t2dkecCEoneR4NPVcb7abpXDEvejgrUfFtG6vG/zxAKmg+g==", + "version": "7.27.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.27.7.tgz", + "integrity": "sha512-BU2f9tlKQ5CAthiMIgpzAh4eDTLWo1mqi9jqE2OxMG0E/OM199VJt2q8BztTxpnSW0i1ymdwLXRJnYzvDM5r2w==", "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.27.3", + "@babel/generator": "^7.27.5", "@babel/helper-compilation-targets": "^7.27.2", "@babel/helper-module-transforms": "^7.27.3", - "@babel/helpers": "^7.27.4", - "@babel/parser": "^7.27.4", + "@babel/helpers": "^7.27.6", + "@babel/parser": "^7.27.7", "@babel/template": "^7.27.2", - "@babel/traverse": "^7.27.4", - "@babel/types": "^7.27.3", + "@babel/traverse": "^7.27.7", + "@babel/types": "^7.27.7", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -647,12 +650,12 @@ } }, "node_modules/@babel/parser": { - "version": "7.27.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.5.tgz", - "integrity": "sha512-OsQd175SxWkGlzbny8J3K8TnnDD0N3lrIUtB92xwyRpzaenGZhxDvxN/JgU00U3CDZNj9tPuDJ5H0WS4Nt3vKg==", + "version": "7.27.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.7.tgz", + "integrity": "sha512-qnzXzDXdr/po3bOTbTIQZ7+TxNKxpkN5IifVLXS+r7qwynkZfPyjZfE7hCXbo7IoO9TNcSyibgONsf2HauUd3Q==", "license": "MIT", "dependencies": { - "@babel/types": "^7.27.3" + "@babel/types": "^7.27.7" }, "bin": { "parser": "bin/babel-parser.js" @@ -952,16 +955,16 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.27.1.tgz", - "integrity": "sha512-7iLhfFAubmpeJe/Wo2TVuDrykh/zlWXLzPNdL0Jqn/Xu8R3QQ8h9ff8FQoISZOsw74/HFqFI7NX63HN7QFIHKA==", + "version": "7.27.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.27.7.tgz", + "integrity": "sha512-CuLkokN1PEZ0Fsjtq+001aog/C2drDK9nTfK/NRK0n6rBin6cBrvM+zfQjDE+UllhR6/J4a6w8Xq9i4yi3mQrw==", "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.1", - "@babel/helper-compilation-targets": "^7.27.1", + "@babel/helper-annotate-as-pure": "^7.27.3", + "@babel/helper-compilation-targets": "^7.27.2", "@babel/helper-plugin-utils": "^7.27.1", "@babel/helper-replace-supers": "^7.27.1", - "@babel/traverse": "^7.27.1", + "@babel/traverse": "^7.27.7", "globals": "^11.1.0" }, "engines": { @@ -988,12 +991,13 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.27.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.27.3.tgz", - "integrity": "sha512-s4Jrok82JpiaIprtY2nHsYmrThKvvwgHwjgd7UMiYhZaN0asdXNLr0y+NjTfkA7SyQE5i2Fb7eawUOZmLvyqOA==", + "version": "7.27.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.27.7.tgz", + "integrity": "sha512-pg3ZLdIKWCP0CrJm0O4jYjVthyBeioVfvz9nwt6o5paUxsgJ/8GucSMAIaj6M7xA4WY+SrvtGu2LijzkdyecWQ==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.27.7" }, "engines": { "node": ">=6.9.0" @@ -1315,15 +1319,16 @@ } }, "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.27.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.27.3.tgz", - "integrity": "sha512-7ZZtznF9g4l2JCImCo5LNKFHB5eXnN39lLtLY5Tg+VkR0jwOt7TBciMckuiQIOIW7L5tkQOCh3bVGYeXgMx52Q==", + "version": "7.27.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.27.7.tgz", + "integrity": "sha512-201B1kFTWhckclcXpWHc8uUpYziDX/Pl4rxl0ZX0DiCZ3jknwfSUALL3QCYeeXXB37yWxJbo+g+Vfq8pAaHi3w==", "license": "MIT", "dependencies": { "@babel/helper-compilation-targets": "^7.27.2", "@babel/helper-plugin-utils": "^7.27.1", - "@babel/plugin-transform-destructuring": "^7.27.3", - "@babel/plugin-transform-parameters": "^7.27.1" + "@babel/plugin-transform-destructuring": "^7.27.7", + "@babel/plugin-transform-parameters": "^7.27.7", + "@babel/traverse": "^7.27.7" }, "engines": { "node": ">=6.9.0" @@ -1380,9 +1385,9 @@ } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.1.tgz", - "integrity": "sha512-018KRk76HWKeZ5l4oTj2zPpSh+NbGdt0st5S6x0pga6HgrjBOJb24mMDHorFopOOd6YHkLgOZ+zaCjZGPO4aKg==", + "version": "7.27.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.7.tgz", + "integrity": "sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg==", "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" @@ -1936,16 +1941,16 @@ } }, "node_modules/@babel/traverse": { - "version": "7.27.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.4.tgz", - "integrity": "sha512-oNcu2QbHqts9BtOWJosOVJapWjBDSxGCpFvikNR5TGDYDQf3JwpIoMzIKrvfoti93cLfPJEG4tH9SPVeyCGgdA==", + "version": "7.27.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.7.tgz", + "integrity": "sha512-X6ZlfR/O/s5EQ/SnUSLzr+6kGnkg8HXGMzpgsMsrJVcfDtH1vIp6ctCN4eZ1LS5c0+te5Cb6Y514fASjMRJ1nw==", "license": "MIT", "dependencies": { "@babel/code-frame": "^7.27.1", - "@babel/generator": "^7.27.3", - "@babel/parser": "^7.27.4", + "@babel/generator": "^7.27.5", + "@babel/parser": "^7.27.7", "@babel/template": "^7.27.2", - "@babel/types": "^7.27.3", + "@babel/types": "^7.27.7", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -1954,9 +1959,9 @@ } }, "node_modules/@babel/types": { - "version": "7.27.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.6.tgz", - "integrity": "sha512-ETyHEk2VHHvl9b9jZP5IHPavHYk57EhanlRRuae9XCpb/j5bDCbPPMOBfCWhnl/7EDJz0jEMCi/RhccCE8r1+Q==", + "version": "7.27.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.7.tgz", + "integrity": "sha512-8OLQgDScAOHXnAz2cV+RfzzNMipuLVBz2biuAJFMV9bfkNf393je3VM8CLkjQodW5+iWsSJdSgSWT6rsZoXHPw==", "license": "MIT", "dependencies": { "@babel/helper-string-parser": "^7.27.1", @@ -5757,6 +5762,16 @@ "csstype": "^3.0.2" } }, + "node_modules/@types/react-dom": { + "version": "19.1.6", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.1.6.tgz", + "integrity": "sha512-4hOiT/dwO8Ko0gV1m/TJZYk3y0KBnY9vzDh7W+DH17b2HFSOGgdj33dhihPeuy3l0q23+4e+hoXHV6hCC4dCXw==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@types/react": "^19.0.0" + } + }, "node_modules/@types/react-router": { "version": "5.1.20", "resolved": "https://registry.npmjs.org/@types/react-router/-/react-router-5.1.20.tgz", @@ -17608,6 +17623,37 @@ "node": ">=16" } }, + "node_modules/rss": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/rss/-/rss-1.2.2.tgz", + "integrity": "sha512-xUhRTgslHeCBeHAqaWSbOYTydN2f0tAzNXvzh3stjz7QDhQMzdgHf3pfgNIngeytQflrFPfy6axHilTETr6gDg==", + "license": "MIT", + "dependencies": { + "mime-types": "2.1.13", + "xml": "1.0.1" + } + }, + "node_modules/rss/node_modules/mime-db": { + "version": "1.25.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.25.0.tgz", + "integrity": "sha512-5k547tI4Cy+Lddr/hdjNbBEWBwSl8EBc5aSdKvedav8DReADgWJzcYiktaRIw3GtGC1jjwldXtTzvqJZmtvC7w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/rss/node_modules/mime-types": { + "version": "2.1.13", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.13.tgz", + "integrity": "sha512-ryBDp1Z/6X90UvjUK3RksH0IBPM137T7cmg4OgD5wQBojlAiUwuok0QeELkim/72EtcYuNlmbkrcGuxj3Kl0YQ==", + "license": "MIT", + "dependencies": { + "mime-db": "~1.25.0" + }, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/rtlcss": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/rtlcss/-/rtlcss-4.3.0.tgz", @@ -19081,9 +19127,9 @@ } }, "node_modules/typescript": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", - "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", + "version": "5.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", + "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", "devOptional": true, "license": "Apache-2.0", "bin": { @@ -20134,6 +20180,12 @@ "xtend": "^4.0.0" } }, + "node_modules/xml": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/xml/-/xml-1.0.1.tgz", + "integrity": "sha512-huCv9IH9Tcf95zuYCsQraZtWnJvBtLVE0QHMOs8bWyZAFZNDcYjsPq1nEx8jKA9y+Beo9v+7OBPRisQTjinQMw==", + "license": "MIT" + }, "node_modules/xml-js": { "version": "1.6.11", "resolved": "https://registry.npmjs.org/xml-js/-/xml-js-1.6.11.tgz", diff --git a/package.json b/package.json index daca06591..f8b871a20 100644 --- a/package.json +++ b/package.json @@ -9,8 +9,8 @@ }, "scripts": { "docusaurus": "docusaurus", - "prestart": "node scripts/resize-images.js", - "prebuild": "node scripts/resize-images.js", + "prestart": "node scripts/resize-images.js && node scripts/generate-rss-feed.js", + "prebuild": "node scripts/resize-images.js && node scripts/generate-rss-feed.js", "start": "docusaurus start", "build": "docusaurus build", "swizzle": "docusaurus swizzle", @@ -50,6 +50,7 @@ "react-slick": "^0.30.2", "reactjs-popup": "^2.0.6", "request": "^2.88.2", + "rss": "^1.2.2", "sharp": "^0.34.2", "slick-carousel": "^1.8.1" }, @@ -58,7 +59,9 @@ "@docusaurus/tsconfig": "3.8.1", "@docusaurus/types": "3.8.1", "@types/node": "^20.12.12", - "typescript": "~5.2.2" + "@types/react": "^19.1.8", + "@types/react-dom": "^19.1.6", + "typescript": "^5.8.3" }, "browserslist": { "production": [ @@ -75,4 +78,4 @@ "engines": { "node": "18.x" } -} \ No newline at end of file +} diff --git a/scripts/generate-rss-feed.js b/scripts/generate-rss-feed.js new file mode 100644 index 000000000..ad01b5d6d --- /dev/null +++ b/scripts/generate-rss-feed.js @@ -0,0 +1,63 @@ +const fs = require('fs'); +const RSS = require('rss'); +const { blogpostsDetails } = require('../src/components/blog/blogpostsDetails.js'); +const path = require('path'); + +const outputDir = path.join(__dirname, '../static'); +if (!fs.existsSync(outputDir)) { + fs.mkdirSync(outputDir, { recursive: true }); +} + +const generateFeedFromBlogDetails = (feed, blogpostsDetails, nbOfBlogPosts) => { + let posts = []; + for (let i = 0; i < nbOfBlogPosts; i++) { + const post = blogpostsDetails[i]; + posts.push({ + title: post.title, + description: post.summary, + date: post.date, + authors: post.authors, + url: post.url, + image: post.image, + + }) + }; + + posts.forEach((post) => { + feed.item({ + title: post.title, + description: post.description, + url: post.url, + date: post.date, + author: post.authors, + enclosure: { + url: 'https://quantstack.net' + post.image, + type: 'image/png', + length: 0, + }, + }); + }); + return feed; +} + +let feedLast20 = new RSS({ + title: 'Recent blog posts featured by QuantStack team', + description: 'RSS feed for QuantStack website blog page', + feed_url: 'https://quantstack.net/rss.xml', + site_url: 'https://quantstack.net', + language: 'en', +}); + +const updatedFeedLast20 = generateFeedFromBlogDetails(feedLast20, blogpostsDetails, 20); +fs.writeFileSync(path.join(outputDir, 'rss.xml'), updatedFeedLast20.xml({ indent: true })); + +const feedAll = new RSS({ + title: 'All blog posts featured by QuantStack team', + description: 'RSS feed for QuantStack website blog page', + feed_url: 'https://quantstack.net/rss_all.xml', + site_url: 'https://quantstack.net', + language: 'en', +}); + +const updatedFeedAll = generateFeedFromBlogDetails(feedAll, blogpostsDetails, blogpostsDetails.length) +fs.writeFileSync(path.join(outputDir, 'rss_all.xml'), updatedFeedAll.xml({ indent: true })); \ No newline at end of file diff --git a/src/components/blog/blogpostsDetails.js b/src/components/blog/blogpostsDetails.js new file mode 100644 index 000000000..29e8eccb9 --- /dev/null +++ b/src/components/blog/blogpostsDetails.js @@ -0,0 +1,1229 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.blogpostsDetails = void 0; +exports.blogpostsDetails = [ + { + url: "https://david-brochart.medium.com/create-your-own-layers-in-jupytergis-cbb995a89b16", + title: "Create your own layers in JupyterGIS", + image: "img/blogposts/resized-images/Create-layers-JupyterGIS.png", + summary: "JupyterGIS-tiler is a JupyterGIS extension that lets you use a notebook to process your (Xarray) data and make it available as raster tiles, so that it can be visualized in JupyterGIS.", + date: "June 25, 2025", + authors: "David Brochart", + imageID: "blogpost-image-136" + }, + { + url: "https://blog.jupyter.org/c-in-jupyter-interpreting-c-in-the-web-c9d93542f20b", + title: "C++ in Jupyter — Interpreting C++ in the Web", + "image": "img/blogposts/resized-images/CPP-in-JupyterLite.png", + summary: "Scientists and engineers utilize programming languages not only to build software systems but also to drive interactive exploratory workflows. They leverage developer tools to explore and reason through problems effectively.", + date: "June 19, 2025", + authors: "Anutosh Bhat, Vassil Vassilev", + imageID: "blogpost-image-135" + }, + { + url: "https://blog.jupyter.org/jupyterlite-0-6-0-is-released-b4bc69bfc8f4", + title: "JupyterLite 0.6.0 is released! 🎉", + "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-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/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-133" + }, + { + url: "https://blog.jupyter.org/congratulations-distinguished-contributors-2504029fc5a9", + title: "Congratulations, Distinguished Contributors!", + "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-132" + }, + { + url: "https://david-brochart.medium.com/making-qt-collaborative-using-crdts-94c470703253", + title: "Making Qt collaborative using CRDTs", + "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-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/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-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/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-129" + }, + { + url: "https://medium.com/@PyDataParis/pydata-paris-2025-50ff2bf2dc39", + title: "PyData Paris 2025 Keynotes", + "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-128" + }, + { + url: "https://blog.jupyter.org/announcing-jupytercad-3-0-d8f4b7b0a719", + title: "Announcing JupyterCAD 3.0", + "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-127" + }, + { + url: "https://johan-mabille.medium.com/sparrow-1f23817f6696", + title: "Sparrow", + "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-126" + }, + { + url: "https://blog.jupyter.org/jupyterlite-terminal-edb3f80dc1c0", + title: "JupyterLite Terminal", + "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-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/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-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/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" + }, + { + url: "https://blog.jupyter.org/interactive-mapping-with-ipyopenlayers-2b8bc93bb6c4", + title: "Interactive Mapping with ipyopenlayers", + "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" + }, + { + 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/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" + }, + { + url: "https://blog.jupyter.org/ipydatagrid-is-now-part-of-project-jupyter-3b3dfb877664", + title: "Ipydatagrid is now part of Project Jupyter", + "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" + }, + { + url: "https://medium.com/@QuantStack/introducing-mamba-2-0-0e8d5c6d1d0c", + title: "Introducing Mamba 2.0", + "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" + }, + { + url: "https://medium.com/@QuantStack/quantstack-open-source-internship-program-049755b6d44b", + title: "QuantStack open-source internship program", + "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" + }, + { + url: "https://medium.com/@QuantStack/jupytercad-2-0-4b9c4e18d22a", + title: "JupyterCAD 2.0", + "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" + }, + { + url: "https://blog.jupyter.org/jupytergis-d63b7adf9d0c", + title: "JupyterGIS", + "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" + }, + { + url: "https://medium.com/@SylvainCorlay/commit-cdf57415b94b", + title: "Commit!", + "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" + }, + { + url: "/blogs/Fanny", + title: "In memoriam: Fanny Loustau Chartez", + "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" + }, + { + url: "https://medium.com/@PyDataParis/announcing-pydata-paris-2024-700220accc72", + title: "Announcing PyData Paris 2024", + "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" + }, + { + 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/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" + }, + { + url: "https://medium.com/@QuantStack/quantstack-2023-in-review-94fea0a35520", + title: "QuantStack: 2023 in review", + "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" + }, + { + url: "https://blog.jupyter.org/recent-keyboard-navigation-improvements-in-jupyter-4df32f97628d", + title: "Recent keyboard navigation improvements in Jupyter", + "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" + }, + { + url: "https://blog.jupyter.org/and-voici-e02367197ba2", + title: "And Voici!", + "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" + }, + { + url: "https://blog.jupyter.org/plug-your-application-into-the-jupyter-world-805e48918801", + title: "Plug your application into the Jupyter world", + "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" + }, + { + url: "https://blog.jupyter.org/voil%C3%A0-0-5-0-homecoming-66f2465aa86f", + title: "Voilà 0.5 - Homecoming", + "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" + }, + { + url: "https://blog.jupyter.org/announcing-jupyter-notebook-7-8d6d66126dcf", + title: "Announcing Jupyter Notebook 7", + "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" + }, + { + url: "https://blog.jupyter.org/jupytercon-2023-recordings-now-live-on-youtube-17564b75a2a", + title: "🎉 JupyterCon 2023 recordings now live on YouTube! 🎉", + "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" + }, + { + url: "https://blog.jupyter.org/a-theme-editor-for-jupyterlab-8f08ab62894d", + title: "A theme editor for JupyterLab", + "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" + }, + { + url: "https://blog.jupyter.org/collaborative-cad-in-jupyterlab-8eb9e8f81f0", + title: "Collaborative CAD in JupyterLab", + "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" + }, + { + url: "https://blog.jupyter.org/congratulations-distinguished-contributors-7a7b215b8bd0", + title: "Congratulations, Distinguished Contributors!", + "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" + }, + { + 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/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" + }, + { + url: "https://blog.jupyter.org/improving-the-accessibility-of-jupyter-6c695db518d3", + title: "Improving the accessibility of Jupyter", + "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" + }, + { + url: "https://blog.jupyter.org/a-jupyter-kernel-for-gnu-octave-b6d29e56341f", + title: "A Jupyter kernel for GNU Octave", + "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" + }, + { + url: "https://medium.com/@QuantStack/quantstack-2022-in-review-7d4704b1db42", + title: "QuantStack: 2022 in review", + "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" + }, + { + url: "https://medium.com/@AntoineProuvost/managing-conflicts-with-mamba-6a5fa10ed6a", + title: "Managing conflicts with Mamba", + "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" + }, + { + url: "https://blog.jupyter.org/jupytercon-is-back-in-2023-90e5c25eeec9", + title: "JupyterCon is back in 2023", + "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" + }, + { + url: "https://blog.jupyter.org/accelerating-jupyterlab-68942bb8d602", + title: "Accelerating JupyterLab", + "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" + }, + { + url: "https://blog.jupyter.org/upgrading-nbgrader-99c56ae56c47", + title: "Upgrading nbgrader", + "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" + }, + { + url: "https://blog.jupyter.org/visual-programming-in-jupyterlab-with-blockly-7731ec3e113c", + title: "Visual programming in JupyterLab with Blockly", + "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" + }, + { + url: "https://blog.jupyter.org/mamba-meets-jupyterlite-88ef49ac4dc8", + title: "Mamba meets JupyterLite", + "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" + }, + { + url: "https://blog.jupyter.org/inspector-jupyterlab-404cce3e1df6", + title: "Inspector JupyterLab", + "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" + }, + { + url: "https://blog.pyodide.org/posts/canvas-renderer-matplotlib-in-pyodide/", + title: "HTML5 based renderer for Matplotlib in Pyodide", + "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" + }, + { + url: "https://wolfv.medium.com/the-future-of-mamba-fdf6d628b3df", + title: "The future of mamba", + "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" + }, + { + url: "https://blog.jupyter.org/congratulations-distinguished-contributors-bc349fa60d68", + title: "Congratulations, Distinguished Contributors!", + "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" + }, + { + url: "https://blog.jupyter.org/jupyter-everywhere-f8151c2cc6e8", + title: "Jupyter Everywhere", + "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" + }, + { + url: "https://medium.com/@kmathewos92/ros2-support-for-zethus-e6ecfcdb1c4c", + title: "ROS2 support for Zethus", + "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" + }, + { + url: "https://medium.com/@QuantStack/quantstack-2021-in-review-fe5eac2e0f6d", + title: "QuantStack: 2021 in review", + "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" + }, + { + url: "https://blog.jupyter.org/jupyter-games-cda20dc15a21", + title: "Jupyter Games", + "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" + }, + { + url: "https://blog.jupyter.org/need-for-speed-voil%C3%A0-edition-a9e1300ab3b2", + title: "Need for speed: Voilà edition", + "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" + }, + { + url: "https://adelsalle.medium.com/towards-a-more-secure-conda-ecosystem-5ce65a27d7d5", + title: "Towards a more secure conda ecosystem", + "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" + }, + { + url: "https://johan-mabille.medium.com/toward-a-faster-and-thinner-xsimd-9e4eef41bc17", + title: "Toward a faster and thinner xsimd", + "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" + }, + { + url: "https://blog.jupyter.org/xeus-lite-379e96bb199d", + title: "Xeus-Lite", + "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" + }, + { + url: "https://wolfv.medium.com/the-mamba-project-and-the-czi-grant-ec88fb27c25", + title: "The mamba project and the CZI grant", + "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" + }, + { + url: "https://blog.jupyter.org/looking-at-notebooks-from-a-new-perspective-bfd06797f188", + title: "Looking at notebooks from a new perspective", + "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" + }, + { + url: "https://blog.jupyter.org/xeus-2-0-cb460d4daed4", + title: "Xeus 2.0", + "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" + }, + { + url: "https://blog.jupyter.org/from-jupyter-to-the-moon-2e432df402c8", + title: "From Jupyter to the Moon", + "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" + }, + { + url: "https://blog.jupyter.org/jupyterlite-jupyter-%EF%B8%8F-webassembly-%EF%B8%8F-python-f6e2e41ab3fa", + title: "Jupyter ❤️ WebAssembly ❤️ Python", + "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" + }, + { + url: "https://wolfv.medium.com/mamba-0-15-0-475d1dca0418", + title: "Mamba 0.15.0", + "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" + }, + { + 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/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" + }, + { + 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/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" + }, + { + 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/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" + }, + { + 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/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" + }, + { + url: "https://blog.jupyter.org/enabling-the-jupyterlab-debugger-with-ipykernel-8d7248f522b0", + title: "Enabling the JupyterLab Debugger with ipykernel", + "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" + }, + { + url: "https://medium.com/@mari_meir/jupyter-%EF%B8%8F-%EF%B8%8F-cytoscape-e2e77be8e0f9", + title: "Jupyter ❤️ Cytoscape", + "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" + }, + { + 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/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" + }, + { + url: "https://blog.jupyter.org/nbterm-jupyter-notebooks-in-the-terminal-6a2b55d08b70", + title: "nbterm: Jupyter Notebooks in the terminal", + "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" + }, + { + url: "https://blog.jupyter.org/abracadabra-bringing-the-magics-to-xeus-python-9d17bcfacb4", + title: "Abracadabra! Bringing the Magics to Xeus-Python", + "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" + }, + { + url: "https://medium.com/robostack/cross-platform-conda-packages-for-ros-fa1974fd1de3", + title: "Cross-platform Conda Packages for ROS", + "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" + }, + { + url: "https://blog.jupyter.org/genomic-data-representation-in-jupyter-c57a5bb518d6", + title: "Genomic Data representation in Jupyter", + "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" + }, + { + url: "https://blog.jupyter.org/an-sql-solution-for-jupyter-ef4a00a0d925?postPublishedType=initial", + title: "An SQL Solution for Jupyter", + "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" + }, + { + url: "https://blog.jupyter.org/a-curiously-recurring-widget-library-261a65bd56fe", + title: "A Curiously Recurring Widget Library", + "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" + }, + { + url: "https://blog.jupyter.org/robotic-process-automation-with-jupyterlab-713b5630e457", + title: "Robotic Process Automation with JupyterLab", + "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" + }, + { + url: "https://blog.jupyter.org/dashboarding-with-jupyterlab-3-789fcb1a5857", + title: "Dashboarding with JupyterLab 3.0", + "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" + }, + { + url: "https://blog.jupyter.org/jupyterlab-3-0-is-out-4f58385e25bb", + title: "JupyterLab 3.0 is Released!", + "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" + }, + { + url: "https://blog.llvm.org/posts/2020-12-21-interactive-cpp-for-data-science/", + title: "Interactive C++ for Data Science", + "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" + }, + { + url: "https://david-brochart.medium.com/xtensor-%EF%B8%8F-zarr-4f5cf25c65e5", + title: "Xtensor ❤️ Zarr", + "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" + }, + { + url: "https://blog.jupyter.org/a-c-backend-for-vega-lite-bd2524b247c2", + title: "A C++ API for Vega-Lite", + "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" + }, + { + url: "https://blog.jupyter.org/ipygany-jupyter-into-the-third-dimension-29a97597fc33", + title: "Ipygany, Jupyter into the Third Dimension", + "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" + }, + { + url: "https://medium.com/@mari_meir/rhumba-a-faster-r-distribution-d619fb93043a", + title: "Rhumba, a Faster R Distribution", + "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" + }, + { + url: "https://blog.jupyter.org/the-templating-system-of-nbconvert-6-47ea781eacd2", + title: "The Templating System of Nbconvert 6", + "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" + }, + { + url: "https://medium.com/@mari_meir/memestra-a21c0c1f362", + title: "Memestra!", + "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" + }, + { + url: "https://medium.com/@martinRenou/real-time-rendering-of-water-caustics-59cda1d74aa", + title: "Real-time Rendering of Water Caustics", + "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" + }, + { + url: "https://blog.jupyter.org/jupyterlab-ros-3dc9dab7f421", + title: "JupyterLab, the Cloud Robotics Command Station", + "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" + }, + { + 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/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" + }, + { + url: "https://medium.com/@QuantStack/open-software-packaging-for-science-61cecee7fc23", + title: "Open Software Packaging for Science", + "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" + }, + { + url: "https://blog.jupyter.org/a-jupyter-kernel-for-sqlite-9549c5dcf551", + title: "A Jupyter Kernel for SQLite", + "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" + }, + { + url: "https://blog.jupyter.org/plasma-a-learning-platform-powered-by-jupyter-1b850fcd8624", + title: "PLASMA, a Learning Platform Powered by Jupyter", + "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" + }, + { + url: "https://blog.jupyter.org/interactive-graph-visualization-in-jupyter-with-ipycytoscape-a8828a54ab63", + title: "Interactive Graph Visualization in Jupyter with IPycytoscape", + "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" + }, + { + url: "https://blog.jupyter.org/a-visual-debugger-for-jupyter-914e61716559", + title: "A Visual Debugger for Jupyter", + "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" + }, + { + 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/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" + }, + { + url: "https://medium.com/@wolfv/introducing-scikit-geometry-ae1dccaad5fd", + title: "Introducing Scikit-Geometry", + "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" + }, + { + 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/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" + }, + { + url: "https://medium.com/@wolfv/2019-in-review-d7d03fb0d17d", + title: "2019 in Review", + "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" + }, + { + url: "https://medium.com/@wolfv/robot-development-with-jupyter-ddae16d4e688", + title: "Robot Development with Jupyter", + "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" + }, + { + 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/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" + }, + { + url: "https://blog.jupyter.org/voila-gridstack-template-8a431c2b353e", + title: "Configure your Dashboards with the Voilà Gridstack Template", + "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" + }, + { + url: "https://blog.jupyter.org/a-slideshow-template-for-voil%C3%A0-apps-435f67d10b4f", + title: "A Slideshow template for Voilà", + "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" + }, + { + url: "https://medium.com/@wolfv/ros-on-conda-forge-dca6827ac4b6", + title: "ROS on Conda-forge", + "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" + }, + { + url: "https://blog.jupyter.org/ipycanvas-a-python-canvas-for-jupyter-bbb51e4777f7", + title: "IPycanvas, a Python Canvas for Jupyter", + "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" + }, + { + url: "https://blog.jupyter.org/field-report-on-the-kernel-community-workshop-a4ad73a1a718", + title: "Field Report on the Kernel Community Workshop", + "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" + }, + { + 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/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" + }, + { + url: "https://blog.jupyter.org/interactive-gis-in-jupyter-with-ipyleaflet-52f9657fa7a", + title: "Interactive GIS in Jupyter with IPyleaflet", + "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" + }, + { + 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/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" + }, + { + url: "https://blog.jupyter.org/building-a-calculator-jupyter-kernel-4aed5764a295", + title: "Building a Calculator Jupyter Kernel", + "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" + }, + { + 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/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" + }, + { + url: "https://blog.jupyter.org/introducing-templates-for-jupyter-widget-layouts-f72bcb35a662", + title: "Introducing Templates for Jupyter Widget Layouts", + "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" + }, + { + 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/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" + }, + { + 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/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" + }, + { + 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/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" + }, + { + url: "https://blog.jupyter.org/and-voil%C3%A0-f6a2c08a4a93", + title: "And Voilà!", + "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" + }, + { + url: "https://medium.com/@wolfv/mamba-development-news-29e32aaa8d6c", + title: "Mamba Development News", + "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" + }, + { + url: "https://medium.com/@wolfv/building-an-open-source-continuous-benchmark-system-717839093962", + title: "Building an Open-Source Continuous Benchmark System", + "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" + }, + { + url: "https://blog.jupyter.org/ros-jupyter-b7e82b5e1202", + title: "ROS @ Jupyter", + "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" + }, + { + url: "https://medium.com/@wolfv/making-conda-fast-again-4da4debfb3b7", + title: "Making Conda Fast Again", + "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" + }, + { + url: "https://medium.com/data-science/interactive-spreadsheets-in-jupyter-32ab6ec0f4ff", + title: "Interactive spreadsheets in Jupyter", + "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" + }, + { + url: "https://blog.jupyter.org/a-new-python-kernel-for-jupyter-fcdf211e30a8", + title: "A New Python Kernel for Jupyter", + "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" + }, + { + url: "https://medium.com/@johan.mabille/xframe-towards-a-c-dataframe-26e1ccde211b", + title: "Xframe: Towards a C++ Dataframe", + "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" + }, + { + url: "https://medium.com/@johan.mabille/designing-language-bindings-with-xtensor-f32aa0f20db", + title: "Designing Language Bindings with Xtensor", + "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" + }, + { + url: "https://medium.com/data-science/video-streaming-in-the-jupyter-notebook-635bc5809e85", + title: "Video Streaming in the Jupyter Notebook", + "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" + }, + { + url: "https://towardsdatascience.com/the-xtensor-vision-552dd978e9ad", + title: "The Xtensor Vision", + "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" + }, + { + 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/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" + }, + { + url: "https://medium.com/@QuantStack/xtensor-c-and-the-julia-challenge-643d4b119761", + title: "Xtensor, C++, and the Julia Challenge", + "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" + }, + { + url: "https://medium.com/@wolfv/the-julia-challenge-in-c-21272d36c002", + title: "The Julia Challenge in C++", + "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" + }, + { + url: "https://blog.jupyter.org/interpreted-c-for-gis-with-jupyter-ae191bc6fb8e", + title: "Interpreter C++ for GIS with Jupyter", + "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" + }, + { + url: "https://blog.jupyter.org/authoring-custom-jupyter-widgets-2884a462e724", + title: "Authoring Custom Jupyter Widgets", + "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" + }, + { + url: "https://blog.jupyter.org/jupyter-receives-the-acm-software-system-award-d433b0dfe3a2", + title: "Jupyter Receives the ACM Software System Award", + "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" + }, + { + url: "https://blog.jupyter.org/a-diagram-editor-for-jupyterlab-a254121ff919", + title: "A Diagram Editor for JupyterLab", + "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" + }, + { + url: "https://medium.com/@wolfv/fast-reductions-in-xtensor-with-simd-212a8543960a", + title: "Fast Reductions in Xtensor with Xsimd", + "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" + }, + { + url: "https://medium.com/@wolfv/faster-xtensor-87fcbe7f5293", + title: "Faster Xtensor", + "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" + }, + { + url: "https://blog.jupyter.org/interactive-workflows-for-c-with-jupyter-fe9b54227d92", + title: "Interactive Workflows for C++ with Jupyter", + "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" + }, + { + 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/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" + } +]; diff --git a/src/components/blog/index.tsx b/src/components/blog/index.tsx index 6dc19e87d..db24510ef 100644 --- a/src/components/blog/index.tsx +++ b/src/components/blog/index.tsx @@ -1,8 +1,9 @@ import styles from "./styles.module.css"; import React, { useState } from "react"; import BlogpostCard from "./BlogpostCard"; +import { blogpostsDetails } from "./blogpostsDetails"; -export default function BlogsComponent({ blogpostsDetails }) { +export default function BlogsComponent() { const numberOfBlogs = blogpostsDetails.length; const [searchField, setSearchField] = useState(""); diff --git a/src/css/custom.css b/src/css/custom.css index 6a246bc5c..2f298be22 100644 --- a/src/css/custom.css +++ b/src/css/custom.css @@ -586,6 +586,19 @@ a.menu__link:active { background-repeat: no-repeat; } +.rss-icon:before { + background: url(@site/static/img/icons/RSSSolid.svg); + content: ""; + display: flex; + height: 18px; + width: 18px; + background-repeat: no-repeat; +} + +.rss-icon:hover { + opacity: 0.6; +} + .github-icon:hover { opacity: 0.6; } diff --git a/static/img/icons/RSSSolid.svg b/static/img/icons/RSSSolid.svg new file mode 100644 index 000000000..a55bc0704 --- /dev/null +++ b/static/img/icons/RSSSolid.svg @@ -0,0 +1,17 @@ + + + + + + diff --git a/static/rss.xml b/static/rss.xml new file mode 100644 index 000000000..9e29d97d2 --- /dev/null +++ b/static/rss.xml @@ -0,0 +1,191 @@ + + + <![CDATA[Recent blog posts featured by QuantStack team]]> + + https://quantstack.net + RSS for Node + Thu, 26 Jun 2025 18:28:31 GMT + + + + <![CDATA[Create your own layers in JupyterGIS]]> + + https://david-brochart.medium.com/create-your-own-layers-in-jupytergis-cbb995a89b16 + https://david-brochart.medium.com/create-your-own-layers-in-jupytergis-cbb995a89b16 + + Tue, 24 Jun 2025 22:00:00 GMT + + + + <![CDATA[C++ in Jupyter — Interpreting C++ in the Web]]> + + https://blog.jupyter.org/c-in-jupyter-interpreting-c-in-the-web-c9d93542f20b + https://blog.jupyter.org/c-in-jupyter-interpreting-c-in-the-web-c9d93542f20b + + Wed, 18 Jun 2025 22:00:00 GMT + + + + <![CDATA[JupyterLite 0.6.0 is released! 🎉]]> + + https://blog.jupyter.org/jupyterlite-0-6-0-is-released-b4bc69bfc8f4 + https://blog.jupyter.org/jupyterlite-0-6-0-is-released-b4bc69bfc8f4 + + Wed, 11 Jun 2025 22:00:00 GMT + + + + <![CDATA[JupyterLab 4.4 and Notebook 7.4 are available!]]> + + https://blog.jupyter.org/jupyterlab-4-4-and-notebook-7-4-are-available-aca2782d4f3d + https://blog.jupyter.org/jupyterlab-4-4-and-notebook-7-4-are-available-aca2782d4f3d + + Tue, 20 May 2025 22:00:00 GMT + + + + <![CDATA[Congratulations, Distinguished Contributors!]]> + + https://blog.jupyter.org/congratulations-distinguished-contributors-2504029fc5a9 + https://blog.jupyter.org/congratulations-distinguished-contributors-2504029fc5a9 + + Wed, 14 May 2025 22:00:00 GMT + + + + <![CDATA[Making Qt collaborative using CRDTs]]> + + https://david-brochart.medium.com/making-qt-collaborative-using-crdts-94c470703253 + https://david-brochart.medium.com/making-qt-collaborative-using-crdts-94c470703253 + + Sun, 30 Mar 2025 22:00:00 GMT + + + + <![CDATA[R in the Browser: Announcing Our WebAssembly Distribution]]> + + https://blog.jupyter.org/r-in-the-browser-announcing-our-webassembly-distribution-9450e9539ed5 + https://blog.jupyter.org/r-in-the-browser-announcing-our-webassembly-distribution-9450e9539ed5 + + Thu, 27 Feb 2025 23:00:00 GMT + + + + <![CDATA[Real-time collaboration and collaborative editing for GIS workflows with Jupyter and QGIS]]> + + https://blog.jupyter.org/real-time-collaboration-and-collaborative-editing-for-gis-workflows-with-jupyter-and-qgis-d25dbe2832a6 + https://blog.jupyter.org/real-time-collaboration-and-collaborative-editing-for-gis-workflows-with-jupyter-and-qgis-d25dbe2832a6 + + Tue, 25 Feb 2025 23:00:00 GMT + + + + <![CDATA[PyData Paris 2025 Keynotes]]> + + https://medium.com/@PyDataParis/pydata-paris-2025-50ff2bf2dc39 + https://medium.com/@PyDataParis/pydata-paris-2025-50ff2bf2dc39 + + Tue, 18 Feb 2025 23:00:00 GMT + + + + <![CDATA[Announcing JupyterCAD 3.0]]> + + https://blog.jupyter.org/announcing-jupytercad-3-0-d8f4b7b0a719 + https://blog.jupyter.org/announcing-jupytercad-3-0-d8f4b7b0a719 + + Sun, 16 Feb 2025 23:00:00 GMT + + + + <![CDATA[Sparrow]]> + + https://johan-mabille.medium.com/sparrow-1f23817f6696 + https://johan-mabille.medium.com/sparrow-1f23817f6696 + + Thu, 30 Jan 2025 23:00:00 GMT + + + + <![CDATA[JupyterLite Terminal]]> + + https://blog.jupyter.org/jupyterlite-terminal-edb3f80dc1c0 + https://blog.jupyter.org/jupyterlite-terminal-edb3f80dc1c0 + + Tue, 12 Nov 2024 23:00:00 GMT + + + + <![CDATA[Automate your releases with the Jupyter Releaser 🚀]]> + + https://blog.jupyter.org/automate-your-releases-with-the-jupyter-releaser-701e7b9841e6 + https://blog.jupyter.org/automate-your-releases-with-the-jupyter-releaser-701e7b9841e6 + + Sun, 27 Oct 2024 23:00:00 GMT + + + + <![CDATA[QuantStack Steps Up to Support Apache Arrow with New Dedicated Team]]> + + https://medium.com/@QuantStack/quantstack-steps-up-to-support-apache-arrow-with-new-dedicated-team-9ddc952f20e2 + https://medium.com/@QuantStack/quantstack-steps-up-to-support-apache-arrow-with-new-dedicated-team-9ddc952f20e2 + + Mon, 21 Oct 2024 22:00:00 GMT + + + + <![CDATA[Interactive Mapping with ipyopenlayers]]> + + https://blog.jupyter.org/interactive-mapping-with-ipyopenlayers-2b8bc93bb6c4 + https://blog.jupyter.org/interactive-mapping-with-ipyopenlayers-2b8bc93bb6c4 + + Thu, 05 Sep 2024 22:00:00 GMT + + + + <![CDATA[Announcing the 2023 cohort of Jupyter distinguished contributors]]> + + https://blog.jupyter.org/announcing-the-2023-jupyter-distinguished-contributor-award-recipients-1b2cc4ba203f + https://blog.jupyter.org/announcing-the-2023-jupyter-distinguished-contributor-award-recipients-1b2cc4ba203f + + Tue, 03 Sep 2024 22:00:00 GMT + + + + <![CDATA[Ipydatagrid is now part of Project Jupyter]]> + + https://blog.jupyter.org/ipydatagrid-is-now-part-of-project-jupyter-3b3dfb877664 + https://blog.jupyter.org/ipydatagrid-is-now-part-of-project-jupyter-3b3dfb877664 + + Wed, 21 Aug 2024 22:00:00 GMT + + + + <![CDATA[Introducing Mamba 2.0]]> + + https://medium.com/@QuantStack/introducing-mamba-2-0-0e8d5c6d1d0c + https://medium.com/@QuantStack/introducing-mamba-2-0-0e8d5c6d1d0c + + Mon, 15 Jul 2024 22:00:00 GMT + + + + <![CDATA[QuantStack open-source internship program]]> + + https://medium.com/@QuantStack/quantstack-open-source-internship-program-049755b6d44b + https://medium.com/@QuantStack/quantstack-open-source-internship-program-049755b6d44b + + Mon, 08 Jul 2024 22:00:00 GMT + + + + <![CDATA[JupyterCAD 2.0]]> + + https://medium.com/@QuantStack/jupytercad-2-0-4b9c4e18d22a + https://medium.com/@QuantStack/jupytercad-2-0-4b9c4e18d22a + + Thu, 04 Jul 2024 22:00:00 GMT + + + + \ No newline at end of file diff --git a/static/rss_all.xml b/static/rss_all.xml new file mode 100644 index 000000000..c6eaf9061 --- /dev/null +++ b/static/rss_all.xml @@ -0,0 +1,1235 @@ + + + <![CDATA[All blog posts featured by QuantStack team]]> + + https://quantstack.net + RSS for Node + Thu, 26 Jun 2025 18:28:31 GMT + + + + <![CDATA[Create your own layers in JupyterGIS]]> + + https://david-brochart.medium.com/create-your-own-layers-in-jupytergis-cbb995a89b16 + https://david-brochart.medium.com/create-your-own-layers-in-jupytergis-cbb995a89b16 + + Tue, 24 Jun 2025 22:00:00 GMT + + + + <![CDATA[C++ in Jupyter — Interpreting C++ in the Web]]> + + https://blog.jupyter.org/c-in-jupyter-interpreting-c-in-the-web-c9d93542f20b + https://blog.jupyter.org/c-in-jupyter-interpreting-c-in-the-web-c9d93542f20b + + Wed, 18 Jun 2025 22:00:00 GMT + + + + <![CDATA[JupyterLite 0.6.0 is released! 🎉]]> + + https://blog.jupyter.org/jupyterlite-0-6-0-is-released-b4bc69bfc8f4 + https://blog.jupyter.org/jupyterlite-0-6-0-is-released-b4bc69bfc8f4 + + Wed, 11 Jun 2025 22:00:00 GMT + + + + <![CDATA[JupyterLab 4.4 and Notebook 7.4 are available!]]> + + https://blog.jupyter.org/jupyterlab-4-4-and-notebook-7-4-are-available-aca2782d4f3d + https://blog.jupyter.org/jupyterlab-4-4-and-notebook-7-4-are-available-aca2782d4f3d + + Tue, 20 May 2025 22:00:00 GMT + + + + <![CDATA[Congratulations, Distinguished Contributors!]]> + + https://blog.jupyter.org/congratulations-distinguished-contributors-2504029fc5a9 + https://blog.jupyter.org/congratulations-distinguished-contributors-2504029fc5a9 + + Wed, 14 May 2025 22:00:00 GMT + + + + <![CDATA[Making Qt collaborative using CRDTs]]> + + https://david-brochart.medium.com/making-qt-collaborative-using-crdts-94c470703253 + https://david-brochart.medium.com/making-qt-collaborative-using-crdts-94c470703253 + + Sun, 30 Mar 2025 22:00:00 GMT + + + + <![CDATA[R in the Browser: Announcing Our WebAssembly Distribution]]> + + https://blog.jupyter.org/r-in-the-browser-announcing-our-webassembly-distribution-9450e9539ed5 + https://blog.jupyter.org/r-in-the-browser-announcing-our-webassembly-distribution-9450e9539ed5 + + Thu, 27 Feb 2025 23:00:00 GMT + + + + <![CDATA[Real-time collaboration and collaborative editing for GIS workflows with Jupyter and QGIS]]> + + https://blog.jupyter.org/real-time-collaboration-and-collaborative-editing-for-gis-workflows-with-jupyter-and-qgis-d25dbe2832a6 + https://blog.jupyter.org/real-time-collaboration-and-collaborative-editing-for-gis-workflows-with-jupyter-and-qgis-d25dbe2832a6 + + Tue, 25 Feb 2025 23:00:00 GMT + + + + <![CDATA[PyData Paris 2025 Keynotes]]> + + https://medium.com/@PyDataParis/pydata-paris-2025-50ff2bf2dc39 + https://medium.com/@PyDataParis/pydata-paris-2025-50ff2bf2dc39 + + Tue, 18 Feb 2025 23:00:00 GMT + + + + <![CDATA[Announcing JupyterCAD 3.0]]> + + https://blog.jupyter.org/announcing-jupytercad-3-0-d8f4b7b0a719 + https://blog.jupyter.org/announcing-jupytercad-3-0-d8f4b7b0a719 + + Sun, 16 Feb 2025 23:00:00 GMT + + + + <![CDATA[Sparrow]]> + + https://johan-mabille.medium.com/sparrow-1f23817f6696 + https://johan-mabille.medium.com/sparrow-1f23817f6696 + + Thu, 30 Jan 2025 23:00:00 GMT + + + + <![CDATA[JupyterLite Terminal]]> + + https://blog.jupyter.org/jupyterlite-terminal-edb3f80dc1c0 + https://blog.jupyter.org/jupyterlite-terminal-edb3f80dc1c0 + + Tue, 12 Nov 2024 23:00:00 GMT + + + + <![CDATA[Automate your releases with the Jupyter Releaser 🚀]]> + + https://blog.jupyter.org/automate-your-releases-with-the-jupyter-releaser-701e7b9841e6 + https://blog.jupyter.org/automate-your-releases-with-the-jupyter-releaser-701e7b9841e6 + + Sun, 27 Oct 2024 23:00:00 GMT + + + + <![CDATA[QuantStack Steps Up to Support Apache Arrow with New Dedicated Team]]> + + https://medium.com/@QuantStack/quantstack-steps-up-to-support-apache-arrow-with-new-dedicated-team-9ddc952f20e2 + https://medium.com/@QuantStack/quantstack-steps-up-to-support-apache-arrow-with-new-dedicated-team-9ddc952f20e2 + + Mon, 21 Oct 2024 22:00:00 GMT + + + + <![CDATA[Interactive Mapping with ipyopenlayers]]> + + https://blog.jupyter.org/interactive-mapping-with-ipyopenlayers-2b8bc93bb6c4 + https://blog.jupyter.org/interactive-mapping-with-ipyopenlayers-2b8bc93bb6c4 + + Thu, 05 Sep 2024 22:00:00 GMT + + + + <![CDATA[Announcing the 2023 cohort of Jupyter distinguished contributors]]> + + https://blog.jupyter.org/announcing-the-2023-jupyter-distinguished-contributor-award-recipients-1b2cc4ba203f + https://blog.jupyter.org/announcing-the-2023-jupyter-distinguished-contributor-award-recipients-1b2cc4ba203f + + Tue, 03 Sep 2024 22:00:00 GMT + + + + <![CDATA[Ipydatagrid is now part of Project Jupyter]]> + + https://blog.jupyter.org/ipydatagrid-is-now-part-of-project-jupyter-3b3dfb877664 + https://blog.jupyter.org/ipydatagrid-is-now-part-of-project-jupyter-3b3dfb877664 + + Wed, 21 Aug 2024 22:00:00 GMT + + + + <![CDATA[Introducing Mamba 2.0]]> + + https://medium.com/@QuantStack/introducing-mamba-2-0-0e8d5c6d1d0c + https://medium.com/@QuantStack/introducing-mamba-2-0-0e8d5c6d1d0c + + Mon, 15 Jul 2024 22:00:00 GMT + + + + <![CDATA[QuantStack open-source internship program]]> + + https://medium.com/@QuantStack/quantstack-open-source-internship-program-049755b6d44b + https://medium.com/@QuantStack/quantstack-open-source-internship-program-049755b6d44b + + Mon, 08 Jul 2024 22:00:00 GMT + + + + <![CDATA[JupyterCAD 2.0]]> + + https://medium.com/@QuantStack/jupytercad-2-0-4b9c4e18d22a + https://medium.com/@QuantStack/jupytercad-2-0-4b9c4e18d22a + + Thu, 04 Jul 2024 22:00:00 GMT + + + + <![CDATA[JupyterGIS]]> + + https://blog.jupyter.org/jupytergis-d63b7adf9d0c + https://blog.jupyter.org/jupytergis-d63b7adf9d0c + + Tue, 11 Jun 2024 22:00:00 GMT + + + + <![CDATA[Commit!]]> + + https://medium.com/@SylvainCorlay/commit-cdf57415b94b + https://medium.com/@SylvainCorlay/commit-cdf57415b94b + + Tue, 28 May 2024 22:00:00 GMT + + + + <![CDATA[In memoriam: Fanny Loustau Chartez]]> + + /blogs/Fanny + /blogs/Fanny + + Wed, 15 May 2024 22:00:00 GMT + + + + <![CDATA[Announcing PyData Paris 2024]]> + + https://medium.com/@PyDataParis/announcing-pydata-paris-2024-700220accc72 + https://medium.com/@PyDataParis/announcing-pydata-paris-2024-700220accc72 + + Sun, 10 Mar 2024 23:00:00 GMT + + + + <![CDATA[Meet Xeus-R: a future-proof Jupyter kernel for R]]> + + https://blog.jupyter.org/meet-xeus-r-a-future-proof-jupyter-kernel-for-r-1adc5fdd09ab + https://blog.jupyter.org/meet-xeus-r-a-future-proof-jupyter-kernel-for-r-1adc5fdd09ab + + Invalid Date + + + + <![CDATA[QuantStack: 2023 in review]]> + + https://medium.com/@QuantStack/quantstack-2023-in-review-94fea0a35520 + https://medium.com/@QuantStack/quantstack-2023-in-review-94fea0a35520 + + Invalid Date + + + + <![CDATA[Recent keyboard navigation improvements in Jupyter]]> + + https://blog.jupyter.org/recent-keyboard-navigation-improvements-in-jupyter-4df32f97628d + https://blog.jupyter.org/recent-keyboard-navigation-improvements-in-jupyter-4df32f97628d + + Invalid Date + + + + <![CDATA[And Voici!]]> + + https://blog.jupyter.org/and-voici-e02367197ba2 + https://blog.jupyter.org/and-voici-e02367197ba2 + + Invalid Date + + + + <![CDATA[Plug your application into the Jupyter world]]> + + https://blog.jupyter.org/plug-your-application-into-the-jupyter-world-805e48918801 + https://blog.jupyter.org/plug-your-application-into-the-jupyter-world-805e48918801 + + Invalid Date + + + + <![CDATA[Voilà 0.5 - Homecoming]]> + + https://blog.jupyter.org/voil%C3%A0-0-5-0-homecoming-66f2465aa86f + https://blog.jupyter.org/voil%C3%A0-0-5-0-homecoming-66f2465aa86f + + Invalid Date + + + + <![CDATA[Announcing Jupyter Notebook 7]]> + + https://blog.jupyter.org/announcing-jupyter-notebook-7-8d6d66126dcf + https://blog.jupyter.org/announcing-jupyter-notebook-7-8d6d66126dcf + + Invalid Date + + + + <![CDATA[🎉 JupyterCon 2023 recordings now live on YouTube! 🎉]]> + + https://blog.jupyter.org/jupytercon-2023-recordings-now-live-on-youtube-17564b75a2a + https://blog.jupyter.org/jupytercon-2023-recordings-now-live-on-youtube-17564b75a2a + + Invalid Date + + + + <![CDATA[A theme editor for JupyterLab]]> + + https://blog.jupyter.org/a-theme-editor-for-jupyterlab-8f08ab62894d + https://blog.jupyter.org/a-theme-editor-for-jupyterlab-8f08ab62894d + + Invalid Date + + + + <![CDATA[Collaborative CAD in JupyterLab]]> + + https://blog.jupyter.org/collaborative-cad-in-jupyterlab-8eb9e8f81f0 + https://blog.jupyter.org/collaborative-cad-in-jupyterlab-8eb9e8f81f0 + + Invalid Date + + + + <![CDATA[Congratulations, Distinguished Contributors!]]> + + https://blog.jupyter.org/congratulations-distinguished-contributors-7a7b215b8bd0 + https://blog.jupyter.org/congratulations-distinguished-contributors-7a7b215b8bd0 + + Invalid Date + + + + <![CDATA[Embed interactive itkwidgets 3D renderings into JupyterLite deployments]]> + + https://blog.jupyter.org/embed-interactive-itkwidgets-3d-renderings-into-jupyterlite-deployments-10eb9ea30980 + https://blog.jupyter.org/embed-interactive-itkwidgets-3d-renderings-into-jupyterlite-deployments-10eb9ea30980 + + Invalid Date + + + + <![CDATA[Improving the accessibility of Jupyter]]> + + https://blog.jupyter.org/improving-the-accessibility-of-jupyter-6c695db518d3 + https://blog.jupyter.org/improving-the-accessibility-of-jupyter-6c695db518d3 + + Invalid Date + + + + <![CDATA[A Jupyter kernel for GNU Octave]]> + + https://blog.jupyter.org/a-jupyter-kernel-for-gnu-octave-b6d29e56341f + https://blog.jupyter.org/a-jupyter-kernel-for-gnu-octave-b6d29e56341f + + Invalid Date + + + + <![CDATA[QuantStack: 2022 in review]]> + + https://medium.com/@QuantStack/quantstack-2022-in-review-7d4704b1db42 + https://medium.com/@QuantStack/quantstack-2022-in-review-7d4704b1db42 + + Invalid Date + + + + <![CDATA[Managing conflicts with Mamba]]> + + https://medium.com/@AntoineProuvost/managing-conflicts-with-mamba-6a5fa10ed6a + https://medium.com/@AntoineProuvost/managing-conflicts-with-mamba-6a5fa10ed6a + + Invalid Date + + + + <![CDATA[JupyterCon is back in 2023]]> + + https://blog.jupyter.org/jupytercon-is-back-in-2023-90e5c25eeec9 + https://blog.jupyter.org/jupytercon-is-back-in-2023-90e5c25eeec9 + + Invalid Date + + + + <![CDATA[Accelerating JupyterLab]]> + + https://blog.jupyter.org/accelerating-jupyterlab-68942bb8d602 + https://blog.jupyter.org/accelerating-jupyterlab-68942bb8d602 + + Invalid Date + + + + <![CDATA[Upgrading nbgrader]]> + + https://blog.jupyter.org/upgrading-nbgrader-99c56ae56c47 + https://blog.jupyter.org/upgrading-nbgrader-99c56ae56c47 + + Invalid Date + + + + <![CDATA[Visual programming in JupyterLab with Blockly]]> + + https://blog.jupyter.org/visual-programming-in-jupyterlab-with-blockly-7731ec3e113c + https://blog.jupyter.org/visual-programming-in-jupyterlab-with-blockly-7731ec3e113c + + Invalid Date + + + + <![CDATA[Mamba meets JupyterLite]]> + + https://blog.jupyter.org/mamba-meets-jupyterlite-88ef49ac4dc8 + https://blog.jupyter.org/mamba-meets-jupyterlite-88ef49ac4dc8 + + Invalid Date + + + + <![CDATA[Inspector JupyterLab]]> + + https://blog.jupyter.org/inspector-jupyterlab-404cce3e1df6 + https://blog.jupyter.org/inspector-jupyterlab-404cce3e1df6 + + Invalid Date + + + + <![CDATA[HTML5 <canvas> based renderer for Matplotlib in Pyodide]]> + + https://blog.pyodide.org/posts/canvas-renderer-matplotlib-in-pyodide/ + https://blog.pyodide.org/posts/canvas-renderer-matplotlib-in-pyodide/ + + Invalid Date + + + + <![CDATA[The future of mamba]]> + + https://wolfv.medium.com/the-future-of-mamba-fdf6d628b3df + https://wolfv.medium.com/the-future-of-mamba-fdf6d628b3df + + Invalid Date + + + + <![CDATA[Congratulations, Distinguished Contributors!]]> + + https://blog.jupyter.org/congratulations-distinguished-contributors-bc349fa60d68 + https://blog.jupyter.org/congratulations-distinguished-contributors-bc349fa60d68 + + Invalid Date + + + + <![CDATA[Jupyter Everywhere]]> + + https://blog.jupyter.org/jupyter-everywhere-f8151c2cc6e8 + https://blog.jupyter.org/jupyter-everywhere-f8151c2cc6e8 + + Invalid Date + + + + <![CDATA[ROS2 support for Zethus]]> + + https://medium.com/@kmathewos92/ros2-support-for-zethus-e6ecfcdb1c4c + https://medium.com/@kmathewos92/ros2-support-for-zethus-e6ecfcdb1c4c + + Invalid Date + + + + <![CDATA[QuantStack: 2021 in review]]> + + https://medium.com/@QuantStack/quantstack-2021-in-review-fe5eac2e0f6d + https://medium.com/@QuantStack/quantstack-2021-in-review-fe5eac2e0f6d + + Invalid Date + + + + <![CDATA[Jupyter Games]]> + + https://blog.jupyter.org/jupyter-games-cda20dc15a21 + https://blog.jupyter.org/jupyter-games-cda20dc15a21 + + Invalid Date + + + + <![CDATA[Need for speed: Voilà edition]]> + + https://blog.jupyter.org/need-for-speed-voil%C3%A0-edition-a9e1300ab3b2 + https://blog.jupyter.org/need-for-speed-voil%C3%A0-edition-a9e1300ab3b2 + + Invalid Date + + + + <![CDATA[Towards a more secure conda ecosystem]]> + + https://adelsalle.medium.com/towards-a-more-secure-conda-ecosystem-5ce65a27d7d5 + https://adelsalle.medium.com/towards-a-more-secure-conda-ecosystem-5ce65a27d7d5 + + Invalid Date + + + + <![CDATA[Toward a faster and thinner xsimd]]> + + https://johan-mabille.medium.com/toward-a-faster-and-thinner-xsimd-9e4eef41bc17 + https://johan-mabille.medium.com/toward-a-faster-and-thinner-xsimd-9e4eef41bc17 + + Invalid Date + + + + <![CDATA[Xeus-Lite]]> + + https://blog.jupyter.org/xeus-lite-379e96bb199d + https://blog.jupyter.org/xeus-lite-379e96bb199d + + Invalid Date + + + + <![CDATA[The mamba project and the CZI grant]]> + + https://wolfv.medium.com/the-mamba-project-and-the-czi-grant-ec88fb27c25 + https://wolfv.medium.com/the-mamba-project-and-the-czi-grant-ec88fb27c25 + + Invalid Date + + + + <![CDATA[Looking at notebooks from a new perspective]]> + + https://blog.jupyter.org/looking-at-notebooks-from-a-new-perspective-bfd06797f188 + https://blog.jupyter.org/looking-at-notebooks-from-a-new-perspective-bfd06797f188 + + Invalid Date + + + + <![CDATA[Xeus 2.0]]> + + https://blog.jupyter.org/xeus-2-0-cb460d4daed4 + https://blog.jupyter.org/xeus-2-0-cb460d4daed4 + + Invalid Date + + + + <![CDATA[From Jupyter to the Moon]]> + + https://blog.jupyter.org/from-jupyter-to-the-moon-2e432df402c8 + https://blog.jupyter.org/from-jupyter-to-the-moon-2e432df402c8 + + Invalid Date + + + + <![CDATA[Jupyter ❤️ WebAssembly ❤️ Python]]> + + https://blog.jupyter.org/jupyterlite-jupyter-%EF%B8%8F-webassembly-%EF%B8%8F-python-f6e2e41ab3fa + https://blog.jupyter.org/jupyterlite-jupyter-%EF%B8%8F-webassembly-%EF%B8%8F-python-f6e2e41ab3fa + + Invalid Date + + + + <![CDATA[Mamba 0.15.0]]> + + https://wolfv.medium.com/mamba-0-15-0-475d1dca0418 + https://wolfv.medium.com/mamba-0-15-0-475d1dca0418 + + Invalid Date + + + + <![CDATA[Le calcul haute performance au service de l'innovation (in French)]]> + + https://www.polytechnique.edu/fondation/content/le-calcul-haute-performance-au-service-de-l%E2%80%99innovation + https://www.polytechnique.edu/fondation/content/le-calcul-haute-performance-au-service-de-l%E2%80%99innovation + + Invalid Date + + + + <![CDATA[How we made Jupyter notebooks collaborative with Yjs]]> + + https://blog.jupyter.org/how-we-made-jupyter-notebooks-collaborative-with-yjs-b8dff6a9d8af + https://blog.jupyter.org/how-we-made-jupyter-notebooks-collaborative-with-yjs-b8dff6a9d8af + + Invalid Date + + + + <![CDATA[RetroLab - A JupyterLab distribution with a retro look and feel]]> + + https://blog.jupyter.org/retrolab-a-jupyterlab-distribution-with-a-retro-look-and-feel-8096b8b223d0 + https://blog.jupyter.org/retrolab-a-jupyterlab-distribution-with-a-retro-look-and-feel-8096b8b223d0 + + Invalid Date + + + + <![CDATA[Rhumba, the fast R distribution is available on Windows]]> + + https://adelsalle.medium.com/rhumba-the-fast-r-distribution-is-available-on-windows-fa975b2aefa2 + https://adelsalle.medium.com/rhumba-the-fast-r-distribution-is-available-on-windows-fa975b2aefa2 + + Invalid Date + + + + <![CDATA[Enabling the JupyterLab Debugger with ipykernel]]> + + https://blog.jupyter.org/enabling-the-jupyterlab-debugger-with-ipykernel-8d7248f522b0 + https://blog.jupyter.org/enabling-the-jupyterlab-debugger-with-ipykernel-8d7248f522b0 + + Invalid Date + + + + <![CDATA[Jupyter ❤️ Cytoscape]]> + + https://medium.com/@mari_meir/jupyter-%EF%B8%8F-%EF%B8%8F-cytoscape-e2e77be8e0f9 + https://medium.com/@mari_meir/jupyter-%EF%B8%8F-%EF%B8%8F-cytoscape-e2e77be8e0f9 + + Invalid Date + + + + <![CDATA[zarray: a dynamic expression system based on xtensor]]> + + https://johan-mabille.medium.com/zarray-a-dynamic-expression-system-based-on-xtensor-ded69f37ff5e + https://johan-mabille.medium.com/zarray-a-dynamic-expression-system-based-on-xtensor-ded69f37ff5e + + Invalid Date + + + + <![CDATA[nbterm: Jupyter Notebooks in the terminal]]> + + https://blog.jupyter.org/nbterm-jupyter-notebooks-in-the-terminal-6a2b55d08b70 + https://blog.jupyter.org/nbterm-jupyter-notebooks-in-the-terminal-6a2b55d08b70 + + Invalid Date + + + + <![CDATA[Abracadabra! Bringing the Magics to Xeus-Python]]> + + https://blog.jupyter.org/abracadabra-bringing-the-magics-to-xeus-python-9d17bcfacb4 + https://blog.jupyter.org/abracadabra-bringing-the-magics-to-xeus-python-9d17bcfacb4 + + Invalid Date + + + + <![CDATA[Cross-platform Conda Packages for ROS]]> + + https://medium.com/robostack/cross-platform-conda-packages-for-ros-fa1974fd1de3 + https://medium.com/robostack/cross-platform-conda-packages-for-ros-fa1974fd1de3 + + Invalid Date + + + + <![CDATA[Genomic Data representation in Jupyter]]> + + https://blog.jupyter.org/genomic-data-representation-in-jupyter-c57a5bb518d6 + https://blog.jupyter.org/genomic-data-representation-in-jupyter-c57a5bb518d6 + + Invalid Date + + + + <![CDATA[An SQL Solution for Jupyter]]> + + https://blog.jupyter.org/an-sql-solution-for-jupyter-ef4a00a0d925?postPublishedType=initial + https://blog.jupyter.org/an-sql-solution-for-jupyter-ef4a00a0d925?postPublishedType=initial + + Invalid Date + + + + <![CDATA[A Curiously Recurring Widget Library]]> + + https://blog.jupyter.org/a-curiously-recurring-widget-library-261a65bd56fe + https://blog.jupyter.org/a-curiously-recurring-widget-library-261a65bd56fe + + Invalid Date + + + + <![CDATA[Robotic Process Automation with JupyterLab]]> + + https://blog.jupyter.org/robotic-process-automation-with-jupyterlab-713b5630e457 + https://blog.jupyter.org/robotic-process-automation-with-jupyterlab-713b5630e457 + + Invalid Date + + + + <![CDATA[Dashboarding with JupyterLab 3.0]]> + + https://blog.jupyter.org/dashboarding-with-jupyterlab-3-789fcb1a5857 + https://blog.jupyter.org/dashboarding-with-jupyterlab-3-789fcb1a5857 + + Invalid Date + + + + <![CDATA[JupyterLab 3.0 is Released!]]> + + https://blog.jupyter.org/jupyterlab-3-0-is-out-4f58385e25bb + https://blog.jupyter.org/jupyterlab-3-0-is-out-4f58385e25bb + + Invalid Date + + + + <![CDATA[Interactive C++ for Data Science]]> + + https://blog.llvm.org/posts/2020-12-21-interactive-cpp-for-data-science/ + https://blog.llvm.org/posts/2020-12-21-interactive-cpp-for-data-science/ + + Tue, 22 Dec 2020 23:00:00 GMT + + + + <![CDATA[Xtensor ❤️ Zarr]]> + + https://david-brochart.medium.com/xtensor-%EF%B8%8F-zarr-4f5cf25c65e5 + https://david-brochart.medium.com/xtensor-%EF%B8%8F-zarr-4f5cf25c65e5 + + Mon, 14 Dec 2020 23:00:00 GMT + + + + <![CDATA[A C++ API for Vega-Lite]]> + + https://blog.jupyter.org/a-c-backend-for-vega-lite-bd2524b247c2 + https://blog.jupyter.org/a-c-backend-for-vega-lite-bd2524b247c2 + + Tue, 01 Dec 2020 23:00:00 GMT + + + + <![CDATA[Ipygany, Jupyter into the Third Dimension]]> + + https://blog.jupyter.org/ipygany-jupyter-into-the-third-dimension-29a97597fc33 + https://blog.jupyter.org/ipygany-jupyter-into-the-third-dimension-29a97597fc33 + + Tue, 13 Oct 2020 22:00:00 GMT + + + + <![CDATA[Rhumba, a Faster R Distribution]]> + + https://medium.com/@mari_meir/rhumba-a-faster-r-distribution-d619fb93043a + https://medium.com/@mari_meir/rhumba-a-faster-r-distribution-d619fb93043a + + Mon, 12 Oct 2020 22:00:00 GMT + + + + <![CDATA[The Templating System of Nbconvert 6]]> + + https://blog.jupyter.org/the-templating-system-of-nbconvert-6-47ea781eacd2 + https://blog.jupyter.org/the-templating-system-of-nbconvert-6-47ea781eacd2 + + Fri, 25 Sep 2020 22:00:00 GMT + + + + <![CDATA[Memestra!]]> + + https://medium.com/@mari_meir/memestra-a21c0c1f362 + https://medium.com/@mari_meir/memestra-a21c0c1f362 + + Sun, 20 Sep 2020 22:00:00 GMT + + + + <![CDATA[Real-time Rendering of Water Caustics]]> + + https://medium.com/@martinRenou/real-time-rendering-of-water-caustics-59cda1d74aa + https://medium.com/@martinRenou/real-time-rendering-of-water-caustics-59cda1d74aa + + Wed, 26 Aug 2020 22:00:00 GMT + + + + <![CDATA[JupyterLab, the Cloud Robotics Command Station]]> + + https://blog.jupyter.org/jupyterlab-ros-3dc9dab7f421 + https://blog.jupyter.org/jupyterlab-ros-3dc9dab7f421 + + Mon, 10 Aug 2020 22:00:00 GMT + + + + <![CDATA[SlicerJupyter, a 3-D Slicer Kernel for Interactive Publications]]> + + https://blog.jupyter.org/slicerjupyter-a-3d-slicer-kernel-for-interactive-publications-6f2ad829f635 + https://blog.jupyter.org/slicerjupyter-a-3d-slicer-kernel-for-interactive-publications-6f2ad829f635 + + Tue, 07 Jul 2020 22:00:00 GMT + + + + <![CDATA[Open Software Packaging for Science]]> + + https://medium.com/@QuantStack/open-software-packaging-for-science-61cecee7fc23 + https://medium.com/@QuantStack/open-software-packaging-for-science-61cecee7fc23 + + Thu, 18 Jun 2020 22:00:00 GMT + + + + <![CDATA[A Jupyter Kernel for SQLite]]> + + https://blog.jupyter.org/a-jupyter-kernel-for-sqlite-9549c5dcf551 + https://blog.jupyter.org/a-jupyter-kernel-for-sqlite-9549c5dcf551 + + Wed, 10 Jun 2020 22:00:00 GMT + + + + <![CDATA[PLASMA, a Learning Platform Powered by Jupyter]]> + + https://blog.jupyter.org/plasma-a-learning-platform-powered-by-jupyter-1b850fcd8624 + https://blog.jupyter.org/plasma-a-learning-platform-powered-by-jupyter-1b850fcd8624 + + Sun, 10 May 2020 22:00:00 GMT + + + + <![CDATA[Interactive Graph Visualization in Jupyter with IPycytoscape]]> + + https://blog.jupyter.org/interactive-graph-visualization-in-jupyter-with-ipycytoscape-a8828a54ab63 + https://blog.jupyter.org/interactive-graph-visualization-in-jupyter-with-ipycytoscape-a8828a54ab63 + + Wed, 29 Apr 2020 22:00:00 GMT + + + + <![CDATA[A Visual Debugger for Jupyter]]> + + https://blog.jupyter.org/a-visual-debugger-for-jupyter-914e61716559 + https://blog.jupyter.org/a-visual-debugger-for-jupyter-914e61716559 + + Tue, 24 Mar 2020 23:00:00 GMT + + + + <![CDATA[Field Report on the Jupyter Community Workshop on Dashboarding]]> + + https://blog.jupyter.org/report-on-the-jupyter-community-workshop-on-dashboarding-14f8ad9f3c0 + https://blog.jupyter.org/report-on-the-jupyter-community-workshop-on-dashboarding-14f8ad9f3c0 + + Thu, 13 Feb 2020 23:00:00 GMT + + + + <![CDATA[Introducing Scikit-Geometry]]> + + https://medium.com/@wolfv/introducing-scikit-geometry-ae1dccaad5fd + https://medium.com/@wolfv/introducing-scikit-geometry-ae1dccaad5fd + + Thu, 23 Jan 2020 23:00:00 GMT + + + + <![CDATA[How we Wrote Xtensor (Episode 8) - Iterators]]> + + https://medium.com/@johan.mabille/how-we-wrote-xtensor-8-n-iterators-7df77e3223f7 + https://medium.com/@johan.mabille/how-we-wrote-xtensor-8-n-iterators-7df77e3223f7 + + Mon, 06 Jan 2020 23:00:00 GMT + + + + <![CDATA[2019 in Review]]> + + https://medium.com/@wolfv/2019-in-review-d7d03fb0d17d + https://medium.com/@wolfv/2019-in-review-d7d03fb0d17d + + Wed, 01 Jan 2020 23:00:00 GMT + + + + <![CDATA[Robot Development with Jupyter]]> + + https://medium.com/@wolfv/robot-development-with-jupyter-ddae16d4e688 + https://medium.com/@wolfv/robot-development-with-jupyter-ddae16d4e688 + + Mon, 30 Dec 2019 23:00:00 GMT + + + + <![CDATA[How we Wrote Xtensor (Episode 7) - Broadcasting]]> + + https://medium.com/@johan.mabille/how-we-wrote-xtensor-7-n-broadcasting-cf37a974d029 + https://medium.com/@johan.mabille/how-we-wrote-xtensor-7-n-broadcasting-cf37a974d029 + + Sat, 23 Nov 2019 23:00:00 GMT + + + + <![CDATA[Configure your Dashboards with the Voilà Gridstack Template]]> + + https://blog.jupyter.org/voila-gridstack-template-8a431c2b353e + https://blog.jupyter.org/voila-gridstack-template-8a431c2b353e + + Sun, 10 Nov 2019 23:00:00 GMT + + + + <![CDATA[A Slideshow template for Voilà]]> + + https://blog.jupyter.org/a-slideshow-template-for-voil%C3%A0-apps-435f67d10b4f + https://blog.jupyter.org/a-slideshow-template-for-voil%C3%A0-apps-435f67d10b4f + + Mon, 28 Oct 2019 23:00:00 GMT + + + + <![CDATA[ROS on Conda-forge]]> + + https://medium.com/@wolfv/ros-on-conda-forge-dca6827ac4b6 + https://medium.com/@wolfv/ros-on-conda-forge-dca6827ac4b6 + + Sun, 27 Oct 2019 23:00:00 GMT + + + + <![CDATA[IPycanvas, a Python Canvas for Jupyter]]> + + https://blog.jupyter.org/ipycanvas-a-python-canvas-for-jupyter-bbb51e4777f7 + https://blog.jupyter.org/ipycanvas-a-python-canvas-for-jupyter-bbb51e4777f7 + + Thu, 24 Oct 2019 22:00:00 GMT + + + + <![CDATA[Field Report on the Kernel Community Workshop]]> + + https://blog.jupyter.org/field-report-on-the-kernel-community-workshop-a4ad73a1a718 + https://blog.jupyter.org/field-report-on-the-kernel-community-workshop-a4ad73a1a718 + + Sun, 06 Oct 2019 22:00:00 GMT + + + + <![CDATA[How we Wrote Xtensor (Episode 6) - Operator Overloading]]> + + https://medium.com/@johan.mabille/how-we-wrote-xtensor-6-n-operator-overloading-984c2e5b4171 + https://medium.com/@johan.mabille/how-we-wrote-xtensor-6-n-operator-overloading-984c2e5b4171 + + Tue, 24 Sep 2019 22:00:00 GMT + + + + <![CDATA[Interactive GIS in Jupyter with IPyleaflet]]> + + https://blog.jupyter.org/interactive-gis-in-jupyter-with-ipyleaflet-52f9657fa7a + https://blog.jupyter.org/interactive-gis-in-jupyter-with-ipyleaflet-52f9657fa7a + + Tue, 24 Sep 2019 22:00:00 GMT + + + + <![CDATA[How we Wrote Xtensor (Episode 5) - Expression Templates]]> + + https://medium.com/@johan.mabille/how-we-wrote-xtensor-5-n-expression-templates-d07332e73d1d + https://medium.com/@johan.mabille/how-we-wrote-xtensor-5-n-expression-templates-d07332e73d1d + + Wed, 04 Sep 2019 22:00:00 GMT + + + + <![CDATA[Building a Calculator Jupyter Kernel]]> + + https://blog.jupyter.org/building-a-calculator-jupyter-kernel-4aed5764a295 + https://blog.jupyter.org/building-a-calculator-jupyter-kernel-4aed5764a295 + + Mon, 15 Jul 2019 22:00:00 GMT + + + + <![CDATA[How we Wrote Xtensor (Episode 4) - Value Semantics]]> + + https://medium.com/@johan.mabille/how-we-wrote-xtensor-4-n-value-semantics-6baa6856d313 + https://medium.com/@johan.mabille/how-we-wrote-xtensor-4-n-value-semantics-6baa6856d313 + + Mon, 15 Jul 2019 22:00:00 GMT + + + + <![CDATA[Introducing Templates for Jupyter Widget Layouts]]> + + https://blog.jupyter.org/introducing-templates-for-jupyter-widget-layouts-f72bcb35a662 + https://blog.jupyter.org/introducing-templates-for-jupyter-widget-layouts-f72bcb35a662 + + Wed, 03 Jul 2019 22:00:00 GMT + + + + <![CDATA[How we Wrote Xtensor (Episode 3) - The Constructors]]> + + https://medium.com/@johan.mabille/how-we-wrote-xtensor-3-n-the-constructors-65a177260638 + https://medium.com/@johan.mabille/how-we-wrote-xtensor-3-n-the-constructors-65a177260638 + + Sun, 23 Jun 2019 22:00:00 GMT + + + + <![CDATA[How we Wrote Xtensor (Episode 2) - Access Operators]]> + + https://medium.com/@johan.mabille/how-we-wrote-xtensor-2-n-access-operators-57e8e3852263 + https://medium.com/@johan.mabille/how-we-wrote-xtensor-2-n-access-operators-57e8e3852263 + + Wed, 19 Jun 2019 22:00:00 GMT + + + + <![CDATA[How we Wrote Xtensor (Episode 1) - N-Dimensional Containers]]> + + https://medium.com/@johan.mabille/how-we-wrote-xtensor-1-n-n-dimensional-containers-f79f9f4966a7 + https://medium.com/@johan.mabille/how-we-wrote-xtensor-1-n-n-dimensional-containers-f79f9f4966a7 + + Sun, 16 Jun 2019 22:00:00 GMT + + + + <![CDATA[And Voilà!]]> + + https://blog.jupyter.org/and-voil%C3%A0-f6a2c08a4a93 + https://blog.jupyter.org/and-voil%C3%A0-f6a2c08a4a93 + + Mon, 10 Jun 2019 22:00:00 GMT + + + + <![CDATA[Mamba Development News]]> + + https://medium.com/@wolfv/mamba-development-news-29e32aaa8d6c + https://medium.com/@wolfv/mamba-development-news-29e32aaa8d6c + + Sun, 09 Jun 2019 22:00:00 GMT + + + + <![CDATA[Building an Open-Source Continuous Benchmark System]]> + + https://medium.com/@wolfv/building-an-open-source-continuous-benchmark-system-717839093962 + https://medium.com/@wolfv/building-an-open-source-continuous-benchmark-system-717839093962 + + Tue, 28 May 2019 22:00:00 GMT + + + + <![CDATA[ROS @ Jupyter]]> + + https://blog.jupyter.org/ros-jupyter-b7e82b5e1202 + https://blog.jupyter.org/ros-jupyter-b7e82b5e1202 + + Sat, 06 Apr 2019 22:00:00 GMT + + + + <![CDATA[Making Conda Fast Again]]> + + https://medium.com/@wolfv/making-conda-fast-again-4da4debfb3b7 + https://medium.com/@wolfv/making-conda-fast-again-4da4debfb3b7 + + Wed, 27 Mar 2019 23:00:00 GMT + + + + <![CDATA[Interactive spreadsheets in Jupyter]]> + + https://medium.com/data-science/interactive-spreadsheets-in-jupyter-32ab6ec0f4ff + https://medium.com/data-science/interactive-spreadsheets-in-jupyter-32ab6ec0f4ff + + Thu, 07 Mar 2019 23:00:00 GMT + + + + <![CDATA[A New Python Kernel for Jupyter]]> + + https://blog.jupyter.org/a-new-python-kernel-for-jupyter-fcdf211e30a8 + https://blog.jupyter.org/a-new-python-kernel-for-jupyter-fcdf211e30a8 + + Tue, 08 Jan 2019 23:00:00 GMT + + + + <![CDATA[Xframe: Towards a C++ Dataframe]]> + + https://medium.com/@johan.mabille/xframe-towards-a-c-dataframe-26e1ccde211b + https://medium.com/@johan.mabille/xframe-towards-a-c-dataframe-26e1ccde211b + + Thu, 03 Jan 2019 23:00:00 GMT + + + + <![CDATA[Designing Language Bindings with Xtensor]]> + + https://medium.com/@johan.mabille/designing-language-bindings-with-xtensor-f32aa0f20db + https://medium.com/@johan.mabille/designing-language-bindings-with-xtensor-f32aa0f20db + + Thu, 29 Nov 2018 23:00:00 GMT + + + + <![CDATA[Video Streaming in the Jupyter Notebook]]> + + https://medium.com/data-science/video-streaming-in-the-jupyter-notebook-635bc5809e85 + https://medium.com/data-science/video-streaming-in-the-jupyter-notebook-635bc5809e85 + + Sun, 18 Nov 2018 23:00:00 GMT + + + + <![CDATA[The Xtensor Vision]]> + + https://towardsdatascience.com/the-xtensor-vision-552dd978e9ad + https://towardsdatascience.com/the-xtensor-vision-552dd978e9ad + + Fri, 09 Nov 2018 23:00:00 GMT + + + + <![CDATA[Bye bye Boost.SIMD, Welcome XSimd]]> + + https://serge-sans-paille.github.io/pythran-stories/bye-bye-boostsimd-welcome-xsimd.html + https://serge-sans-paille.github.io/pythran-stories/bye-bye-boostsimd-welcome-xsimd.html + + Wed, 30 Oct 2019 23:00:00 GMT + + + + <![CDATA[Xtensor, C++, and the Julia Challenge]]> + + https://medium.com/@QuantStack/xtensor-c-and-the-julia-challenge-643d4b119761 + https://medium.com/@QuantStack/xtensor-c-and-the-julia-challenge-643d4b119761 + + Tue, 23 Oct 2018 22:00:00 GMT + + + + <![CDATA[The Julia Challenge in C++]]> + + https://medium.com/@wolfv/the-julia-challenge-in-c-21272d36c002 + https://medium.com/@wolfv/the-julia-challenge-in-c-21272d36c002 + + Thu, 11 Oct 2018 22:00:00 GMT + + + + <![CDATA[Interpreter C++ for GIS with Jupyter]]> + + https://blog.jupyter.org/interpreted-c-for-gis-with-jupyter-ae191bc6fb8e + https://blog.jupyter.org/interpreted-c-for-gis-with-jupyter-ae191bc6fb8e + + Mon, 23 Apr 2018 22:00:00 GMT + + + + <![CDATA[Authoring Custom Jupyter Widgets]]> + + https://blog.jupyter.org/authoring-custom-jupyter-widgets-2884a462e724 + https://blog.jupyter.org/authoring-custom-jupyter-widgets-2884a462e724 + + Sun, 04 Mar 2018 23:00:00 GMT + + + + <![CDATA[Jupyter Receives the ACM Software System Award]]> + + https://blog.jupyter.org/jupyter-receives-the-acm-software-system-award-d433b0dfe3a2 + https://blog.jupyter.org/jupyter-receives-the-acm-software-system-award-d433b0dfe3a2 + + Thu, 01 Mar 2018 23:00:00 GMT + + + + <![CDATA[A Diagram Editor for JupyterLab]]> + + https://blog.jupyter.org/a-diagram-editor-for-jupyterlab-a254121ff919 + https://blog.jupyter.org/a-diagram-editor-for-jupyterlab-a254121ff919 + + Sun, 25 Feb 2018 23:00:00 GMT + + + + <![CDATA[Fast Reductions in Xtensor with Xsimd]]> + + https://medium.com/@wolfv/fast-reductions-in-xtensor-with-simd-212a8543960a + https://medium.com/@wolfv/fast-reductions-in-xtensor-with-simd-212a8543960a + + Mon, 19 Feb 2018 23:00:00 GMT + + + + <![CDATA[Faster Xtensor]]> + + https://medium.com/@wolfv/faster-xtensor-87fcbe7f5293 + https://medium.com/@wolfv/faster-xtensor-87fcbe7f5293 + + Sat, 17 Feb 2018 23:00:00 GMT + + + + <![CDATA[Interactive Workflows for C++ with Jupyter]]> + + https://blog.jupyter.org/interactive-workflows-for-c-with-jupyter-fe9b54227d92 + https://blog.jupyter.org/interactive-workflows-for-c-with-jupyter-fe9b54227d92 + + Tue, 28 Nov 2017 23:00:00 GMT + + + + <![CDATA[Scientific Computing in a Polyglot World with Xtensor]]> + + https://medium.com/@SylvainCorlay/scientific-computing-in-a-polyglot-world-with-xtensor-d81ff3865d6 + https://medium.com/@SylvainCorlay/scientific-computing-in-a-polyglot-world-with-xtensor-d81ff3865d6 + + Thu, 04 May 2017 22:00:00 GMT + + + + \ No newline at end of file