JavaScript is faster than people expect, in this project I highlight techniques for optimizing it for speed and efficiency:
- Multi-threading: Leveraging web workers and atomics for concurrent execution.
- Typed Arrays: Utilizing typed arrays to reduce memory overhead through and encourage aggressive optimisations in V8.
- C++ Performance Comparisons: Conducting performance benchmarks between JavaScript and C++ for optimization insights.
- Game of Life: Check out the app built with these techniques here!
![Generated image with this app](https://private-user-images.githubusercontent.com/8686526/240072452-19c8b281-45d6-4279-a196-4c7057717679.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjQzNDA0MTgsIm5iZiI6MTcyNDM0MDExOCwicGF0aCI6Ii84Njg2NTI2LzI0MDA3MjQ1Mi0xOWM4YjI4MS00NWQ2LTQyNzktYTE5Ni00YzcwNTc3MTc2NzkucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI0MDgyMiUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNDA4MjJUMTUyMTU4WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9MTg3MzM2NmQ5N2U4YWM1YjIzNDJlN2E3YWI2ZDNkOWM5ZTc1MWMwMDU2MzdjZmNjYzE1NjhlN2QyNWJhYmYyOCZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmYWN0b3JfaWQ9MCZrZXlfaWQ9MCZyZXBvX2lkPTAifQ.F2n3Vgc466AYKwP2j3NbPzuuhYGd_v8-Wl3nc5VVgGw)
I love diving deep into C++ code and finding ways to squeeze out every ounce of performance. This project highlights:
- Branchless Logic: Improving CPU performance through better instruction-level parallelism, reduced branch mispredictions and optimized pipeline utilization.
- CPU Caching: Optimizing memory access patterns to leverage the CPU cache hierarchy effectively.
- Compiler Benchmarks: Exploring performance differences across various compilers and tweaking code accordingly.
- Job Pooling: Implementing efficient job pooling techniques for parallel and asynchronous programming.
![Generated image with this app](https://private-user-images.githubusercontent.com/8686526/240071168-9f3bc6b9-3335-487e-b16a-aa327294f541.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjQzNDA0MTgsIm5iZiI6MTcyNDM0MDExOCwicGF0aCI6Ii84Njg2NTI2LzI0MDA3MTE2OC05ZjNiYzZiOS0zMzM1LTQ4N2UtYjE2YS1hYTMyNzI5NGY1NDEucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI0MDgyMiUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNDA4MjJUMTUyMTU4WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9MjQ1MWQ5Njg1MjNjYzY4OGJiZjk2NzA0YmQzNDQ4NDEzNDAzOGMxNDczOGRlN2UwNzNlNmMyZjI4NGFmZWU2NCZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmYWN0b3JfaWQ9MCZrZXlfaWQ9MCZyZXBvX2lkPTAifQ.TgkE3CsJpd9OvoWlkuPG0MmIYlM4RVkD9_Ob7_dPUp8)
Sometimes, less is more! I've written my personal site with zero JS to illustrate the power and flexibility of CSS.
- Semantic HTML: Naturally increasing accessibility and reducing DOM bloat by properly leveraging HTML semantics.
- Native SPA: Effectively leveraging browser targets to create native single page app experiences.
- Raw CSS: Exploring the limits of native CSS capabilities.
This Minecraft mod is what ignited my passion for programming all the way back in 2012.
I remember finding this challenge in the forums and being in awe at the knowledge required... So in this repository I go back and complete the challenge. Feels good 😌
- The Challenge: Write an AI in Lua capable of replicating itself.
- Capabilties: The robot forages, mines, smelts and crafts all while operating efficiently to minimise fuel usage.
Logical programming is interesting because the solutions almost write themselves, this is my first foray into the topic:
- Backward Chaining: Implementing backward chaining algorithms for logical reasoning.
- Pretty Diagrams: Visualizing logical structures and solutions with beautiful and educational diagrams.
- Blockworld: Check out my logic solver in action here!
Solving expressions without floating point innaccuracies or implicit approximations:
- Error Bounds Tracking: Implementing error tracking mechanisms to ensure accuracy when using transcendental functions such as sine.
- Infinitely Large Fractions: Storing and operating on numbers in a lossless manor with infinitely large values.
- Pure Functional Haskell: Building a calculator using pure functional programming paradigms.
A gift to my sister as I headed off to live overseas in Vancuover for a couple years. The idea was that while we were both on opposite sides of the country, we'd still have some level of live casual interaction.
- Pico W: Developed firmware for the Raspbery Pico Wifi microcontroller board.
- MQTT Messaging: Leveraged the MQTT messaging protocol for real-time communication between devices.
- Touch Screen Panel: Integrating touch screen panels for interactive drawing experiences.
- 3D Printing: Printing and shaping a case to fit the board and touch panel.
TypeScript's type system is truly fascinating. In this repository I explore some of it's limits and lack thereof:
- Turing Complete Type Systems: Exploring the expressive power of TypeScript's type system.
- Type-Driven Development: Leveraging types for program design and verification.