Below are collections of code I've published to allow me to use at companies I've worked with/for without losing my intellectual property.
I've been a professional computer programmer since the late '70s. I read about UNIX and the C programming language and looked for a way to use them. After purchasing a micro computer in the early '80s that included them, I was hooked. And, now, so is most of the computing world.
C is: mature, stable and ubiquitous. Often described as a portable assembly language, C translates directly to processor instructions and is: fast, small and efficient. Why program a computer in any other language? Is C too close to the processor?
You will find a couple of repositories that take full advantage of the closeness (the callback parsers). They have no dependences (not even on the standard C library). They are pure C functions that get down and dirty to rip through CSV, XML and JSON.
There is a repository that significantly simplifies multi-thread programming in C. Exploiting POSIX threads, channels enable a style of programming that is common in newer programming languages. And uncommon features, like lazy evaluation.
And, as C operations map to instructions, C structures organize memory for efficient access. Processing rich information is possible but tedious, at best. There is a much better language for handling data. The SQLite library is an indispensable tool for the C programmer. Declarative programming for data rich C! A couple more repositories marry the XML and JSON callback parsers with SQLite to provide DOM capabilities.
Lastly, C is an imperative language. Implementing dynamic execution is possible but tedious, at best. There is a much better language for handling dynamic execution. The CLIPS library is another indispensable tool for the C programmer. Declarative programming for dynamic C! There is a repository that marries data rich SQLite with dynamic CLIPS.
Enjoy!