Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add projects page and summaries #15

Merged
merged 1 commit into from
Jan 9, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Calvin McLean

[![GitHub Pages Site](https://img.shields.io/badge/View-GitHub_Pages-blue?style=for-the-badge)](https://calvinmclean.github.io/#/)
[![dev.to](https://img.shields.io/badge/View-Dev.to-yellow?style=for-the-badge)](https://calvinmclean.github.io/#/)
[![image](https://img.shields.io/badge/GitHub-100000?style=for-the-badge&logo=github&logoColor=white)](https://calvinmclean.github.io/#/)
[![dev.to](https://img.shields.io/badge/dev.to-0A0A0A?style=for-the-badge&logo=devdotto&logoColor=white)](https://dev.to/calvinmclean)

This repository will eventually contain some more information about myself, my interests, and experience.
Currently, it just contains articles that I have written.
Expand Down
5 changes: 5 additions & 0 deletions _sidebar.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,8 @@
* [The Magic of Interfaces in Go](articles/implicit-interfaces/article.md)
* [Taking Notes to Improve Your Productivity](articles/note-taking/article.md)
* [Stop Using Makefile (Use Taskfile Instead)](articles/taskfile/article.md)
* [Projects](projects_homepage.md)
* [`babyapi`](projects/babyapi.md)
* [`automated-garden`](projects/automated_garden.md)
* [`article-sync`](projects/article_sync.md)
* [`tic-tac-go`](projects/tic_tac_go.md)
9 changes: 9 additions & 0 deletions projects/article_sync.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# Article Sync

[![article-sync](https://img.shields.io/badge/GitHub-100000?style=for-the-badge&logo=github&logoColor=white)](https://github.com/calvinmclean/article-sync)

Article Sync is a simple CLI written in Go + a GitHub Action to easily run it in GitHub. This enables synchronizing markdown articles (like the ones on this site!) to blog/article platforms like [dev.to](https://dev.to/calvinmclean/manage-dev-articles-with-git-and-github-actions-13md).

The GitHub Action will leave comments on PRs with an explanation of changes after merging. Then, once merged to `main`, it will synchronize with the platforms and commit any new article IDs and links to the `article.json` files.

A fun feature of `article-sync` is that you can provide a link to an image from [gopherize.me](https://gopherize.me) to automatically create an article banner with the title and the generated gopher image.
11 changes: 11 additions & 0 deletions projects/automated_garden.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# Automated Garden

[![automated-garden](https://img.shields.io/badge/GitHub-100000?style=for-the-badge&logo=github&logoColor=white)](https://github.com/calvinmclean/automated-garden)

Automated Garden is an open source irrigation controller. The repository contains code for ESP32 microcontrollers to toggle valves and report sensor data as well as a Go server which provides the API, scheduling, and serves the UI. Currently, the UI is created with Svelte but I am re-writing to use HTMX. It is integrated with the Netatmo API to allow watering based on real measurements from your Netatmo weather sensors.

The backend communicates with multiple devices using the MQTT message protocol. The individual controllers then push data and watering logs to InfluxDB via MQTT and Telegraf. Grafana is used to visualize sensor data and Prometheus metrics from the application.

The architecture of the project uses InfluxDB to store time-series data from sensors and logs to confirm that the controller successfully completed watering.

This project also was the starting point for the API structure that was used to create `babyapi`.
9 changes: 9 additions & 0 deletions projects/babyapi.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# BabyAPI

[![babyapi](https://img.shields.io/badge/GitHub-100000?style=for-the-badge&logo=github&logoColor=white)](https://github.com/calvinmclean/babyapi)

`babyapi` is a super simple framework that automatically creates an HTTP API for create, read, update, and delete operations on a struct. It is intended to make it as easy as possible to go from nothing to a fully functioning REST API, but also aims to allow enough flexibility for creating real web applications. It also has built-in integrations for using Redis as a key-value store so you can quickly and easily create an HTTP API with persistent storage.

I got tired of re-writing boilerplate code for HTTP handling in my `automated-garden` project. I also was interested in learning about generics in Go, so I extracted some of the generic behaviors into reusable methods. This eventually evolved into `babyapi`.

You can read more about `babyapi` in [this article that I wrote](https://dev.to/calvinmclean/the-easiest-way-to-create-a-rest-api-with-go-20bo) and the [GitHub repository](https://github.com/calvinmclean/babyapi).
5 changes: 5 additions & 0 deletions projects/tic_tac_go.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Tic Tac Go

[![tic-tac-go](https://img.shields.io/badge/GitHub-100000?style=for-the-badge&logo=github&logoColor=white)](https://github.com/calvinmclean/tic-tac-go)

Tic Tac Go is a tic tac toe game implemented using Go and HTMX. It uses server-sent events to enable multiplayer without websockets. Simply share the link with a friend to have them join your game.
10 changes: 10 additions & 0 deletions projects_homepage.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# Projects

I enjoy working on programming projects in my free time to learn new things and build tools that are useful in my regular life.

These are some of my side projects that I am particularly proud of. Check out [my GitHub](https://github.com/calvinmclean) to see all of my projects!

* [`babyapi`: Simple HTTP API framework in Go](projects/babyapi.md)
* [`automated-garden`: Weather-aware open irrigation controller](projects/automated_garden.md)
* [`article-sync`: CLI and GitHub Action to sync articles from this repostory to Dev.to](projects/article_sync.md)
* [`tic-tac-go`: web-based tic tac toe game with Go and HTMX](projects/tic_tac_go.md)