Braden GanetskyPuzzler Designer · Software Developer · Public Speaker
About Me
Hey! I'm Braden, and I love to make things. Working in C++ Development, with a Mechanical Engineering degree. Come take a look around and check out my projects!
All my puzzles and mechanical toys are available for purchase. If you like my work and you want something unique, I do commissions for a fee.
Contact me if you are interested in producing my designs or for any inquiries.
The CaTSuP is the first ever corner-turning square pyramid, which is where the name comes from. Arguably, this puzzle only has 12 pieces that can be scrambed, but it's very difficult to solve, if you're up for the challenge.
The Oct Gears is not actually a puzzle, but it's a lot of fun to play with. This was an exercise in designing conical gears patterned around a sphere completely from scratch. It's a more expensive fidget toy.
The Penta Mixup is what happens when you take the idea of a Mixup Cube and apply it onto a Pentagonal Prism. Pieces get switched in unexpected ways! This is the 1st puzzle in the "Penta Mixup" series of puzzles.
The Weird Skewb is like a regular Skewb, except two corner pieces can be swapped. Most people who try a regular Skewb imagine swapping the corners, and this puzzle makes it a reality!
The Persistence of Mastery (aka "POM4") is the result of doing an axis transformation on a Crazy 4x4x4 II. After only a few turns, the shape gets extremely confusing, and the solve experience is anything but straightforward!
The Psycho Psatellite is similar to the Crazy Comet, but with the concept applied to the pentagonal icositetrahedron shape. The puzzle can be assembled in the left-handed or right-handed variant, using the exact same pieces!
The Penta Mixup Plus is like the regular Penta Mixup except the equaltorial faces can be turned by 90 degrees. It is similar to Oskar's Illegal Cube but it's more restrictive with no fudging* of the geometry. Featured in the Puzzle Advent Calendar in 2022, it is the 4th puzzle in the "Penta Mixup" series. *Technical term, seriously
As my first technical talk, I wanted to talk about another first: Finding my first C++ compiler bug. This C++Now 2023 lightning talk shows a peculiar MSVC bug where data is available at compile time, but is zeroed out at run time. It showcases my "tok3n" parser combinator library.
This online talk shows the things you can do with the Boost.Describe library, an amazing C++ library that gives you static reflection with minimal syntax overhead. See how you can use Describe in your code today! (official docs)
Help! My Expression Template Type Names are Too Long!
Even the name of this talk is too long! If we're ever working with expression templates, we can easily make type names long enough to slow down compilation time. Suddenly our "zero-overhead" expression templates start giving a large compile time overhead. I'll show off a C++20 trick to fix this problem.
"Bask3twork" is a program that procedurally generates Celtic knots in a square grid using any subset of D4 symmetry, that of a square, including no symmetry at all. The secret? A font! The font's glyphs can be mixed, matched, and assembled to your heart's content. However, instead of creating Celtic knots manually, we can sit back and watch Bask3twork generate infinite possibilities.
Unit Testing an Expression Template Library in C++20
Expression templates are one of the wonders that set C++ apart from all other programming languages. Using just the C++ type system, we can store arbitrary information in a type, giving us a way to calculate anything at compile-time. As years have gone by, we now have new ways of expressing compile-time computation, removing the need for relics of the past like expression templates. However, for some of us, expression templates remain a fascination, bordering on obsession.
Regardless of the paradigm, unit testing code at compile-time is no trivial matter. In very rare cases, a compiler's output can vary between compile-time and run-time, given identical source code. Therefore, in order to properly unit test a library meant for compile-time computation, we must run compile-time tests.
This talk will use an expression template parser combinator library as a case study to delve into the world of compile-time testing. Triggering a conditional miscompile is easy, but we all know that C++ compiler output can get notoriously unruly upon hitting errors. Therefore, we will explore ways to attain as much readability as possible in our diagnostics and error messages. Throughout the talk, we will contrast the popular unit testing libraries' solutions to compile-time testing, and we will learn which features are left to be desired. We will push the language to its limits to achieve the most user-friendly error messages we can get, while looking back on how far C++ has come in terms of compile-time programming. Ultimately, we will end up where all C++ users eventually stand: wanting more features out of the language. We will end with a roadmap of sorts, showing which future versions of C++ are slated to render our compile-time testing much simpler and more expressive than we can achieve today, and which desired features have yet to commence the standardization pipeline.
I made a puzzle simulator with the Pygame library in 2017/2018, complete with from-scratch 3D graphics, turning animations, and custom puzzles. It is very simple to use, but specifying a new puzzle file is a pain. I am slowly working on a new simulator in C++ with more lenient rules on which puzzles can be simulated.
After my puzzle simulator in Pygame, I started working on my new puzzle simulator in C++. I wanted to mathematically represent a sticker's non-polygonal edge as its true intended shape instead of storing it as a long list of very small straight lines. I wrote this paper to document the math on how to parametrize these curves uniformly.
This is the first step in making my vision of this simulator into a reality!
bask3twork is an application made using wxWidgets and Daniel Isdell's Celtic Knot Font, to randomly generate Celtic knots. It is still in its early stage with more features being added soon. Portions of the knot can be edited and locked for editing, so you can make it exactly how you want!
tok3n is a C++ library full of parser combinators, with the aim of creating custom parsers with simple syntax. This library is usable in C++20 and above. Examples can be found in the GitHub repo.
A tool to pack 3D mesh files into a minimal bounding box. A community rewrite of Tom van der Zanden's beloved "PartStacker". Developed cross-platform in C++ with wxWidgets and OpenGL.