Latest posts
Optimizing QT6 bindings
So, continuing today from the end of our last session, where I introduced some initial minimal QT6 bindings to be able to display a very simple window with a menu bar, and handling a signal connection in lua. This time, we will try to improve a bit on this initial implementation to try to collect all the QT signals automatically when generating the bindings π! Let's see if the idea I have will work π
Bindings generation for QT6
In this post I'm covering the compilation of QT6 on linux, and then I continue with more lua bindings on windows: that second part was a lot of fun actually, and I ended up with a working minimal QT window built completely from lua π! There is still a lot to do here, but who knows, maybe someday I'm gonig to replace pyQT6 this way ?! π€£. Just keep reading below if you're interested in some painful errors or brief moment of joy on this journey
NervLand: A simple camera implementation
Hello world! Continuing our journey with vulkan I feel I'm now ready to build a dedicated βcameraβ class, and then figure out how to send user inputs to that camera: after all, all we really need here are the mouse events from the SDL window, right ? So, can't be that terrible to implement π€£ Let's get started!
Quick journey with ffmpeg: improving audio stream with loudnorm
Hey hey! Tonight I feel like trying a very quick script generation: the goal will be to have an NVP command that I can use simply to renormalize the sound stream in a given input video file. This could be very handy to post-process my devlog recordings for instance.
NervLand: Drawing our first cube
OKay, so in this session, I want to turn my previous simple triangle display into a 3D cube. To achieve that I would like to start using an index buffer, and also introduce the minimal support required to handle an ortho projection, so that I could play a simple cube animation and see it rotating. This all sounds pretty easy said like this, but I'm sure I will find some trouble on my path, as usual π. So let's get started.
NervLuna: Simplifying manual bindings
In my last post I covered restoring the LLVM JIT compiler support in the NervLand project. That part seems to be working not too bad for now, but I realized that if I want to be able to dynamically inject new functions in the lua state then I need a more user friendly way to do it still using the Luna infrastructure, but with a mechanism a bit similar to what is done in the SOL library. So this will be the main topic that we will cover here. Let's get started [Spoiler alert: this is going to be a little tricky ]
NervLand: LLVM JIT - Back to basics
So in our previous post we were playing a bit with push constants, and came to the conclusion that using luajit over C++ to define dynamic behavior only introduced an about 5% performance penalty. Still, now I really feel like diving back into the LLVM JIT compiler implementation to check what has changed there since the last time I tried that π. And who knows, maybe I can easily reclaim that 5% hit in the end ? π
NervLand: Introducing support for push constants
Continuing our journey in vulkan, this time our target will be to introduce support for push constants in our command buffers. That sounds simple at first, but when I starting thinking about it, I realize it might not be that simple in fact. Let's check whyβ¦
Blog History
2023
March
February
- 21 - NervLand: A simple camera implementation
- 21 - Quick journey with ffmpeg: improving audio stream with loudnorm
January
2022
December
November
- 26 - NervLand: LLVM JIT - Back to basics
- 16 - NervLand: Introducing support for push constants
- 11 - NervLand: Support to resize the window
- 09 - NervLand: Vertex buffers, bindings and attributes
- 04 - NervLand: Adding support of Vulkan Memory Allocator
- 04 - NervLuna: Continuing with VulkanApp restoring
October
September
August
July
- 22 - NervLand: Refreshing memory
- 10 - Arbitrage: Setting up arb monitoring on Aurora ?
- 06 - DeFi: Automating some claims
- 02 - NVP Framework: more cleanup and collecting transactions high level data
June
- 28 - NVP Framework clean up and consolidation
- 19 - Venturing into alternate blockchains: CELO network
- 15 - Crypto: adding support for ganache-cli
- 11 - Crypto: investigations around token pair checking system
- 02 - Crypto: Initial ArbitrageManager implementation
May
- 29 - Crypto: Collecting tokens and pairs from DEX
- 24 - Crypto: Computing EVM blockchain gas price statistics
- 22 - Crypto: Restoring automatic Linear Finance claims
- 20 - Solana study case: Withdrawing LPs from SunnyAG protocol
- 19 - NervProj: Finding & adding monitored coins
- 18 - Cryptoview: Restoring the charts panel
- 17 - Cryptoview: Restoring coins overview
- 14 - Quick project: Adding support for swimmingpool pump activation schedule [nodejs]
- 13 - Quick project: twitter api [python]
- 12 - Quick project: image processing tool [python]
- 10 - Quick project: filtering out corrupted gifs [python]
- 10 - NervProj: Restoring my crypto coins monitoring project
- 03 - NervProj: support for custom python env in scripts
- 02 - Fast Noise generation in python with FastNoise2
April
- 29 - Quick project: generating multiwords passwords - part 2 [python]
- 27 - NervProj: support for dedicated python env
- 25 - Quick project: translating text [python]
- 25 - Quick project: generating multiwords passwords [python]
- 23 - Quick project: Images overview generation [python]
- 22 - Quick project: File deduplication [python]
February
2021
June
- 23 - NervLuna: Adding support for custom class functions
- 14 - CryptoView: automatic charts update
- 12 - Pruning entries from SQlite database
- 07 - NervLuna: A first practical usage case - Part 2
- 04 - NervLuna: A first practical usage case - Part 1
2020
August
July
- 28 - NervLuna: Adding more input folders for nvCore bindings
- 13 - Building the new NervTech logo
- 09 - NervDraw: Building a RaphaΓ«lJS rendering web app
- 07 - NervCode: Initial Virtual Keyboard display
- 01 - HomeCtrl: a touch of security
June
- 30 - Controlling our entrance gate from android app
- 23 - Building the basic FunctionObject
- 19 - NervLuna: generating bindings for nvCore - second run
- 18 - NervLuna: Handling C++ operators
- 17 - NervLuna: Fixing generated file names
- 15 - Generating bindings for the nvCore module
- 12 - NervCode: an innovating coding environment
- 10 - Support for const and static fields in NervLuna
- 09 - Adding support for fields inheritance in NervLuna
- 01 - Introducing NervLuna: the automatic C++/Lua binding generator
April
- 25 - JIT Compiler with LLVM - Part 5 - Bitcode, PCH, exceptions handling, module linking and more...
- 18 - JIT Compiler with LLVM - Part 4 - CRT dependency
- 16 - JIT Compiler with LLVM - Part 3 - Fixing the ModulePassManager crash
- 14 - JIT C++ compiler with LLVM - Part 2
- 10 - Dynamic C++ compilation with LLVM & clang
December
- 30 - Compilation ICU 65.1
2019
March
- 15 - Construction d'un cadre de lit
- 10 - Introduction to Deep Q-Networks
- 09 - Model-based policy networks
- 09 - Multi-actions vanilla policy Gradient
- 08 - Full policy Gradient agent for Reinforcement Learning
- 07 - Simple Policy gradient Training on armed bandit
- 05 - QNetwork learning
- 05 - Probabilistic QTable learning
- 04 - Simple QTable learning
February
January
- 12 - Using tensorflow queue system with CIFAR dataset
- 04 - SpinLock implementation in C++
- 03 - CIFAR-10 convolution network with batch normalization
- 02 - Recovering deleted GIT branch
- 01 - MNIST convolution network
2018
December
- 30 - MNIST Multilayer Perceptron network
- 30 - Simple MNIST Logistic regression
- 29 - Tensorflow setup - Second trial
- 28 - Upgrading Nvidia Drivers on Ubuntu
- 27 - Tensorflow install adventures
- 27 - String IDs in C++
2017
November
September
- 25 - Building Boost libraries for Android platform
- 24 - Cross-compile native mingw compilers for windows
- 21 - Setup Ragnarok map on ARK server
- 18 - Building Mingw64 compiler from sources on Linux
- 13 - Cross compiling C++ libraries for Android with CMake
- 08 - Crypto mining on solar panels
- 03 - Mon premier post