Skip to content

Commit 31350c0

Browse files
author
hthiagarajan
committed
Initial commit
0 parents  commit 31350c0

15 files changed

Lines changed: 497 additions & 0 deletions

File tree

.github/workflows/deploy.yml

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
name: Deploy to GitHub Pages
2+
3+
on:
4+
push:
5+
branches:
6+
- main # Set this to your default branch
7+
8+
jobs:
9+
build-and-deploy:
10+
runs-on: ubuntu-latest
11+
steps:
12+
- name: Checkout
13+
uses: actions/checkout@v3
14+
15+
- name: Set up Python
16+
uses: actions/setup-python@v4
17+
with:
18+
python-version: '3.x'
19+
20+
- name: Install dependencies
21+
run: |
22+
python -m pip install --upgrade pip
23+
pip install -r requirements.txt
24+
25+
- name: Build site
26+
run: |
27+
python build.py
28+
29+
- name: Deploy
30+
uses: JamesIves/github-pages-deploy-action@v4
31+
with:
32+
folder: _site # The folder the action should deploy
33+
branch: gh-pages # The branch the action should deploy to

.gitignore

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# Python
2+
__pycache__/
3+
*.py[cod]
4+
*$py.class
5+
*.so
6+
.Python
7+
venv/
8+
ENV/
9+
10+
# IDE
11+
.idea/
12+
.vscode/
13+
*.swp
14+
*.swo
15+
16+
# OS
17+
.DS_Store
18+
Thumbs.db

README.md

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
# Dr. Hariharan Thiagarajan's Personal Website
2+
3+
This is a personal website built with Flask and reStructuredText for easy content management.
4+
5+
## Setup
6+
7+
1. Create a virtual environment:
8+
```bash
9+
python -m venv venv
10+
source venv/bin/activate # On Unix/macOS
11+
```
12+
13+
2. Install dependencies:
14+
```bash
15+
pip install -r requirements.txt
16+
```
17+
18+
3. Run the development server:
19+
```bash
20+
python app.py
21+
```
22+
23+
## Content Management
24+
25+
The website content is managed through reStructuredText (RST) files in the `content` directory. To update content:
26+
27+
1. Edit the corresponding RST file in the `content` directory
28+
2. The changes will be automatically reflected on the website
29+
30+
## Structure
31+
32+
- `app.py`: Main Flask application
33+
- `content/`: RST content files
34+
- `templates/`: HTML templates
35+
- `static/`: Static files (CSS, images, etc.)

app.py

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
from flask import Flask, render_template
2+
import docutils.core
3+
import os
4+
from datetime import datetime
5+
6+
app = Flask(__name__)
7+
8+
def rst_to_html(rst_content):
9+
"""Convert RST content to HTML."""
10+
overrides = {
11+
'input_encoding': 'unicode',
12+
'output_encoding': 'unicode',
13+
'report_level': 5, # Suppress all messages
14+
'halt_level': 5, # Don't halt on any level
15+
}
16+
return docutils.core.publish_string(
17+
source=rst_content,
18+
writer_name='html',
19+
settings_overrides=overrides
20+
)
21+
22+
def get_content(filename):
23+
"""Read and convert RST content from file."""
24+
with open(os.path.join('content', filename), 'r', encoding='utf-8') as f:
25+
return rst_to_html(f.read())
26+
27+
@app.route('/')
28+
def home():
29+
return render_template('index.html',
30+
content=get_content('index.rst'),
31+
current_year=datetime.now().year)
32+
33+
@app.route('/publications')
34+
def publications():
35+
return render_template('publications.html',
36+
content=get_content('publications.rst'),
37+
current_year=datetime.now().year)
38+
39+
@app.route('/experience')
40+
def experience():
41+
return render_template('experience.html',
42+
content=get_content('experience.rst'),
43+
current_year=datetime.now().year)
44+
45+
if __name__ == '__main__':
46+
app.run(debug=True)

build.py

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
import os
2+
import shutil
3+
from flask import Flask, render_template
4+
import docutils.core
5+
from datetime import datetime
6+
7+
app = Flask(__name__)
8+
9+
def rst_to_html(rst_content):
10+
"""Convert RST content to HTML."""
11+
overrides = {
12+
'input_encoding': 'unicode',
13+
'output_encoding': 'unicode',
14+
'report_level': 5, # Suppress all messages
15+
'halt_level': 5, # Don't halt on any level
16+
}
17+
return docutils.core.publish_string(
18+
source=rst_content,
19+
writer_name='html',
20+
settings_overrides=overrides
21+
)
22+
23+
def get_content(filename):
24+
"""Read and convert RST content from file."""
25+
with open(os.path.join('content', filename), 'r', encoding='utf-8') as f:
26+
return rst_to_html(f.read())
27+
28+
def build_page(template, content_file, output_file):
29+
"""Build a single page."""
30+
with app.app_context():
31+
content = get_content(content_file)
32+
html = render_template(template,
33+
content=content,
34+
current_year=datetime.now().year)
35+
36+
# Ensure the directory exists
37+
os.makedirs(os.path.dirname(output_file), exist_ok=True)
38+
39+
with open(output_file, 'w', encoding='utf-8') as f:
40+
f.write(html)
41+
42+
def main():
43+
# Create output directory
44+
if os.path.exists('_site'):
45+
shutil.rmtree('_site')
46+
os.makedirs('_site')
47+
48+
# Build pages
49+
build_page('index.html', 'index.rst', '_site/index.html')
50+
build_page('publications.html', 'publications.rst', '_site/publications/index.html')
51+
build_page('experience.html', 'experience.rst', '_site/experience/index.html')
52+
53+
# Copy static files
54+
shutil.copytree('static', '_site/static', dirs_exist_ok=True)
55+
56+
if __name__ == '__main__':
57+
main()

content/experience.rst

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
Professional Experience
2+
=====================
3+
4+
Current Position
5+
--------------
6+
7+
**Senior Software Engineer**
8+
*Zoox Inc.*
9+
*2022 - Present*
10+
11+
- Leading middleware development for autonomous vehicles
12+
- Improving robotic platform architecture and performance
13+
- Implementing safety-critical software systems
14+
- Collaborating with cross-functional teams on system design and implementation
15+
16+
Previous Experience
17+
-----------------
18+
19+
**Research Assistant**
20+
*Kansas State University*
21+
*2011 - 2022*
22+
23+
- Conducted research in formal methods and static analysis
24+
- Developed tools for model-based safety and security assessment
25+
- Published multiple papers in top conferences and journals
26+
- Mentored graduate and undergraduate students
27+
28+
Key Achievements
29+
--------------
30+
31+
- Developed AADL-based analysis frameworks for safety-critical systems
32+
- Created tools for information flow analysis in SPARK ADA programs
33+
- Contributed to open-source projects in formal methods
34+
- Successfully defended Ph.D. dissertation on model-based safety assessment
35+
36+
Technical Skills
37+
--------------
38+
39+
- Programming Languages: Python, C++, Ada, SPARK
40+
- Tools & Frameworks: AADL, ROS, Git
41+
- Areas of Expertise:
42+
- Formal Methods
43+
- Static Analysis
44+
- Safety-Critical Systems
45+
- Middleware Development
46+
- Robotic Systems

content/index.rst

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
=======================
2+
Dr. Hariharan Thiagarajan
3+
=======================
4+
5+
-----------------------------------
6+
Senior Software Engineer at Zoox Inc.
7+
-----------------------------------
8+
9+
About Me
10+
--------
11+
12+
I am a Senior Software Engineer at Zoox Inc., where I focus on improving middleware and robotic platform development. With a strong background in formal methods and static analysis, I bring academic rigor to practical software engineering challenges.
13+
14+
Research Interests
15+
-----------------
16+
17+
- Formal Methods
18+
- Static Analysis
19+
- Model-Based Safety and Security Assessment
20+
- High Assurance Systems
21+
- Information Flow Analysis
22+
23+
Education
24+
---------
25+
26+
- Ph.D. in Computer Science, Kansas State University
27+
- Research focused on model-based safety and security assessment of high assurance systems
28+
29+
Current Work
30+
-----------
31+
32+
At Zoox Inc., I am working on:
33+
34+
- Middleware development for autonomous vehicles
35+
- Robotic platform improvements
36+
- System architecture and safety-critical software development
37+
38+
Contact
39+
-------
40+
41+
Feel free to reach out to me through:
42+
43+
- Email: `hariharanthiagu@gmail.com <mailto:hariharanthiagu@gmail.com>`_
44+
- `Google Scholar <https://scholar.google.com/citations?user=k4H0booAAAAJ&hl=en>`_
45+
- `LinkedIn <https://www.linkedin.com/in/hariharan-thiagarajan>`_

content/publications.rst

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
Publications
2+
============
3+
4+
Selected Publications
5+
-------------------
6+
7+
1. **Model-based risk analysis for an open-source PCA pump using AADL error modeling**
8+
9+
H Thiagarajan, B Larson, J Hatcliff, Y Zhang
10+
11+
International Symposium on Model-Based Safety and Assessment, 34-50, 2020
12+
13+
`Cited by 10 <https://scholar.google.com/scholar?oi=bibs&hl=en&cites=14032805000554592233>`_
14+
15+
2. **Bakar Alir: supporting developers in construction of information flow contracts in SPARK**
16+
17+
H Thiagarajan, J Hatcliff, J Belt
18+
19+
2012 IEEE 12th International Working Conference on Source Code Analysis and Manipulation
20+
21+
`Cited by 8 <https://scholar.google.com/scholar?oi=bibs&hl=en&cites=6788209203340501788>`_
22+
23+
3. **Awas: AADL information flow and error propagation analysis framework**
24+
25+
H Thiagarajan, J Hatcliff, Robby
26+
27+
Innovations in Systems and Software Engineering 18 (4), 485–504, 2021
28+
29+
`Cited by 7 <https://scholar.google.com/scholar?oi=bibs&hl=en&cites=15250520109349008340>`_
30+
31+
4. **Supporting model based safety and security assessment of high assurance systems**
32+
33+
H Thiagarajan
34+
35+
Kansas State University, 2022
36+
37+
`Cited by 3 <https://scholar.google.com/scholar?oi=bibs&hl=en&cites=8430544688970953684>`_
38+
39+
5. **Dependence analysis for inferring information flow properties in Spark ADA programs**
40+
41+
H Thiagarajan
42+
43+
Kansas State University, 2011
44+
45+
Metrics
46+
-------
47+
48+
- Total Citations: 28
49+
- h-index: 3
50+
- i10-index: 1
51+
52+
For a complete list of publications and citations, please visit my `Google Scholar profile <https://scholar.google.com/citations?user=k4H0booAAAAJ&hl=en>`_.

requirements.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
Flask==3.0.2
2+
docutils==0.20.1
3+
python-dateutil==2.8.2
4+
Pygments==2.17.2

0 commit comments

Comments
 (0)