Initial outline with some page content

This commit is contained in:
Daniel McKnight 2025-01-30 20:05:16 -08:00
commit 53df537650
6 changed files with 154 additions and 0 deletions

49
__main__.py Normal file
View file

@ -0,0 +1,49 @@
from os.path import abspath, isfile
from nicegui import ui
_tab_to_content = {
"Home": "page_content/home.md",
"Portfolio": "page_content/portfolio.md",
"Resume": "page_content/resume.md",
"Bio": "page_content/bio.md"
}
_error_page = "page_content/404.md"
def _get_content_from_file(file_name: str) -> str:
"""
Take a file name/path and return its contents
:param file_name: Relative or absolute path to a file
"""
if not isfile(abspath(file_name)):
file_name = _error_page
with open(abspath(file_name), 'r') as f:
return f.read()
def render_tab(tab_name: str):
file_name = _tab_to_content.get(tab_name, _error_page)
ui.markdown(_get_content_from_file(file_name))
def render_header() -> ui.tab_panels:
"""
Render sticky page header with navigation
"""
tab_names = _tab_to_content.keys()
with ui.tabs().classes('w-full') as tabs:
tab_list = [ui.tab(name) for name in tab_names]
with ui.tab_panels(tabs).classes('w-full') as header:
for t in tab_list:
with ui.tab_panel(t):
render_tab(t._props['name'])
return header
def main():
header = render_header()
header.set_value(list(_tab_to_content.keys())[0])
ui.run(dark=None)
if __name__ in ("__main__", "__mp_main__"):
main()

1
page_content/404.md Normal file
View file

@ -0,0 +1 @@
Oops. This content hasn't been written yet...

1
page_content/bio.md Normal file
View file

@ -0,0 +1 @@
## Hi!

19
page_content/home.md Normal file
View file

@ -0,0 +1,19 @@
# McKnight Technology Services
Hi! This is some text
## h2 Title
Lorem ipsum...
> This is a quote
### Shell
```shell
ls /
```
### Python
```python
for i in range(42):
print(i)
```

32
page_content/portfolio.md Normal file
View file

@ -0,0 +1,32 @@
# Project Portfolio
I have developed and contributed to hundreds of open source repositories on GitHub (as well as some Private ones that
I cannot share here). This is just a selection of some of my favorite projects and what I like about them.
## `neon-data-models`
This repository contains barely any functional code, but it was an exercise in careful planning.
It is structured into a logical hierarchy with documentation and unit tests.
This project was not fully integrated to the extent I planned, but it proved invaluable in defining/validating
messages sent between modules. The use of Pydantic also means that validator methods can be used to adapt an old-style
input into a new one when an API changes.
## `neon-users-service`
This project defines a service for managing a user database with a flexible backend; initially, it supports SQLite for
a standalone system (and easy development/testing) and MongoDb, which is what we used for production at NeonGecko.
I implemented a very simple CRUD (Create/Read/Update/Delete) design, with RBAC (Role-Based Access Controls) to enable
easy integration with applications. The design enables the service to be easily adapted to any user database and to
allow other services to easily operate on user entries (with the proper permissions, of course).
## `neon-hana`
This is primarily a RESTful API used to access other services. This is one of the more complex FastAPI applications
I have written; it implements JWT authentication and Pydantic models to validate requests/responses.
## `neon-diana`
This isn't the prettiest project, but it is my first foray into writing Helm charts. The module provides some
developer-oriented CLI tools for generating Helm charts to deploy the same services NeonGecko uses in production
systems.
## `neon-docs`
Just what it says, this is all documentation.
## This Site
I fully defined this site using [nicegui](https://nicegui.io/)!

52
page_content/resume.md Normal file
View file

@ -0,0 +1,52 @@
## Work Experience
### Neon Gecko Inc.
Software Developer, Developer Relations Manager, Lead Hardware Developer
December 2017 Present. Responsibilities Include:
- Managing multiple projects and work from individual contributors, one-off contractors, and long-term contract workers
- Working with management and developers to develop roadmaps, set timelines, and spec projects
- Extensive Python programming
- Extensive GitOps and workflow design, automation, and management
- Being fluent in voice assistant concepts and technologies
- Having a strong understanding of LLM technologies and model fine-tuning
- Deploying and maintaining infrastructure with Kubernetes, XCP-ng, and various cloud providers
- Kotlin for Android app development and Google Play Store publication
### Best Buy/Geek Squad
Consultation Agent, Sales Associate
November 2015 - December 2017
- Experience with Windows and Mac system administration, troubleshooting, and repair
## Projects
- Professional open-source work can be found at: https://github.com/neondaniel
- Documentation I wrote for much of my professional work: https://neongeckocom.github.io/neon-docs/
- A selection of small projects are documented on my blog: https://blog.mcknight.tech/
## Technologies
### Languages
- Python
- SQL
- MongoDb
- Kotlin
### Frameworks
- Git and GitHub
- FastAPI
- SocketIO
- Sentry
- Kubernetes
## Education
### University of Washington
Bachelor of Science in Physics, June 2018
Secretary, Physics Club at UW Bothell
### Bellevue College
Associate of Science in Engineering, June 2016
Member, Phi Theta Kappa Honors Society
### Mercer Island High School
High School Diploma, June 2012
Recipient, Washington State Honors Award