Going Places: How I used Golang for literally every part of an IoT system

This page summarizes the projects mentioned and recommended in the original post on dev.to

InfluxDB - Power Real-Time Data Analytics at Scale
Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
www.influxdata.com
featured
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com
featured

    To keep the project simple, I decided to just make an Mac status bar application rather than full-fledged UI application. For this task, conveniently, there's already a popular package caseymrm/menuet. I only have to define my status bar app as below and bind the different functions of lighthttpcli to UI interactions.

  • go

    The Go programming language

  • Let's start with something light-hearted which most of us might have at least heard about - WebAssembly. I won't go into nitty gritty details of WebAssembly in this post as we all have short attention spans, but basically we just have to write a simple Go script with a main function that will be compiled down to wasm and executed with the help of GoWASM exec script. Read more about Go WebAssembly here.

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • mobile

    [mirror] Go on Mobile

  • This part is one that I struggled the most with as the gomobile package is unstable and also lacks documentation and guides (as we all could have guessed that it's rarely used in a practical sense).

  • statik

    Embed files into a Go executable

  • Aren't our web assets part of the system as well? So to make it completely Go, we've gotta some how make them part of the Go code. The most obvious choice for that is to turn them into binaries and embed right inside our backend code. This task is relatively simple with a wide range of tools to choose from. For this project, I went with statik, and simply generate the embeddings with this command.

  • go-everywhere

    A complete IoT system built entirely in Go

  • Now it's time for some unveiling and see the system in action 🤩. The complete source code can be found in this repo.

  • TinyGo

    Go compiler for small places. Microcontrollers, WebAssembly (WASM/WASI), and command-line tools. Based on LLVM.

  • The special part about this code is the machine package that's not a built-in but provided within the build environment of tinygo. All the heavy-lifting of flasing into our micro-controllers is done by tinygo as well, making it a piece of cake 🍰 to work with micro-controllers.

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts

  • Use Golang Migrate on Docker Compose

    2 projects | dev.to | 27 May 2024
  • Database Migration: Take Care of Your Database Changes

    2 projects | dev.to | 26 May 2024
  • TypeScript dev tools in the Golang world

    1 project | dev.to | 1 May 2024
  • Why SQLite Uses Bytecode

    3 projects | news.ycombinator.com | 30 Apr 2024
  • Let's Talk About REST...

    2 projects | dev.to | 30 Apr 2024