#🪅-progaming

1 messages · Page 70 of 1

deep mulch
#

what's y13

valid jetty
#

year 13, the last year of sixth form

#

its 17-18 years old and you get your a-level exams

deep mulch
#

insanity

valid jetty
#

its an important year for british students

deep mulch
#

so 12th grade

valid jetty
#

uhhhhhhhhhh

#

i think so

#

yea

hoary sluice
#

are u in y13 rn

valid jetty
#

nope im in year 12 of sixth form and my age is NOT 12 it is 16

formal belfry
#

one of the commits of all time

deep mulch
#

@valid jetty @valid jetty Rosie pie

hoary sluice
valid jetty
#

ok but on a real note i want to write a more complicated 3d example in elle

#

like, linking to opengl

#

not using raylib

deep mulch
#

@valid jetty when will Elle have a 2d graphics library of its own

valid jetty
#

never

deep mulch
#

@valid jetty make Elle godot bindings

#

it's actually very simple

deep mulch
#

@valid jetty

formal belfry
#

get nuked

valid jetty
#

@deep mulch your code will look like this from now on

const succ = n => f => x => f (n (f) (x))
const pred = n => f => x => n (g => h => h (g (f))) (u => x) (u => u)
const sub = m => n => n (pred) (m)

// these functions are using js primitives so theyre not pure anyway
// which means i can use js features like binops and ternaries
const churchToJs = n => n (x => x + 1) (0)
const jsToChurch = n => n === 0 ? False : succ (jsToChurch (n - 1))

const True = x => y => x
const False = x => y => y
const If = cond => x => y => cond (x) (y) () // requires to be unwrapped b/c lazy

const isZero = n => n (_ => False) (True)
const gte = m => n => isZero (sub (n) (m))

const Y = f => (x => f (y => x (x) (y))) (x => f (y => x (x) (y)))
const div = m => n => Y (f => m => If (gte (m) (n)) (() => succ (f (sub (m) (n)))) (() => False)) (m)

console.log (churchToJs (div (jsToChurch (10)) (jsToChurch (2)))) // 5
``` no more fancy binary operations or if statements
deep mulch
#

NO

spark tiger
#

where do u see

spark tiger
#

oh

#

how do i have so much python

valid jetty
#

lmfao

valid jetty
#

ive cursed you

#

every time you write a line of imperative or OOP code it will throw an error

spark tiger
#

oh i forgot i only have like two repos lmao

deep mulch
#

@valid jetty

valid jetty
deep mulch
spark tiger
#

"yeah im contributnig a lot"

valid jetty
#

lmao yeah ive seen that before

spark tiger
#

these mfs keep following em

#

i gen dont understand what theyre trynna achieve

#

like 90% of ppl on gh wouldnt even notice someone followed themlmao

valid jetty
#

my april is huge compared to every other months which is insane i think

formal belfry
spark tiger
#

hm what if i just upload my unfinished projects on gh

#

instead of leaving them locally

valid jetty
spark tiger
formal belfry
valid jetty
#

oh dotfiles

#

😭

#

each commit is a single character change to my perfect rice :3 (i dont commit my dotfiles for this reason)

deep mulch
#

@valid jetty make Elle discord client

spark tiger
#

my only dotfile is fastfetch

supple whale
#

i'm the type of person to make a 400 LOC change in a single commit

valid jetty
#

me too xd

deep mulch
#

me tooo

supple whale
#

least insane thaunknown commit

supple whale
formal belfry
#

bange

#

banger

#

what the

supple whale
#

why dont we have Promise.isSettled

lavish frigate
#
let isSettled = false;

myPromise.then(() => isSettled = true, () => isSettled = true);

console.log("isSettled?", isSettled);
placid cape
#

@valid jetty i think i found a bug in elle

valid jetty
#

hm?

placid cape
#
fn test(i32 a) {
  n := 5;

  while a > 1 {
    a -= 1;
  }

  return n;
}
#

should this work?

#

i'm getting qbe:test.ssa:21: invalid type for first operand %a.6 in sub

valid jetty
#

wtf

#

its never generating an instruction for a.1023 but its still using it

placid cape
#

and when i add print into the while loop

#

im getting qbe:test.ssa:24: ssa temporary %a.6 is used undefined in @loop.4.body

formal belfry
#

this channel should be renamed to ellegaming

valid jetty
#

yeah its using the wrong a

#

its allocating a new a and then trying to use that a instead of the one from the function params

#

strange

#

i think this is mostly an issue with mutating arguments passed into the function as that was always an issue

#

let me try something

formal belfry
#

my fingers are so dead

valid jetty
#

@placid cape the reason this happens is

#

youre doing a -= 1, but i32 a does not give a an address

#

so doing a -= 1 sees that, goes to generate an address, but then the value is not put inside

deep mulch
#

@valid jetty bwa

valid jetty
#

the only issue with stuff thats passed to functions is that you dont have its address

#

so i would have to create a copy of the data to a new stack allocated variable

#

which is usually unnecessary because you only need that behavior when you wanna take the address of a stack allocated variable

#

ok i fixed it but i dont like this fix

#

i dont like that im copying the value of the arg to a stack allocated variable each time

function w $test(w %a.1102) {
@start
    %n.addr.1106 =l alloc8 4
    %a.addr.1104 =l alloc8 4
    storew %a.1102, %a.addr.1104
    storew 5, %n.addr.1106
@loop.1107.cond
    %a.1103 =w loadw %a.addr.1104
    %tmp.1108 =w csgtw %a.1103, 1
    jnz %tmp.1108, @loop.1107.body, @loop.1107.end
@loop.1107.step
    jmp @loop.1107.cond
@loop.1107.body
    %a.1109 =w loadw %a.addr.1104
    %tmp.1110 =w sub %a.1109, 1
    storew %tmp.1110, %a.addr.1104
    jmp @loop.1107.step
@loop.1107.end
    %n.1105 =w loadw %n.addr.1106
    ret %n.1105
}
#

but qbe gives me no better way because i dont have its address

#

these addresses are different which means C is doing a similar thing

dawn ledge
#

gonna do it again 🙏

valid jetty
#

no FUCKING way

#
define i32 @foo(i32 %x) nounwind uwtable {
  %1 = alloca i32, align 4
  %2 = alloca i32, align 4
  store i32 %x, i32* %2, align 4
  %3 = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([4 x i8]* @.str, i32 0, i32 0), i32* %2)
  %4 = load i32* %1
  ret i32 %4
}
#

llvm literally does this

#

it allocates new memory and copies the %x into it

#

thats fucking horrible

#

even if you dont take its address it STILL makes a new stack variable and puts the value into it

#

im assuming thats optimized out but thats insane

placid cape
#

cool

valid jetty
#

yeah even with optimizations it still does that ```llvm
define i32 @foo(i32 %x) nounwind uwtable {
%1 = alloca i32, align 4
store i32 %x, i32* %1, align 4
%2 = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([4 x i8]* @.str, i64 0, i64 0), i32* %1) nounwind
ret i32 undef
}

#

ok that makes me a lot more confident in doing that in elle

#

ok i see it only does that if you take its address

#

ok i have a better way to do this then

#

or actually no because you cant assign to temporaries its abstracted to be their address

#

whatever

valid jetty
#

these are all different tests which all individually import prelude

#

here i was thinking prelude was making things slow

deep mulch
#

@valid jetty I'm going to give you 1 day sleeping stew

valid jetty
#

@hoary sluice looking at things in russian has made me realize how similar romanian and russian are

#

i can somewhat understand things which is INSANE to me

dawn ledge
valid jetty
#

like that?

#

zed wont let me decrease it anymore

copper quarry
#

anyone who knows how to remove this goddam thing from search bar firefox, idk css pls help

valid jetty
#

that looks pretty cool

frosty obsidian
#

ignore the weird border thats from the screenshot tool

balmy lintel
#

the border doesnt even have the same width on all sides

frosty obsidian
#

what i think happened is it included the drop shadow for the window but didn't make the image transparent

placid cape
valid jetty
#

i tried to make the importing of modules be only cached if the file path is the same too but 1. it doesnt work and 2. it brings parsing times from 200ms to 4.2s?????????????????????????????

#

this is what i tried to fix

#

either equating Rc<PathBuf> is really slow or creating Rc<PathBuf> is really slow

#

oh maybe cloning the module string is slow

fleet cedar
#

You probably want Rc<Path> rather than Rc<PathBuf> though, double indirection is pointless

valid jetty
#

true

formal belfry
valid jetty
#

its still significantly slower when equating the path

fleet cedar
#

Are you sure the deduplication is actually working

#

Try adding some tracing even when it parses a file

valid jetty
#

ah yeah its not deduping properly

#

ok i figured out a compromise

#

ok the only issue now is that the time to import has tripled from 200ms to 600ms but at least its not 4.2s

#

i think i can speed that up by doing ptr_eq on the Path

#

i can just make a wrapper type that implements PartialEq and continue using .contains for the HashSet i think

#

actually i cant do ptr_eq on this because each Path is a different ptr

#

bwaaaa

valid jetty
hoary sluice
#

yup

winged mantle
#

I am probably the only person in the world who instinctively types (new Date).getDay() in js

fleet cedar
#

Why tf would you do that and not new Date().getDay()

valid jetty
#

constructors without parens are the most cursed feature to ever exist

winged mantle
#

it's because you can't do new Date.getDay()

#

so i automatically do (new Date).getDay()

#

it does kind of look clearer...

fleet cedar
#

Yeah but why aren't you just doing the sane thing

winged mantle
#

because i never normally use parens after the class name unless there are parameters

placid cape
fleet cedar
#

Why

#

Why would you not use parens when doing a function call

#

It's partly js's fault for allowing that of course, but still

#

Why

dapper stag
#

is there anyone that has a database of known vpn hosting asn? since i use cloudflare free, I need to make my own vpn list.

#

or maybe a better vpn blocking method

fleet cedar
#

Why do you want to block vpns

supple whale
#

actual depression

#

i love when people mistake discord chats with google search

dapper stag
supple whale
dapper stag
#

gpt just lazy to give me all

supple whale
#

shocker, when you list IPs the list is long

hoary sluice
#

@valid jetty my world view is shattering

#

i just found out beneficent is not spelled "beneficient"

fleet cedar
#

Same with magnificent but not efficient

hoary sluice
#

well for magnificent its understandable

dapper stag
hoary sluice
#

magnificent: magnifi - SENT
efficient: effi - SHENT
beneficent: benefi - SHENT?????

#

one of these three needs to be changed

hoary sluice
supple whale
#

you're taking the piss, 5.5MB just for some flag emojis

valid jetty
#

jesus christ dead code elimination takes up like 60% of the compilation process

#

i disabled it and compilation times went from 1.6s to 155ms

#

for ichigo which is a pretty big project* (around 1.6kloc)

royal nymph
#

you will make debug and release modes

#

debug won't kill dead code

valid jetty
#

potentially not a bad idea

#

i might just get rid of dead code elimination because qbe proooooobably does that for you

#

let me test that theory

crystal halo
#

Have you published it anywhere by any chance? bongoheart

valid jetty
#

jesus christ there were some huge low hanging fruits to pick

#

simply making the compiled functions be a hashmap for lookup and not doing DCE made compilation of ichigo go from 9.2s to 150ms

#

insane

#

that is literally insane

#

single digit compiltation times for smaller programs

hoary sluice
valid jetty
valid jetty
hoary sluice
valid jetty
#

yeah it does

hoary sluice
#

so yes ok

hoary sluice
valid jetty
#

qbe actually does not do DCE for you

hoary sluice
#

i thought thats one of the main selling pointr of qbe

#

wtf

valid jetty
#

the main selling points is that its lightweight

#

im sure if i compile the assembly with a C compiler and -O3 itll be DCE'd tho

placid cape
#

i also thought that QBE has dead code elimination

valid jetty
#

it sorts makes sense that DCE takes so long

#

its an O(n^2) algorithm that checks if every function is used in any other function than itself

#

that is awfully slow

#

especially if there are many functions in the compilation unit

fleet cedar
#

Why is it that

#

Shouldn't it just be a dfs?

valid jetty
#

i was writing a quick prototype

#

the whole reason it works is hacky

hoary sluice
#

rewrite elle in elle

valid jetty
#

horrible but, for the time spent it works!

valid jetty
#

now im confident i can do that

hoary sluice
#

you need enums first

valid jetty
#

i was like "if compilation takes so long in rust, how tf am i gonna do this in elle in a reasonable amount of time"

#

now that compilation takes 9ms i think i can do it

fleet cedar
valid jetty
#

optimistic refactoring

#

(that code is really old)

hoary sluice
#

you have to make an enum for op either way

#

might as well make each op its own instruction

fleet cedar
#

Yes but 98% of traversals treat each binop the same

#

Such as the one above

hoary sluice
#
    Binary {
        left: Box<Expression>,
        operator: Token,
        right: Box<Expression>,
    },
valid jetty
#

i did it like that in ichigo lol

placid cape
#

same

valid jetty
#
struct QbeInstrBinop {
    QbeValue *left;
    QbeValue *right;
    string op;
};
hoary sluice
valid jetty
#

but i also do this because i didnt have time to implement operator precedence binops yet

fn Parser::add_arithmetic(Parser *self, string name, string op) {
    self.tree.push(Primitive::Function(
        name,
        [Argument::new("x", "整数"), Argument::new("y", "整数")],
        [AstNode::Return(
            AstNode::BinOp(
                AstNode::from_token(Token::new("identifier", ValueKind::String("x"))),
                AstNode::from_token(Token::new("identifier", ValueKind::String("y"))),
                op
            )
        )]
    ));
}

fn Parser::add_arithmetic_methods(Parser *self) {
    self.add_arithmetic("加算", "add"); // 「かさん」と読みます
    self.add_arithmetic("減算", "sub"); // 「げんざん」と読みます
    self.add_arithmetic("乗算", "mul"); // 「じょうざん」と読みます
    self.add_arithmetic("除算", "div"); // 「じょざん」と読みます
    self.add_arithmetic("剰余", "rem"); // 「じょうよ」と読みます
}
``` lmao
hoary sluice
#

it just complicates things

#

my enums are set up for an imperative language

valid jetty
#

husk

#

are you sure you wanna go full functional

hoary sluice
#

yes

#

makes aoc easier

lavish cloud
#

Is anyone here good at Compose

valid jetty
#

lol sure

valid jetty
hoary sluice
#

and its fun

#

i made a normal language already

hoary sluice
valid jetty
#

yes

hoary sluice
#

for what

valid jetty
#

to type in japanese

#

but its just alt+space on thinkpad or opt+s on macbook its not hard

hoary sluice
#

no switch between jp and en while typing

valid jetty
#

nope

hoary sluice
#

can u do it all with just jp layout

valid jetty
#

the syntax is entirely the unicode variant from the jp ime

#

yea

hoary sluice
#

its the reason tsoding did -? and +? for < and > in huya

#

theres no <> on the default russian layout

valid jetty
#

thats why i have 『』 for curly braces

#

thats what the jp ime does when i try to put curly braces

hoary sluice
#

can u use normal curly braces

valid jetty
#

i can add it to the lexer

#

but you cant from jp input i dont think

#

oh you can

#

but you have to select the right character

#

im still shocked that simply removing DCE gives like a 10x speedup 😭

hoary sluice
#

10x memor increase

valid jetty
#

it makes sense but i didnt know it had THAT big of an impact

hoary sluice
#

add dce to qbe

valid jetty
#

(until i flamegraphed it)

supple whale
#

WHY IS SUBSETTING A FONT SO HARD

hoary sluice
#

you should make a compiler backend in elle

#

and then rewrite elle in elle

#

so you can have full elle elle

valid jetty
#

i want to make a C backend for elle

#

from C i can compile to wasm and many other embedded platforms

hoary sluice
#

write it in elle

#

and compile that elle to c

#

bootstrap your c backend into c using elle

valid jetty
#

well now i just have a C compiler

hoary sluice
#

written in elle transpiled into c using itself

valid jetty
#

i can use the C transpiler for elle to compile elle into C and then i can write a C compiler in elle

#

so it compiles rust -> C -> elle -> C -> elle -> C -> C

hoary sluice
#

and then compile it to cobol

supple whale
#

should have done this insantly holy

#

why is every1 so fucking incompetent

#

3 python libraries, 10 online websites

#

nothing works

hoary sluice
#

@valid jetty im having withdrawal symptoms from doomscrolling

valid jetty
#

doomscrolling has ruined me

hoary sluice
placid cape
#

I need to be really productive

#

I wasted more than a month by nothing

hoary sluice
#

me too

#

but more like 18 years

placid cape
supple whale
#

here's my fix

#

try to "catch" the moment you tab out from ur project

#

like when u get the impulse of "lets open youtube"

#

then get up from ur chair

#

and go take a piss, take a shower, make some tea, make some food

#

just take an actual productive break

balmy lintel
#

or just turn off your internet

#

works for me

placid cape
#

eat food when you're bored 🔥

supple whale
#

yep legit

hoary sluice
supple whale
#

just do something productive when u want to procrastinate, but just not in front of ur pc

placid cape
supple whale
#

its a good thing

#

at least you'll have shit done IRL

hoary sluice
supple whale
#

you'll make ur bed, wash urself etc

hoary sluice
#

thats not the issue

#

the issue s im bored

hoary sluice
placid cape
#

I had this for like a month

hoary sluice
#

now discord is the problem

placid cape
hoary sluice
placid cape
#

maybe you can try to go to bicycle and outside?

hoary sluice
#

yesterday i did

#

today i dont

placid cape
supple whale
#

man mix-blend mode is fucking OP for making image masks

#

its INSANE

#

you can turn ANY DOM element into a mask

hoary sluice
placid cape
hoary sluice
#

ok bye

placid cape
#

bye bye

supple whale
#

top: mix-blend-mode: multiply, makes a hole with the text, showing the background behind it
bottom: text with the same background but clipped using text-clip background

valid jetty
supple whale
#

XDDDD

lucid trail
supple whale
#

i just raw-dogged it with harfbuzz

#

fucking easier

lucid trail
#

should really make a docker container/nix flake for this

spark tiger
#

i got a $40ish commission, how do i make myself actually do it isob

lucid trail
#

i have an online cs course i haven’t touched in months i have to finish before i graduate

supple whale
#

i dont envy ya fuckers

#

i'm so free its insane XD

balmy lintel
#

pay the customer 5 bucks if you dont complete it in time

hoary sluice
placid cape
#

Eagely you already finished the documentation???

hoary sluice
placid cape
#

okay

spark tiger
#

so

#

vcf

elder yarrowBOT
spark tiger
#

vcf if tails i do it rn

elder yarrowBOT
spark tiger
#

okay i’m sleeping

hoary sluice
#

@valid jetty finally

#

i could never get 100 on this keyboard

#

on time 60

#

???????????

placid cape
hoary sluice
#

ok and this is better than my qwerty pb

hoary sluice
#

im taking a break

placid cape
#

yey nice

#

I need to start working on the voice assistant

hoary sluice
#

today is the last day that im working on it

placid cape
#

nice 👍

hoary sluice
#

i wonder how many more records i can get in a row

valid jetty
valid jetty
#

its funny because i cant get 116wpm on time 60 on qwerty lol

#

itll be 110 max

#

116.99 🥀

hoary sluice
#

yea since last time i did monkeytype i had a few months of training my accuracy

#

previously i was making way too many mistakes

#

typing at like 120 raw with 80% accuracy

valid jetty
#

long nails really ruins my accuracy lol

placid cape
valid jetty
#

i can type well just not with good accuracy unless i cut my nails

hoary sluice
#

yes

hoary sluice
#

my keyboard is low profile

#

so if my nails are even like 3mm long they sometimes get in the way

placid cape
valid jetty
#

i keep clipping on the keys if i type too fast lol

#

like my nails get stuck under the key

hoary sluice
#

noo i got too nervous

placid cape
#

I have 123 99% acc on 60 seconds

hoary sluice
hoary sluice
#

my 10 words qwerty pb is 178

#

i wonder if i can beat that

valid jetty
#

mine is around 160 i think

#

and thats with nails xd

hoary sluice
#

i prob cat

#

can

#

on a good seed

placid cape
#

I have 159 on 10 words

hoary sluice
#

speak of the devil lmao

#

this was my next completed attempt

placid cape
#

181 wow

hoary sluice
#

i wonder when ill get 200 on 10 words

supple whale
#

btw, this only says the app doesnt track you

#

privacy policy tells the full story

#

:^)

hoary sluice
#

i love how i completely skipped 160 and 170

#

i skipped 160 on qwerty too

#

never seen 16x wpm

#

200 wpm on 60s puts you #160 global husk

#

all time

valid jetty
#

shows how absolutely insane the guy in #1 is

hoary sluice
deep mulch
#

@valid jetty @valid jetty @valid jetty

valid jetty
#

eagely literally has higher than me

#

lmao

#

zoot will see a stick on the floor and say it’s a magic wand if i’m the one who dropped it

placid cape
#

i just got 160

deep mulch
#

howw

#

you all make me feel like I type slow and I hit 120

hoary sluice
last vapor
lavish cloud
#

@frosty obsidian how do I make a TextField for massive chunks of text in compose
The regular impl takes a few minutes to measure the 20MB of text

#

My idea was to use a mono font and just measure how many chars fit on one line, then somehow use that to do efficient layouting

#

For static text that's easy with a LazyColumn and a bunch of Text split in lines

#

But when it needs to be editable idk

hoary sluice
valid jetty
#

120 really isn’t that high for someone who types all day long

#

i think my biggest disadvantage is that i only type with 1 finger on the right side of my keyboard

#

so i need a very good left leaning seed to get a good score

#

words like test are BLISS to type for me

placid cape
#

1 finger???

hoary sluice
valid jetty
#

full left hand, 1-2 fingers on right hand

#

it’s a really bad habit but it works because i can type 125+ avg with it

#

manual is a very right leaning word so i type it slower (and it’s extra slow for that because i was ensuring it was right)

hoary sluice
#

at least you can type without messing up

#

dman husk

frosty obsidian
#

I've never had to work with that much text

hoary sluice
#

@valid jetty they made gpt o4

deep mulch
#

you're better in everything than me

hoary sluice
#

@valid jetty you can get so much stuff done when youre not on youtube the whole day

hoary sluice
#

i wrote pretty much the entire 2nd semester of documentation in one day

valid jetty
#

idk any compose and i’ve barely written any java

hoary sluice
#

rosie wrote fizz buzz enterprise edition

#

rosie when fizz buzz enterprise edition in elle

valid jetty
#

it’s not enterprise edition but it exists

hoary sluice
#

well thats not the point

valid jetty
deep mulch
valid jetty
#

i’m just as surprised as you are that i’m functioning on 2 hours of sleep

#

i was expecting to be half asleep all day but i have more energy than i had the last month

hoary sluice
#

rosie you will compete in aoc this year and go to sleed at 22 every day

#

to fix ur sleep

valid jetty
#

aoc made it worse lol

hoary sluice
#

how

valid jetty
#

i just ended up sleeping at 1am and waking up at 4:45 instead of sleeping at 1am and waking up at 6am

hoary sluice
#

you usually go to sleep at 7 am the next day not at 1 am

valid jetty
#

when i have school i try to sleep at 1am (it ends up being later but i try)

#

today it was 4am because i fucked my sleeping schedule during easter

hoary sluice
#

you dont realize how much better sleep improves your life

valid jetty
#

oh i know it does but i also have a lot of things to do

hoary sluice
#

you can get so much more done with less time if u sleep 8h with a fixed schedule

valid jetty
#

i tried 8h of sleep for like a month a few years ago

hoary sluice
#

i always end up sleeping 3h later and 3h more during breaks and it messes me up

valid jetty
#

i was so tired i fell asleep during school and that has never happened before

#

idk what it is but it’s like the less sleep i get the more energy i have

#

it’s probably not good but whatever it works

hoary sluice
#

u dont wanna do fixed 8h

#

u wanna find the closest point to 8h when you are not in NREM stage 3

valid jetty
#

true

hoary sluice
#

otherwise it wont work

#

even better is polyphasic sleep but thats really hard to manage

#

u cant have a 9/5 job or school with poly

valid jetty
#

i have a much better system: sleep whenever i can no longer continue doing what i’m doing because of fatigue

hoary sluice
#

You can't English go to sleep

placid cape
valid jetty
#

i can english but i’ve discovered that i started making such typos far more often ever since i started focusing on japanese more and idk why because it really shouldn’t have any effect

hoary sluice
#

ive been trying to speak and think less in english

#

more in russian

valid jetty
#

yeah exactly this but japanese lol

placid cape
#

russian?

valid jetty
hoary sluice
#

i only speak it with family

#

and my english is already good i dont need to think in english

valid jetty
#

buna seara igali

hoary sluice
#

who is igali

valid jetty
#

igali 💔🥀

#

say it in a romanian accent

placid cape
#

btw do you have any apps where you can learn/practice language?

valid jetty
#

yes many

hoary sluice
valid jetty
placid cape
#

okay thanks :)

#

i'm learning german

hoary sluice
valid jetty
placid cape
hoary sluice
#

2 years 4 days ago

hoary sluice
valid jetty
placid cape
#

.

valid jetty
#

but duolingo is nowhere near to being my primary source

#

how did you figure out how to bypass it

hoary sluice
#

uhh teach pls

placid cape
#

one of my friends recommended me anki

valid jetty
#

i tried but i think i have to patch it at the network level

placid cape
valid jetty
#

oh android

#

ok

placid cape
#

yep

hoary sluice
#

i was using duolingo school up until recently which has some of the features of super but then i did super free trial and now my school doesnt work anymore

placid cape
#

invited

hoary sluice
#

ty

deep mulch
#

@valid jetty hii

valid jetty
#

i figured out how to patch it on ios but it doesn’t apply, presumably the values are cached on the network level so no swizzling will work, i have to patch the file or the network request like eevee spotify does

deep mulch
#

@valid jetty swizzles you

placid cape
#

it's pretty easy

valid jetty
#

okok i’ll see

placid cape
#

i just set subscriberLevel field in user class to GOLD, two more booleans and fill one array with all features

valid jetty
#

yeah it is NOT that easy on ios

#

lemme find my testing code

placid cape
#

i can even send you the patched apk file if you want

deep mulch
#

virus

hoary sluice
placid cape
#

sure

hoary sluice
#

i dont do android dev

valid jetty
#

oh i forgot eagely isn’t a reverse engineer person

#

lmao

hoary sluice
deep mulch
#

@valid jetty I will reverse engineer elle

#

🦅ly

valid jetty
hoary sluice
placid cape
#

they have a pretty interesting obfuscation tbh

valid jetty
#

everyone here has probably done at least a little bit of discord reverse engineering

hoary sluice
#

.

placid cape
#
void method(something) {
  switch (something) {
    case a:
      // 1 do stuff
      callProxyMethod(c);
      return;
    case b:
      // 2 do stuff
      callProxyMethod(a);
      return;
    case c:
      // 3 do stuff
      return; // done
  }
}
valid jetty
placid cape
#

they basically have bunch of classes with one integer and then big switch statement with arguments (everything is object) and they call proxy methods there

valid jetty
#

i think it works a lot differently on ios

#

the only thing i could get working is refilling the hearts without watching an ad but that crashes the app lol (it still refills them)

hoary sluice
valid jetty
#

nope

#

they fucking got rid of it on ios

placid cape
#

not anymore

hoary sluice
#

lmao

balmy lintel
#

dualipa

placid cape
#

they removed it from the apk code

placid cape
valid jetty
#

yeah deffo

#

all the fields are there and i set them but it doesn’t apply

hoary sluice
#

ig that way it works offline

valid jetty
#

in spotify there’s a file created on the fs with cached user info, i think i have to edit that or something similar

placid cape
#

they remove hearts like this :p

valid jetty
valid jetty
#

i get to write in objc

#

which is a really nice language even though it looks weird at first

hoary sluice
#

nope its not

valid jetty
#

technically you can do tweaks in swift but i prefer objc because i know C

hoary sluice
#

is objc anything more than what the name says

valid jetty
#

yeah it’s really different its apple’s take on object oriented

#
+ (NSString *)hexStringFromColor:(UIColor *)color {
    CGFloat red, green, blue, alpha;
    [color getRed:&red green:&green blue:&blue alpha:&alpha];

    int redInt = (int)(red * 255.0);
    int greenInt = (int)(green * 255.0);
    int blueInt = (int)(blue * 255.0);
    int alphaInt = (int)(alpha * 255.0);

    return [NSString stringWithFormat:@"#%02X%02X%02X%02X", redInt, greenInt, blueInt, alphaInt];
}

+ (UIColor *)colorFromHexString:(NSString *)hexString {
    NSString *cleanString = [hexString stringByReplacingOccurrencesOfString:@"#" withString:@""];

    if (cleanString.length == 6) {
        cleanString = [cleanString stringByAppendingString:@"FF"];
    } else if (cleanString.length != 8) {
        return nil;
    }
    
    unsigned int rgbaValue = 0;
    NSScanner *scanner = [NSScanner scannerWithString:cleanString];
    [scanner scanHexInt:&rgbaValue];
    
    CGFloat red = ((rgbaValue & 0xFF000000) >> 24) / 255.0;
    CGFloat green = ((rgbaValue & 0x00FF0000) >> 16) / 255.0;
    CGFloat blue = ((rgbaValue & 0x0000FF00) >> 8) / 255.0;
    CGFloat alpha = (rgbaValue & 0x000000FF) / 255.0;
    
    return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
}
``` i can’t really find a good example
hoary sluice
#

that looks disgusting

placid cape
#

it is disgusting

lavish cloud
deep mulch
#

objective c objectively ulgy

deep mulch
lavish cloud
#

yes but how

#

there's no basic element for editable text

hoary sluice
#

@valid jetty have the lambda calculus people created an array that isnt a linked list

deep mulch
#

everything probably

#

maybe make an issue in the tracker since if it's measuring even lines that aren't visible that's bad

spark tiger
#

i kinda like the way objc looks like lol

#

it's weird but uhh idk pretty

valid jetty
cinder egret
#

zt has only ever touched kotlin and can’t read other languages…

deep mulch
#

Rosie forgot I started with java

valid jetty
#

@hoary sluice basically instead of color.get(&red, &green, &blue, &alpha) you do color getRed:&red green:&green blue:&blue alpha:&alpha]

#

it looks weird but its actually really good

#

anyway @placid cape this is the code i had left over after trying a bunch of things

#import <UIKit/UIKit.h>

#define ROSIE_LOG(fmt, ...) NSLog((@"[DontFeedTheOwl] " fmt), ##__VA_ARGS__);

@interface DUOUser : NSObject
@end

@interface DUOSubscriptionInfo : NSObject
@end

%hook DUOSubscriptionInfo

- (BOOL)isFreeTrialPeriod {
    return YES;
}

%end

%hook DUOUser

- (BOOL)hasDuolingoMax {
    return YES;
}

- (BOOL)hasRegularDuolingoMax {
    return YES;
}

- (BOOL)hasPlus {
    return YES;
}

- (BOOL)hasUnlimitedHeartsAsFreeUser {
    return YES;
}

- (BOOL)isAdmin {
    return YES;
}

- (BOOL)adsEnabled {
    return NO;
}

- (BOOL)rewardedAdsEnabled {
    return NO;
}

- (BOOL)isImmersiveMaxFreeUser {
    return YES;
}

- (BOOL)hasFamilyPlan {
    return TRUE;
}

- (BOOL)hasFullFamilyPlan {
    return TRUE;
}

- (NSInteger)maxHealth {
    return 39;
}

%end

%ctor {
    ROSIE_LOG("Hello world!");
}
``` i couldnt get it to apply though
#

iirc there was a second class in another file with obfuscated names and i swizzled that too but idk where that code went

valid jetty
spark tiger
#

unlike in like well modding on windows

placid cape
#

this is user class in android duolingo

#

they didnt obfuscate subscriberlevel enum, that helped me a lot

spark tiger
#

huh

#

i got told u cant

valid jetty
#

you can inject FLEX into apps and/or your system (if jailbroken)

#

you can find methods and if its not obfuscated you can know their type

spark tiger
#

oh yeah flex i remember that but i didnt know u can view impl

valid jetty
#

oh no you cant view impl

#

but you can view a pseudocode reconstruction of the assembly in like ida

#

similar to pseudojs generated from hermes bytecode for mobile discord

placid cape
#

what do you think?

spark tiger
valid jetty
#

but you dont need to view impl you just need to know what the relevant functions are (unless symbol names are stripped in which case ur fucked)

hoary sluice
#

@valid jetty i wanted to mv a file and forgot which one so i did ls

placid cape
hoary sluice
placid cape
#

idk

spark tiger
valid jetty
spark tiger
#

and ktool

hoary sluice
#

call it blomc

placid cape
#

blomc is blom compiler

#

that exists

valid jetty
#

blomc is the compiler

hoary sluice
#

oh it can interpret too

#

then just blom

valid jetty
#

blm is the black lives matter movement

placid cape
#

this is just a fancy wrapper in the monorepo

#

so i dont have to do go run toolchain/cmd/blomc/main.go ...

valid jetty
#

g*o

hoary sluice
#

yea call it blom

#

what does blm mean other than black lives matter

#

where did the o go

#

go mentioned

placid cape
#

youre right i guess

#

but nvm i dont want it to call "blom" because it's really only for the development

hoary sluice
#

blomctl

valid jetty
#

wrong reply

#

husk

placid cape
#

you'll have these cmds after "installing" blom lang

spark tiger
hoary sluice
valid jetty
hoary sluice
#

what does blom mean

placid cape
#

nothing

#

or idk

valid jetty
#

the first argument of an objc call is the function name

placid cape
#

this is blom

valid jetty
#

so its technically color.getRed(&red, &green, &blue, &alpha)

#

the first one is the method ur calling on an object

#

the rest are named arguments

hoary sluice
placid cape
#

i have to do homework bcs i have school tomorrow

#

bye bye for now

deep mulch
#

@valid jetty hiiii

hoary sluice
#

bye

valid jetty
#

hm ok bye

placid cape
hoary sluice
valid jetty
deep mulch
#

@valid jetty why are you 12

#

Rosie smartest 12 year old

valid jetty
#

eagely is on the same level as me

hoary sluice
#

good one

placid cape
valid jetty
placid cape
#

it's probably useless i know

valid jetty
#

for me i just return early out of the compilation process lol

#

no its not useless

placid cape
#

i dont run the compiler at all

valid jetty
#

i wanna view ast output quite often

#

its a really useful feature

hoary sluice
#

i am so tired of writing docs maybe doing a masters/phd isnt gonna be a gread idea after all

placid cape
#

i have everything modular

valid jetty
#

i see

placid cape
#

because of the interpreter etc.

hoary sluice
#

deadline tomorrow

#

tomorrow i have to write another paper

placid cape
#

i just finished extracting the qbe abstraction from toolchain

deep mulch
#

should I get a masters @hoary sluice

hoary sluice
#

on thursday i can maybe work on icypeas

#

do u have a bsc

deep mulch
#

not yet

placid cape
#

so it's a real lib and i can implement qbe ir -> js, py

hoary sluice
#

when

placid cape
#

bcs that's not really related to blom itself

deep mulch
#

next year

hoary sluice
#

do a masters in vienna

deep mulch
#

can't afford

hoary sluice
#

i forgot ur american, thats in europe

placid cape
hoary sluice
#

housing 300$

#

warm

#

you might need to know german but for masters there should be a uni that offers it purely in english

deep mulch
#

family won't let me leave

#

probably

hoary sluice
#

youre 27

deep mulch
#

nop

hoary sluice
#

close enough

#

22

#

24

#

one of these times i wil get it right

frosty obsidian
#

zeet doesn't know that he's an adult

deep mulch
#

can't afford to leave

hoary sluice
#

do u have a job

deep mulch
#

@frosty obsidian

frosty obsidian
#

you spend all your money as soon as you get it

deep mulch
#

nop

hoary sluice
#

you spend all your money on buying gifts for rosie

lucid trail
#

@valid jetty does your compiler exit upon the first error? If so how does the lsp give multiple diagnostics

hoary sluice
#

maybe stop that

frosty obsidian
#

zeet invested in tesla

valid jetty
#

i wanna do a phd on the correctness and efficiency of monomorphization of complex types in functions and data structures for a statically typed language

deep mulch
#

yop

frosty obsidian
#

thats why hes broke now

hoary sluice
valid jetty
#

as in it does exit and it doesnt report multiple

hoary sluice
#

im a compiler

valid jetty
#

good

cinder egret
deep mulch
valid jetty
#

@lucid trail it will report hover diagnostics and warnings if they happen before the error happens

#

lmfao

cinder egret
deep mulch
lucid trail
#

yea that makes sense

deep mulch
#

Rosie is only population there

#

Population: 1 (Rosie)

valid jetty
#

i have no idea when you mean me or not

deep mulch
#

I always mean you

valid jetty
#

generics get REALLY complicated REALLY fast

hoary sluice
#

ok rosie finish school first

valid jetty
#

i could easily write a whole paper on that

deep mulch
#

Rosie will start sleeping like a normal person

#

@valid jetty

valid jetty
#

i have a practical tomorrow

deep mulch
valid jetty
#

something about emf waves i forgot

hoary sluice
#

please stop saying ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

deep mulch
#

emf waves are easy.........

valid jetty
#

,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

#

i dont remember what it was because i havent done the practical report yet

#

(its due tomorrow too)

frosty obsidian
#

i send waves into zeets house

#

i don't know what they do

valid jetty
hoary sluice
#

woo bitcoin above 80k euro

#

im rich

valid jetty
#

i wanna just go full into programming

deep mulch
hoary sluice
#

@valid jetty i will buy an indian on fiverr to write icypeas for me with the money i just made

valid jetty
frosty obsidian
hoary sluice
valid jetty
#

will he write it in javascript html and css

hoary sluice
#

actually maybe u are cause im thinking abt doing a computational math masters

frosty obsidian
#

i think im generating waves not previously possible

hoary sluice
valid jetty
#

REAL

deep mulch
#

@valid jetty what if you were indian

hoary sluice
#

she is

#

gypsy

deep mulch
#

@valid jetty

valid jetty
#

horror

hoary sluice
lucid trail
hoary sluice
frosty obsidian
#

i think its split

lucid trail
hoary sluice
#

its both

#

both poor person and romani

deep mulch
#

rosinga

hoary sluice
cinder egret
#

@deep mulch

hoary sluice
#

both scammer and romani

deep mulch
#

@cinder egret

#

@valid jetty will be a tech support scammer

hoary sluice
#

she already is

#

elle is a virus

#

your computer has virus

valid jetty
deep mulch
#

guh@valid jetty

valid jetty
#

it says like "irish traveller/gypsy"

#

@deep mulch have you actually tried elle

hoary sluice
#

only java and kotlit

valid jetty
#

the installation process got easier,,,

lucid trail
#

add regex to elle std

hoary sluice
#

or nixpkgs

valid jetty
hoary sluice
#

make: command not found husk

valid jetty
#
  • stdlib is very lacking in features (missing ascii, encoding, crypto, file api, command api, socket api, maybe json parser?)
lucid trail
#

also install qbe from master and not the website unless they updated it

hoary sluice
#

crypto mentioned

#

ellecoin update

valid jetty
#

command and file apis are like huge necessities

#

i need to do that soon

dawn ledge
jade stone
#

that's just a skill issue

valid jetty
hoary sluice
dawn ledge
#

no

lucid trail
#

does nixos not come with make

jade stone
hoary sluice
#

however elle does depend on fhs

valid jetty
# dawn ledge no
[object.le:63:5] i32 obj["foo"].to<i32>() = 42
[object.le:63:5] string obj["bar"].to<string>() = "a"
[object.le:63:5] Array<i32>* obj["baz"].to<i32[]>() = <[1, 2, 3] at 0x600002f90150>
[object.le:63:5] i32 obj["a"]["b"].to<i32>() = 1
#

ellescript

dawn ledge
#

this gave me a breakdown

valid jetty
# dawn ledge this gave me a breakdown

look at the raw object ```rs
object.le:63:5] Object* obj = <Object {
entries = <{
foo => <Object {
entries = <invalid at 0x0>
type = i32
value = <unknown at 0x600002f90100>
} at 0x600002d95380>
bar => <Object {
entries = <invalid at 0x0>
type = string
value = <unknown at 0x600002f90130>
} at 0x600002d953e0>
baz => <Object {
entries = <invalid at 0x0>
type = Array<i32>*
value = <unknown at 0x600002f90250>
} at 0x600002d95480>
a => <Object {
entries = <{
b => <Object {
entries = <invalid at 0x0>
type = i32
value = <unknown at 0x600002f90350>
} at 0x600002d95940>
} at 0x600002f902b0>
type = Object*
value = <unknown at 0x600002f90290>
} at 0x600002d95760>
} at 0x600002f90060>
type = (nil)
value = <unknown at 0x0>
} at 0x600002d951c0>

#

or well

#

with cleanptr fmt

[object.le:63:5] Object* obj = Object {
    entries = {
        foo => Object {
            entries = invalid
            type = i32
            value = <unknown at 0x60000194c100>
        }
        bar => Object {
            entries = invalid
            type = string
            value = <unknown at 0x60000194c130>
        }
        baz => Object {
            entries = invalid
            type = Array<i32>*
            value = <unknown at 0x60000194c250>
        }
        a => Object {
            entries = {
                b => Object {
                    entries = invalid
                    type = i32
                    value = <unknown at 0x60000194c350>
                }
            }
            type = Object*
            value = <unknown at 0x60000194c290>
        }
    }
    type = (nil)
    value = <unknown at 0x0>
}
dawn ledge
#

😭

valid jetty
#

i could technically make a thing like

use std/json;

fn main() {
    obj := Json::parse("{ \"a\": [1, 2, 3] }");
    $dbg(obj["a"].to<i32[]>());
}
hoary sluice
#

rosie does vim have a key equivalent to be

valid jetty
#

no i dont think so

hoary sluice
#

crying

placid cape
#

I wonder if it's a really good idea to do QBE IR -> JS

#

I will have to manage memory in js using typedarray and other shit

valid jetty
#

i would do that

deep mulch
#

@valid jetty @valid jetty elle

hoary sluice
valid jetty
#

^^^ you could do this thing

placid cape
placid cape
valid jetty
hoary sluice
#

@deep mulch @deep mulch @deep mulch make zootlang

placid cape
valid jetty
#

if you want exactly-typed types you could also use these things https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Int32Array

MDN Web Docs

The Int32Array typed array represents an array of 32-bit signed integers in the platform byte order. If control over byte order is needed, use DataView instead. The contents are initialized to 0 unless initialization data is explicitly provided. Once established, you can reference elements in the array using the object's methods, or using standa...

#

and store the value at [0]

#

the type of the numbers in an Int32Array is exactly 32 bits unlike JS's number type which is dynamic

deep mulch
#

@valid jetty

placid cape
#

qbe ir is still relatively high level

valid jetty
# deep mulch <@581573474296791211>
$ mkdir -p ~/.local/bin # make dirs if not already there

$ git clone https://c9x.me/git/qbe.git
$ cd qbe
$ make
$ mv ./qbe ~/.local/bin/qbe # install qbe
$ cd ..

$ git clone git@github.com/acquitelol/elle
$ cd elle
$ make # install elle

$ export PATH="$HOME/.local/bin:$PATH" # add the bin dir to $PATH
``` foolproof guide
deep mulch
#

husk

valid jetty
#

you can then make sure its working by doing make test in the elle dir

deep mulch
#

building qbe from source

valid jetty
#

yeah !!!

#

so what

deep mulch
#

Rosie forgot I can just install using the aur

valid jetty
#

that probably wont be latest

deep mulch
#

it will be

#

aur builds from latest git

#

usually

valid jetty
#

you might get compilation issues, ive filed bug reports in the past when qbe failed to compile because qbe generated wrong asm

#

oh ok

hoary sluice
#

i thought zoot was a windows user

deep mulch
#

@valid jetty @valid jetty

deep mulch
#

I hate windows

hoary sluice
#

correct

valid jetty
#

i read that as "I use windows"

hoary sluice
valid jetty
#

@hoary sluice @hoary sluice

hoary sluice
#

nothing will happen and then zoot will go @valid jetty @valid jetty

hoary sluice
#

me

valid jetty
#

:3

deep mulch
#

@valid jetty @valid jetty

valid jetty
#

i’m about to take a beautiful picture if i can get to the spot before it gets dark

placid cape
valid jetty
#

ellec just calls qbe as a subprocess atm

#

maybe if i turn qbe into a static library

spark tiger
valid jetty
#

it’s closed 😭😭😭😭😭😭

#

it’s so over unfortunately

#

i think it’s gonna rain tomorrow too

deep mulch
#

@valid jetty You are being monitored.

valid jetty
deep mulch
#

Rosie...

spark tiger
valid jetty
#

WHY

#

WHY COULDNT IT BE LIKE THAT INSTEAD

spark tiger
#

nooo that sucks i promise

valid jetty
#

usually i love the rain but i want this picture so bad

valid jetty
#

i got there too late

deep mulch
#

I was there

valid jetty
#

evil

hoary sluice
deep mulch
#

what happened

hoary sluice
#

it

gloomy rapids
hoary sluice
deep mulch
valid jetty
hoary sluice
#

just trespass lol

deep mulch
#

do

hoary sluice
#

but first tell us what "It" is

deep mulch
#

Rosie is tiny like an ant no one would even see

#

@valid jetty what is it

meager solstice
#

Heyy guys, if anyone is interested, I am currently making a customisable tool for the pokeball plus!

fleet cedar
#

You know pokeballs aren't real, right?

hoary sluice
#

You probably think Santa isn't real either

fleet cedar
#

He is, yes

#

I'm working on rectifying that

ornate quiver
#

@valid jetty @valid jetty

supple whale
#

mfw 360ms to show first frame and 380ms to first contentful paint in my electron app

#

we love .jsc

#

doubled by bundle size from 2.5MB to 3.9MB

#

but its so worth it

placid cape
#

what are you doing?

supple whale
# placid cape what are you doing?

preloading my JS, compiling it to bytecode, then on load instead of loading and interpreting the entire JS file, i just load the pre-compiled bytecode

hoary sluice
#

hopefully yea

placid cape
#

nice gj

hoary sluice
#

prob gonna do some more minor improvements tomorrow

#

however tomorrow is also diploma thesis presentation practice day and i havent even started on the presentation yet

#

idk if i wanna do the practice or not

placid cape
#

i wish you a good luck tomorrow

hoary sluice
#

ty

#

if i get a 1 or a 2 on this ill have a 1.0 grade average

placid cape
#

nice

#

tomorrow ill start working on my core, apis, matching etc

#

since now i have it like homeassistant

#

you have "satellites" and the core itself

hoary sluice
#

what are u making it for again?

hoary sluice
#

but no voice

#

Just a home assistant

supple whale
#
const vm = require("vm");
const script = new vm.Script(dummyCode, {
  filename: filename,
  lineOffset: 0,
  displayErrors: true,
  cachedData: bytecodeBuffer
});
script.runInThisContext({
  filename: filename,
  lineOffset: 0,
  columnOffset: 0,
  displayErrors: true
});

trully a thing of beauty

placid cape
hoary sluice
#

like a company competition?

hoary sluice
#

well ik he did, idk if he also used any premade ui

#

he also submitted it for bosch innovation prize

placid cape
#

it's organized by electricity distibution company and it's just about making something technical

hoary sluice
#

i couldve submitted mind too but meh its just more work

hoary sluice
placid cape
hoary sluice
#

but bosch one is for diploma theses specifically i think

placid cape
#

i want to do voice + home assistant and mobile/desktop app for managing the assistant (satellite) and core itself

#

and i'll use kotlin multiplatform for the mobile app i guess

hoary sluice
#

i didnt want to do any of this i wanted to make a programming language but i needed a parner to get grade 1 on it and nobody wanted to make a compiler

#

my partner did effectively nothing

#

his job was hardware and the hardware isnt done

placid cape
#

im in team with 3 more people