Posts
-
Generics in C
Published:As part of my recent tour of languages, I have started using C again. Particularly, I've been using C11 and have been exploring the new additions. One such addition is Generics. I decided to try to use Generics to see how far I could push the feature to find its limitations. To do this, I chose implementing some data structures - in my case porting over Zig's slices. While there was some benefit, there were also quite a few headaches and limitations.
-
Why I Stopped Using Go (For Now)
Published:I used go for several months for all of my side projects. I began rewriting different projects in Go. I was amazed by how quickly I was able to get things done in Go. Go as a productivity tool began to click. But suddenly, I stopped and moved on to a language that wasn't mature, or stable, or had an ecosystem. What happened?
-
Fast CSV parsing in Zig
Published:I started off trying to create a streaming CSV encoder in Zig. Once that was done, I thought "that was easy, how hard could a parser be?" I then started trying to make it faster and faster, and ended up creating several parsers (some that are zero-allocation parsers, some that aren't). This post covers my journey into optimizing Zig code.
-
TigerBeetle and NASA reliability
Published:Last time I posted I talked about Erlang and how it has built-in error recovery to maintain reliable systems. Since that post I've been digging into Zig after learning about how TigerBeetle and NASA maintain reliable systems. Their approach is the polar opposite of Erlang's approach, yet the results were impressive. The reason for the different approaches stems from different definitions and needs of "reliability."
-
Venture into Erlang
Published:Recently I've been exploring Erlang and the OTP. As I've been trying things out, some aspects of the design Erlang and the OTP have finally started to click. I'm writing this blog post about my experiences with Erlang and the OTP so far.
-
A return to Clojure
Published:Recently I started using Clojure again. It's been a while since I've used it. I'm recording my thoughts and impressions as I get back to using it. The experience doesn't feel like it changed much over the past few years, which is both good and bad. This is more of a post of my thoughts rather than having a clear direction.
-
A journey across editors
Published:Often I hear developer journeys through the programming languages they used or the companies they worked for. Sometimes it's told through frameworks learned or projects released or mistakes made. I'll probably tell my story a few times using some of those common methods. But today I thought I'd do something different.
-
A site for my experiments
Published:I recently created a website which holds a lot of my experiments. Some of these experiments either make it into my blog or they form the basis of some of my blog posts. Many of them don't make it into my blog posts. Instead of just letting them sit in the dark, I decided to put some of them on my experiments site.
-
C++ to JavaScript with Cheerp
Published:Emscripten is great, but it only compiles to WASM. With WASM, we often need to ship our own memory management, libraries, and communication layer to interact with the DOM. That can lead to a lot of code being created. However, Cheerp is able to compile C++ directly to JavaScript which greatly lowers the amount of outputted code. So I decided to give Cheerp a try and see how well it works translating C++ to JavaScript.
-
Creating a WASM library with Embind
Published:I've been working on my Test Jam project for a while. I had previously tried to do a WASM wrapper around my C/C++ build, but I ran into a memory leak which existed outside the C/C++ code. Instead of reading the manual, I rewrote the code in TypeScript. After the rewrite, I read the manual and learned what was the source of the leak. I then rebuilt my WASM wrapper and ended up with a TypeScript and WASM implementation. I then decided to start comparing the two implementations to see what the benefits and drawbacks are. I also wanted to test some well touted claims about WASM (e.g. performance, code reuse) in the context of a library.