Standard Programmieren


Introduction
Sexy Code Rawr(I am not good at coding but I would like to be able to make sexy code)
Here I gather all my thoughts related to software production.
I can only do some basic coding, I am not a programmer.



What Level to use
Back in the 80s when you coded either:
A) You have studied computer systems and can do Assembly & C
B) You have not studied computer systems and use basic or ask a friend to do the code for you
I see myself as option B, I can do high level languages, I have too little interest in computer systems to do C and assembly.
So you are either a high level coder or a system coder to me.
I think it is good to put yourself into one of those buckets.
Either go:
A) high level coder
B) System coder
"High Level Languages are just slow garbage, learn to do real code or hire a coder"
I find that with most programs I use the program isn't the bottleneck, I am the bottleneck.
When the program starts being a bottleneck that is when I will hire a programmer.


System Levels
Brukssystem:
* Laptop 8gb ram, Iris XE graphics
Powersystem:
*
* mid-high end Graphics card from 2017->
* 6gb-> VRAM
* 16-32gb ram
You know it is interesting, I can see similarities between the aviation industry and the computer industry.
First we just wanted bigger and bigger plaes/rockets, affordable by nobody
Then we wanted affordable planes/rockets focused on efficency.
I'm fine with just looking at the saturn 5, I don't think I can afford it.
The same goes for computers.
First it was all about those expensive gaming rigs owned by enthusiasts and rich people.
Then we will see more and more love for the more affordable efficent systems.
It's why we are seeing a retro computing revival.
People are really interested in those low capacity systems and low level code.
We're gonna see a low level computing renaissance.
Doing that early stuff with modern wisdom and technology is really interesting.
It's crazy my new laptop can function almost at the level of my dedicated gaming system from 2013.


Order of Learning Things
* Computer component functions, metaphors, simplifications, programable machines in general
* abstract representation of objects, data, file formats, basic compression:
tldr: field files and markup files
* Binary Fields
* Text Fields
* Wave Fields
* Image/Loop Fields
* Video Fields
* Model Fields
* 3D Animation Fields
* Object Markup Language
* Document Markup Language
* Audio Track Markup Language
* Map Markup Language
* Programing Language types(low, high, toy)
* Architectures(DOP, OOP)
* Classes, Structs, Objects, variables, Routines/Functions...


Efficent code
* Exclusionary questions first
* precalc tables
* Difference fields
* Reuse
* Sectors
* Minimize jumping, functions close to data they operate on
* Change only what is new
* Avoid OOP when possible


Computer Table
I really really like to have the computer monitor really high up so everyone can gather around and look at it.
I like to have the keyboard and mouse really far below the computer monitor.
The computer work acquires a sense of greatness when it is visible to everyone in the room.
It feels insignificant when you are sitting with it low and the screen is hidden by your body, like you want to hide it.
I want to show it.


Program Structure
Just like sheet music.
1. Routine markups
2. routines


File Names
I like to use a _raw part if the file is a raw microphone recording/raw scan with no edits.




Color Language and Coding
Functions = red because red symbolises action.
Classes = blue because blue symbolises abstract, ideas,
objects = green because green represents being, life, the touchable


System Tiers
1.Compability: DS, PS1, SNES, Gameboy advanced, Smartphone(Phantom Hourglass, GTA DS)
2. Bruks: Laptop, Laptop+Dock station, Intel Iris, 8gb-16 ram, carry-on 1-2terabyte HDD(Counter Strike Source, Team Fortress 2, minus texture filtering and anti-aliasing, Pixels = bruks)
3. Powerstation: Stationary, Graphics card 6gb vram, 32gb ram, terabyte integrated HDD, External server multiple terabyte(Flight Simulator 2024)
Target a system tier before writing the software.
Too much software targets powerstations for no good reason.


Efficent Logic Gates
When doing switches/if statements make sure you're setting them up so you check as few statements as possible.
For example:
If the player has an invincibility potion active it does not make sense to check damage from enemies.
If the user can't see a portion of a map it doesn't make sense to render it.
Inefficent switch flows can add up if you do not make sure to avoid them.


Who Should Code?
If you do not understand abstract thinking and abstract representation you will most likely not get anything from coding.
You should just stick to UIs and let your nerd friend handle all the advanced computer stuff.


Compression vs Elemental Reduction/Reduction
Compression is making a file size lower without sacrificing information.
Elemental Reduction means sacrificing information and reducing the content to it's basic elements.
For example:
Value field compression means you only measure the differences between pixels in a region, can save lots of space without losing quality.
Elemental reduction could be a mere description of the image and some basic proportions between elements.
Good for different things.
Why save the weather report on the radio as an audio file? probably better to store a transcript.
Why save the fugitive as a mere description? probably better to store it as a photo.
Sometimes elemental reduction, sometimes compression, depends on the importance of detail.
If you want to know what weather reporters sounded like it is probably better to store a small audio file.


ASCII = mistake
ASCII is one of the biggest mistakes in computer science.
A standard character set based on american english rather than formal deutsch.
Language f*ckup of the century.
Deutsch Standard Kod für Information Austausch, DSKIA


File Format I use
If you do not compress your audio files/image files you are doing the digital equivalent of storing cones in individual boxes rather than just stacking them.
Strukturfiler och fältfiler
Difference fields and value fields are the bare minimum compression techniques that always should be used.
The fields can have many different shapes and priority layers.
They can be boxes.
They can be cones.
They can be cylinders.
They can be waves.
Thick lines.
When there are big recurring shapes in the file, field compression is the way to go.
I'm extending it so it is not just difference fields, but also value fields.
Value fields are common in simpler images on the web.
1. Difference fields
2. Palette fields
3. Value fields
so the new name is just:
FI = "Fields Image" describes an image as fields of differences from absolutes, fields of equal value and absolutes rather than just absolutes.
FF = "Fields Film" describes an film images as fields of differences from absolutes, fields of equal value and absolutes rather than just absolutes.
FW = "Fields Wave" describes a wave(audio or other) as fields of differences from absolutes, fields of equal value and absolutes rather than just absolutes.
FM = "Difference Fields Model" describes a 3D model as fields of differences from absolutes, field of equal value and absolutes rather than just absolutes.
FT = "Fields Text" describes a series of characters as fields of differences from absolutes, fields of equal value and absolutes rather than just absolutes.

(C)MML(map markup language) = format used for making maps, just like a html can just be a bunch of links to other htmls, a MML can just be a bunch of links to other MMLs.
OBJ = format used for objects
(C)HTML(compressed html, html is stupidly verbose, not good for storage but nice for editing)) = documents
CSS = styling of html
(C)ATML(audio track markup language) = like html but for music tracks, describes music as instruments, samples and effects
I often have a compressed version for files that are designed for readability first and storage second.
DML = Document Markup Language
JSON and XML great merge = OML = Object Markup Language

Document/skrift/bok structure:
* root folder
* graphics folder
* css folder
* index.chtml

track structure:
* root folder
* samples folder
* index.catml

I also like existing formats like:





Value Field Image Compression
Value field compression is a technique where simpler fields of the image are described as a series of differences from the field mean rather than as absolute colors.
Fields are defined with simpler polygons.
Within the fields colors are differences from a mean measured using a smaller number than what would be used to measure absolute color.
You can do the same for video.
Polygons have an order


Easy Forum Software When?
I first found reddit when the Kerbal Space Program Forum closed down for maintanence and had reddit as their hub.
I don't like reddit because:
* Thread authors dominate every thread, design doesn't promote conversation.
* unpersonal, anti-customization
When are we gonna get that simple forum software we all want?
As easy as reddit/discord, as functional as a forum.


LOD-Manager
Routine that manages loading of chunks.

Light-Manager
Routine that manages lightning effects like:
* World Lightning
* Direct Lightning
* Light boxes(local illumination, local darkness, local lightness...)
* Spatial&Geometric Clarity Oclusion(dark gradients, light gradients, touch gradients, contrast gradients, noise overlay gradients, texture gradient overlays)
* reflections
* Bloom
I suppose this goes together with the LOD-manager


Object Oriented Programming is Weird
Imagine if instead of "effect" and "timer" your microwave just had one turn that said "food quantity"
A needless abstraction that turns you into a sh*ttier microwave cook.
If you are too stupid to understand "effect" and "timer" you should not use a microwave.
Isn't OOP just a massive bear favour? What is the point?
It breaks the metaphor of the scientist and the chalkboard, why would you do that!?
Further I really like the word routine and subroutine, it's quite important in coding.
I use those words all the time when coding because that's a good metaphor.
Routines written on a chalkboard like "clear the board after use" or the today schedule, and so on.
Chalkboard routines.
I prefer calling what is mostly called functions routines/subroutines
Mathematicians can call them functions if they want.
Object oriented programing makes it more difficult to understand the program and also slows down the program.
Gifted or ungifted you have no reason to do OOP.
There are plenty of good metaphors to understand DOP.
OOP is the biggest mistake in programing.
Trying to take computer programing out of programing.


When functions are bundled with data you can use the God metaphor.
* Objects = world
* Their functions = jobs for god
* God = makes everything move, processes objects in series.






Compression
Value range field compression means you look for fields of similar values and only measure the small differences in values in specified fields instead of measuring big values everywhere.
value field compression is the same but instead of similar values it is exactly the same value.
Palette field compression is fields of same palette.
Good compression is about thinking of ways to describe the same data with less numbers.
Bad compression is about thinking of ways to describe different data with less numbers.
List:
* Slope offset compression(audio)
* Difference store(diff. store)
* Value field compression
* Range field compression


Important Computer Programing Concepts
Assembly: 1:1 code that runs on the CPU
Allocated memory: memory allocated by the operating system for the program, introduced on PCs at the same time as multi-threading
CLR: Program that executes VM language programs like C#


Programing Languages
My favorite is the script level/mid-level combo
Write intensive sh*t in mid lang, write simple sh*t in scripts lang
High Level:
* Frameworks, Libraries
* Basic, Javascript, GDscript, Python
* C#, JAVA , Kotlin
Low Level:
* Frameworks, libraries, assembly sections
* C, C++,
* Assembly





Communism & Open Source & non-profit

If you are working on the earth we live on, make it open source/non-profit,
because man will never pay to breathe.
If you are doing something that is more than just breathing, take pay for it,
Because man will always pay to live.
Embrace powerlessness in your design, you can not force bad products on people, good products win with time.

Sometimes scientist/engineers create cutting edge technology under communism, like nuclear bombs, rockets, space stations, kalishnikovs.
c*mmunism, and things similar to it, are still sh*t.
When I see things like Blender or Godot Engine happen in open source development I think of soviet union engineers.
Donations is a horrible business model, take money for your work damn it!
Actually I have thought about it more.
I mean I will take things that have been created by open source people.
But I will never make open source software myself.
There is no such thing as free.
There is always an exchange of something for something else.
You know what open source isn't communism but uh the profit from working in that industry is quite meager.
The developers are kept alive I suppose.
Though there is much software that I don't understand why it is open source.
Why is blender open source? A pay4version system seems more fitting for that no?
Same for Godot?
Same for Gimp?
Just making everything open source feels like a meme.
I prefer using software from a company with promises.
okay, okay.
So I think this way about open source development.
* It isn't communism, you do get money, but it is life support money, you get massive reputation, which has value.
* It is kommunen type sh*t, barely any money but definetely helpful.
* If the use of the product is creativity then a closed license would sort of destroy the product,
the user wants to be able to do what they want with the thing with no objections, but also no guarantees, fron the creator.
I h*te PDF files.
I love HTML files.
If a product is meant to rule it's customer then have a private license.
If a product is meant to be ruled by the customer then have an open license.
You know what actually it is all communism, propietarymaxx.

Basic stuff like, file formats, basic creative suites, basic operating system, basic code editor will win through open license, do a private license and you will eventually get defeated and also forgotten.
In the basic code market open source wins eventually.
In the specific code market private wins.
propietary license until the open source competition starts getting to strong, then you make your license open so your product stays relevant.
or actually you risk the open source going past you if you do the propietary license so just do a open license from the start if you are in the basic sh*t business.

You can tell a propietary basic tool program is dying when the developers start adding a bunch of gay nonsense.
Happens every time.
Things I think will get outcompeted by/turned into open source/non-profit:
* Unity
* Photoshop
* Aseprite
* Windows(my boldest guess, another bold guess is Bill Gates will start doing open source coding)
* Source 1 SDK
* Word
* Twitter(again runs on donations)
* Discord(some sort of forum software that runs server off donations)
* Youtube
* PDF
* Minecraft
* FL Studio

I think non-profit is an interesting model.
I can see why sometimes you want that.
If a forum is for-profit the people with views not aligned with the owner will leave.
And what the h*ll is a forum without disagreement.

With propietary there are more guarantees though.






AI-assistant
I like to call my personally adjusted AI-assistant Gunnar Droid
I like to use it for:
* Looking up algorithms
* Designing file formats
* creating algorithms
* advice for efficency

It f*cks up boiler plate so I don't let it do that.




Good Times
* 90s 00s ambient trance music
* Simulator games
* Kladdkakglass


Favorite Systems
* PC
* early 2000s PC
* SNES
* PS1
* Nintendo DS
* WII


Files
Map/Model File/folder:
* map/model json
* textures folder
* shaders folder
* billboard foler
* animation folder
Document File/folder:
* html
* css folder
* graphics folder
* js folder



Workflow
1. Papers and sketches
1.5. Decide stack
2. Data Structures
3. Functions




Data Oriented Design
* Component layout(Fastest)
* object layout


Genres
* Workbenches(FL Studio, Krita, Aseprite, Inkscape, VS Code, spreedsheet)
* Eduware(Seterra, Äventyrarna, Kalle Kunskap, Rymdjakten)
* Life(Sims, Mulle Meck)
* Simulators(Hunting Simulator, Arma, Flight Simulator, Digging simulator,)
* Arcade(Call of Duty, Counter Strike, Day of Defeat, Team Fortress, Pac Man, Mario Bros)
* Story(Undertale, To the Moon)
* Sandbox(Minecraft, Garry's Mod)
* MMOs(Wizard101, World of Warcraft, Club Penguin, Panfu)



Titles
I prefer software titles that hint at the functionality:
* VS Code
* Musescore
* FL Studio
* Gamemaker
* Photoshop
* Aseprite
* Internet Explorer
I dislike non-descriptive:
* Skype
* Godot(I call this Linietsky's Sandbox)
* Unity
* Steam(I call this Gabe's Library)
* Logic(The name makes you think it is something like mathlab or VS code but it is music?)
* Edge(Go back to Internet Explorer name)


Gear
* Laptop, Surface/Framework
* 80s inspired docking station
* Mechanical Switches Keyboard


What is the Program
I think very modularly about code, I do not think of the modular components such as SFM, Unity, Godot, OpenGL as being my program, they are programs I use.
It is better to think like that.
When you talk about porting a game you talk about replacing the modules with ones that work on that platform.
Modular mindset.
UNIX mindset.
"your program is 5 gigabyte!"
No, my program is an invisible 10 megabytes, the modules are 5 gigabyte.
You should use modules as much as you can, don't reinvent the wheel.
Do one thing and do it well.


Web Dev
* SPA(Single page application, I love those)



2010s uncatty software design
I feel that many software developers have taken a wrong turn in their development style.
They try to own the customer rather than just making a good product, software feels increasingly perverse.
I prefer earlier valve titles where modding is king.
CS:GO and onward microtransactions started popping up everywhere.
Do not make products that give you short term financial wins, make products that are pure quality and spare your sanity in the process.
The more you think about money the less you get in the long run.
Think about quality products.
Do not think about money, do not think about fame, that will slowly drive you insane.
Think about good products.


60s GUI
I know GUIs were quite rare back then, but I like minimalist GUIs.
Like true minimalism.
No rounded corners.



Console vs PC
I think PC feels more social.
Consoles are nice, but PC is my favorite.
Modding, forums, simplicity, the web.
PC Gaming FTW!



Code Inspo
EDUWARE EDUWARE EDUWARE EDUWARE EDUWARE EDUWARE EDUWARE
* SCIENCE AND EDUCATION OMG
* Kerbal Space Program
* LEVANDE BÖCKER
* Kalle Kunskap
* Noas Ark DOS
* Pippi DOS
* Mulle Meck bygger Plan
* Mulle Meck
* Seterra
* 90s Swedish PC edu-vidya



People Inspo
Community and Creativity.
Gamedev-inspo:
* Valve(Awesome games, awesome mods, awesome community)
* Nintendo(Awesome games, awesome mods, awesome community)
* Toby Fox(Awesome game, awesome mods, awesome community)
* Eric Barone(Awesome games, awesome mods, awesome community)
* Kan Gao(To the Moon)
* John Romero(Doom)
Coder Inspo:
* John Carmack
* John Mcafee
* Bill Gates(Window, get sh't done, "king of barbarians" lol)
* Linus Torvalds(Linux, FR33DOM)
* Gabe Newell
* Yanderedev
* Tarn Adams
* Bisqwit
* M00T(imageboards yay!)
* Fredrick Brennan(2chan)
* Ylililia(cool vidya)

* xARTAXx
* Jakko Järvinen( AF)
* Alvin Andersson(Garrys Mod Bro)
* Lebert130(Garrys Mod)
* Boogie2988(Long Time OG Youtuber, real as hell, chill, cool, role-model, good taste, not cheap)
* Sebastian Lague(Bauhaus as hell, unity)
* Sam Altman(This guy is a vibe)
* 8-bit guy, 8-bit dad really( liksom wtf,)
* Daves Garage(Cool, liksom wtf, computers)
* Terry Davis( liksom)
* LGR
* Ton Rosendaal
* Gabe Newell
* Markus Persson
* Yanderedev
* Randydev