NES Math A guide to the fixed-point arithmetic behind classic NES platformers, written for programmers porting NES games to modern languages. 1. Why This Article Exists You are porting a classic single-screen NES platformer to a modern platform. You have access to a full disassembly of the original ROM, you know the physics constants, and you can read wiki pages describing every system. What you…
OpenClaw is now on Developer Sandbox. You click a card, provide an API key, and get a personal AI assistant running on OpenShift. Under the hood, that assistant runs on OpenClaw, and the core building blocks come from claw-operator. That part is the boring story. The harder story is the one I actually care about. The first question I asked was not “does the demo work?” It was this: if…
Or: How a Single Wrong Pointer Ruined My Week I’m building libgodc that is a Go runtime for the Sega Dreamcast. Yes, that Dreamcast. The one with the Hitachi SH-4 processor that Sega shipped (North America) in 9/9/1999. The one that ran Sonic Adventure and Crazy Taxi. I want it to run Go. If you’re wondering why anyone would do this: partly because it’s fun, partly because…
Well, use a script Let’s say I want to test this PR locally, meaning I need to fetch the code locally to my laptop. All I need is the URL and nothing more. Clone the repository locally (if you haven’t done it already), change into this directyory and then run the script: $ testpr https://github.com/redhat-appstudio/managed-gitops/pull/177 Output: remote: Enumerating objects: 202, done.…
What GitOps is GitOps is a set of best practices to update or rollback your application, nowadays mostly in a cloud (e.g. k8s) environment. As the name implies, the whole process is controlled by Git, and the code includes both the application source and the infrastructure configuration. The goal, as usual, is to deploy fast and reliably. In 2021, the first OpenGitOps Standard v1 was created, to…
In this article I will explain the mechanics of writing a client for Google GCP, pretty similar like gcloud. The purpose is to not write a full-featured client (that would make no sense, since you can use gcloud already) but to learn the how to communicate with Google’s GCP API using Go. Such a pkg can be useful in small projects where you need to talk to Google GCP API, like the…
Write your own controller Before going down the operator framework out there, it is important to understand what is happening under the hood. Then you would be able to appreciate the generated boilerplate code and feel more comfortable to change it. Prereq This tutorial assumes you have a cluster up and running and you can successfully communicate with it (e.g. kubectl get pods -A should work). If…
What is ingress? Ingress are (in a sense) reverse-proxies. But to understand, you need to know first what a proxy is – and only then will be able to understand the reverse of it. What is a proxy? For those of you who do not know what a proxy is, the word proxy describes someone/something acting on behalf of someone/something else. In terms on networking, when we are talking about a proxy…
It’s very easy to contribute to minikube (and other similar packages) when the only thing that is needed is just a version bump in the spec file. You first need to install these: # zypper in osc spec-cleaner Configure your ~/.oscrc file: [general] no_verify = 1 extra-pkgs = vim less mc [https://api.opensuse.org] user=pgeorgiadis # CHANGE email=pgeorgiadis@suse.com # CHANGE pass=123456789 #…
How many go version do you have installed? The default upstream location for the binary is: /usr/local/go. But in SUSE it is: /usr/bin/go. This is a symlink created via update-alternatives. # update-alternatives --list go /usr/lib64/go/1.10/bin/go /usr/lib64/go/1.8/bin/go /usr/lib64/go/1.9/bin/go I want to keep only the 1.10 so I will remove the others: # zypper rm $(rpm -qf…
Introduction If you think that Kubernetes is a cluster for managing containers, then you are dead wrong. Kubernetes is a cluster for managing Pods. In most cases, a Pod is considered to be an abstraction of an container object, so Pod talks to Docker and they know each other. What happens though when we introduce a new guy called libvirt and we learn Pod to talk to it? We have KubeVirt.
Introduction Before we get into what is serverless or openfaas, I would like to talk about the concept behind this. So, before going into the details, I want to give you the big picture of this new way of developing applications and how the users are supposed to use them. Containers are now more efficient than ever So let’s go back in time, when computers were enormous things and filled complete…
What is Kubernetes By definition, Kubernetes is an open source container cluster manager, and it is usually referred to by its internal name withing Google development - k8s. Google donated it to the open source world as a “seed technology” at 2015, to the newly formed CNCF - Cloud Native Computing Foundation, which established partnership with The Linux Foundation. The primary goal of…