Giter VIP home page Giter VIP logo

yaroc's People

Contributors

lukipuki avatar

Watchers

 avatar  avatar

yaroc's Issues

Find good hardware for NB-IoT

The RAK Wireless Link.One is almost perfect for orienteering:

  • IP65 rated, waterproof enough for orienteering
  • NB-IoT modem: low electricity consumption, long range (also in the forest)
  • Cost $94 (plus shipping and tolls)
  • Weight below 300 grams.
  • Small, slightly bigger than the old BSF7 Sportident units.

Unfortunately, the second UART port is not accessible for use with Sportident's SRR.

Investigate the following:

  • Can SRR's serial output be easily connected to the I2C bus available on the device? Does it require another microcontroller consuming a lot of energy?
  • Use RAK's bigger enclosure and RAK19001 dual IO board. Total cost with the BG77 modem, RAK4631 and IO module is around $114.

T-Beam Meshtastic compatibility

I have 2 x Tbeam with Meshtastic firmware installed and trying to get data from an SRR dongle using the UART interface but I cannot get something readable. Will this work with a T-Beam Meshtastic device from LILYGO? My goal is to have a mesh network similar like https://radio.jsh.de/ but using LORA and I want to avoid the telcom network (3/4/5G) due to missing coverage in some areas.

Rewrite parts of the codebase to Rust

As of writing this issue, GitHub shows that 10% of the codebase is written in Rust. This number should be higher, as Python has the following disadvantages compared to Rust.

  1. Weak type system: originally designed as a dynamic language, typing was added much later in Python 3.8. Type checking using mypy is still unable to figure out simple things. As this is a hobby project, weak typing support causes valuable time being lost on simple type errors that the compiler should be able to figure.
  2. Unsuitable for programming microcontrollers. There's MicroPython, but it's very basic with a lot of Python features missing. A big advantage of Python -- lots of libraries -- is not present in MicroPython, as libraries have to be rewritten just for MicroPython.

Type system weakness examples

Many libraries are not typed

pyudev, pyserial, gpiozero and other libraries are not typed yet.

Time handling

datetime.now() and datetime.now().astimezone() cannot be subtracted, as one is decorated with a timezone while the other isn't. Doing that results in a runtime error. In Rust, these are different types, so the error is caught already during compilation.

False negatives

Printing MAC address as a number in hex is not caught when the MAC address is already passed in as a string:

mac_addr = "abcdef012345"
f"{mac_addr:012x}"

False positives

On the other hand, there's also false negatives, like the following example.

def f(x: int) -> int | tuple[int, str]:
    if x == 0:
        return (0, "zero")
    return x


a, b = f(0)
c = f(1)

mypy complains that int is not iterable at the line a, b = f(0).

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.