#development

1 messages · Page 249 of 1

magic hazel
#

I used it for about 6 months so it's not my most skilled language

#

But I have used it a decent bit

slim bramble
#

[array map:^(id obj) { return obj.name } ];

#

Doesn't change much

magic hazel
slim bramble
#

This is probably not syntactically correct but you get the idea

magic hazel
#

i guess

#

shorter syntax would be really nice tho

slim bramble
#

Any more ideas ?

grim sparrow
#

Europeans trying to write code without syntax highlighting late at night is so much fun

magic hazel
#

objc methods are so long

slim bramble
#

clangd my goat

orchid fulcrum
magic hazel
#
[array enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { ... }];
grim sparrow
#

I’m on day 3 of dopamax I forgot my own name this morning

magic hazel
#

The amount of times you repeat yourself in Objective-C methods is crazy

#

Lemme find some really funny ones

slim bramble
magic hazel
#

how 💀

#
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 200, 50)];
label.text = @"Hello world";
label.textColor = [UIColor blackColor];
label.textAlignment = NSTextAlignmentCenter;
[self.view addSubview:label];
#

vs

#
let label = UILabel(frame: .init(x: 0, y: 0, width: 200, height: 50))
label.text = "Hello world"
label.textColor = .black
label.textAlignment = .center
view.addSubview(label)
#

no need to say uilabel twice, no need to say uicolor twice, or color 3 times, no need to say textalignment twice

slim bramble
#

It's the same

#

you're arguing over nothing

#

😭

magic hazel
#

"textcolor -> uicolor -> blackcolor" vs "textcolor -> black"

grim sparrow
#

The problem I have is I frequently use these APIs in both and will mix them up

#

And then have to spend time correcting it

slim bramble
#

I just don't write swift

#

saves me from this

orchid fulcrum
#

__auto_type to remove first UILabel, you can shorten it to BLACK with a macro in objc too

slim bramble
#

👍

magic hazel
#

and yes i know it's the same thing under the hood but how much more sense does it make to say "i want my textcolor to be black" than "i want my textcolor to be a uicolor that is a black color"

grim sparrow
#

Unfortunately if you want a job writing apps you usually need Swift

grim sparrow
#

Iirc the split on the App Store now is 92 / 8 for primarily Swift

#

And I enjoy being employed

magic hazel
#

oh this ones a particularly bad one

#
[button addTarget:self action:@selector(buttonTapped:) forControlEvents:UIControlEventTouchUpInside];
slim bramble
grim sparrow
slim bramble
grim sparrow
#

A lot of things have happened

orchid fulcrum
#

label.textColor = .black
how tf does compiler know this ? first looking at lhs to get the type and then looking at its type properties on the rhs ?

grim sparrow
#

SwiftUI is definitely a reason things got worse

slim bramble
#

yes

magic hazel
#

the compiler knows this

slim bramble
#

swiftui is garbage

grim sparrow
#

I despise SwiftUI despite loving Swift, SwiftUI was such a mistake

magic hazel
#

ngl im starting to bend the same way

#

i really like uikit

#

having code inline and having so much control over everything is actually quite nice

#

despite requiring like 5x much boilerplate

orchid fulcrum
slim bramble
#

SwiftUI is slow, makes your code look like trash and is just weird in general

magic hazel
#

look like trash?

#

what

grim sparrow
#

Flutter and RN have gained a lot of popularity, not helping the shitiffication of apps

slim bramble
native dune
#

Flutter is so bad

magic hazel
#

i mean you can always seperate out to smaller views but i guess

slim bramble
magic hazel
#

looking bad is not a criticism i'd take of swiftui but ig i can see it

grim sparrow
magic hazel
#

this is the big one for me

#

and not having inline code

#

being able to have my logic and ui in the same place

#

so nice

grim sparrow
slim bramble
#

And also the thing I despise with ShitUI is the compiler failed to type check this expression

#

or so

grim sparrow
#

But yes it’s garbage

slim bramble
magic hazel
#

i feel like swiftui has a lot of potential though

orchid fulcrum
magic hazel
#

thats also true

grim sparrow
#

There’s a build option for how long the compiler thinks is too long

slim bramble
magic hazel
#

i wouldn't say that but sure

grim sparrow
orchid fulcrum
grim sparrow
#

But expect to sit there for a long time to find out

slim bramble
grim sparrow
#

I tend to just comment stuff out

wooden yarrow
#

ive never seen a error like it on any other language

slim bramble
grim sparrow
magic hazel
#

lmao

magic hazel
grim sparrow
wooden yarrow
slim bramble
grim sparrow
#

It’s a your code is truly sucky problem

magic hazel
#

couldnt that happen in any language

#

yeah

grim sparrow
slim bramble
grim sparrow
#

how much though

slim bramble
#

thank god, that era is over

orchid fulcrum
grim sparrow
#

FWIW I only experienced this on a really old machine

wooden yarrow
slim bramble
#

I still made a lot of peardb

grim sparrow
#

on newer machines it can sorta figure out what’s going on

magic hazel
#

oh one thing i deeply still cannot get over and thank god i made a library for myself for this is how truly terrible buttons are in uikit like why on earth is it STILL using selectors

grim sparrow
#

idk how to explain it well rn im so tired

#

if you have a powerful machine you can generally avoid it

magic hazel
grim sparrow
#

Maybe it’s apples way of forcing you to buy a better machine

orchid fulcrum
slim bramble
magic hazel
#

your methods are FORCED to be objc

wooden yarrow
grim sparrow
magic hazel
#

UIAction is iOS 14+

grim sparrow
#

Yeah

#

iOS 14

#

that’s a long time ago

#

And well below the average target for 99.9% of apps

orchid fulcrum
grim sparrow
#

Dude you cannot be complaining about stuff being added in iOS 14

#

you’re targeting iOS 7 you’re fucking deluded

slim bramble
#

fr

magic hazel
harsh junco
#

ios 14 was goated in terms of new api

magic hazel
#

It doesn't fit swift patterns

#

It shouldn't have taken that long

grim sparrow
#

They were busy with other stuff

magic hazel
#

But yes that's true

#

I am targeting a diabolically old OS

#

Also it's iOS 6 not 7

#

Even worse

grim sparrow
#

UIKit had some other significant changes before we decided “hmm let’s change how we invoke button actions”

#

Such as, idk, dark mode?

#

that’s a huge engineering effort for the ui team

#

button actions were not high on the list

magic hazel
#

It was? I thought that UIKit was designed such that stuff like that could be fairly easily swapped out

grim sparrow
#

As an end user what would you prefer, UIAction or dark mode

#

and be fr

wooden yarrow
magic hazel
wooden yarrow
#

surely then it should be possible to give type hints to the compilers atleast?

grim sparrow
magic hazel
#

ngl tho iOS 13 was too late

#

so so late

#

iOS 13 completely changed iOS tho

#

Basically Modern iOS 1.0

slim bramble
#

Missed the thing, what changed with UIAction

grim sparrow
#

UIAction lets you use closures instead of selectors

slim bramble
#

oh

grim sparrow
#

that’s about it

magic hazel
#

yes

#

lucky its pretty easy to implement yourself

grim sparrow
#

so you see what I mean when I say it’s a really insignificant change

slim bramble
#

Ah yes, I love asking for Objective C

grim sparrow
#

UIMenu is pretty neat

magic hazel
#

UIMenu...

slim bramble
magic hazel
#

Is UIMenu useful

grim sparrow
grim sparrow
magic hazel
#

hmmm

#

How useful

grim sparrow
#

Like

#

Uhh

magic hazel
#

grr i see selectors

slim bramble
grim sparrow
#

Say you press a UIBarButton and it brings up a pop up that shows 3 buttons

grim sparrow
#

And you press one and then 3 more options pop up

magic hazel
#

mm

grim sparrow
#

That’s a UIMenu

magic hazel
#

doesn't apple warn you against that

grim sparrow
#

no?

torn oriole
#

Nerds

magic hazel
#

i swear ive seen stuff saying you really shouldn't nest menus like that

#

idk

slim bramble
grim sparrow
#

As long as you use UIMenu they don’t care

slim bramble
#

👍

magic hazel
#

perchance could backport if i see use

#

ill add it to the list

grim sparrow
#

Pick a side 🔫

torn oriole
grim sparrow
#

I prefer to use UIAction these days but at the same time it’s such a minor change

slim bramble
grim sparrow
#

And on minor devices we’re truly talking nano seconds of differences

magic hazel
#

oof relies on an iOS 7+ type

magic hazel
#

i've already backported a lot of modern uikit which makes me mad apple didnt do it its a whole speal

#

that i wont go into

slim bramble
#

Just run class_getMethod then method_getImplementation

#

dusted and done

grim sparrow
#

Objc vs Swift speed difference was huge back in iOS 6/7 when it was first introduced but nowadays it’s kinda negligible

magic hazel
#

ngl it's negligible on iOS 6 w swift 5.10

slim bramble
#

How did you run your tests ?

magic hazel
#

with pain

#

debugging iOS 6 is not fun

#

basically have to log to a file and do all debugging on device

slim bramble
#

debugging swift is not fun

magic hazel
#

debugging swift is fun

#

debugging iOS 6 in modern xcode is not

slim bramble
#

you're mentally special

harsh junco
#

debugging swift is not fun +1

grim sparrow
magic hazel
magic hazel
grim sparrow
#

it’s almost like modern Xcode is designed to target iOS 13+

magic hazel
#

however debugging iOS 7 in modern xcode is great

slim bramble
#

fr

magic hazel
#

since apple didn't place any artificial limits on it

slim bramble
#

I think you're probably better jailbreaking, running debugserver and connecting through llvm16

grim sparrow
#

just because you can doesn’t mean you should

magic hazel
#

why do that when i can press play and see it work natively?

#

lol

slim bramble
#

You're prolly using llvm5 or so

magic hazel
#

i'm using whatever xcode 13 gives me

slim bramble
#

Swift support is kinda good

grim sparrow
#

@slim bramble debuting Swift only sucks in release mode because symbols get compiled out. If youre debugging just use debug mode like you would in any other language that uses heavy optimisation and static dispatch

#

objc is just special

slim bramble
magic hazel
#

ngl the funny bit is the only part of swift that's hard to debug is the objc calls

grim sparrow
#

????

magic hazel
#

"unrecognised selector" will be the bane of my existence

grim sparrow
#

they’re the easiest

slim bramble
#

????

#

What is bro rambling about

grim sparrow
#

debugging optimised code sucks because it becomes super hard to match the assembly to your code

slim bramble
#

objc is like super easy to debug

#

😭

grim sparrow
#

because well, you don’t think like a computer. A computer can see hundreds of ways to optimise your code

magic hazel
#

try hunting down a single ".systemBlue" call that won't work on iOS 6 because it's iOS 7+ when all you have to work with is that single line

#

from a debug log

grim sparrow
#

You know how Apple don’t officially support this

#

And then you do it

#

And then complain it sucks

magic hazel
#

i mean you'd get the same error if you used an ios 14 method on ios 13

grim sparrow
#

Does that not make you think that they don’t support it for a reason

magic hazel
#

./hj

slim bramble
#

be jwi
see unrecognized selector sent to instance
say debugging objc is hard

magic hazel
#

ngl tho overall its been pretty smooth

#

really after i did the backporting of foundation and uikit the rest kinda just came pretty freely

#

constraints are a godsend

#

i shudder for those developing uikit apps for ios 5-

grim sparrow
#

So, nobody

#

Like

#

Not a soul

magic hazel
#

untrue

#

hell theres someone making a dc client for iOS 3 currently

#

lmao

#

think i'm targeting a dead platform

grim sparrow
#

Yall are both targeting a dead platform

slim bramble
magic hazel
#

ehhh

#

iOS 6 isn't that dead

grim sparrow
#

It’s something you’ll get a 1000 updoots with and maybe 3 downloads

slim bramble
magic hazel
#

bluetweety has 3000 active users on ios 6

slim bramble
#

keyword is daily

magic hazel
#

yes

#

daily

#

lol

slim bramble
#

🤨

magic hazel
#

3000 daily active users

#

y'all underestimate iOS 6 usage

#

ppl are heavily nostalgic for it

slim bramble
#

I mean

grim sparrow
#

This man will not believe how many I get on modern os

magic hazel
#

here's the thing tho

#

what percent of modern iOS users can you capture

slim bramble
magic hazel
#

yes yes it's small but it's big enough that it's worth doing for me

#

plus it's barely any extra effort

#

my app basically reads like a modern uikit app

slim bramble
#

but then who's going to use swift

#

😭

magic hazel
#

pardon?

grim sparrow
slim bramble
#

🙄

grim sparrow
#

I was genuinely shocked when I learnt

magic hazel
#

indirectly i guess anyone who uses my client directly ive had about 20 or so ppl dm me about it so far

slim bramble
#

Use it or just dm you ?

magic hazel
#

use it

#

dm me to help them setup

#

which imo is not bad

#

ngl tho ive made setup so easy atp idek why they dm for setup

#

gotta remember where the baseline for legacy development is, prior to this you were stuck with Xcode 4, legacy macOS and the iOS 6/7 SDK

grim sparrow
#

Do you ever feel like you’re cheating on that nostalgia factor by using modern dev tools

#

Why not do it how Steve intended

magic hazel
#

not in the slightest

torn oriole
grim sparrow
#

Exactly

slim bramble
magic hazel
#

it feels great to be using a language i backported myself on a dead platform running a codebase that could almost be modern

grim sparrow
#

I need a macOS weed tweak

magic hazel
grim sparrow
torn oriole
#

And troll the hell out of people by announcing macOS weed finally

magic hazel
#

very fun

torn oriole
#

And then double back and announce the real version

magic hazel
#

its the most fun ive ever had developing

#

so much control over everything without it being a pain to work with

#

(minus objc unrecognised selector)

gentle grove
#

rootfs is the type of guy to not believe in the law of universal gravitation

magic hazel
#

LMAO

#

GMm/r^2 fr

slim bramble
torn oriole
slim bramble
#

got an exam in 2weeks

magic hazel
#

y'all in highschool?

slim bramble
#

no

magic hazel
#

wut

slim bramble
#

college/uni exists

#

idk

magic hazel
#

i did that in year 12

slim bramble
#

doesn't mean you don't do it later to ?

gentle grove
#

fr

magic hazel
#

no

#

in uni we moved onto harder topics

#

it's assumed knowledge

#

lol

gentle grove
#

in HS we could only do regular physics but I had to take real "physics for scientists" last year

#

which is more rigorous

slim bramble
gentle grove
#

so it came back up again

slim bramble
#

How old are you even ?

magic hazel
#

17

#

i accelerated 3 years of school

slim bramble
#

skipped 3 years ?

gentle grove
#

schooling isn't exactly linear so you'll have the same topics come up and get re-studied in future courses

magic hazel
#

No

slim bramble
#

fr

#

Fym no

#

😭

magic hazel
#

Did 4 years in 1

slim bramble
#

oh

gentle grove
#

4 years in 1 just wait to be studying physics in 12th grade

magic hazel
#

year 7-10 was just timewaste

#

i had already done the year 11 coursework

slim bramble
#

So what do you study now ? compiler optimization troll ?

magic hazel
#

top research degree and advanced computing with some full ride scholarship at ANU

#

rn we're doing funni C shenanigans

#

kinda annoying but oh well

wheat grotto
#

gm chat

slim bramble
#

gn

magic hazel
wheat grotto
slim bramble
wheat grotto
#

oh this is development

#

can someone develop an emmc reader inside my p.o. box

light owl
#

@native dune Is it working

native dune
#

Are you working

light owl
native dune
#

same

kind herald
light owl
kind herald
#

Sorry

granite frigate
#

how do i insert a rpath load command into my binary? is there a CLI tool for this that i can refer to

harsh junco
slim bramble
#

^

orchid fulcrum
#

member role in hack different before developer role here is crazy ngl 😐

rocky oriole
#

you have to apply for developer role

#

it isnt just given

orchid fulcrum
#

i got rejected 😭

rocky oriole
#

skill issue

#

(im not even a developer in the first place)

timid furnace
#

any rando can get Member role

orchid fulcrum
timid furnace
#

it's not

#

it's just "do you talk"

orchid fulcrum
#

fair mb

wooden yarrow
timid furnace
#

not really

#

photography, etc

wooden yarrow
#

wtf

#

did they restrict more ⁉️

magic hazel
#

Photography?

#

What’s that

timid furnace
#

photography was always restricted

#

anyways this is off topic

magic hazel
#

Is that hidden even from developer?

rocky oriole
timid furnace
magic hazel
#

lmao

#

No access crazy

magic hazel
rocky oriole
magic hazel
#

Ah alr

frank fossil
orchid fulcrum
floral notch
#

you actually have to grab the original function pointer to the original implementation and call it via FFI, or handwritten assembly if you're into that

#

of course if you're just doing this within your own app, then its fine, you just need to be careful about how you hook things

vivid dew
#

give me the developer role

magic hazel
#

is there an api to trigger vibration in uikit like there is for haptics?

grim sparrow
magic hazel
#

Not haptics

#

For devices without haptics

#

So 3GS-6 and preferably an older api, there must be one

grim sparrow
grim sparrow
#

It exists in every version of iOS

magic hazel
#

So yeah 2+ cool

#

Fire

#

I’ll implement bow

grim sparrow
#

It’s a compile time constant so it exists wherever the fuck you want

#

Pls for the love of good use impact generators on phones that support them though

magic hazel
#

They’re iOS 10+ tho

#

Which is weird Bcus the 6S was iOS 9 right

magic hazel
grim sparrow
magic hazel
#

Oh and iPads ofc

grim sparrow
#

pretty much

#

you can hard code if you want

#

the impact generators are pretty catch all for doing it for you nowadays with the newer sdks

magic hazel
#

I already hardcode chipset stuff

#

So I can call an enum for performance management

grim sparrow
#

CoreHaptics is actually a really fun API

#

It’s what the music vibrations accessibility feature uses

magic hazel
#

ofc its ios 13+

#

everything is ios 13+

grim sparrow
#

It requires gen2 Taptic Engine

magic hazel
#

or x and up

grim sparrow
#

I think X

magic hazel
#

right

grim sparrow
#

The 8 was a sad phone that generation

magic hazel
#

so sad

#

8 is a solid phone

#

massively overshadowed tho

#

ngl i love the X

grim sparrow
#

I love my 8

magic hazel
#

taptic engine 2 is actually 7

dusk cove
#

🧌

magic hazel
dusk cove
#

didnt read that part

grim sparrow
#

Oh I may be vastly mistaken because the full api isn’t available until the iPhone 12 which shipped with iOS 14

#

It was available with older hardware but the iPhone 12 fully unlocked it

magic hazel
#

i see

#

well my main modern device is now a 12 pro

#

so probably will end up optimising for that asw

grim sparrow
#

Fuck knows what generation it was at that point

magic hazel
#

god i hate safe area layout

grim sparrow
#

Why??

magic hazel
#

because of the dynamic island

#

until i can figure out how to build with the iOS 16 sdk i can't account for it

grim sparrow
#

Ok you’re gonna need to have a really good fucking reason for this because I think apples logic of don’t put things you need to read behind the dynamic island is pretty based

magic hazel
#

oh it is

#

it's great logic

#

it's just super annoying to deal with when targeting non notched phones

#

i basically have to write my constraints twice

grim sparrow
#

Not really cause the safe area just becomes the top of the screen

magic hazel
grim sparrow
#

Weird how the first device that shipped with a hole in the screen was iOS 11

magic hazel
#

more of a mild annoyance for x-13

#

for iphone 14 pro + though idek how ima deal w it

grim sparrow
#

Why can’t you just define a constant that breaks down to safeAreaLayoutGuide if available

#

Like every other dev did when they had this problem

magic hazel
#

?

#

im confused

#

anchors aren't constant they change don't they

#

screen rotation and sizes

#

do you mean like a computed UILayoutGuide?

grim sparrow
#

extension UIView { var _safeAreaLayoutGuide: UILayoutGuide {
if #available (iOS 11.0, *) {
self.safeAreaLayoutGuide } else { self.layoutGuide } } }

#

I LOVE coding on my phone in my bed

magic hazel
#

and since ios 9 doesn't really need them

grim sparrow
#

Because a variable called safeAreaLayoutGuide already exists

magic hazel
grim sparrow
#

And you can use _safeAreaLayoutGuide on all versions

magic hazel
#

time to go

grim sparrow
#

and it will compute at runtime which version to use

magic hazel
#

wait is it the same syntax or do you have to prefix with _

grim sparrow
#

the _ is completely decorative

magic hazel
#

can you do it on functions

grim sparrow
#

You could call it myFuckingLayoutGuide if you want

magic hazel
#

no i want syntax to be identical im gonna go implement in all my backports its going to solve so many issues

#

can you do functions

grim sparrow
#

Oh this didn’t override the existing but you can do that actually

#

there’s an undocumented way of doing that

magic hazel
#

send

#

pls

#

i need it

#

badly

grim sparrow
#

The problem is I don’t know how you could get the original back

magic hazel
#

do i have to modify the sdk??

grim sparrow
#

No

magic hazel
#

oh well ig just comment it out

#

how do you do it

grim sparrow
#

2 secs

magic hazel
#

does this also extend to structs and classes

grim sparrow
#

making me get my laptop out ruining my hjopes of going back to sleep tonight 😭

#

BUT

#

Swift has an attribute called @_disfavoredOverload

#

which means "use the version that exists in the sdk BUT if im targeting an older version use me"

#

so I use it to backport the newer String localized api

dusk cove
#

quick question is there a way to make web clips open a real installed app

grim sparrow
#
internal extension String {
    
    @_disfavoredOverload
    init(localized: StaticString) {
        let string = String(cString: localized.utf8Start)
        if let localeBundle {
            self = NSLocalizedString(string, tableName: nil, bundle: localeBundle, comment: "")
        } else {
            self = string
        }
    }
    
    @_disfavoredOverload
    init(localized: String) {
        if let localeBundle {
            self = NSLocalizedString(localized, tableName: nil, bundle: localeBundle, comment: "")
        } else {
            self = localized
        }
    }
    
}
#

I reckon you could do something similar for constraints

magic hazel
#

disfavouredoverload meaning

magic hazel
#

didnt see

grim sparrow
#

basically if you can use the system version use it, if you can't use the system version use the version I write here

magic hazel
#

this is fucking huge

#

this actually might make me pushing the app to the app store viable now

grim sparrow
#

no it doesn't

#

you're using a custom toolchain

#

that immediately makes it so you can't

magic hazel
#

obv w xcode toolchain..

grim sparrow
#

💀

#

PLUS

magic hazel
#

and itd be for modern ios

grim sparrow
#

I'dput money down that you'd get denied because the app does not follow a single one of the human interface guidelines

#

like

#

not one

magic hazel
#

true

#

stil makes my life easier when moving between versions

magic hazel
#

they lead to homogenous app design which i dislike but then again, swiftui

grim sparrow
#

no they're really not

#

a lot of them make sense

#

and haven't really changed since iOS 13 UIKit whcih was peak

#

the big idea of the human interface guidelines is that all apps should try and look like they belong on the system

#

and they should use system components as much as possible

#

so that anyone who picks up the device immediately knows how to use all the apps on it, and all the apps on it evolve with the operating system

magic hazel
#

makes sense but ruins fun custom ui

grim sparrow
#

some of the best apps followed the human interface guidelines perfectly

#

Flighty, Apolo, Tweetdeck

magic hazel
#

i'd imagine so

grim sparrow
#

And yet they're apps that everyone loved

#

Flighty is still going

#

Not tweetdeck

magic hazel
#

i wouldn't imagine apple's guidelines make inherently bad looking ui

#

lmao

grim sparrow
#

Tweetbot

#

man its gonna be a rough day

#

but the point is that people generally enjoy using those apps a lot more

magic hazel
#

there's always the official client ¯_(ツ)_/¯

#

i'll probably end up making the ui a bit more tweaked and polished

grim sparrow
#

yeah and nobody fucking used those when Apollo and Tweetbot lived

#

be the change you want to see in the world

magic hazel
#

but one thing i always wanted was the ability to make the ui look like how you wanted

grim sparrow
#

Third party clients were killed because:
A: No ad money from the API
B: They weren't happy people weren't using the official client

#

and look at how it destroyed reddit

magic hazel
#

indeed

#

wait now that i think about it i dont think it would be accepted anyways since its against tos

grim sparrow
#

oh it is 100% against the discord rules

magic hazel
#

ye

grim sparrow
#

and people get banned all the time for it

#

its why i stopped mine

magic hazel
#

apparently the official client uses ETF payloads

grim sparrow
#

Have you added friend requests yet?

magic hazel
#

not yet but i will

#

why

grim sparrow
#

dont

#

do not add friend requests

magic hazel
#

why

grim sparrow
#

freind requests is the most protected API

magic hazel
#

more protected than 2fa sign in?

grim sparrow
#

yup

magic hazel
#

damn

grim sparrow
#

its because spam bots use it

magic hazel
#

ah

torn oriole
magic hazel
#

good point

grim sparrow
#

discord dont care about people using third party clients for UI tweaks or whatever

#

they care about people mass spamming friend requests and shit

magic hazel
#

still unsure why

#

ill fix eventually

grim sparrow
magic hazel
#

probably bcus of all my testing

grim sparrow
#

they added captchas to friend requests a few years ago

torn oriole
grim sparrow
#

and hoenstly I haven't had any issues since then

torn oriole
grim sparrow
#

ha

#

I've had to solve a captcha every time I add a friend for years now

#

and I haven't used any third party clients since 2020

magic hazel
#

isn't it just a REST endpoint?

grim sparrow
#

yup

magic hazel
#

lmao

torn oriole
grim sparrow
#

yeah

torn oriole
#

No notifications, shit just breaking because it can

#

Someone deciding to make a malicious plugin

grim sparrow
#

I don't think its their fault

#

Yeah

torn oriole
#

It's not worth the risk anymore

magic hazel
#

no notifications is a problem im not sure how to solve

grim sparrow
#

its discord having to crack down on the malicious side of it

torn oriole
grim sparrow
#

well and that

torn oriole
#

But still

#

It's a consequence of custom clients half the time

magic hazel
#

ngl i wouldn't have made a client if it didn't target a version where the official client doesn't exist

grim sparrow
#

uses a modern iphone

#

the official discord app isn't that bad anymore

magic hazel
grim sparrow
#

it used to be awful

grim sparrow
magic hazel
#

ic

#

i mean i could just like heavily rate limit it

grim sparrow
#

especially now that we live in a society where sam altman sells you a machine that can break a lot of captchas :/

magic hazel
#

wow okay so the api is dead simple they shouldve just made it more complicated

grim sparrow
magic hazel
#

i was expecting way way way worse

grim sparrow
#

theyve put more effort into making sure htey can detect fake clients than making the api hard to use

#

because people will always figure out how to use the api

magic hazel
#

most fake clients announce their presence

#

istg every client i see always includes it's name in the identify payload

grim sparrow
#

oh I can guarantee Discord see your client as a third party client

#

and if you started doing stuff other than sending messages you'd be getting nuked

magic hazel
#

i have sign in with 2fa which is stable

#

idk about no 2fa

grim sparrow
#

thats not that big thoguh

magic hazel
grim sparrow
#

No

magic hazel
#

i mean on ios 6 its pretty nice

grim sparrow
#

Clients had that 7 years ago

#

2fa sign in is not a new thing

#

and almost every service does it the exact same way

magic hazel
#

captchas could perchance be very hard to get working on ios 6 tho

#

this is an endpoint???

granite frigate
#

old apple id 2fas just made u put the code after reentering ur password

magic hazel
magic hazel
grim sparrow
#

Its probably not exhaustive and its not a guaranteed every time thing

magic hazel
#

aight well ill pay close attention to how the official client does it

grim sparrow
#

but its enough that I wouldn't do anything but send messages in public servers

#

because I value my account

grim sparrow
#

thats the issue

#

they could do one change overnight and screw you over instantly

magic hazel
#

true enough

grim sparrow
#

unfortunately you're fighting the same battle that the scam bots are fighting

magic hazel
#

well not exactly

grim sparrow
#

and the scam bots have been winning for too long

magic hazel
#

i have no desire to spam the api

grim sparrow
#

discord see third party api usage as third party api usage

#

you can't just put in your identify payload "im not a spammer trust me bro"

magic hazel
#

then why don't they immediately ban every self bot

grim sparrow
#

they just see someone who is about to send fake steam gift cards in every channel they can see

magic hazel
#

hm?

grim sparrow
#

people who use vencord and stuff

#

vencord users have been banwaved in the past

magic hazel
#

even that is against tos which they could ban right

#

like if its this bad just fully crack down

grim sparrow
#

but they at least get the benefit of using the discord client

#

its harder to detect vencord because you aren't inherintly tweaking the api requests the app makes

magic hazel
#

no but there would be stuff that should be fairly easy to pick up on

#

like certain plugins

grim sparrow
#

but ban waves have defintiely happened, usually in relation to a bad plugin

#

it does happen

magic hazel
#

ye

grim sparrow
#

and those plugins quickly get nuked

#

funnily enough if a plugin is known to cause bans its usually removed from the marketplace

magic hazel
#

i mean im absolutely certain dc knows cus so many times during testing shit broke and went haywire

#

and ive had like 2 or 3 pswd resets

#

maybe i should move to etf..

#

problem is i have to fetch initial data via rest rather than the ready payload so its a lost battle

grim sparrow
#

yeah i really wouldnt add much else unless you dont care about your account 😭

magic hazel
#

I do care about it but I’m gonna try adding as much as I can without too much risk there’s still a lot of data I get from the rest fetcys that I don’t use

#

Which I can implement without issue since I’m not having to make anymore requests

#

I’m hoping most of the cool customisation stuff is open ended

#

now that i know that certain stuff gets flagged ill try and avoid like admin actions

#

damn that actually kinda sucks, now i hate scam bots even more

grim sparrow
#

The vencord api devs are in a constant battle to make it undetectable

#

Vencord itself is usually undetectable but once you start doing things like the experiments or plugins that make api requests it becomes obvious

tepid nacelle
#

i don’t know a plugin that needs api requests

#

okay maybe there are some but legitimate users are able to replicate this

#

so

grim sparrow
tepid nacelle
#

wdym spectrum

#

😭

grim sparrow
#

You’ve got things like mass message deleters which obviously make mass requests, theming plugins which are just css, message loggers which are just “don’t delete data I already have”

tepid nacelle
#

and css would just be completely client side

grim sparrow
#

Yeah

magic hazel
tepid nacelle
magic hazel
#

and that was in the web with a js script

#

😭

grim sparrow
#

No I mean like themes don’t make requests

#

That’s my point

tepid nacelle
#

oh

grim sparrow
#

And then message loggers don’t make requests but modify the clients behaviour in response to existing requests

grim sparrow
#

Currently when I delete a message your client receives a message to say I’ve deleted it and hides the message, message loggers just ignore that request or mark the message as deleted in red or smth

#

that’s hard to detect because it’s again client side theming mostly

#

But mass deleting dms can be detected because that’s making (usually) thousands of delete requests

tepid nacelle
#

yea

grim sparrow
#

That’s what I mean by a spectrum of how much it modifies requests from not at all to is actively making auditable requests

tepid nacelle
#

im wondering how vencord didnt get dmca’d have

grim sparrow
grim sparrow
tepid nacelle
grim sparrow
tepid nacelle
#

cuz i cant juice nitro out of more users

tepid nacelle
magic hazel
#

Maybe it’s big enough that they like scan it every now and again and just let it be cus too much effort or cus goodness of heart

#

Honestly idk

tepid nacelle
magic hazel
#

That was a joke lmao

grim sparrow
#

The biggest issue is they’re not really violating discords copyright

#

So a dmca isn’t really valid

#

especially when they’re modifying the existing client

tepid nacelle
#

so

grim sparrow
#

Is that a copyright issue though

magic hazel
#

That’s not DMCA worthy that’s just a breach of TOS iirc

grim sparrow
#

^

tepid nacelle
grim sparrow
#

And get sued for wrongful filing

tepid nacelle
#

maybe

magic hazel
#

Tbh discord is busy enough fighting bots

tepid nacelle
#

yea

magic hazel
#

I don’t think it’s that high on their priority list

tepid nacelle
#

bots arent really

magic hazel
grim sparrow
magic hazel
tepid nacelle
#

i have a german exam and i cant write and think rationally

#

its so over

tepid nacelle
magic hazel
#

Bots massively impact perception of the platform

tepid nacelle
#

plugins like fakenitro lead users to believe “nah i dont need nitro”

grim sparrow
#

^

magic hazel
#

Drives away new users like the plague

tepid nacelle
#

and discord cant spread mass propaganda for nitro

tepid nacelle
grim sparrow
#

A much much smaller percentage of users are using that though

magic hazel
#

My family refuses to even consider it because of the bot allegations

tepid nacelle
grim sparrow
#

And to make fakenitro not viable would mean making the platform ass

#

Such as breaking inline image embeds

magic hazel
#

Ye

grim sparrow
#

Fake nitro is literally just an image picker

tepid nacelle
magic hazel
#

Fr

grim sparrow
#

It’s not that deep

tepid nacelle
#

idk why that is client sided

grim sparrow
#

that is true

#

That is a funny one

tepid nacelle
grim sparrow
#

I bet that’s an account flag they’re monitoring

#

There’s still 10 flags that we don’t know the use of

tepid nacelle
#

lmao

grim sparrow
#

1 of them is “used fake nitro to stream in 1440p” trol

tepid nacelle
#

i mean

#

you can test it

#

probably?

tepid nacelle
#

my bus is late by 1 minute

grim sparrow
#

If it was that big a deal they would just add a server and check

tepid nacelle
#

how dare they.

tepid nacelle
grim sparrow
#

The fact they still haven’t probably means the user count is not even high enough for them to notice

tepid nacelle
#

what if i report it rn and they say they’re aware of this issue already

grim sparrow
orchid fulcrum
# floral notch Cool project but if the goal is for this to be standardized and used by many twe...

i had replied to this when i woke up but realised it was bs so heres another reply.

What you say is true about class hooks, but this just hooks a single instance.

curently when you do

HOOK_INSTANCE(obj, selName, SIGNATURE(void), {
NSLog(@"hook 1");
orig(); // calls the (most) original impl
});

HOOK_INSTANCE(obj, selName, SIGNATURE(void), { //calling it again with the same object
NSLog(@"hook 2");
orig(); // calls the hooked impl from the first macro
});

[obj selName];

this prints

hook 2
hook 1

and then performs the (most) original implementation.

#

if you mean how it interacts with normal class %hook's, i am not so sure about it, never tried myself but i think it comes down to whether the class hook is initiated before the instance hook.

cls* obj = [[cls alloc] init];
cls* obj2 = [[cls alloc] init];

HOOK_INSTANCE(obj, selName, SIGNATURE(void), {
NSLog(@"hook 1");
orig(); // calls the (most) original impl
});

MSHookMessageEx([obj class], sel, ...); 

HOOK_INSTANCE(obj2, selName, SIGNATURE(void), {
NSLog(@"hook 2");
orig(); // calls the impl from the MSHookMessageEx's hooked version 
});

[obj selName]; // prints hook 1, then calls the (most) original impl

[obj2 selName]; // prints hook 2, then calls MSHookMessageEx's hooked version 

//edit:
//not sure what happens when we HOOK_INSTANCE(obj, ...) in this line one more time, it probably continues using the (most) original impl rather than MSHookMessage's version, but its a stretch and even then i don't think its a big issue
#

im not seeing anything wrong, its consistent whether or not there are multiple tweaks

magic hazel
#

<@&355174844205367317>

#

This scam is so pervasive i swear to god

floral notch
#

it has to do with hooking the same method on a subclass and a superclass

#

let me think about this for a minute

floral notch
#

oh ok, since this is creating subclasses on-the-fly, i think i can make this example simpler

#

wait.... hold on

#

this is broken in ElleKit too

#

i must be tripping

#

ok, apparently im not tripping, they're not using an FFI (or handwritten assembly), just the objc runtime functions:

#

i wonder how this affects end users

#

this must be affecting some people in strange ways

#

but maybe in practice this just doesn't happen much anymore, now that the scene is less active

#

anyway. there goes my morning

orchid fulcrum
floral notch
#

i am well aware of that

orchid fulcrum
#

yeah, ideally there would be a mechanism to regulate these orders, i.e running hook_instances after hookMessage's etc. But idk whose responsibility that would be

floral notch
#

in the old days, that was saurik's responsibility

#

seriously. he wrote substrate to handle it so you didnt need to think about the ordering

orchid fulcrum
#

Hm, now that i think about it most class hooks are initialised in a constructor. And instances are created only after that, so it kinda meets your expectation in reality

magic hazel
#

it works perfectly btw

#

Doesn't work on classes sadly though

magic hazel
#

Is there any way to override a class?

grim sparrow
magic hazel
#

it solved a bunch of problems

#

still sadly can't get swift to shutup about my uilayoutguide override

grim sparrow
#

Leaking the root password is an incredible security issue

wooden yarrow
#

"two moderate vulnerabilities" is crazy

hexed knot
#

What a shocker

native dune
#

if it ain't broke don't fix it

light owl
wheat grotto
#

ok ? fix it

#

mr writes perfect code

light owl
wheat grotto
pearl sail
lime pivot
#

feels like they've done this in too much of a rush for the 26.04 LTS. uutils is incredibly good (I'm using it on macOS) but some of the bugs are kindaaaa like how did you not catch this

tepid nacelle
lime pivot
#

half of Linux userland still being shell scripts duct taped together means it's way more critical if a coreutil is producing unexpected behavior

lime pivot
lime pivot
#

have a bot pushing code round the clock to a repo that isn't used by anything, wow impressive, can't believe 30% of our code is written by AI!!!

tepid nacelle
quaint rain
lime pivot
#

human written slop which is even more sad

tepid nacelle
quaint rain
#

stable is usually always better then bleeding edge

lime pivot
#

yeah I mean if you wanna find the guy who said rust fixes every bug ever, feel free to argue with them

#

nobody who has a clue was saying that

tepid nacelle
lime pivot
#

I'll use ubuntu devel on my desktop but that's because I enjoy pain and can get myself out of bugs usually

lime pivot
#

most other people, LTSes are what you want

#

and what plenty of forks like Mint use

quaint rain
#

iOS 26 has a similar issue with not being fully polished by full release

lime pivot
#

atp Apple x.0 releases exist because the hardware has to ship with something, not because it's ready

quaint rain
#

The initial batch got trollstore

lime pivot
magic hazel
grim sparrow
#

I think that’s a hardware problem too

magic hazel
#

Really???

#

Wow that's cheap

grim sparrow
#

Wait

#

I beam vibrationintensuty on older devices

#

Way back when it was just on or off

#

Now you get a lot of choices

#

That’s what you mean right

#

That’s kinda the whole point of the haptic engine

#

Oh I read it wrong, yes it’s fixed

magic hazel
#

So yes

#

very cheap

#

apple cheaped out

#

variable intensity motors are not expensive

#

well i guess that means no haptics on anything less than the iphone 7

grim sparrow
#

Vibration intensity isn’t that big a deal trol

magic hazel
#

it's annoying for me

#

android had it since inception

grim sparrow
#

Bad answer

magic hazel
#

on like 99% of phones

grim sparrow
#

Android is an open source operation system

magic hazel
grim sparrow
#

They had to add stuff that Apple didn’t have to try and win

magic hazel
#

or more aptly, 99% of android based phones had it since inception

grim sparrow
#

Because at the time Android itself wasn’t as good

#

Android still struggles with 3rd party app developers

magic hazel
#

oh dont get me wrong android is ass

#

lmao

grim sparrow
#

So the phones have to rely on better hardware :/

magic hazel
#

android the software is cooked as fuck

#

ngl tho hardware nowadays, kinda cooking

#

but besides that

#

its cheap

#

its like 2 bucks

grim sparrow
#

You could vary it through private API I think

#

But I don’t know if it would be that good

magic hazel
grim sparrow
#

I don't know

#

but if you can vibrate for incredibly short periods of time

#

you could effecitvely pwm the motor

#

its just a vague idea

magic hazel
#

I see

indigo kraken
#

yo, has there been any progress on this?

crisp frost
#

I have integrated your way of using that api so it requires no user interaction

#

SSVInstallManagedApplicationRequest

grim sparrow
#

why is downloading from gdrive still so slow in 2025

#

sat here for ages

wooden yarrow
grim sparrow
#

i just wanted to odwmload an album 😭

#

you should be able to use the website of a cloud based storage provider

#

it took 17 minutes

#

the zip file was 914MB in the end

wooden yarrow
#

i think the problem is not the download speed itself but just because you can't make a user download an entire folder you gotta package it in a zip

grim sparrow
#

but it shouldnt take 17 minutes to zip a gigabyte

#

and that

wooden yarrow
#

they probably relegate it to the slowest possible machine they have

indigo kraken
lime pivot
#

if browsers were less bad about downloading files you could just pull them straight down without it being a mess

#

you kinda can but it'll whinge about the site trying to download bomb you

hasty ruin
#

Hmm, if only google had control over every browser

thick saddle
gentle grove
vivid dew
#

back in the day i had this one gif on my site that wouldn't render properly in firefox

#

so naturally i slapped a "works best in ie6" banner on there

native dune
#

nothing renders properly in Firefox

light owl
native dune
#

Lol

gentle grove
crisp frost
#

Doesn't even need a usb connection to the iphone that will decrypt the apps anymore, it can do it over wifi as well

#

It just cannot enter deep sleep

elder scaffold
#

pircay :/

grim sparrow
#

pircay :/

magic hazel
#

Does anyone have any idea what could cause this crash?

grim sparrow
#

I'd look at those symbols

#

cause it looks like something in BackDeployment.cpp called Terminate after seeing what version of ios you were running, or what version of swift you were running

#

that doesnt look to be a crash, more something called quit

magic hazel
#

I don’t know what back deployment.cpp even is

#

I don’t actually own that device

#

It’s someone using my app

grim sparrow
#

To me it reads as something in the swift stdlib called terminate after reading some kind of version

magic hazel
#

I see

grim sparrow
#

operatingSystemVersion to be exact

magic hazel
#

Well the Stdlib is swift 5.1.5

#

Which is fully iOS 7 compatible

#

So that’s highly confusing

grim sparrow
#

but you can see why I would think that right

#

just from looking at that the trace

magic hazel
#

Yeah I can see that

grim sparrow
#

can you get the full crashlog

magic hazel
#

Ye sec I’ll ask

grim sparrow
#

do i know who you are? i dont recognise you

#

9/10's out of 10 the next question to ur dm is "can you make me a tweak for tinder" or "can you make a piracy tool"

#

I ignore all requests by default, I get a good few a day

#

most of which being spam

#

You're better off just asking here anyway

#

Unfortunately most tweak/jb developers get spammed with requests for icloud bypass or tinder tweaks or in app purchase bypass or whatever

#

which is why a lot of requests get ignored

#

have you posted on r/TweakBounty

#

why was it deleted?