Skip to content
View rohingosling's full-sized avatar
πŸ™‚
πŸ™‚

Block or report rohingosling

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
rohingosling/README.md

Rohin Gosling

🌍 UAE - Dubai | πŸ€– Progenitor of Adaptive Systems | πŸ‘½ Aficionado of transhumanist philosophy | πŸ›©οΈ Extreme sports athlete

Electron React Node.js Python C C++ C# Java TypeScript 6502 Assembly x86 Assembly Commodore VIC-20 Commodore 64 OpenSCAD Claude Code Gemini CLI

Production Projects

Research Projects

80s/90s Demo Scene + Retro Computing

80x86

Commodore 64, Commodore VIC20

  • 🌐 3D Cube Demo - Interactive 3D cube demo, for the Commodore VIC-20 and Commodore 64.
  • ⌨️ Code Probe (C64) - Machine language monitor for the unexpanded Commodore 64..
  • ⌨️ Code Probe (VIC-20) - Machine language monitor for the VIC-20 + VIC-1211A Super Expander.

Legacy Projects

  • 🐍 Common Python Library - Common Python library repository. Deprecated, but kept around for spare parts.
  • 🍡 Common Java Library - Common Java library repository. Deprecated, but also kept around for spare parts.
  • βš™οΈ Common C++ Library - Common C++ library repository. Deprecated. More spare parts.
  • πŸ”ͺ Common C# Library - Common C# library repository. Deprecated. If only I could sell these spare parts.
  • πŸ“Š Common MATLAB Library - Common MATLAB library repository. Deprecated. Spare parts R us.

Connect

Philosophy

πŸ› οΈ Runtime Configurability

Applications should ship with a UI (GUI, TUI, or CLI) that lets business users tune business-configurable features in production.

  • For the sake of an example, if a business user is using a hypothetical system that pays disbursements out of a general ledger account, then the general ledger account number should be changeable from the UI by a business user with appropriate permissions, in real time.
  • Governance can be enforced by building an authorization step into the UI so an appropriately permissioned authorizer can authorize edits made by other users, also from the UI, and also in real time.
  • However, it should absolutely not be the case, that the business team are expected to log a work request to change a general ledger account number in an upcoming sprint.

The high level principle here, is that business users should be empowered to deliver value to customers in real time, with no delays. Governance and security requirements should not be used as an excuse to impede the flow of value to a customer. But instead, built into the work flow that delivers value to the customer, from the front end, in real time.

↔️ UI-API Parity

Bezos made is famous, but the idea is timeless. The UI is a client of the API, with no privileged backdoor.

  • Anything a user can do through the UI must also be possible via the API. Both surfaces ship together and are regression-tested together. This promotes both automation opportunities and human usability at the same time.
  • Every API should be designed with the blind presumption that it will be productized and exposed to external consumers. Even if you don't plan to expose your API externally, design it as though you are, anyway.

The high level principle is that the UI is a client of the API; the API is the system of record for behavior, and the UI gets no backdoor.

πŸ“Š Reporting Ships on Day One

Applications should emit well-structured events and telemetry from day one, with simple, generic, reporting features available out the box, from the front end.

  • While more sophisticated reporting solutions may be developed later, if an application operates on a set of business-significant tables, the business team should have a simple way to quickly see and extract the data from the application's UI, without having to constantly request extracts from the development or data analytics teams, or worse, wait months, or years, for a dedicated reporting solution.
  • Data entities should include both internal unique machine-readable names, as well as non-unique human-readable display names. So that you don't end up with cryptic, highly abbreviated, or weird looking entity names being surfaced to application user interfaces or reports.

The high level principle is that data models should be designed so that OLTP/OLAP is optimized for reportability from the start, not as a retrofit.

✈️ Build Simulators

If your system integrates with other systems, don't wait for integration testing. Build a lightweight simulator developers can run locally.

  • It doesn't need to cover everything, just the interfaces you depend on. I once watched a team hack together a physical ATM simulator on a plank of wood, card reader and all. Ugly, but invaluable.
  • To manage simulated vs real world drift and divergence, pin your simulators to reality with contract/conformance tests (recorded traffic, consumer-driven contracts), model the failure modes (latency, errors, malformed responses) not just the happy path.

The high level principle here, is that simulators can significantly enhance both development and testing, by supplementing, not replacing, real integration testing.



πŸ’­

Random Facts
  • NAUI certified free diver
  • Sky Diver
  • Former Freestyle BMX Flatland show rider.
  • Former Gymnast
  • Former Trapeze artist

Pinned Loading

  1. pinger pinger Public

    Utility to ping a host and measure response time, using Python ping3 package.

    Python 2

  2. parametric-functions parametric-functions Public

    Test program to test parametric functions.

    Python 2

  3. 3d-cube-commodore 3d-cube-commodore Public

    An interactive real-time 3D cube demo for the Commodore VIC-20 and the Commodore 64

    Assembly 3 1

  4. code-probe-c64 code-probe-c64 Public

    A machine language monitor for the Commodore 64

    Assembly 2

  5. code-probe-vic-20 code-probe-vic-20 Public

    A machine language monitor for the Commodore VIC-20 and VIC-1211A Super Expander

    Assembly 4