Skip to content

martin-eden/contents

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 

Repository files navigation

Parts of my extended phenotype

  • Embedded C++: Arduino(ATMega328P) and Esplora(ESP8266)

    Organizing data in convenient way is the hardest challenge I've encountered.

    • Crafts
    • Featured crafts
      • me_WifiShip (2023-12 .. 2024-02) for API design and file structure
      • me_Ws2812b (2024-03 .. 2024-05) for writing in assembler and trying to stay readable
      • Willy (2023-11 .. 2024-02 ..) for creating G-codes-like abstraction for motor board. For implementing stack from HTTP endpoint to writing PWM. And for hardware design.
  • Lua: Stock Lua 5.3

    There are three types of my Lua code assemblies.

    First is "workshop", it is my personal Lua framework. Mix of different design decisions in my Lua journey. Contains essential pieces for all projects I've done.

    Second is "released projects". They are self-contained solutions having in repository all the code they need and no dead code. Frozen in their time. They have "workshop" directory.

    Third is "unreleased projects". They are expected to use "workshop" of their time. Development may happen there or may not.

    • Workshop (2016-09 .. )

      Personal codebase for Lua projects.

      My Lua code hive. That's evolution, not design.

    • Lua code formatter (lcf) (2016-08 .. 2017-01)

      Parses source text to AST, transforms AST, compiles back to source text.

      Still one of the best projects I ever made. Core is my grammar parser with two main modes (sequence and choice) and one flag (repeat). Like LPEG but different. Also invented and tried many design patters there.

      Satellite projects

      • Lua table serializer (2017-05)

        Serialize Lua table to source code that recreates this table.

        Tables in Lua can contain cycles, so you can't serialize them to data format like JSON. Dealing with cycles was challenging challenge.

      • Autoldoc (2017-08)

        Automatically place LDoc comments in Lua source file.

        Mostly POC, I'm not using auto-documenters as a class of tools. Used AST from my code formatter to locate places where to insert documentation comments.

      • Command-line generator for lcf (2018-07)

        GUI to generate Bash command line for Lua code formatter.

        Was playing with TekUI(Lua/C) library.

    • DS3231 GUI (2019-12 .. 2020-01)

      Graphical interface to hardware real-time clock module DS3231. (Firmware is Firmata.)

      I2C channel from Firmata (in Arduino) -- USB connection -- data parser/compiler in Lua -- representation in TekUI. Then data goes back. Was pleasant experience.

    • Lightday (2020-03)

      TekUI to calculate length of lightday. (Depending of latitude and day number.)

      I was going to use calculations to emulate sun for my tomatoes growbox but plain 16/8 worked better. And you will have troubles moving lamp in circle in growbox anyway.

    • Firmata ambassador (2023-06)

      Sort of "ambassador" to do useful things via dreadful Firmata protocol.

      Protocol parser/compiler. Reimplemented in a sane way. I threw my previous close-to-protocol implementation (used in [DS3231 GUI]) and switched focus to easy-to-understand interface.

    • ArduinoLibGenerator (2024-02 .. 2024-03)

      Generate library description file for ArduinoIDE. Source data for library description is Lua table.

      Yo dawg i herd you dont like writing one-dimensional .ini files, not real programmers job?

      Toy project to hone source files placement skill.

  • Texts

    • Tagging style (2016-07)

      System of marking commit messages.

      Was written in a couple of hours somewhere in 2016. Still interesting text to read if you wonder about syntax in my git commit messages.

    • Firmata protocol (2021-08, 2023-05)

      Firmata protocol description. (Firmata protocol is related to Arduino world.)

      I've tried to describe protocol from my notes and Lua implementations.

Links to other resources I value

About

Links to repositories

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published