Adding Virtual Tables to Classes after the Fact
Sometimes you want to create classes that are meant to be low level and fast. You don’t want to pay the cost of virtual virtual functions – you want the functions to be inline. But then at other times you…
Clang scan-build: a great C++ Static Analyzer
Clang has a command line utility that is very easy to use, and adds a static code analysis step to gcc or clang. It is trivial to install (less than 5 minutes – really! ) and works with almost any…
Using GDB to Dump Program State
Sometimes when a program is running for you want to dump the complete state of all the calls stacks of all threads in a program. This is not so easy to do yourself, but thankfully there are tools like GDB,…
Configuring react-d3 into a Rollup Build System
Rollup is a next generation bundling system that I’m using with react. There is a port of the d3 Javascript graphing library called react-d3. As with most cases where you put together a bunch of new technologies, there are configuration…
Building web applications with Rollup + Babel + React
As some of my ReactJs projects have gotten larger I needed to start dividing up my code into multiple files and package them up with some kind of javascript “bundling” tool. I’ve settled at least for now on Rollup. And…
Instantiating Components by Name in ReactJS
A useful pattern in designing React apps is to drive the instantiation of components from data. That is, instead of the application instantiating the components and then fetching data to fill them, the application fetches data and the data itself…
Comparing Uglify and Closure in Babel/Rollup Javascript Build Environment
I’ve been experimenting with creating a build environment for a React project that uses Rollup and Babel. One of the choices you can make is how to minify the generated js. I compare using two methods of compacting: Uglify and…
Finding the state of TCP/IP Sockets on Linux
It is not possible through the sockets API to find the connection state of a socket. But on Linux there is a way, a user space way, to find the connection state of a socket. Network information in the Proc…
Setting up Docker for Remote Deployment
How to set up docker servers and clients to communicate with each other over the network securely with HTTPS/TLS.
Build GCC with Musl for Raspbian
Musl is a libc replacement designed for embedded systems. It tries to be compatible with POSIX and where possible with glibc, the default c standard library for GCC. Its code is designed to be better for small memory systems. One…