Skip to content

Commit

Permalink
Merge pull request #15 from calvinmclean/projects
Browse files Browse the repository at this point in the history
Add projects page and summaries
  • Loading branch information
calvinmclean authored Jan 9, 2024
2 parents d7ff32e + 13109ef commit 6c5b5f1
Show file tree
Hide file tree
Showing 7 changed files with 51 additions and 2 deletions.
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)

0 comments on commit 6c5b5f1

Please sign in to comment.