Code Monkey home page Code Monkey logo

cpp20-cross-platform-template's Introduction

I've been programming for a little over a decade now, to a professional level for several years.

My professional experience is mostly in web dev, but I also have some Windows desktop application experience.

Projects I am particularly proud of:

github.com/saxbophone/arby arby is a C++ library implementing arbitrary-precision arithmetic, both at runtime and compile-time!
It exposes convenient-to-use class types encapsulating the arithmetic, with operator overloading and standard stream support.
github.com/saxbophone/hexago hexago is a cross-platform screensaver written in C++. It draws pretty shrinking hexagons!
It integrates with the screensaver frameworks of both macOS and Windows (with some Objective-C++ glue code for the former!)
Cross-platform C++20 project template This is a Github project template intended for cross-platform C++20 dev.
It includes an extensive CMake project config with lots of warning options enabled, and Github Actions CI config for unit testing on Linux, macOS and Windows.
I use it for all my stuff and other people seem to find it useful too.
github.com/saxbophone/libsxbp sxbp and its implementation library, libsxbp are a pair of C projects exploring unconventional barcodes and procedural image generation.
They implement a novel barcode of my own design, where binary bits are encoded by guiding the line of a right-angled spiral left or right as prescribed by the input data.
Unfortunately, producing a compact-enough spiral that does not waste lots of empty space in the image it produces is a very computationally expensive process for barcodes longer than about 20 bits, but it was a fun an interesting experiment and a good practice at writing a well-documented C API with callbacks and error-handling.
github.com/saxbophone/unmoving unmoving is a C++20 baremetal library providing more convenient support for fixed-point arithmetic as used on the PlayStation.
Getting a cutting-edge version of G++ to cross-compile for the PlayStation and programming within the constraints of bare metal was a fun challenge!

Other fun stuff

github.com/saxbophone/wondercard Emulating the communications protocol used for PS1 memory cards in software
github.com/saxbophone/tr-sort Experimental sorting algorithm which attempts to calculate the rough position each element should be
github.com/saxbophone/colour-distance Web app for finding colours that are "n distance away from" a given colour, intended for interior design
github.com/saxbophone/triangberg Just for fun, animated geometrically-constructed fractal-like arrangements of triangles
github.com/saxbophone/zench C++ Z-machine interpreter, work in progress
github.com/saxbophone/galley Galois Field arithmetic using compile-time-generated lookup tables
github.com/saxbophone/dengr Partial reverse-engineering of the low-level data encoding of Compact Discs
github.com/saxbophone/lzw-bit Bit-by-bit LZW compression with redundant-code-elimination

cpp20-cross-platform-template's People

Contributors

saxbophone avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

cpp20-cross-platform-template's Issues

Debug dependency source/binary caching

This caused a build to follow on another project --CPM was trying to load a tag of a dependency from the first-party project's history instead of the cached (or downloaded) git history of the dependency.

Clean up

E.g. remove travis-CI config, remove commented out CMake code (or start using it)

Change "my hovercraft is full of eels" dummy project name to something less odd

As much as I adore funny obscure comedy references, I am now feeling like the confusion this may cause is less utilitarian and something else which is more obviously a placeholder for "project name" (ideally without actually containing the word project, to avoid clashing with the project() macro and anything else like that) should be chosen instead.

Add multi-version Doxygen publishing to Github Pages

I recently rolled a basic but functional feature for a personal project which uses Github Actions to automatically build and publish Doxygen documentation to the github-pages branch, in a way which allows for multiple versions of the documentation to live together in the directory (with a tiny HTML fragment in the index to auto-redirect to the latest docs).

It'd be great to include this in the template.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.