Skip to content

Commit

Permalink
update and move to vite
Browse files Browse the repository at this point in the history
  • Loading branch information
MaxGhenis committed Jan 1, 2025
1 parent 162f23e commit 444ef4d
Show file tree
Hide file tree
Showing 14 changed files with 5,065 additions and 153 deletions.
24 changes: 24 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*

node_modules
dist
dist-ssr
*.local

# Editor directories and files
.vscode/*
!.vscode/extensions.json
.idea
.DS_Store
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
9 changes: 8 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1 +1,8 @@
# [maxghenis.com](https://maxghenis.com)
# React + Vite

This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.

Currently, two official plugins are available:

- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/README.md) uses [Babel](https://babeljs.io/) for Fast Refresh
- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh
38 changes: 38 additions & 0 deletions eslint.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
import js from '@eslint/js'
import globals from 'globals'
import react from 'eslint-plugin-react'
import reactHooks from 'eslint-plugin-react-hooks'
import reactRefresh from 'eslint-plugin-react-refresh'

export default [
{ ignores: ['dist'] },
{
files: ['**/*.{js,jsx}'],
languageOptions: {
ecmaVersion: 2020,
globals: globals.browser,
parserOptions: {
ecmaVersion: 'latest',
ecmaFeatures: { jsx: true },
sourceType: 'module',
},
},
settings: { react: { version: '18.3' } },
plugins: {
react,
'react-hooks': reactHooks,
'react-refresh': reactRefresh,
},
rules: {
...js.configs.recommended.rules,
...react.configs.recommended.rules,
...react.configs['jsx-runtime'].rules,
...reactHooks.configs.recommended.rules,
'react/jsx-no-target-blank': 'off',
'react-refresh/only-export-components': [
'warn',
{ allowConstantExport: true },
],
},
},
]
153 changes: 1 addition & 152 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -4,161 +4,10 @@
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Max Ghenis</title>
<!-- React -->
<script src="https://unpkg.com/react@18/umd/react.development.js"></script>
<script src="https://unpkg.com/react-dom@18/umd/react-dom.development.js"></script>
<!-- Babel -->
<script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script>
<!-- Tailwind -->
<script src="https://cdn.tailwindcss.com"></script>
<!-- Font Awesome instead of Lucide -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css" />
</head>
<body>
<div id="root"></div>
<script type="text/babel">
function App() {
return (
<div className="min-h-screen bg-white">
{/* Header */}
<header className="bg-gray-50 py-16">
<div className="max-w-4xl mx-auto px-4">
<div className="flex items-center gap-8">
<div className="w-48 h-48 bg-gray-200 rounded-full">
<img
src="images/headshot.png"
alt="Max Ghenis"
className="rounded-full w-full h-full object-cover"
/>
</div>
<div>
<h1 className="text-4xl font-bold text-gray-900 mb-4">Max Ghenis</h1>
<p className="text-xl text-gray-600 mb-4">
Economist, Policy Entrepreneur, and Data Scientist
</p>
<div className="flex gap-4">
<a href="https://x.com/maxghenis" className="text-gray-600 hover:text-gray-900">
<i className="fab fa-x-twitter w-6 h-6"></i>
</a>
<a href="https://linkedin.com/in/maxghenis" className="text-gray-600 hover:text-gray-900">
<i className="fab fa-linkedin w-6 h-6"></i>
</a>
<a href="https://github.com/maxghenis" className="text-gray-600 hover:text-gray-900">
<i className="fab fa-github w-6 h-6"></i>
</a>
</div>
</div>
</div>
</div>
</header>

{/* Rest of the content remains the same */}
<main className="max-w-4xl mx-auto px-4 py-12">
{/* Current Work */}
<section className="mb-12">
<h2 className="text-2xl font-bold text-gray-900 mb-6">Current Work</h2>
<div className="prose max-w-none">
<p className="mb-4">
I'm the co-founder and CEO of <a href="https://policyengine.org" className="text-blue-600 hover:text-blue-800">PolicyEngine</a>,
a nonprofit organization that develops open-source software for computing public policy impact.
We operate in the US and UK, working with contractors globally to
maintain tax-benefit models across the US, UK, Canada, and Nigeria.
I previously founded and served as president of the UBI Center, a think tank researching universal basic income policies, and worked at Google as a data scientist, leading projects to make internal operations and products more inclusive across the world.
</p>
</div>
</section>

{/* Academic Research */}
<section className="mb-12">
<h2 className="text-2xl font-bold text-gray-900 mb-6">Academic Research</h2>
<div className="space-y-6">
<div className="bg-gray-50 p-6 rounded-lg">
<h3 className="text-xl font-semibold mb-2">AI Model Policy Impact Forecasts: A Narrative Prompting Approach</h3>
<p className="text-gray-600 mb-4">
Examining LLMs for forecasting policy outcomes under different U.S. presidential administrations.
</p>
</div>
<div className="bg-gray-50 p-6 rounded-lg">
<h3 className="text-xl font-semibold mb-2">Enhancing Survey Microdata with Administrative Records</h3>
<p className="text-gray-600 mb-4">
A novel approach to microsimulation dataset construction, combining CPS and IRS data.
Presented at the National Tax Association meeting (December 2024).
</p>
</div>
</div>
</section>

{/* Side Projects */}
<section className="mb-12">
<h2 className="text-2xl font-bold text-gray-900 mb-6">Side Projects</h2>
<div className="grid grid-cols-1 md:grid-cols-2 gap-6">
<div className="bg-gray-50 p-6 rounded-lg">
<h3 className="text-lg font-semibold mb-2">HiveSight.ai</h3>
<p className="text-gray-600">A tool for surveying LLMs that assume diverse personas</p>
</div>
<div className="bg-gray-50 p-6 rounded-lg">
<h3 className="text-lg font-semibold mb-2">CodeStitch.dev</h3>
<p className="text-gray-600">Stitches together code in GitHub repos for use with LLM services</p>
</div>
</div>
</section>

{/* Featured Articles */}
<section className="mb-12">
<h2 className="text-2xl font-bold text-gray-900 mb-6">Featured Articles</h2>
<div className="space-y-4">
<a href="https://thehill.com/opinion/finance/552333-the-american-rescue-plan-was-a-step-toward-universal-basic-income/"
className="block p-4 bg-gray-50 rounded-lg hover:bg-gray-100">
<h3 className="text-lg font-semibold">The American Rescue Plan was a step toward universal basic income</h3>
<p className="text-gray-600">The Hill</p>
</a>
<a href="https://thehill.com/opinion/finance/514672-would-basic-income-be-better-than-additional-unemployment-benefits/"
className="block p-4 bg-gray-50 rounded-lg hover:bg-gray-100">
<h3 className="text-lg font-semibold">Would basic income be better than additional unemployment benefits?</h3>
<p className="text-gray-600">The Hill</p>
</a>
<a href="https://thehill.com/opinion/white-house/587590-democrats-should-be-courting-romney-not-manchin/"
className="block p-4 bg-gray-50 rounded-lg hover:bg-gray-100">
<h3 className="text-lg font-semibold">Democrats should be courting Romney, not Manchin</h3>
<p className="text-gray-600">The Hill</p>
</a>
</div>
</section>

{/* Education & Background */}
<section>
<h2 className="text-2xl font-bold text-gray-900 mb-6">Education</h2>
<div className="space-y-4">
<div>
<h3 className="text-lg font-semibold">M.S., Data, Economics, and Development Policy</h3>
<p className="text-gray-600">MIT, 2020</p>
</div>
<div>
<h3 className="text-lg font-semibold">B.A., Operations Research and Management Science</h3>
<p className="text-gray-600">UC Berkeley, 2008</p>
<p className="text-gray-600">Minors: Industrial Engineering & Operations Research, Music</p>
</div>
</div>
</section>
</main>

{/* Footer */}
<footer className="bg-gray-50 py-8 mt-12">
<div className="max-w-4xl mx-auto px-4">
<div className="flex flex-wrap gap-4 justify-center text-gray-600">
<a href="https://maxghenis.substack.com/" className="hover:text-gray-900">Substack</a>
<a href="https://medium.com/@maxghenis" className="hover:text-gray-900">Medium</a>
<a href="https://bsky.app/profile/maxghenis.bsky.social" className="hover:text-gray-900">Bluesky</a>
</div>
</div>
</footer>
</div>
);
}

// Render the app
const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(<App />);
</script>
<script type="module" src="/src/main.jsx"></script>
</body>
</html>
Loading

0 comments on commit 444ef4d

Please sign in to comment.