Ayke van Laëthem

CGo improvements in TinyGo

CGo is faster in TinyGo, here's how that works.

What's the int type?

The int type is present in many programming languages, but their meaning varies. Unlike what many people think, it only indirectly related to pointer size or architecture word size.

Optimizing constant bitshifts on AVR

The AVR architecture does not natively support arbitrary bit shifts. Therefore, compilers will have to be creative to make shifts short and fast. This post explores how a compiler could emit such constant shifts inline.

Garbage collection in TinyGo

An explanation of how garbage collectors work including some pseudocode how a real GC could be implemented.

ESP32 and ESP8266 support in TinyGo

How ESP32/ESP8266 support got added to TinyGo, how we got there, and the current status of support.

Debug AVR programs using simavr and avr-gdb

Quick note to get started with debugging AVR programs in a simulator

What RGB and sRGB mean

What RGB really means, what sRGB and gamma are and how to correctly blend colors.

DMA on the SAMD21

How to configure DMA on the SAMD21, for example to use it with SPI.

How the TinyGo playground simulates hardware

The TinyGo playground simulates real hardware, including an e-paper display. How can it do such things? This post explains a bit about how the playground works to make this possible.

LLVM from a Go perspective

A high-level overview of LLVM IR, showing how two simple Go functions can be translated to IR.