#💽Programming Chat v2

1 messages · Page 86 of 1

lone sky
#

ok yeah time to make the website for that one person whose name I will not iterate unless i want 50 sleeper agents to beat me up with golf clubs

timid quartz
#

hahahah no embed

#

OH SHIT

#

EMBED??

spare quartz
#

moron

#

GIVE UP GIVE UP GIVE UP GIVE UP

#

you should listen

timid quartz
#

it's not buffering ;3

#

OH

#

THERE IT GOES

lone sky
timid quartz
#

go back to english class bro

lone sky
#

look it's not my fault that my english sucks

#

you [[Little Sponge]]

timid quartz
#

la fuego

lone sky
#

ITS "EL FUEGO"

timid quartz
#

my point exactly.

timid quartz
spare quartz
spare quartz
#

you said the same thing a few months ago

timid quartz
#

she sounds like a damn goblin singing it too

spare quartz
#

🕐

timid quartz
spare quartz
#

no you have dementia

timid quartz
#

no YOU have uhh

spare quartz
#

neet.

timid quartz
#

hypermentia

lone sky
timid quartz
timid quartz
#

whereas you're barely even in education

timid quartz
spare quartz
#

these are large videos

#

its not my fault discord is sucky tan ducky doo

spare quartz
#

cause thats on discord

#

and its already precached

timid quartz
#

make it faster.

spare quartz
#

this is literally you spekaing japanese

timid quartz
spare quartz
#

LOL

#

FAIL!!!

lone sky
#

HUH

timid quartz
#

cause it's a webm

lone sky
#

HUH???

timid quartz
#

IT'S A WEBM

spare quartz
#

okay but

#

your webm sucks

lone sky
timid quartz
#

see boom instant embed

#

near instant

spare quartz
#

it actually took a while

timid quartz
#

nah

spare quartz
#

so no

lone sky
#

COCAINE POWDER

spare quartz
#

not instant

timid quartz
#

it took like 1 second

lone sky
#

NOOO

spare quartz
#

bam

lone sky
#

WHY DID YOU DELETE IT

spare quartz
#

submillisecond

lone sky
#

@timid quartz DIE :C

#

I WAS WATCHING THAT

timid quartz
#

I should really make my own version of zipline at some point

spare quartz
#

i wonder what other videos i should serveeee...

lone sky
lone sky
#

PLAGIARISM

timid quartz
#

better

lone sky
#

FLATTERY

spare quartz
timid quartz
#

flattery???

spare quartz
#

yours just has the freak

timid quartz
#

im glad I'm being flattered

spare quartz
#

of typescript

spare quartz
#

hold on lemme upload a touhou video

lone sky
#

google flattery and come back here.

timid quartz
#

die

spare quartz
#

i wanna see if it embeds

timid quartz
lone sky
spare quartz
#

unfunnylad

#

ngl

#

aera is cooking you

timid quartz
lone sky
#

fuck you

spare quartz
#

no

#

youll show him bayachao

#

and :<

lone sky
#

...RIGHT

timid quartz
spare quartz
#

need more.....

timid quartz
#

lol do you really have devil connection on your server

spare quartz
#

yeah

timid quartz
#

let's go free bayachao games

spare quartz
#

it has a bunch of electron crap in it though so dont expect it to be very stable

timid quartz
#

depriving her of money

spare quartz
#

i tried doing my best of fixing what i could

lone sky
#

@spare quartz put a deltarune zip on the website.

spare quartz
#

not authorized

#

id need to write gamemaker in js first

lone sky
#

OH YOU

spare quartz
#

ughhhhhhhh these people are so smellly

#

@timid quartz question

#

how is zipline run

timid quartz
#

wdym

spare quartz
#

like

#

where/how is it executed

timid quartz
#

uh

spare quartz
#

if you say docker you're being killed

timid quartz
#

:3

#

podman

spare quartz
#

peak server design

timid quartz
#

which is basically docker

lone sky
timid quartz
#

this guy gets it

lone sky
#

i literally glaze .rpm, dnf and red hat a lot

timid quartz
lone sky
#

along with podman/distrobox

spare quartz
#

thats awful

timid quartz
#

python...but its decent

spare quartz
#

this is how all servers should be started

lone sky
timid quartz
#

why

#

it's written in C for one

#

so already 10000% faster

lone sky
#

okay fair enough

timid quartz
#

c++*

#

mb

lone sky
#

at least it's not .deb aka my hate and reason i want to shoot everyone that claims to "support linux"

#

when in reality they only support debian based distros

spare quartz
#

on the topic of linux

#

i need to figure out how to modify how it handles tcp keep alive

#

the last time i checked it sucks hard

timid quartz
spare quartz
timid quartz
#

Not a problem of apt or .deb

lone sky
#

i fucking hate canonical

timid quartz
#

Ok…Canonical didn’t invent either apt or .deb

#

That was Debian

lone sky
#

yeah i know i just hate them for making debian mainstream via ubuntu

timid quartz
#

Ughhh I gotta get up earlyyyyy

lone sky
spare quartz
#

7+7+7+7|+7+7+7+|7+7+7

timid quartz
lone sky
#

thanks aera :3

timid quartz
#

yw

spare quartz
timid quartz
#

What does extensible mean

spare quartz
#

we just use it as a term for "infinitely expandable"

timid quartz
#

How do you determine the end of one number and the beginning of the next

spare quartz
#

although the current functions are for Longs, they can be arbitrarily extended to any size

timid quartz
#

Don’t you dare say a delimiter

#

you should bencode all your logs

spare quartz
#

no

timid quartz
#

if BitTorrent can use it so can you

spare quartz
#

bencodes properties suck

#

im not sure if you've noticed

timid quartz
#

nah

spare quartz
#

have you ever implemented bencode?

timid quartz
timid quartz
spare quartz
#

your opinion sucks goodbye have a terrible sleep and i hope bayachao draws the rust crab as a twink in your dream.

timid quartz
lone sky
spare quartz
timid quartz
spare quartz
timid quartz
#

The world is ending

#

ATP is outside

spare quartz
#

well

#

if by outside you mean

pastel tinsel
#

WHAT

spare quartz
#

touched air that was outside

#

then yes i have

#

if you mean "left the premises of my house"

#

no

lone sky
#

gotta_buy_me_and_the_folks_some_pizza_after_this.mp4

timid quartz
lone sky
#

hold this for me

spare quartz
#

its cause my mom asked me to close the garage door

timid quartz
#

K good night

spare quartz
timid quartz
spare quartz
spare quartz
lone sky
# spare quartz

ArtStorage
Tipo: Carpeta de Archivos
Ubicación: C:\Users\unfunnylad\Desktop
Tamaño: 7.05 GB (7,571,988,528 bytes)
Contiene: 17,982 archivos, 12 carpetas

spare quartz
#

@timid quartz btw when you wake up i forgot to say one more thing

#

so java loggers have a different form for .info/.warning/etc where in the secondargument is a closure

#

so id make one more suggestion, if you're doing anything inside a log that isn't just a static string, like "${5 + 10}", then put it in a log closure

#

otherwise use the normal form

#
logger.info("Static")
logger.info { "Dynamic ${logger.name}" }
#

this trades off a bit of memory (closure) for processing time/possible memory from building (no need to build the string)

spare quartz
spare quartz
spare quartz
#

also heres a boring rust thing for you to read if you want

#

its raining

spare quartz
#

already a pretty good start for the banked logger, when the log is stripped

INFO 06/11 02:07:36.594186 Banked File Handler Tests publish 1 Basic text message
INFO 06/11 02:07:36.668874 Banked File Handler Tests publish 1 Complex メッセージ ỳ ġ 🔥🔥

(169 characters)
vs. the banked 175 characters

#

now to print many more

#

2000 messages written
banked message logger: 42,982 bytes
the raw messages logged (just the text, not date, level, logger name): 84,000 bytes

#

bank size: 132 bytes

#

now to huffman encode

spare quartz
#

alright

#

just created the most terrifying huffman encoder ever

#
fun <T> compute(from: Iterable<T>): HuffmanBranch<T> {
            val counts = from.groupingBy { it }.eachCount()
            var branches: List<*> = counts.toList().sortedBy { it.second }.chunked(2)
            while (branches.size > 2) branches = branches.chunked(2)
            fun branch(fromBranch: List<*>, from: HuffmanBranch<T>) {
                @Suppress("UNCHECKED_CAST")
                fun write(index: Int) {
                    val at = index == 1
                    val value = fromBranch[index]
                    if (value is List<*>) {
                        if (value.size > 1) return branch(value, from.branch(at))
                        val inner = value.first()
                        if (inner is List<*>) branch(inner, from.branch(at))
                        else from.edge(at, (value[0] as Pair<T, Int>).first)
                    } else from.edge(at, (value as Pair<T, Int>).first)
                }

                write(0)
                write(1)
            }

            val root = HuffmanBranch<T>()
            branch(branches, root)
            println(root.visualize())
            return root
        }
#

but it DOES appear to work

spare quartz
#

wrote this version with interesting properties

#

about the same speed but more bias towards common characters

#

(a gets 4 bits, previous gave a 5 bits, however for a lesser used character }, it got 8 bits, while the previous gave it 7 bits)

timid quartz
spare quartz
#

you waste an entire byte by doing that

#

anyways rn im working on exporting/importing my huffmanbranch class

#

this dataset is from 5 wikipedia articles

timid quartz
spare quartz
#

unsurprisingly the most used characters

spare quartz
#

using an extensible ulong is actually a lot more optimal than a u16 for characters

#

680 bytes -> 504 bytes

#

higher entropy

spare quartz
spare quartz
#

bank is now huffman encoded (left is opportunistic huffman encoding, right is plaintext)

#

need to fix the minor corruption on the sides...

spare quartz
#

hhhhhhh

#

figuring out the forward padding issue is tough

#

i think ill reserve 3 bits in the compression byte to designate the amount of unused bits at the end

flint belfry
#

discord dosent embed dial up..

spare quartz
flint belfry
spare quartz
#

its not?

#

its literally on a gigabit line?

flint belfry
#

didnt you run a speedtest and you got like 5 mbps

spare quartz
#

you might have memory problems

#

that was the server in new york which was specified as clearly as possible

spare quartz
#

uh huh

#

get to reading

flint belfry
#

i thought it was your home connection

flint belfry
spare quartz
#

get to reading!!!!!!

#

📖

flint belfry
#

im so fucking sorry

spare quartz
#

the programming chat lore is dense

#

okay now thats just weird

#

32

#

25

#

???

#

oh my god its sending 7 as unused

#

firefui3ur23u8r23r0291--1-

#

THERE

#

99 bytes for the testbank

#

excellent entropy

spare quartz
#

the only non-huffman encoded text is "INFO" since that'll end up being larger than plaintext

#

to store the 2,000 test logs im writing it'd take 116,000 bytes UTF-8 encoded, vs 41,403 bytes in our format

#

which is a compresion ratio of ... 35.69%!

#

but we can raise the entropy even higher

#

hold on i got my math wrong

#

let me factor in the logger name + level and crap

#

(41403 / 148000)*100 = 27.975% compression ratio

#

might look into making a sparse file

spare quartz
#

33,107 bytes total

#

27,781 bytes total using agressive deltas (18.770% compression ratio)

timid quartz
#

what's the most up to date cringe_server_lib

spare quartz
#

oh, um, let me publish

#

hopefully everything succeeds

timid quartz
#

what ver

spare quartz
#

just give me onnnnnne second

#

@timid quartz

#

what a strange pattern the content file is making

timid quartz
#

2.32.0

#

urghhhh

spare quartz
#

what

#

is it all errors now

timid quartz
#

theyre all GONE

spare quartz
#

oh yeah those are all under command_line now

#

also you're gonna have to replace all those singleArgs and multipleArgs things

#

with args.get() or args.gets()

timid quartz
#

going back to 2.22.2

spare quartz
#

noooooooo

#

its not that hard to transition

#

just do it

#

btw ColoredLogger is renamed to ColoredHandler

#

and you can create your new levels with ColoredLevel

timid quartz
#

going back to 2.22.2

spare quartz
#

why!!!!!!

#

i worked so hard :<

timid quartz
spare quartz
#

yeah!!

#

to a better one

timid quartz
#

int range LAAAME

spare quartz
#

goooodddd!!!*

timid quartz
#

should default to Integer.MIN_VALUE .. Integer.MAX_VALUE

spare quartz
#

it even supports Ada-style integers now!!!

timid quartz
spare quartz
#

you can do 2#01101# and 0b139 or 0o477

#

(theoretically anyways, they're not tested, i just used the logic in my head to code them)

#

(be my test subject)

spare quartz
#

kys

timid quartz
spare quartz
#

also you cant use them like ::this anymore

#

they're lambda factories

#

conv = stringToLong() < new syntax

timid quartz
#

ok so for uh

#

for arguments that aren't required but have a default

#

should I use .get or .getRequired

#

because strictly speaking they won't ever be null

#

unless their default is null

lone sky
spare quartz
#

getRequired since they'll never be null

timid quartz
#

ugh I have to use generic syntaax now

spare quartz
#

well, you can also have each flag as a variable

#

and use that as an argument

#

and its auto typed..

timid quartz
#

wdym as a variable

spare quartz
#

val flagA = Flag(...)

#

args.getRequired(flagA)

timid quartz
#

oh what the L

#

that's interesting

#

or I make my val FLAGS = listOf(...) into val FLAGS = mapOf(...)

spare quartz
#

why would you do that

timid quartz
#

because I already have them all in a list

#

so then I can

#

args.getRequired(FLAGS["name"])

spare quartz
#

okay but that'll just get a Flag<*>

#

which you still need to specify a type for

timid quartz
#

ugh cringe

#

fine

#

setting them all as individual variables is cringe

spare quartz
#

well you dont HAVE to...

#

its just a matter of perference..

timid quartz
#

generic syntax is less cringe

spare quartz
lone sky
#

i'll go back to yearning in the coal mines

spare quartz
#

yeah OK tamamo

lone sky
spare quartz
lone sky
#

?!?!??

lone sky
timid quartz
#

ugh I have to completely redo handleCommands

spare quartz
#

its for the bettterrr

timid quartz
spare quartz
#

ewwwww

#

ewwwwww

#

ewewww

timid quartz
#

im not writing 5 billion ifs

spare quartz
#

you're so weirrdd

timid quartz
# spare quartz you're so weirrdd

bro im not doing

if (args.getRequired<whatever>("arg1")) { /* ... */ }
if (args.getsRequired<whatever>("arg2").size > 0) { /* ... */ }
if (!args.getRequired<whatever>("arg3").isEmpty()) { /* ... */ }
spare quartz
#

cause you're boooring

#

also its getsRequired

#

not getRequired

#

wait no

#

im blind sorry 😭

lone sky
#

@timid quartz

spare quartz
#

NEED THIS TYPE OF WEATHER

timid quartz
#

something about "not enough information to infer type of K"

spare quartz
#

show

timid quartz
spare quartz
#

hmm

#

maybe it thinks your if is a statement?

#

try adding else {} to the end

timid quartz
#

The funny thing is that if I remove the else LOGGER.info(…) the error goes away

spare quartz
#

well that makes sense

#

when you pair an if and an else together with a function call or what have you, along in this context with an if paired to the when

#

it'll think you're trying to return a value up towards when

#

instead of "just" running code

timid quartz
#

ugh guess I need to find a better way to do this then

#

cringe…

spare quartz
#

?

#

no, you just need to {}

timid quartz
#

The loop is jank anyways

#

yknow maybe I’ll do this

#

make commands have null defaults

spare quartz
#

are you sure thats a good idea

timid quartz
#

Well I was gonna filter them

#

But that won’t really work either

#

Will still encounter the loop issue

spare quartz
#

hmm im confused

#

what are you trying to accomplish with the loop, again

timid quartz
#

just handling the commands

#

Because it’s valid to supply multiple commands in one invocation

#

carpool -add_application="./a" -add_application="./b" -remove_application=pidC is totally valid

spare quartz
#

well a loop seems fine there, then

#
"a" -> {
  if (...) ...
}
#

just do this if you havent already

timid quartz
#

if I did do a bunch of ifs I could enforce some ordering in how commands are executed

#

although it may be better to have the user specify the ordering

#

ie carpool -list_applications -add_application=... gives different output than carpool -add_application=... -list_applications

timid quartz
lone sky
#

she's already dead asleep

#

😭

timid quartz
#

ik

lone sky
#

let's be real honest here

#

she will wake up in 5 hours

#

be half awake

#

talk for like

#

4 hours

#

and then go to sleep again

lone sky
#

@timid quartz if I learned kotlin would you abort me

timid quartz
#

Immediately

#

however I won't tell you to learn rust as one of your first langs either

runic sierra
#

help, did I do it correctly

wheat hornet
#

well thats one way to use the coding channel

timid quartz
#

then I think you'd have a good foundation to appreciate the things Rust does

timid quartz
#

also fyi you can add syntax highlighting to your code by doing ```lua

#

makes it easier to read

runic sierra
#

Program a platform going up and down with the TweenService. I choose "EasingStyle.Sine" for a comfortable look

#

rahh

#

why it not working

timid quartz
#

the three ` and the "lua" have to be on the same line

runic sierra
#

oh..

timid quartz
#

like that

runic sierra
#
local UserInputService = game:GetService("UserInputService")
local TweenService = game:GetService("TweenService")
local tweenInfo = TweenInfo.new(2, Enum.EasingStyle.Sine, Enum.EasingDirection.InOut)
local tween = TweenService:Create(object, tweenInfo, {Rotation = 90})
local platform = script.Parent -- Assuming the platform is a child of the script

local function onPlatformTouch(input)
    if input.UserInputType == Enum.UserInputType.Touch then
        local touchPosition = input.Position
        local platformPosition = platform.Position

        -- Move the platform up or down based on the touch position
        if touchPosition.Y < platformPosition.Y then
            -- Move platform up
            local tweenInfo = TweenInfo.new(0.5, Enum.EasingStyle.Linear, Enum.EasingDirection.In)
            local tween = TweenService:Create(platform, tweenInfo, {Position = Vector3.new(platformPosition.X, platformPosition.Y + 10, platformPosition.Z)})
            tween:Play()
        else
            -- Move platform down
            local tweenInfo = TweenInfo.new(0.5, Enum.EasingStyle.Linear, Enum.EasingDirection.In)
            local tween = TweenService:Create(platform, tweenInfo, {Position = Vector3.new(platformPosition.X, platformPosition.Y - 10, platformPosition.Z)})
            tween:Play()
        end
    end
end

UserInputService.TouchBegan:Connect(onPlatformTouch)
UserInputService.TouchMoved:Connect(onPlatformTouch)
UserInputService.TouchEnded:Connect(onPlatformTouch)
timid quartz
#

ok so the first thing that's odd

#

is you make a tweenInfo and a tween at the very top

#

but then dont use them at all

runic sierra
#

tbh with you, idk what I am doing

timid quartz
#

the tween that you're actually using is defined within your if block

#
local tween = -- the tween you made

local function onPlatformTouch(input)
  if input.UserInputType == Enum.UserInputType.Touch then
    -- ...
    if touchPosition.Y < platformPosition.Y then
      local tween = -- another tween
      -- ...
      tween:Play()  -- this references the tween directly above
    else
      local tween = -- another tween
      -- ...
      tween:Play()  -- this references the tween directly above
    end
  end
end
lone sky
timid quartz
#

I omitted a lot of the code to show the point

#

I’ll be back later I have to drive

timid quartz
#

You COULD also use C/C++ for the “strongly typed language” portion, you’ll learn more but it’ll be a little harder

rustic vine
#

learn cpp

#

I like shilling cpp

#

cuz I think its awesome

rustic vine
#

responsible adult??

#

stop that

timid quartz
rustic vine
#

oh true

#

compelling argument

runic sierra
#

ya

#

very smart guy

rustic vine
#

ok

#

no hes stupid

#

👍

runic sierra
#

oh ok

rustic vine
#

😁

#

its ok hes probably stuck in traffic rn

pallid loom
#

quick question since I'm curious

#

what the fuck does control group 52 mean

pallid loom
#

what I wanted to ask is this

runic sierra
pallid loom
#

So I've got LoRa for a high altitude balloon project - and I'm wondering on how I should pack the data

#

current thinking is data1;data2;etc

#

but I'm wondering if there's something more efficent

#

every byte matters as it's a really slow protocol

rustic vine
pallid loom
#

another thought I had was to have a constant length for stuff

#

so for example temp is 2 numbers and 2 decimals

#

at ANY point

#

including - of course which then makes it 5 numbers

#

removing the dot as a decimal separator to save on transmission size aswell

pallid loom
#

but I'm unsure if I should go down this rabbit hole or just do the thing I currently do, just having ;

pallid loom
rustic vine
#

yea you just

#

put the data together

#

and then zstd it

#

yw

pallid loom
pallid loom
rustic vine
#

NOOOOOOOOOOO IT WAS SUPPOSED TO BE FLAT

#

WHAT HAVE YOU DONE

pallid loom
#

it's joever.

rustic vine
pallid loom
#

this one ran out of battery prematurely

rustic vine
#

I don't actually get what you're asking abt tho

#

what are you trying to optimize

#

what is slow

pallid loom
#

data transfer

#

were talking bytes per second

rustic vine
#

so you want compression

#

so u send less data

pallid loom
#

yes

rustic vine
#

ok slap zstd on it

pallid loom
#

but also on how to pack the data itself

#

I'll do research about zstd tomorrow, ty

rustic vine
#

well u don't really need to worry abt packing it yourself

#

zstd will just

#

do that

#

I slap it on anything I don't care enough to develop a custom solution for

#

and where the data is generic enough that a custom solution wouldn't yield much benefits

#

but if you know what kind of data you are sending and its a very specialized set you can prolly do even better than zstd

#

zstd
lz4 (pretty good alternative, I've not used it as much tho)
tamp (from a little research, looks like its targeted at embedded?)

lavish dove
#

7zip is pretty good

#

zstd is built into everything and 7zip is the best I think

timid quartz
#

ok I have some time to talk

timid quartz
# runic sierra ```lua local UserInputService = game:GetService("UserInputService") local TweenS...

ok so...
Your local tween AND local tweenInfo at the top are being overridden in your if blocks that deal with touchPosition.Y. Since you said you wanted your easing style to be sine, you probably intended to use the tweenInfo at the top.
Other than that, you should probably be using CFrames instead of Position = Vector3. You can both move and rotate the platform in one tween rather than needing two. Look up the Roblox docs on CFrames, you'll likely need something like

-- dont forget to do Y + 10 or Y - 10
-- and also to rotate on the correct axis with .angles
local tween = TweenService:Create(platform, tweenInfo, {CFrame = CFrame.new(X, Y, Z) * CFrame.angles(90, 0, 0)}
#

it's fine to declare local tween inside each if branch, but I think you were intending to use the same tweenInfo

timid quartz
#

@spare quartz my friend: "java is better than kotlin, kotlin is just java but you dont want to admit its java"

#

oml

#

I could have done this in rust

lone sky
#

go back to work

timid quartz
#
use std::process::Command;

fn main() {
    let o = Command::new("bash")
        .arg("-c")
        .arg("while true; do sleep 60; done;")
        .spawn()
        .expect("failed to spawn");
    println!("{}", o.id());
}
#

this works

timid quartz
#

Let’s see

#

11 hours

#

@lone sky

lone sky
#

30 minutes

#

or less

timid quartz
#

wait no 10 hours

lone sky
#

still

#

30 minutes or less

timid quartz
#

also if you really wanna learn Kotlin then sure

#

just know that it’s coping a lot by choosing to maintain Java compatibility

#

I’d maybe learn Java itself first

lone sky
#

tbf nobody is stopping me

#

it MIGHT not be ideal for someone coming from lua with zero knowledge

#

but 🤷‍♂️

timid quartz
#

You’ll get some context for things in Kotlin and for the JVM in general

#

The two things that come to mind are static methods and the throws keyword (and checked vs unchecked exceptions along with that)

rustic vine
#

LEARN CPP

#

checked exceptions are dumb

#

hot take of the week

#

thats not even a hot take they're just bad

timid quartz
#

the distinction is odd yes

#

but C++ doesnt even have a way to inform the programmer of what exceptions might be thrown

#

at least java does

#

however the ideal situation is having "exceptions" be pure values that are encoded into the return type of a function

#

eg rust Result<T, E>

#

or even golang with res, err := function()

rustic vine
#

check exceptions are exceptions-as-control-flow

#

which is dumb

#

exceptions should be exceptional

rustic vine
#

the ideal situation is indeed errors as values

lone sky
#

@timid quartz

  • soyjak icon
  • bad reviews
    seems trustworthy enough
#

😭

rustic vine
#

21 californians

timid quartz
#

JAVA IS BEING TAKEN OVER BY A BETTER LANGUAGE HAHAHAHA

lone sky
#

THE SOYJAK KNOWS BEST 😭

timid quartz
#

gg

spare quartz
lone sky
#

@timid quartz I CALLED IT

#

I CALLED IT

timid quartz
#

gg

timid quartz
#

the status logic was jank anyways

spare quartz
spare quartz
spare quartz
#

Kotlin is an independent language. If you want to learn about how the JVM operates, just ask me anything; or read the JVMS/JLS

timid quartz
timid quartz
spare quartz
timid quartz
#

switching to SIMD communication

  • do you know what a TA is
  • like I said earlier, the two things that come to mind are @JvmStatic and @Throws
spare quartz
timid quartz
spare quartz
timid quartz
#
  • ur mom, dropping convo, switch back to normal communcations method
  • ok but you still should know about them because kotlin can target the jvm
#

can target and often DOES target the jvm

spare quartz
#

really, there’s very few things Java will teach you about the JVM, if I’m being honest

rustic vine
#

it is 11pm please go promptly to bed

lone sky
#

it's 10 PM for them

#

☠️

timid quartz
#

I really do need to go sleep for 9h

lone sky
#

PM*

rustic vine
#

exactly

lone sky
rustic vine
#

irrelevant timezone

spare quartz
lone sky
spare quartz
#

this video will teach you all there is to the JVM

lone sky
spare quartz
#

that tweet is an entire thread of them

lone sky
#

OH

spare quartz
timid quartz
spare quartz
timid quartz
spare quartz
#

get to coding Kotlin!!!!

timid quartz
#

No imma get to sleeping

#

@lone sky should learn C though

spare quartz
#

No.

timid quartz
rustic vine
#

that thing

spare quartz
#

14 September 30828 CE

rustic vine
#

I am a baby kitty where is mama

#

LOL the replies are pretty good

rustic vine
#

#photography message

#

locked in or locked out

spare quartz
#

fwd

#

i cant see the message

rustic vine
#

gah

#

NOOOOOOO HES GONE ALREADY

spare quartz
#

LOL

#

this logo..

rustic vine
#

css

#

0.0%

#

thank goodness

spare quartz
rustic vine
#

UNUSED VARIABLE

#

⚠️

spare quartz
#

its library exposed

rustic vine
#

Nope

#

DELETE IT

spare quartz
#

deleting you

rustic vine
#

ok

#

u got me there

#

yo #general is scary im coming back

#

nvm its late im sleeping

spare quartz
#

readback works!

#

2,000 logs per each (basic/complex)

#

= 12.108% compression ratio

#

even with a single log its still marginally better than plaintext

#

(ignore corrupted log on the second there, need to add a way to inform the readback that the stream is over)

#

also supports colored logging(*)

#

the left is with the level loaded alongside the records, the right is the level loaded from file

#

it loses color content but the ID/name are preserved (as well as localization data if present)

spare quartz
#

11110111001111111001110101001100110010011111111101010000
ばやちゃお
111000111000000110110000111000111000001010000100111000111000000110100001111000111000001010000011111000111000000110001010

#

7 bytes vs. 15 bytes

spare quartz
#

some footage i think you'll find neat

#

at about 17 seconds you can see a bolt

spare quartz
#

so tiny

lavish dove
#

now take your microwaves thingamajig out and turn it into a capacitor and make a biggero ne

spare quartz
#

oh yeah

#

a boeing 787 crashed today

timid quartz
spare quartz
#

apparently 242 passengers on board

#

and it hit right into an apartment building

lavish dove
#

just a few hours ago

#

in india

#

the apartment building was attached to a hospital and is the housing for its doctors and staff

#

It crashed at takeoff after what im assuming is engine failure

timid quartz
#

Oh damn

#

@spare quartz instead of using RMI I should have used log4j

spare quartz
#

what??

#

the two are unrelated

timid quartz
#

that’s basically RMI lmao

spare quartz
#

in a roundabout way, sure...

#

but thats like saying

timid quartz
#

:3

spare quartz
#

instead of using RMI i should have used javax.compiler

timid quartz
#

And as an added benefit I would have gotten a better logger

spare quartz
#

you wouldn't

timid quartz
#

/j obv

spare quartz
#

the log4j one uses XML 🤮

timid quartz
#

So does the Java FileHandler by default

#

But the SimpleFormatter in question:

spare quartz
#

okay but thats an output

#

the log4j one uses XML for configuration too

#

anyways BankedFileHandler on top

timid quartz
timid quartz
spare quartz
#

blah blah blah

#

but think about it

#

12% compression ratio....

timid quartz
#

Not impressive

spare quartz
#

it IS impressive

timid quartz
#

Come back to me when it’s 25% or more

spare quartz
#

what?

#

lower compression ratio is better you doofus

#

12% compression ratio = 12% original size

timid quartz
#

Oh

timid quartz
#

Come back to me when it’s 3% or less

spare quartz
#

okay now thats just insane

timid quartz
#

On par or better than zstd

spare quartz
#

its already better than zstd

#

mainly just cause its banked and for logging only

timid quartz
spare quartz
#

zstd is generic

#

what unit is the ratio in

#

2.896 = 34% compression ratio

timid quartz
#

? Where do you see that

#

Thought 2.896 meant %

spare quartz
#

100/2.896 = 34%

#

there needs to be a % ... to make it a %

#

otherwise its just

timid quartz
#

Nuh uh

spare quartz
#

1:2.896

#

you learn this in 5th grade

#

cslet.

#

by the way a compression ratio of 2% would be actually insane

#

it is theoretically doable (on a repeated dataset)

#

but since logging can be from many different sources at once, with little repetition, it'd probably just cause lower entropy

#

(which is bad)

#

hhhh

#

im gonna see how well banked file handler stacks up to that ratio

#

from my limited theory of its algorithm, its effectiveness over plaintext goes up the higher its used

timid quartz
#

Whatever

#

Not using a program to decode logs

#

Even though I save like 2 bytes

spare quartz
#

but the efficiency!!!!!

#

waaahhh

spare quartz
#

compression ratio: 11.98%

#

though one thing zstd has over this

#

its stream can be done in a single file

#

banked file logging requires 3 files (you could remove the third, timestamp file, but each log will only have a delta of the last nanosecond instead of a full time)

#

(you cannot remove the bank file, though, the content file just becomes a useless list of indices that can only tell you that something was logged at a certain level)

#

(actually, now that i think about it... the logging level only really needs to be logged once)

lyric mesa
#

log in txt :D

lone sky
#

txt is for the weak

#

smh.

lyric mesa
#

okay dokay! :<

spare quartz
#

(however i am working rn to improve that thanks to aeras yapping making me think)

timid quartz
spare quartz
#

don't bother. you both are years behind my research.

lone sky
#

as i said, txt is for the weak

#

smh.

lyric mesa
timid quartz
lone sky
#

ok but still

#

txt sucks ass

#

if you want me to use a text format

spare quartz
#

see i dont have a lot of space

lone sky
#

make me use markdown

timid quartz
#

It’s readable

spare quartz
#

need it for more important applications like... bayachao art

timid quartz
#

LOGGING IN MARKDOWN????

lone sky
timid quartz
#

💀

lone sky
spare quartz
lone sky
#

I AM TALKING ABOUT TEXT IN GENERAL

#

IDIOT

lyric mesa
lone sky
#

SMH.

timid quartz
lone sky
#

rustlet

spare quartz
#

biohhhaazard

timid quartz
lone sky
#

simply store logs in a massive PNG file

spare quartz
#

hah thats funny

#

PNG uses huffman

#

with LZW

#

in DEFLATE

lone sky
#

which you can only read correctly with a proprietary log viewer

timid quartz
spare quartz
#

but the actual term is uhh.. steganography

#

im pretty sure

spare quartz
timid quartz
spare quartz
#

what?

lyric mesa
timid quartz
spare quartz
#

i know

#

but what does he have to do with that practice

timid quartz
timid quartz
spare quartz
#

you two are just making it worse 😭

lone sky
#

oh EWW

#

that's gross

spare quartz
#

in utf-8/ascii a letter (take 'B') is encoded in 7-8 bits

#

with a huffman tree you can variably encode the number of bits for something

#

(in this tree, 1 bit for B/C, 2 for E/F)

#

actually theres a mistake with that tree (C isn't encodable) so just treat it like its not there

#

10110 -> FEB

lyric mesa
#

sniff

timid quartz
#

for atp's logging thing

#

"INFO" is a really common string

#

so instead of like idk let's say 18 bits

#

INFO can just be 000

#

INFO 000
WARNING 001
SEVERE 010
FINE 011
FINER 100
FINEST 101
CONFIG 110

spare quartz
#

well, the huffman tree im using is taken from 5 english wikipedia articles, so its a lot larger; the actual deflation process is 3 fold

timid quartz
#

of course you need to store it in a structure so you know how to interpret it properly

spare quartz
#
  1. program determines if huffman/plaintext is more efficient (it'll test through the japanese/english sets), and writes the most efficient
  2. a message or what have you is disassembled into its most basic parts; for levels this is either their name, or their name + localization bundle; any outstanding unicode modifiers are normalized into 1 character
  3. the message is written as an index inside the bank file
#

Bank file:
Hello
"Hello" or 010101011100100? -> 010101011100100 more optimal
Write 010101011100100 [index: 0]

Content file:
...
"Hello" used
Write [index: 0]

lyric mesa
spare quartz
#

thank you for making me think

#

doing some level/int compression

#

ive gotten it down to 9.79%!

#

テストレベル -> have i written this before? -> no -> write details: name/localization name/value
テストレベル -> have i written this before? -> yes -> write name

timid quartz
#

Damn

#

9.79% is kinda nuts

#

But it’s also highly domain specific

spare quartz
#

indeed

#

it can really only be used with a LogRecord

#

it'd explode if you gave it binary or text

#

(unless you wrapped that in a LogRecord, which would be insanely cursed)

#

looks like i need to give it for memory for testing with a 1GB plaintext file...

timid quartz
spare quartz
#

gradle generates test result HTML files when you complete a test

#

anyways that should be plenty

timid quartz
#

huh

spare quartz
timid quartz
spare quartz
#

thisll take a moment......

#

9.76%, about the same

#

neat

#

it looks like most of the memory usage was from the inputstream storing the plaintext over the banked file handler which

#

i suppose is a good thing? i couldn't tell with great accuracy but taskmgr said only ~14 mb was allocated over the 2 million log run when using the banked handler

spare quartz
timid quartz
#

very.

#

16gb ram minimum, 32gb recommended, 64gb even more optimal

spare quartz
#

oh wow

timid quartz
#

regularly uses 20gb+ when I play

spare quartz
#

is that considering other applications on the system or just

#

the game

timid quartz
#

consumes nearly all of my gpu's 8gb vram

timid quartz
lone sky
#

☠️

timid quartz
#

fr

spare quartz
#

does he actually still play star citizen

timid quartz
#

yes

spare quartz
#

i swear i could see him on even when neco was alive 😭

timid quartz
#

my new 9700X chills around 40%-60% usage unless im doing something intense

#

but that's also affected by other apps

spare quartz
timid quartz
#

it's a very intense game

#

even top of the line PCs dont always get 60fps

spare quartz
#

i wonder how memory intensive bayachaos game will be...

#

all of her assets are these massive APNGs and i dont know enough about tyrano/electron to know how they handle them

timid quartz
#

is this how I do it

spare quartz
#

yeah

timid quartz
#

CryEngine being used for Crysis which was basically unrunnable when it was made (the hardware at the time was not strong enough and the Crysis devs designed their game as such) and even today is still intense

spare quartz
#

THATS WHY I KNOW THAT GAME

timid quartz
#

yep

spare quartz
#

reminds me of how good valve did with their source engines

timid quartz
#

oh huh

#

CIG moved away from CryEngine to Amazon Lumberyard

spare quartz
#

like they had decent glass breaking in the early 2000s with good graphics

timid quartz
spare quartz
timid quartz
#

apparently

#
Star Citizen Wiki

Star Engine is the video game engine used by Star Citizen and Squadron 42.
Star Engine is a heavily refactored version of CryEngine 3 from Crytek used since the first in-engine video released at the start of the Crowdfunding campaign. More specifically, the last CryEngine update integrated into Star Citizen's code was patch 3.8. This heavily mod...

#

"heavily refactored version of CryEngine 3" really bad cryengine mod

spare quartz
#

i remember seeing this other space game with a cool engine tech demo

#

i forgot what they were called...

timid quartz
#

uhhh

#

not elite dangerous

#

space engineers?

#

starbase?

spare quartz
#

with their work on space engineers 2 it is cool but

#

oh starbase i think that might be it

timid quartz
#

?

spare quartz
#

nnnnoo nvm

#

ughhh it sucks not remembering

timid quartz
#

or is it the one bethesda made

#

starfield

spare quartz
#

i saw it in a stream with lava (almost just said java wtf)

timid quartz
#

Starfield is the first new universe in 25 years from Bethesda Game Studios, the award-winning creators of The Elder Scrolls V: Skyrim and Fallout 4. In this next generation role-playing game set amongst the stars, create any character you want and explore with unparalleled freedom as you embark on an epic journey to answer humanity’s greatest ...

spare quartz
#

wow creation engine is really just bedesthas source

#

ooooo i wonder what engine gta vi will use

timid quartz
#

probably whatever gta v used

#

but improved

spare quartz
#

chaoegnine..

timid quartz
#

yeah they use their own engine

#

Rockstar Advanced Game Engine

spare quartz
#

creative

timid quartz
#

RAGE

#

is the abbrev.

#

lmao

spare quartz
#

STADIA!!!!!!

timid quartz
#

rip stadia

#

5ever in our hearts

spare quartz
#

you're like a reddit user.

lyric mesa
timid quartz
spare quartz
#

dont worry aera

#

thats not bayachao

#

its the artist who draws really similarly to bayachao

#

and might be a clone of them