Using no standard library crates with Webassembly

A Rust + Webassembly experiment using no_std crates

When working with Rust + Webassembly, you might want to use some crates in your project. Not all crates work out of the box with Webassembly yet, especially those that rely on System Libraries, File I/O, Networking, etc. With proposals such as WASI or WebAssembly Interface Types, these might work eventually but it isn’t the case yet. The Rust Wasm book suggests: A good rule of thumb is that if a crate supports embedded and #! [Read More]

Making mdBooks work offline

mdBook1 is a great utility to create online books from Markdown files. It is used extensively in the Rust community. Here are some books made with mdBook: The Rust Programming Language (“the book”)2 Embedded Book 3 mdBook user guide4 Motivation I usually read the books while commuting and this usually consumes mobile data. Given the contents don’t change that often, I thought it would be useful if they were cached. [Read More]
rust  mdbook  web 

Releasing rust_gpiozero v0.2.0

A new version packed with new features and improvements

For the past month I have been working on rust_gpiozero. This new release is a complete rewrite and uses Rene van der Meer(@golemparts)’s [rppal](https://github.com/golemparts/rppal) crate under the hood. It also uses Rust 2018 edition. Why rppal? Simply because Rene has done an incredible work on rppal. It provides first class support for the Raspberry Pis. Instead of trying to (poorly) reimplement the features, I think it is best to build upon the rppal. [Read More]

My Experience in Increasing Rust's Reach 2018

I recently had the privilege of participating the Increasing Rust’s Reach(IRR) program. The program aims to grow Rust’s community of project collaborators and leaders. Increasing Rust’s Reach brings together Rust team members and individuals who are underrepresented in Rust’s community and the tech industry for a partnership of three (3) months, from mid-May to mid-August. Each partnership agrees to a commitment of 3–5 hours per week working on a Rust Project. [Read More]

Physical Computing With Rust On Raspberry Pi

Use Rust to control LEDs, Buzzers, and more with the Raspberry Pi

A couple of months ago I released the rust_gpiozero1 crate. It is a port of the GPIO Zero2 library by the Raspberry Pi Foundation. The library provides a simple interface to control GPIO devices with a Raspberry Pi. Following this, recently ported the Raspberry Pi Foundation’s Physical Computing with Python3 guide for Rust. Why did I create the rust_gpiozero crate? After going through The Rust Programming language book, I decided to work on a side project to practice some of the concepts. [Read More]

Rust: Raw string literals

r#"What is this?"#

While working with Rust, you will often come across r#"something like this"#, especially when working with JSON and TOML files. It defines a raw string literal. When would you use a raw string literal and what makes a valid raw string literal? When would you use a raw string literal? First, let’s understand what a string literal is. According to the The Rust Reference1, A string literal is a sequence of any Unicode characters enclosed within two U+0022 (double-quote) characters, with the exception of U+0022 itself2. [Read More]
rust 

Explore OpenData on data.govmu.org using R

The National Computer Board(NCB) of Mauritius recently announced the Open Data Mauritius portal1. It contains 100 datasets on topics such as Agriculture, Crime, Justice and Security, Health and Tourism. The portal is powered by the DKAN Open Data Platform2, which is a community-driven, free and open source open data platform that gives organizations and individuals ultimate freedom to publish and consume structured information. DKAN includes a number of APIs3 to allow it to communicate with external applications. [Read More]
OpenData  R  DKAN 

An I2C Rust driver for mma7660fc-based 3-Axis Digital Accelerometer

This is an I2C implementation for mma7660fc-based 3-Axis Digital Accelerometer. It is an embedded-hal driver as part of the weekly driver initiative by Jorge Aparicio. The Device The MMA7660FC is a ±1.5 g 3-Axis Accelerometer with Digital Output (I2C). It can be found on Seeed’s Grove 3-Axis Digital Accelerometer. It is made by NXP Semiconductor. Development For the development of this driver, I used the Grove 3-Axis Digital Accelerometer and tested on a Raspberry Pi 1 running latest version of Raspbian. [Read More]

Using Firmata On Arduino Compatible Boards

What is Arduino? Arduino is an open-source electronics prototyping platform. An Arduino board is development hardware consisting of a programmable microcontroller. The boards can collect information(inputs), act on the inputs(processing) and finally produce outputs. Typically, Arduino boards are programmed using the Arduino programming language through the Arduino IDE using custom firmware(sketches). Arduino exists in many forms and flavours, from the official boards such as the UNO, ArduinoBoard 101 and MEGA, to Arduino-compatible ones like the NodeMCU. [Read More]

How to get started with NodeBots? - The hardware

When it comes to starting a DIY Electronics project, one can be overwhelmed by the myriad of choices. With so many varieties out there, how to get started? The basic components include: Processing, Input/Output, Circuits and Wiring and Power. Processing: the brain of the project, typically development boards which enable us to run our program logic. Inputs/Outputs: sensors, actuators, and other gadgets we connect to our boards to enhance our projects. [Read More]