├── .nojekyll ├── CNAME ├── .gitignore ├── src ├── env.d.ts ├── styles │ ├── themes │ │ ├── pink.css │ │ ├── indigo.css │ │ ├── orange.css │ │ ├── purple.css │ │ ├── emerald.css │ │ ├── sun.css │ │ ├── gay.css │ │ ├── rainbow.css │ │ ├── trans.css │ │ ├── lesbian.css │ │ ├── velvet.css │ │ ├── ocean.css │ │ ├── christmas.css │ │ └── winter.css │ └── global.css ├── components │ ├── PageHeader.astro │ ├── ConditionalOcean.tsx │ ├── ConditionalSnow.tsx │ ├── ConditionalChristmas.tsx │ ├── ColorThemeSwitcher.tsx │ ├── Navigation.astro │ ├── GitHubPRCount.tsx │ ├── ThemeToggle.tsx │ ├── ChristmasLights.tsx │ ├── Footer.astro │ ├── ColorThemeDropdown.tsx │ ├── PyPIRelease.tsx │ ├── OceanWaves.tsx │ └── GitHubContributors.tsx ├── lib │ └── utils.ts ├── layouts │ └── BaseLayout.astro └── pages │ ├── microsoft-donation-2013.astro │ ├── sloan-grant.astro │ ├── roadmap-announcement.astro │ ├── usersurvey2011.astro │ ├── install.astro │ ├── community.astro │ ├── get-started.astro │ ├── features.astro │ └── presentation.astro ├── public ├── _images │ ├── role.png │ ├── sector.png │ ├── countries.png │ ├── ipy_0.11.png │ ├── ipy_0.12.png │ ├── ipy_0.13.png │ ├── partsused.png │ ├── platforms.png │ ├── components.png │ ├── countries1.png │ ├── platforms1.png │ ├── py_versions.png │ ├── help_resources.png │ ├── installation.png │ ├── ipy_versions.png │ ├── jupyter-for-ds.png │ ├── microsoft-logo.png │ ├── jupyter-in-depth.png │ ├── logo-hpc2008-header.png │ ├── ipython-cookbook-2nd.png │ ├── learning-jupyter-book.png │ └── mastering-ipython-book.png ├── ipython-logo.png └── _static │ ├── survey2013 │ ├── role.png │ ├── components.png │ ├── countries.png │ ├── platforms.png │ ├── installation.png │ ├── ipy_versions.png │ ├── py_versions.png │ └── help_resources.png │ ├── survey2011 │ ├── sector.png │ ├── countries.png │ ├── partsused.png │ └── platforms.png │ └── sloangrant │ ├── sloan-grant.pdf │ ├── 13_home_fperez_prof_grants_1207-sloan-ipython_proposal_fig_ipython-notebook-widgets.png │ └── 9_home_fperez_prof_grants_1207-sloan-ipython_proposal_fig_ipython-notebook-specgram.png ├── tsconfig.json ├── .env.example ├── package.json ├── astro.config.mjs ├── DEPLOYMENT.md ├── tailwind.config.cjs └── .github └── workflows └── deploy.yml /.nojekyll: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /CNAME: -------------------------------------------------------------------------------- 1 | ipython.org 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | dist 2 | node_modules 3 | .env 4 | .astro 5 | -------------------------------------------------------------------------------- /src/env.d.ts: -------------------------------------------------------------------------------- 1 | /// -------------------------------------------------------------------------------- /public/_images/role.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython.github.com/main/public/_images/role.png -------------------------------------------------------------------------------- /public/ipython-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython.github.com/main/public/ipython-logo.png -------------------------------------------------------------------------------- /public/_images/sector.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython.github.com/main/public/_images/sector.png -------------------------------------------------------------------------------- /public/_images/countries.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython.github.com/main/public/_images/countries.png -------------------------------------------------------------------------------- /public/_images/ipy_0.11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython.github.com/main/public/_images/ipy_0.11.png -------------------------------------------------------------------------------- /public/_images/ipy_0.12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython.github.com/main/public/_images/ipy_0.12.png -------------------------------------------------------------------------------- /public/_images/ipy_0.13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython.github.com/main/public/_images/ipy_0.13.png -------------------------------------------------------------------------------- /public/_images/partsused.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython.github.com/main/public/_images/partsused.png -------------------------------------------------------------------------------- /public/_images/platforms.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython.github.com/main/public/_images/platforms.png -------------------------------------------------------------------------------- /public/_images/components.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython.github.com/main/public/_images/components.png -------------------------------------------------------------------------------- /public/_images/countries1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython.github.com/main/public/_images/countries1.png -------------------------------------------------------------------------------- /public/_images/platforms1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython.github.com/main/public/_images/platforms1.png -------------------------------------------------------------------------------- /public/_images/py_versions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython.github.com/main/public/_images/py_versions.png -------------------------------------------------------------------------------- /public/_images/help_resources.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython.github.com/main/public/_images/help_resources.png -------------------------------------------------------------------------------- /public/_images/installation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython.github.com/main/public/_images/installation.png -------------------------------------------------------------------------------- /public/_images/ipy_versions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython.github.com/main/public/_images/ipy_versions.png -------------------------------------------------------------------------------- /public/_images/jupyter-for-ds.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython.github.com/main/public/_images/jupyter-for-ds.png -------------------------------------------------------------------------------- /public/_images/microsoft-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython.github.com/main/public/_images/microsoft-logo.png -------------------------------------------------------------------------------- /public/_images/jupyter-in-depth.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython.github.com/main/public/_images/jupyter-in-depth.png -------------------------------------------------------------------------------- /public/_static/survey2013/role.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython.github.com/main/public/_static/survey2013/role.png -------------------------------------------------------------------------------- /public/_images/logo-hpc2008-header.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython.github.com/main/public/_images/logo-hpc2008-header.png -------------------------------------------------------------------------------- /public/_static/survey2011/sector.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython.github.com/main/public/_static/survey2011/sector.png -------------------------------------------------------------------------------- /public/_images/ipython-cookbook-2nd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython.github.com/main/public/_images/ipython-cookbook-2nd.png -------------------------------------------------------------------------------- /public/_images/learning-jupyter-book.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython.github.com/main/public/_images/learning-jupyter-book.png -------------------------------------------------------------------------------- /public/_static/survey2011/countries.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython.github.com/main/public/_static/survey2011/countries.png -------------------------------------------------------------------------------- /public/_static/survey2011/partsused.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython.github.com/main/public/_static/survey2011/partsused.png -------------------------------------------------------------------------------- /public/_static/survey2011/platforms.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython.github.com/main/public/_static/survey2011/platforms.png -------------------------------------------------------------------------------- /public/_static/survey2013/components.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython.github.com/main/public/_static/survey2013/components.png -------------------------------------------------------------------------------- /public/_static/survey2013/countries.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython.github.com/main/public/_static/survey2013/countries.png -------------------------------------------------------------------------------- /public/_static/survey2013/platforms.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython.github.com/main/public/_static/survey2013/platforms.png -------------------------------------------------------------------------------- /public/_images/mastering-ipython-book.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython.github.com/main/public/_images/mastering-ipython-book.png -------------------------------------------------------------------------------- /public/_static/sloangrant/sloan-grant.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython.github.com/main/public/_static/sloangrant/sloan-grant.pdf -------------------------------------------------------------------------------- /public/_static/survey2013/installation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython.github.com/main/public/_static/survey2013/installation.png -------------------------------------------------------------------------------- /public/_static/survey2013/ipy_versions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython.github.com/main/public/_static/survey2013/ipy_versions.png -------------------------------------------------------------------------------- /public/_static/survey2013/py_versions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython.github.com/main/public/_static/survey2013/py_versions.png -------------------------------------------------------------------------------- /public/_static/survey2013/help_resources.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython.github.com/main/public/_static/survey2013/help_resources.png -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "astro/tsconfigs/strict", 3 | "compilerOptions": { 4 | "jsx": "react-jsx", 5 | "jsxImportSource": "react" 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /src/styles/themes/pink.css: -------------------------------------------------------------------------------- 1 | /* Pink theme */ 2 | [data-color-theme="pink"] { 3 | --theme-primary: #be185d; 4 | --theme-secondary: #ec4899; 5 | --theme-accent: #f472b6; 6 | } 7 | -------------------------------------------------------------------------------- /src/styles/themes/indigo.css: -------------------------------------------------------------------------------- 1 | /* Indigo theme */ 2 | [data-color-theme="indigo"] { 3 | --theme-primary: #4338ca; 4 | --theme-secondary: #6366f1; 5 | --theme-accent: #818cf8; 6 | } 7 | -------------------------------------------------------------------------------- /src/styles/themes/orange.css: -------------------------------------------------------------------------------- 1 | /* Orange theme */ 2 | [data-color-theme="orange"] { 3 | --theme-primary: #c2410c; 4 | --theme-secondary: #ea580c; 5 | --theme-accent: #fb923c; 6 | } 7 | -------------------------------------------------------------------------------- /src/styles/themes/purple.css: -------------------------------------------------------------------------------- 1 | /* Purple theme */ 2 | [data-color-theme="purple"] { 3 | --theme-primary: #6b21a8; 4 | --theme-secondary: #9333ea; 5 | --theme-accent: #c084fc; 6 | } 7 | -------------------------------------------------------------------------------- /src/styles/themes/emerald.css: -------------------------------------------------------------------------------- 1 | /* Emerald theme */ 2 | [data-color-theme="emerald"] { 3 | --theme-primary: #047857; 4 | --theme-secondary: #059669; 5 | --theme-accent: #34d399; 6 | } 7 | -------------------------------------------------------------------------------- /.env.example: -------------------------------------------------------------------------------- 1 | # GitHub Personal Access Token (optional) 2 | # Get one at: https://github.com/settings/tokens 3 | # Increases API rate limit from 60/hour to 5000/hour 4 | # Usage: Create a .env file and add: GITHUB_TOKEN=your_token_here 5 | GITHUB_TOKEN= 6 | -------------------------------------------------------------------------------- /public/_static/sloangrant/13_home_fperez_prof_grants_1207-sloan-ipython_proposal_fig_ipython-notebook-widgets.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython.github.com/main/public/_static/sloangrant/13_home_fperez_prof_grants_1207-sloan-ipython_proposal_fig_ipython-notebook-widgets.png -------------------------------------------------------------------------------- /public/_static/sloangrant/9_home_fperez_prof_grants_1207-sloan-ipython_proposal_fig_ipython-notebook-specgram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipython/ipython.github.com/main/public/_static/sloangrant/9_home_fperez_prof_grants_1207-sloan-ipython_proposal_fig_ipython-notebook-specgram.png -------------------------------------------------------------------------------- /src/components/PageHeader.astro: -------------------------------------------------------------------------------- 1 | --- 2 | interface Props { 3 | title: string; 4 | description?: string; 5 | } 6 | 7 | const { title, description } = Astro.props; 8 | --- 9 | 10 |
11 |
12 |

{title}

13 | {description && ( 14 |

{description}

15 | )} 16 |
17 |
18 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ipython-website", 3 | "version": "1.0.0", 4 | "description": "Modern website for IPython", 5 | "type": "module", 6 | "scripts": { 7 | "dev": "astro dev", 8 | "build": "astro build", 9 | "preview": "astro preview" 10 | }, 11 | "dependencies": { 12 | "@astrojs/react": "^4.4.2", 13 | "@astrojs/tailwind": "^6.0.2", 14 | "astro": "^5.16.4", 15 | "react": "^18.3.1", 16 | "react-dom": "^18.3.1", 17 | "tailwindcss": "^3.4.18" 18 | }, 19 | "devDependencies": { 20 | "class-variance-authority": "^0.7.1", 21 | "clsx": "^2.1.1", 22 | "tailwind-merge": "^3.4.0", 23 | "tw-animate-css": "^1.4.0", 24 | "typescript": "^5.3.3" 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/lib/utils.ts: -------------------------------------------------------------------------------- 1 | import { type ClassValue, clsx } from "clsx"; 2 | import { twMerge } from "tailwind-merge"; 3 | 4 | export function cn(...inputs: ClassValue[]) { 5 | return twMerge(clsx(inputs)); 6 | } 7 | 8 | export type ObjectValues = T[keyof T]; 9 | 10 | /** 11 | * Join a path with the base URL, ensuring proper slashes 12 | * Handles cases where BASE_URL may or may not end with / 13 | */ 14 | export function baseUrl(path: string): string { 15 | const base = import.meta.env.BASE_URL; 16 | // Remove leading slash from path if present 17 | const cleanPath = path.startsWith('/') ? path.slice(1) : path; 18 | // Ensure base ends with /, then concatenate 19 | const baseWithSlash = base.endsWith('/') ? base : `${base}/`; 20 | return `${baseWithSlash}${cleanPath}`; 21 | } 22 | -------------------------------------------------------------------------------- /astro.config.mjs: -------------------------------------------------------------------------------- 1 | import { defineConfig } from "astro/config"; 2 | import react from "@astrojs/react"; 3 | import tailwind from "@astrojs/tailwind"; 4 | 5 | // Get base path from environment variable 6 | // For GitHub Pages: if repo is username.github.io, use "" (root) 7 | // Otherwise use /repo-name (must start with / and not end with /) 8 | // Can be set via BASE_PATH env var or defaults to empty (root) 9 | let base = process.env.BASE_PATH || ""; 10 | 11 | // Normalize base path: ensure it starts with / if not empty, and remove trailing / 12 | if (base && !base.startsWith('/')) { 13 | base = '/' + base; 14 | } 15 | if (base.endsWith('/') && base !== '/') { 16 | base = base.slice(0, -1); 17 | } 18 | 19 | // Construct site URL - GitHub Pages format 20 | const owner = process.env.GITHUB_REPOSITORY_OWNER || 'carreau'; 21 | const site = base 22 | ? `https://${owner}.github.io${base}` 23 | : `https://${owner}.github.io`; 24 | 25 | export default defineConfig({ 26 | integrations: [react(), tailwind()], 27 | base: base, 28 | site: site, 29 | output: "static", 30 | }); 31 | -------------------------------------------------------------------------------- /src/components/ConditionalOcean.tsx: -------------------------------------------------------------------------------- 1 | import { useEffect, useState } from 'react'; 2 | import OceanWaves from './OceanWaves'; 3 | 4 | export default function ConditionalOcean() { 5 | const [showOcean, setShowOcean] = useState(false); 6 | 7 | useEffect(() => { 8 | const checkTheme = () => { 9 | const theme = document.documentElement.getAttribute('data-color-theme'); 10 | setShowOcean(theme === 'ocean'); 11 | }; 12 | 13 | // Check initial theme 14 | checkTheme(); 15 | 16 | // Watch for theme changes 17 | const observer = new MutationObserver(checkTheme); 18 | observer.observe(document.documentElement, { 19 | attributes: true, 20 | attributeFilter: ['data-color-theme'], 21 | }); 22 | 23 | // Also check localStorage changes 24 | const handleStorageChange = () => { 25 | checkTheme(); 26 | }; 27 | window.addEventListener('storage', handleStorageChange); 28 | 29 | // Poll for changes (fallback) 30 | const interval = setInterval(checkTheme, 100); 31 | 32 | return () => { 33 | observer.disconnect(); 34 | window.removeEventListener('storage', handleStorageChange); 35 | clearInterval(interval); 36 | }; 37 | }, []); 38 | 39 | return showOcean ? : null; 40 | } 41 | -------------------------------------------------------------------------------- /src/components/ConditionalSnow.tsx: -------------------------------------------------------------------------------- 1 | import { useEffect, useState } from 'react'; 2 | import SnowEffect from './SnowEffect'; 3 | 4 | export default function ConditionalSnow() { 5 | const [showSnow, setShowSnow] = useState(false); 6 | 7 | useEffect(() => { 8 | const checkTheme = () => { 9 | const theme = document.documentElement.getAttribute('data-color-theme'); 10 | setShowSnow(theme === 'winter'); 11 | }; 12 | 13 | // Check initial theme 14 | checkTheme(); 15 | 16 | // Watch for theme changes 17 | const observer = new MutationObserver(checkTheme); 18 | observer.observe(document.documentElement, { 19 | attributes: true, 20 | attributeFilter: ['data-color-theme'], 21 | }); 22 | 23 | // Also check localStorage changes (in case theme changes via another tab) 24 | const handleStorageChange = () => { 25 | checkTheme(); 26 | }; 27 | window.addEventListener('storage', handleStorageChange); 28 | 29 | // Poll for changes (fallback) 30 | const interval = setInterval(checkTheme, 100); 31 | 32 | return () => { 33 | observer.disconnect(); 34 | window.removeEventListener('storage', handleStorageChange); 35 | clearInterval(interval); 36 | }; 37 | }, []); 38 | 39 | return showSnow ? : null; 40 | } 41 | -------------------------------------------------------------------------------- /src/components/ConditionalChristmas.tsx: -------------------------------------------------------------------------------- 1 | import { useEffect, useState } from 'react'; 2 | import ChristmasSparkles from './ChristmasLights'; 3 | 4 | export default function ConditionalChristmas() { 5 | const [showChristmas, setShowChristmas] = useState(false); 6 | 7 | useEffect(() => { 8 | const checkTheme = () => { 9 | const theme = document.documentElement.getAttribute('data-color-theme'); 10 | setShowChristmas(theme === 'christmas'); 11 | }; 12 | 13 | // Check initial theme 14 | checkTheme(); 15 | 16 | // Watch for theme changes 17 | const observer = new MutationObserver(checkTheme); 18 | observer.observe(document.documentElement, { 19 | attributes: true, 20 | attributeFilter: ['data-color-theme'], 21 | }); 22 | 23 | // Also check localStorage changes 24 | const handleStorageChange = () => { 25 | checkTheme(); 26 | }; 27 | window.addEventListener('storage', handleStorageChange); 28 | 29 | // Poll for changes (fallback) 30 | const interval = setInterval(checkTheme, 100); 31 | 32 | return () => { 33 | observer.disconnect(); 34 | window.removeEventListener('storage', handleStorageChange); 35 | clearInterval(interval); 36 | }; 37 | }, []); 38 | 39 | return showChristmas ? : null; 40 | } 41 | -------------------------------------------------------------------------------- /src/layouts/BaseLayout.astro: -------------------------------------------------------------------------------- 1 | --- 2 | import '../styles/global.css'; 3 | import ConditionalSnow from '../components/ConditionalSnow.tsx'; 4 | import ConditionalChristmas from '../components/ConditionalChristmas.tsx'; 5 | import ConditionalOcean from '../components/ConditionalOcean.tsx'; 6 | import { baseUrl } from '../lib/utils'; 7 | 8 | interface Props { 9 | title: string; 10 | description?: string; 11 | } 12 | 13 | const { title, description = 'IPython - Productive Interactive Computing' } = Astro.props; 14 | --- 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | {title} | IPython 24 | 25 | 26 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | -------------------------------------------------------------------------------- /DEPLOYMENT.md: -------------------------------------------------------------------------------- 1 | # GitHub Pages Deployment 2 | 3 | This repository is configured to automatically deploy to GitHub Pages at `https://ipython.github.io` (or `https://ipython.github.com` which still works). 4 | 5 | ## Setup Instructions 6 | 7 | ### 1. Enable GitHub Pages 8 | 9 | 1. Go to your repository Settings → Pages 10 | - Or visit: `https://github.com/ipython/[this-repo]/settings/pages` 11 | 2. Under "Source", select **"GitHub Actions"** (not "Deploy from a branch") 12 | 3. Save the settings 13 | 14 | ### 2. Deploy 15 | 16 | The workflow will automatically run on every push to the `main` branch. You can also manually trigger it: 17 | 18 | 1. Go to Actions tab 19 | 2. Select "Deploy to GitHub Pages" workflow 20 | 3. Click "Run workflow" → "Run workflow" 21 | 22 | ## How It Works 23 | 24 | The deployment workflow: 25 | 26 | 1. **Builds the site** from the `main` branch 27 | 2. **Uploads** the built files as an artifact 28 | 3. **Deploys** to GitHub Pages (which serves from the `gh-pages` branch automatically) 29 | 4. Makes the site available at `https://ipython.github.io/[repo-name]` or `https://ipython.github.com/[repo-name]` 30 | 31 | ## Configuration 32 | 33 | The build uses these environment variables: 34 | - `BASE_PATH`: Set to empty string for root domain deployment 35 | - `GITHUB_REPOSITORY_OWNER`: Set to `ipython` for correct asset paths 36 | 37 | These are set automatically in the workflow. 38 | 39 | ## Troubleshooting 40 | 41 | ### "Permission denied" errors 42 | 43 | - Ensure GitHub Pages is enabled in repository settings 44 | - Check that the workflow has the correct permissions (should be automatic) 45 | 46 | ### Build succeeds but site doesn't update 47 | 48 | - Check the Actions logs for the deploy step 49 | - Wait a few minutes for GitHub Pages to rebuild 50 | - Verify the Pages source is set to "GitHub Actions" not a branch 51 | 52 | ### Site not accessible 53 | 54 | - Check repository visibility (public repos work automatically) 55 | - Verify the repository name matches the expected GitHub Pages URL pattern 56 | - For organization repos, ensure Pages is enabled at the organization level if needed 57 | -------------------------------------------------------------------------------- /src/pages/microsoft-donation-2013.astro: -------------------------------------------------------------------------------- 1 | --- 2 | import BaseLayout from '../layouts/BaseLayout.astro'; 3 | import Navigation from '../components/Navigation.astro'; 4 | import Footer from '../components/Footer.astro'; 5 | import PageHeader from '../components/PageHeader.astro'; 6 | import { baseUrl } from '../lib/utils'; 7 | --- 8 | 9 | 10 | 11 | 12 | 13 |
14 |
15 | Microsoft Logo 16 | 17 |

We are thrilled to announce that in August 2013, Microsoft made a donation of $100,000 to sponsor IPython's continued development.

18 | 19 |

This donation was received through NumFOCUS, and is the next step in a fruitful collaboration IPython has had with Microsoft:

20 | 21 |
    22 |
  • In 2009 we added integration with Windows HPC Server for IPython's parallel computing capabilities.
  • 23 |
  • In 2010, the Python Tools for Visual Studio team developed integration with IPython into the PTVS project.
  • 24 |
  • In 2012, we showed how IPython could be integrated into an Azure-based workflow, using the Notebook to easily control computational resources in Microsoft's cloud platform.
  • 25 |
26 | 27 |

We are extremely grateful for this contribution, which we will use to continue strengthening multiple aspects of IPython. While we have other sources of funding and the support of the larger open source community, these new funds will help us to focus effort in specific areas where we identify additional challenges or opportunities beyond the scope of those resources.

28 |
29 |
30 | 31 |