I am a C# software developer, having written a few libraries/snaps/applications from the projects I'm experimenting on.
My name is Ruhan, curious on how things work (software wise) and a person with deep knowledge on
industrial control protocols, embedded computer hardware and a insatiable itch for diagnosing and fixing problems.
Currently residing in Pretoria, Gauteng, South Africa.
- Have a congenital hearing impairment and wear hearing aids
- Electronics tinkerer and experimenter (includes some hardware/software mods as well)
- Leveraging my experience in Linux systems and hardware–software integration, frequently consulted with to advise on custom hardware design and Linux support considerations.
- Highly practical with a strong inclination for DIY problem-solving.
- No new or current projects or experiments.
- C/C++
- C# and interfacing between Linux and .NET (Marshaling, P/Invoke)
- Some HTML and JS for basic front-end web development
- Bash scripting
- Use and build custom Linux OS images from kernel sources and using Buildroot or a rootfs. Using RAUC for immutable, recoverable OS updates.
- Want to learn a bit of Go and Rust.
- DVRIP-Web - Basic python-based DVRIP NVR or DVR based web browsing tool without external plugins/ActiveX code.
- UDPSoundServer - Basic, raw PCM audio streamer from ALSA recording device to UDP socket
- LGE_R105_Python - A LG-R105 360 camera control application in Python (including web-control, video stitch tool)
- CirclePiDeskClock - A Baremetal C++ application for a Raspberry Pi as a desktop clock
- ESP-NOW_OTA - ESP8266 OTA updates over ESP-NOW
- WiFiPacketRadio - A experimental project doing WiFi packet injection/receiving codec2 compressed audio
- ESPNOW_Linux - Replicate ESP-NOW methods and data send/receive using raw packet injection on Linux on 2.4GHz Wi-Fi
- SolisView - Kivy application for pulling Solis solar hybrid inverter data over a RS485 Modbus RTU connection
- RADXA CM3 IO - Ported Ubuntu for Radxa CM3 IO - 16GB/2GB configuration with BT+WiFi (noble kernel branch + boardinfo driver)
- Cambium Force 200L-SM branch - Experimental OpenWRT build for Cambium Force200L-SM device
- Hik-dvr-go2rtc - Experimental patches for the ONVIF protocol on go2rtc for Hikvision DVR/NVR
- Contributed to SharpSNMPLib -> Added SHA384 and SHA512
- Building a basic kernel module for "boardinfo" -> Boardinfo driver
- Custom, minimal Ubuntu Linux distro called AAR-OS -> AAR-OS
- Ubuntu RootFS bootstrapper for arm64 using chroot -> Bootstrap ARM64 rootfs
- Custom RTC tool using raw i2c transactions to interact with RTC's -> RTCSyncTool
- Customised flashing OS image tool/script (flashOS) -> FlashOS
- RAUC Update bundler script (internal development) -> RAUC Bundler
- Embstar MP05 router module infodump for new OpenWRT builds -> Embstar MP05
- Custom support for Fortinet FAP321C Access point -> OpenWRT for Fortinet FAP321C
- Arduino code for WS2812 LED bow-tie code on ATTiny85 -> StarTie
- Ubuntu Core kernel patch-sets for mainlined 5.10.y and 5.15.y kernels
- 5.10.y -> Ubuntu Core Apparmor patch 5.10.y
- 5.15.y -> Ubuntu Core Apparmor patch 5.15.y
- Various Canonical Snap packages
- minicom snap -> Minicom snap
- pci-utils and usb-utils snap -> PCIe and USB
- Linux 'stress' tool snap -> Linux stress
- Linux 'screen' snap -> Screen snap
- Old, deprecated raspi-gpio snap (Used for internal testing) -> Raspi-GPIO-snap
- Contribute more to open-source projects and support the communities with knowledge I have gained from the years, from doing all sorts of work-related projects and personal projects.
