Skip to content
View gdavidbutler's full-sized avatar

Block or report gdavidbutler

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Please don't include any personal information such as legal names or email addresses. Maximum 100 characters, markdown supported. This note will be visible to only you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
gdavidbutler/README.md

Welcome

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!

Pinned Loading

  1. xmlTrivialCallbackParser xmlTrivialCallbackParser Public

    Trivial XML callback parser

    C 1 1

  2. jsonTrivialCallbackParser jsonTrivialCallbackParser Public

    Trivial JSON callback parser

    C

  3. pthreadChannel pthreadChannel Public

    Yet another implementation of a "channel" construct for pthreads

    C 6 1

  4. canonicalHuffman canonicalHuffman Public

    A C language implementation of a Canonical Huffman Encoder and Decoder pair

    C

  5. sha256 sha256 Public

    A size tunable C language implementation of SHA-256

    C

  6. ShamirSecretSharing ShamirSecretSharing Public

    A C implementation of Shamir's secret sharing by David Madore

    C 1