Articles

Tags

If you're putting together templates or other messes using JSON and C# this may be the ticket for you.
Stream JSON efficiently on little devices with minimal flash and memory usage
Do you need to be able to perform a firmware update without using WiFi? This project is for you.
Just a clock with snazzy digits that syncs using NTP and gets your timezone from your IP.
Display automated (optionally controllable) Tetris on an LCD or Neopixel panel
Got an embedded or IoT widget with a screen but no real memory or flash space to speak of? Read this.
Presenting a C# partial Program class to add core functionality to your CLI projects and get you up and running faster
Image Resizer automatically resizes images you drop in a monitored folder based on criteria you give it. It can also change image formats.
Easily convert identifiers from one casing style to another with this simple to use class
Easily add lexers to your project with this simple drop in NuGet package and a few annotations
Easily crack your command line arguments into a dictionary with this code
In this article, we explore the inner workings of Visual FA
Continuing in the Visual FA series, now we explore API fundamentals
In this article, we will use my Visual FA solution to explore finite automata concepts used for finding patterns in text.
Adventures in Reflection.Emit! Here I present a regular expression engine with a Compile() feature.
This article presents a program to help visualize regular expression mechanics.
Generate fast, easy to use lexers/scanners in major .NET languages
Generate tight C code to match text based on regular expressions
Create ASCII art from common image formats and text
Exploit some of the power of C++ and optimize the way your code calls your code.
Presenting a simple to create understandable and maintainable builds for projects with dependencies
Run and develop Arduino code, including a display, on PC using this Windows PC shim and emulator.
A crash course in using Zephyr RTOS with my IoT ecosystem
2023-07-11
Monitor your PC's CPU and GPU with an ESP32
Mix wavs and waveforms with this simple to use library
Combine some great technologies for rich, responsive IoT user interfaces on the ESP32
Debug your circuits with this handy device
Easily determine active devices on an I2C bus with this simple device
Initializing the ESP LCD Panel API is a chore. Here's some boilerplate code to make it easier.
How to make very responsive, flicker free interactive screens without using a lot of memory
2023-01-10
A far more functional fan controller than before, and some powerful programming techniques
A project that allows you to use a knob to control a fan's RPM with feedback
Control 3 or 4 pin PWM fans using this library
Control the sound from your Sonos system in each room of your house
Building a button library seems simple until it isn't.
Monitor your CPU and GPU activity with this little project
Understand the difference between headers and source files, what they do, and how they work together.
Dusting off an old MIDI toy project and making it less of a toy.
std::chrono doesn't work on the Teensy? Oh no! Here's how to fix it.
Easily blank the screen after a timeout period
Unlock the potential of this neat little IoT widget
Easily embed image data into your code
Adapt a TextBox to make it writeable like any other text based I/O
Pointers don't have to be black magic.
Create a clock that uses multiple Internet services to detect your weather, date and time
Create a simple synchronized analog clock using GFX, and a bit of code
Trigger tracks from Type 2 MIDI files to add to your recording or performance
Detect when your SD card gets removed and recover gracefully, even without a card change pin.
Explore some streaming techniques while getting your shiny new ESP32S3 to do some USB and MIDI tricks
Use batching to increase performance during complex rendering operations.
How to use GFX to drive multiple screens at the same time on an ESP32
Take advantage of the PlatformIO repository to easily add GFX to your projects
Implement a fancy color picker in your ESP32 WROVER or WROOM IoT applications
On PC platforms, just getting it done is king. On IoT, the trick is doing it in the first place.
A more in-depth guide to creating drivers and other custom draw targets for GFX
Get your data on, even on platforms without a reliable STL implementation using these simple but critical classes.
GFX is a fast and full featured replacement for standard IoT drawing libraries that is optimized to reduce bus I/O
Run your IoT display driver independent of the bus it uses, whether I2C, SPI or parallel
This article describes an improvement to the state removal algorithm for converting FAs to regular expressions
Explore, run, and manipulate DFA regular expressions from graphs, to state machines with this library
An INI reader that is easy to use, easy to port, relatively efficient, and to the point
How to take your IoT graphical interface from the mid-1990s into the present
Easily compare collections for equality
Silly SQL Tricks, Mistakes and Other Nonsense
Embed fast streaming C# code to match text based on inputted regular expressions
Deep dive some advanced source generation in a real world application
Make your projects far more powerful with some foundational code templating techniques
This is a little templating engine build tool I use to make my code generation projects more maintainable.
A handy code snippet that can set indentation levels while rendering multipart documents with a TextWriter
Do efficient, low level parsing of markup like HTML and XML
Browse and extract zips in constrained memory environments
Use GFX effectively with e-paper/e-ink displays
Explore techniques for drawing using GFX
Easily shift bits in memory of arbitrary length, declare integer sizes programmatically, endian conversion, and more
Explore the inner workings of a highly capable IoT display driver for the ESP32
Use an ILI9341 display efficiently from an ESP32 without the Arduino framework. Load JPEGs.
Explore the basic drawing functionality provided by the GFX IoT library
BinaryReader needs a better way to read strings and types. Here's a quick and dirty fix
GFX IoT graphics library part 2 - device independent bitmaps
A device independent graphics library for IoT devices. Part 1 of a series.
Make your code more efficient by hacking your compiler to improve its optimization capabilities
Traipsing through the ESP-IDF to add some sweet sweet real-time clock functionality
Using a popular RTOS to enable easy multithreading on your IoT gadgets
Take a page from .NET and enjoy an easy way to safely pass information between threads on an ESP32
Use TaskCompletionSource to turn an event or callback based model into a Task based one
Hoodwink your computer into doing your work for you using regular expressions
Designing infinitely scalable JSON: JSON (C++)
A JSON pull parser and a pooling in-memory tree library for modern IoT or even your PC
Highly efficient access to JSON data sources and selective bulk loading JSON on any platform using a new JSON paradigm
Some C++ magic to help cut down on heap abuse for simple scenarios
Streaming your data and parsing on the go with tiny gadgets
A rundown of some common tricks and pitfalls when working with SD readers for IoT gadgets
Implement swipe left/right/up/down using a TFT touchscreen and an Arduino compatible device
Efficiently send large amounts of data with a tiny amount of memory
This is a very specialized tool that generates source code to upload files into SPIFFS on an ESP32
Revisiting our WiFi enabled smart clock project with more modern hardware
An advanced network connected clock that puts the Arduino through its paces
Explore an Arduino based IoT web server and UDP multicaster for monitoring a remote water pump
A walkthrough and source code for automatically configuring your ESP8266 IoT devices
Unleash the tiny ESP-01 on your network
Turbocharge your device with a clever way to configure your board
Using this cheap, powerful little device to make magic
Parse, analyze, and transform your code with Slang
Take control of which thread your code gets executed on, and how it does
Using await in scenarios where you want to await custom items with or without using Task.Run()
Add progress reporting to your downloading or copying using this code
Explore adapting Socket's async model to a task based one and adding some awaitable socket operations to your projects
Diving into some of the core plumbing behind the Windows operating system
Leveraging some less well known areas of the .NET Task framework to schedule tasks to execute on your own conditions.
Add a flexible knob control to your .NET projects
How to implement a complicated multithreaded message passing scenario
Continuing our series with a knob control and a MIDI visualizer
This article explores a message passing mechanism for safe thread to thread communication
PianoBox is a customizable musical keyboard control for Windows Forms. This is the first part of MidiUI.
Exploit the memory layout of your data to make your P/Invoke code more accessible and maintainable
Easily create zip packages from source code, suitable for upload on CodeProject
Provides a complete managed API for working with MIDI files, sequences and devices
How to marshal structs that the .NET marshaller just can't handle without a lot of help
Extensive performance and API improvements for streaming MIDI and more
Easily word wrap strings of text in C#
This tip shows how to create a dynamic JavaScript-like object to be used in web pages and T4 templates.
This tip shows you a robust way to get the type of items a collection can hold. It works with non-generic collections too.
Start out with the basics for command line argument processing and exception handling for your console based utilities
Creating an application that can run once, but then accept command line args from subsequent runs
This tip demonstrates how to create an app that only allows one instance to run at a time
This tip shows you how to do UI updates without having to worry about locking.
An in depth guide on doing advanced MIDI things. Includes a demo Drum step sequencer and file slicer
Slice sections out of a MIDI file, and stretch or compress playback time using this simple utility. Or use the Midi Library to build your own MIDI apps
BinaryReader and BinaryWriter can be used to parse or write binary files more easily and in a portable manner
Learn how to use a powerful programming technique for multitasking in your projects
Learn how to implement recursive descent parsers, with examples for JSON and an integer expression evaluator
How to provide custom formatters for string.Format() in C#
A relatively safe, simple, yet high performance technique for using lists as dictionary keys.
Glory can parse virtually anything, even natural language. Add powerful parsers to your projects. Parse languages like C# or incorporate human language parsing with your AI code.
A crash course in GLR parsing which can be used to parse highly ambiguous grammars
Using IEqualityComparer to allow collections to be keys in dictionaries and hashsets
A circular buffer implementing IList
A Pike virtual machine and optimizing compiler for regular expressions using an NFA engine
Add UTF-32 support and easy foreach streaming to your apps
Add non-backtracking fast DFA regular expression and finite state automata to your projects
A small library for providing baseline Context-Free Grammar computations
Add fast scanners/tokenizers to your C# project
A completely programmable lexer/tokenizer/scanner generator in C# using a Pike Virtual Machine
Manage location tracking, lifetime, error reporting and basic parsing/lexing with this simple class
A Pike VM for running non-backtracking NFA regular expressions in C#
Easily add scripting support to your apps using Microsoft's active script technology
Add the ability to run a service in console mode and to control or install your service from the command line
Using Parsley to prototype and test hand written parsers
Enumerate store and retrieve characters as sets of ranges using this efficient struct
Generate powerful, maintainable parsers in most major .NET languages using a friendly grammar format
Solve some common resource complications in .NET with this simple utility class
Easily add progress reporting to your console apps
Using Parsley to parse a C# subset into the CodeDOM
Use the Parsley compositional parser generator to parse a complicated grammar with backtracking.
Easily implement efficient backtracking capabilities over any enumeration
Easily reuse source from entire projects at the source level instead of the binary level
Code generation, faster
If you use the CodeDOM, here's an indispensable package to make it awesome.
Getting an accurate CodeDOM back from a C# source subset
Implementing a visitor pattern over the CodeDOM
Fills a gap in Microsoft's Queue offering with an alternative allowing efficient indexed access
An initial look at a tool to dramatically simplify language agnostic code generation using the CodeDOM
A helper class that dramatically reduces the amount of code you need to write for the CodeDOM
Build a full featured tokenizer generator in C#
Build a feature rich, non-backtracking regular expression engine and code generator in C#
A fully generic ordered dictionary class in C#
Implementing full list support over custom data structures in .NET
Robustly implement value equality semantics in your classes in C#
Creating a simple parser in 3 easy lessons
A B-tree, an AVL tree, and a Splay tree in C#
A simple home HTTP server that works across all .NET platforms
How to process large JSON data using a streaming reader
A Tiny Dynamic Home Webserver in .NET that runs on Core and DNF both (Take 2)
A walkthrough of building a JSON based transparent caching entity framework with branch reuse that intelligently minimizes the amount of server requests, against the use case scenario of accessing TMDb's API
Easily and efficiently query api.themoviedb.org/3/ using this wrapper
Use JsonPath, and builtin RPC support to easily communicate with all the JSON / REST services out there, or otherwise manipulate JSON with this little library.
Easily create single source file drop-ins from multiple C# source files
Using PCK to create grammars, parsers and tokenizers for C# and other .NET languages
Automatically update your winforms app using github release binaries
Using PCK's grammar system, and understanding the concepts behind it
Quickly and easily build parsers and tokenizers using Pck's editor
An LALR(1) parsing algorithm as part of Pck
A parser generator and unification system for different parsing tools
A regex and finite state engine as part of PCK
A simple helper class to aid in code generation
A parser generator and tool for exploring LL parsing algorithms
Quickly build simple parsers with this drop-in source
Creating a simple parser in 3 easy lessons
Creating a simple parser in 3 easy lessons
An LL(1) pull parser and generator that thinks it's an LL(k) parser - with a rich, simple and beautiful EBNF syntax
Code for parsing, querying, and emitting JSON or a JSON superset
A Non-Backtracking Regular Expression Engine for .NET (Core)
Easier Hand Rolled Parsers
Dependency free, fast, lightweight JSON parsing and light query