#🪅-progaming
1 messages · Page 63 of 1
i hope it is 😭
this is how the output looks like
typst variables exist
i would love to see you write this in latex and compare the both
typst seems so cool
lc.ocr
no, but what if you have to use a bunch of variables
you dont
@valid jetty when will elle compile to typst
any code can be unreadable if you write it in an unreadable manner https://github.com/acquitelol/ichigo/blob/mistress/docs/main.typ
IOCCC Winning Entries by Year
it looks fine
\text{Degerler yerlestirilir} \\
H_{BS}(s) = \frac{s^2 + \Omega_p^2}{s^2 + \frac{\Omega_p}{Q}s + \Omega_p^2} \\
= \frac{s^2 + (0.3249\alpha^2)}{s^2 + (0.3512\alpha)s + (0.3249\alpha)^2} \\
\text{Bilineer donusum uygulanir} \quad
(s = \alpha \frac{1 - z^{-1}}{1 + z^{-1}}) \\
H_{BS}(s) = \frac{\left(\alpha \frac{1 - z^{-1}}{1 + z^{-1}}\right)^2 + (0.3249\alpha)^2}
{\left(\alpha \frac{1 - z^{-1}}{1 + z^{-1}}\right)^2 + (0.3512\alpha) \left(\alpha \frac{1 - z^{-1}}{1 + z^{-1}}\right) + (0.3249\alpha)^2}
again, the issue is just code formatting
maybe
typst can look good if you format it properly
just like latex can look horrible if you dont format it properly
look at this
meanwhile the latex equivalent:
\begin{align*}
H_{\text{BS}}(s) &= \frac{s^2 + \Omega_p^2}{s^2 + \frac{\Omega_p}{Q}s + \Omega_p^2} \\
&= \frac{s^2 + (0.3249 \alpha)^2}{s^2 + (0.3512 \alpha)s + (0.3249 \alpha)^2}
\end{align*}
Bilineer dönüşüm uygulanır \quad $\left(s = \alpha \frac{1 - z^{-1}}{1 + z^{-1}}\right)$
\begin{align*}
H_{\text{BS}}(z) = \frac{(\alpha \frac{1 - z^{-1}}{1 + z^{-1}})^2 + (0.3249 \alpha)^2}
{(\alpha \frac{1 - z^{-1}}{1 + z^{-1}})^2 + (0.3512 \alpha)(\alpha \frac{1 - z^{-1}}{1 + z^{-1}}) + (0.3249 \alpha)^2}
\end{align*}
(not more readable) (harder to write)
how did you make it have colors
doesnt work
oh you posted it already
its colored for me
you literally did it here hello
what
shikicodeblocks <3<3<3<3
i could maybe get behind how the code for this is more readable but its easier to write this in typst than in latex and theyre both very hard to read (you would just read the output not the code tho)
whats that
shikicodeblocks
Brings vscode-style codeblocks into Discord, powered by Shiki
Vap0r1ze
desktop only
is z^-1 the complex conjugate of z
z^-1 is a 1 unit delay
hm
\text{Degerler yerlestirilir}\\H_{BS}(s)=\frac{s^2+\Omega_p^2}{s^2+\frac{\Omega_p}{Q}s+\Omega_p^2}\\=\frac{s^2+(0.3249\alpha^2)}{s^2+(0.3512\alpha)s+(0.3249\alpha)^2}\\\text{Bilineer donusum uygulanir}\quad(s=\alpha\frac{1-z^{-1}}{1+z^{-1}})\\H_{BS}(s)=\frac{\left(\alpha\frac{1-z^{-1}}{1+z^{-1}}\right)^2+(0.3249\alpha)^2}{\left(\alpha\frac{1-z^{-1}}{1+z^{-1}}\right)^2+(0.3512\alpha)\left(\alpha\frac{1-z^{-1}}{1+z^{-1}}\right)+(0.3249\alpha)^2}
1 line version @valid jetty
raaaaaaaah content and strings (pick one for my ocd)
@valid jetty youre so smart
using jp var names in docs you need help
i still dont get what it does
yes
better code blocks
syntax highlightig with custom themes
more languages supported
etc
THAT was a unicode test and typst passed beautifully
@valid jetty will use english only
speaking of typst and unicode how do you use catppuccin in firefox vencord
in what world is this readable
what
not having i18n is bad if youre working on docs that many people are gonna read
well i try to use a language and it does nothing
it all boils down to familiarity
how do i install catppuccin in firefox discord
it highlights in msg but not after send
stylus style doesnt load
its documented tho @hoary sluice
No world
vencord userscript?
violentmonkey? surely
you could turn \infty lines of latex into 1
surely there is a catpuccin for vencord on the official org
theres only betterdiscord which doesnt work cause of some cors synonym thing and the stylus one doesnt load for me
arent you using catppuccin
giant skull emoji
slightly smaller but still giant skull emoji
@hoary sluice you can now defer entire blocks (this isnt a feature this is a parsing bug)
ok now my vencord web just doesnt work at all
what does defer actually do
runs the code specified whenever the current scope will exit
sort of like a destructor
fn main() {
#set_allocator(HeapAllocator::new());
foo := #alloc(foo);
defer foo.free();
if bar.baz == 39 {
return foo[39]; // will call .free() here
} else if bar.bal == 42 {
return foo[1337]; // will call .free() here
}
return nil; // will call .free() here
}
``` the compiler will call `foo.free()` at every return stmt
@valid jetty can you do if statements as an expression
like let guh = if bar.baz == 39 { 3 } else { 5 }
or alternatively
fn main() {
while true {
bar := make_bar();
defer bar.free();
if bar.x == 3 {
break; // will call .free() here
}
// will call .free() here
}
}
let guh = bar.baz == 39 ? 3 : 5;
just standard ternaries
yeah not a thing atm
when statement is so cursed
how
like its just compiler mandated signals
@hoary sluice this is the primary usecase for it, to group memory allocation and deallocation, and to automatically call the thing on every return / every point the scope can exit from
but before parsing stuff that had semicolons inside was kinda broken :3
because i did an oopsie in the parser (as per usual)
so you couldnt do defer $print([i32;]); or defer { $println("hi"); }; because it didnt take into account nesting of the bracket tokens lol
anyway now you can group together defers
fn main() {
foo := make_foo();
defer {
foo.bar();
foo.baz();
// ... can run arbitrary code here its just a standalone block (which means technically you can put more defers in this which is funny :3)
};
if bar.baz == 39 {
return foo[39]; // will call defer here
} else if bar.bal == 42 {
return foo[1337]; // will call defer here
}
return nil; // will call defer here
}
yeah it works 😭
oh
would help if i ran it
defer in defer is cursed
it absolutely is very cursd but the compiler just allows it because of how defers in non-top level contexts behave
this actually is a regression
one of these will print hi the other wont
but who is writing code like this
the second one actually does
do you not defer in reverse????
nop :3
thats bad
to fix it i have to basically recursively apply the defers until no extra things are added anywhere, shouldnt be that bad to fix this
but i probably wont do it today because defer code is so.....]
let foo = alloc_something();
defer foo.free();
let resource = create_resource();
defer resource.free_for(foo);
this would UB if defer is not in reverse
good point
yeah
actually its 10pm
i might aswell do it
i have at least 6 hours left of the day realistically
Yep, you read that right. A Chinese robot dog that builds a tunnel into your network for the world to see! Check it out here.
https://cyberinsider.com/remote-access-backdoor-discovered-in-chinese-robot-dog-unitree-go1/
🔴 LIVE @ https://twitch.tv/LowLevelTV
🏫 COURSES 🏫 Learn to code in C at https://lowlevel.academy
🔥 SOCIALS 🔥...
ok interesting go defer only allows expressions, not statements
why are statements not included in expr
isnt it usually the other way around
exprs are subsets of stmts
every expression is a statement but not every statement is an expression
this is valid code in elle
(for some reason)
ive seen
Expr -> StatementExpression
Stmt -> ExpressionStatement
cyclic
Expression-oriented syntaxes are so based
i like them
yop but it's no problem
because if you need complex stuff you can just use a function
HUSK
this is the return cutoff saving my ass
all instructions after a return are cut off because the IR doesnt like it
and its fine because they shouldnt really be there anyway
I think the biggest annoyance of go defer is that error handling sucks with them
if u wanna handle error of some expression you defer, you always need an anonymous function
zig defer!
this code saves my ass in this situation its so funny
defer macros in c:
true
no defer is goated
but can definitely be abused lmao
wires
tbh the problem is kinda annoying to solve
its not as easy as i first imagined
i do this to ensure any level of nesting will still insert the right defer statements
i need to check if one of the elements in deferred is a returning-like statement, which means its either directly a return statement or its a block which has a return statement inside it
then i need to place all other deferred statements except that one above it
or alternatively i could just add deferred statements and rerun from the top until no statements are added, but that means i have to tag the return statements with whether they have already had deferred elements applied to them or not
and even then defer which returns inside of defer will cause an issue because the return statement is already tagged but there is another which hasnt been discovered yet until now
its a mess and i dont really wanna deal with it
either of those approaches will cause issues when there is a case like
fn main() {
defer {
defer return 1;
}
}
so i think i wont go into that rabbit hole today
btw yes you can do that
it willl run at the end of every iteration of the loop
and will also run before any break
insane
you dont need defer to make a program that just allocates infinitely
fn main() {
rl::init_window(SCREEN_WIDTH, SCREEN_HEIGHT, "Mandelbrot Set");
defer rl::close_window();
target := rl::load_render_texture(textureWidth, textureHeight);
defer rl::unload_render_texture(target);
rl::set_texture_filter(target.texture, TEXTURE_FILTER_BILINEAR);
rl::set_target_fps(60);
while !rl::window_should_close() {
...
{
rl::begin_texture_mode(target);
defer rl::end_texture_mode();
rl::clear_background(BLACK);
...
}
{
rl::begin_drawing();
defer rl::end_drawing();
rl::clear_background(BLACK);
...
}
}
}
automatically will call unload_render_texture and close_window when the main function exits
automaticall will call end_texture_mode and end_drawing when the blocks go out of scope
its useful
it doesnt look useful for tiny examples like this but for big code its very helpful to be able to group together load and unload
guh?
i prefer just
let guh = allocSomething()
guh.doSomething()
guh.close()
or a guh.use {
doSomething()
}
yeah now imagine there are 500 lines of code in between allocSomething and close
thats just another way to approach the problem lol
youre gonna explode
@valid jetty defer explosion
toml conventionally has snake case
"rendering a triangle in vulkan is hard enough that i may not have enough content for only 1 stream, but maybe 2" - tsoding 2021
zig has goto?
idk it seems the most likely to have it out of elle, zig, go
is this a cpp proposal
yeah no
iirc no its just a C proposal
@dawn ledge TIL go's defer is actually ultra cursed
this is why i dont use go
the defer isnt block scoped like you would expect
if you do this
func work(wg *sync.WaitGroup, m *sync.Mutex) {
defer wg.Done()
for i := 0; i < 42; i++ {
m.Lock()
defer m.Unlock()
x = x + 1
}
}
``` the m.Unlock() is actually bound to the exiting of `work` not the exiting of the `for` loop
😭
you have to do this to get the behavior you expect
func work(wg *sync.WaitGroup, m *sync.Mutex) {
defer wg.Done()
for i := 0; i < 42; i++ {
func() {
m.Lock()
defer m.Unlock()
x = x + 1
}()
}
}
ew
another reason to avoid go
good blog
ok yeah this is a thing i need to fix in elle
i remember this issue from a whileeeee back
using phrases like "bro definitely cooked. peak." and "what was bro cooking??" in the context of a technical specification is insane
aside from that how does this work in cases where
if cond {
return;
}
let foo = alloc(...);
defer dealloc(foo);
...
return;
i dont really like the idea of a defer i wrote later lexically be executed in contexts before it
that is another thing i have to fix, and im pretty sure this TS addresses that
the "2 times" they say are NOT the error and the alloc theyre before the alloc and after the alloc
how is return an expression
what does it retunrt
there is an implication that the defer does not run on the err return
its not
honestly i was kinda surprised this compiles
shouldnt it be a compile time error then
oh ok
should have cropped it better !
;-;
use crate::{
compiler::{
compiler::{Codegen, CodegenContext, Compiler},
qbe::{instruction::Instruction, r#type::Type, value::Value},
},
parser::enums::Return,
};
impl Codegen<'_> for Return {
fn compile(self, gen: &mut Compiler, ctx: &CodegenContext<'_>) -> Option<(Type, Value)> {
let res = self.value.compile(
gen,
&CodegenContext {
is_return: true,
..ctx.clone()
},
);
ctx.func.borrow_mut().add_instruction(Instruction::Return(
res.map(|(ty, val)| (ty, val, self.location)),
));
None
}
}
``` the return stmt codegen returns None (it would return Some(ty, val) if it were an expr)
but yeah the latter is better imo
and i think variable declaration counts None as "undeclared variable"
@valid jetty hii
not im not entirely sure how the compiler determines a type for the variable because i didnt explicitly state it (i used :=)
OH i see
declare.rs does this
if let Some((ret_ty, value)) = parsed {
...
return Some((final_ty, final_val));
}
None
scary
because the return stmt returns None the declare stmt will just not gen anything and also return None
lmfao
thats not good let me fix that
how does defer look in asm
i was imagining something like
some_func:
; ... do stuff
call .defer_some_func_2_or_some_naming
call .defer_some_func_1_or_some_naming
ret ; every ret statement or block end preceeded with call to func that contains instructions for the defer defined
defer_some_func_1_or_some_naming:
; defer instructions
ret
defer_some_func_2_or_some_naming:
; defer instructions
ret
hmmm im stuck between interface or trait
interface feels too long
but trait at the same time feels like a balant rust ripoff (almost as if the rest of the grammar isnt)
interface
man im just tryna build a cpp app why do i need to fucking create an account
lmao
windows moment
man that is truly a disgusting website
like why am i stuck here for a solid 3 seconds going from 1-3
I liked this persons writeup on #embed which I haven't had the chance to use yet
@valid jetty i finished my tree-sitter grammar for elle and put it in zed https://github.com/Tnixc/elle-zed
top 2 most annoying things in writing the grammar was generics with < and * with pointers and binary expression
btw your compiler hangs with fn main() with no body or any other function without a body
my godness typst is godlike thing
use aqtinstaller
Nah
yes
you dont
you literally just install qt creator
and run it
i’m currently working on preventing infinite loops as we speak lol
THATS SO COOL
it’s annoying in a non grammar context too lol
needs account on windows
HELP
elle early adopters
@spark tiger this is the perfect opportunity to stop using bimblows
yopp
hop on OpenSuse Tumbleweed
do that
jn general qt installer requires an account but Qt creator is on most package repos
including fathub
what does jn mean
is there any way to actually make this open the fix? or atleast disable the fucking warnign
in neovim
like i use errno, but it for some reason says i dont use it
vim.lsp.buf.code_action()
what would the fix be
using it?
fix available
removing the import
oh
but i use the errno in the file
which is weird
atleast somehow suppress the warning
bind vim.lsp.buf.code_action() to https://github.com/nvim-telescope/telescope-ui-select.nvim
are you using the function errno or the nums from errno.h
@hoary sluice would it be possible to bind double shift press to something? i searched for this for a long time but people said its not possible
ligature
idk
me when jetbrains mono
me when iosevka
you cannot map modifiers alone
vim generally doesnt see modifier keys
thats the entire point of a modifier
i just wanted intellij like binds :(
you can bind double shift to some random key like F13 on your os and then bind it in nvim
or just use <leader>SomeRandomKey
yea shift is meh
elle will probably end up being a maintained but dead language (because no one uses it) like nim
do you think there’s any way you can put a license on this so i can pr it lol, there are a few small issues in the highlights like a few missing assignment operators and uhhh local not being a keyword anymore (it was replaced by !pub)
ah ok
what is there besides "=", "+=", "-=", "*=", "/=", "<>="
i fucked up with cli parser for so long i bet theres like 100 bugs in this but its done 😭
if you wanna do it thats fine youre probably gonna have an easier time with it
looks good
can this run on an esp32
How much ram
like 400kB i think
If i make good enough gc it could do some light java
%=, ^=, |=, &=, >>=, <<=
Obviously no jdk
520kB builtin you can extend up to 8MB
a fork of freertos
What does can't be used when declaring variables mean
done
nevermind
<op>=
foo <op>= bar
however a friend of one of my teachers managed to run a really stripped down linux on it
you can do foo &= bar but not foo ..= bar for example (that’s actually gonna create a range instead of declare a variable)
it also runs micropython
hm
you can probably get java to work on it but its gonna be a lot of effort
They're usually called compound assignments I think?
lmfao
lmao
idk if it’s a good idea but maybe it would be better to move the grammar to the elle repo itself??? i make changes quite often and i don’t wanna bother you with pr spam lol, the license allows for it but i wanna get your explicit permission too because you wrote it
that’s how i plan to make i128 tho lol
with a struct
oh that makes sense
you can, you might want an org instead of a monorepo tho
would’ve been better if there was an elle org
yeah exactly
ok tyy
i’ll consider an org soon probably because the things like the repl, codegen proc macro, stdlib etc should probably be in seperate repos anyway
yeah
tests are probably good but I've just been running tree-sitter generate && tree-sitter parse ~/.local/include/elle/**.le | grep ERROR
enforcing naming conventions is stupid
you can have a lint/warning sure
but strait up refusing to accept is stupid as hell
i agree with that, to be clear
doesn’t rust throw a warning when you don’t do snake case
It does though
okok
/run ```rs
struct foo_bar {}
@fleet cedar I received rs(1.68.2) compile errors
warning: type `foo_bar` should have an upper camel case name
--> file0.code:2:8
|
2 | struct foo_bar {}
| ^^^^^^^ help: convert the identifier to upper camel case: `FooBar`
|
= note: `#[warn(non_camel_case_types)]` on by default
warning: struct `foo_bar` is never constructed
--> file0.code:2:8
|
2 | struct foo_bar {}
| ^^^^^^^
|
= note: `#[warn(dead_code)]` on by default
warning: 2 warnings emitted
yeah it compiles
ya i’ll run some tests on it probably
there’s a few special cases i wanna test with attributes
I don't remember why is put dollar signs here
hm?
i don’t have any money
Linux is free
$ is actually directly a function alias for Tuple::new at no extra expense to the parser or compiler, just using existing features
i don’t like linux
i didn’t wanna add (x, y) as syntax in the parser when i first wrote tuples because it interferes with casting syntax which also uses (T, U) to represent a tuple’s type
so $ is actually just a function
when you do $(x, y) you’re calling the $ function which calls the Tuple::new function internally
fn Tuple::new<T, U>(T x, U y) {
let tuple = #alloc(Tuple<T, U>);
tuple.x = x;
tuple.y = y;
return tuple;
}
external fn Tuple::new<T, U>(T x, U y) @alias($) -> (T, U);
oh i put it there because it's a valid arg for alias
ah
OH i see what you meant
uhh i wouldn’t exactly write it like that
$ is an allowed character in identifiers
you can have a function called $foo
oh that's news to me
most of the stdlib is aliased under $ to prevent namespacing bloat
i define the same function twice because the first time it’s defined as it’s original name, the second time it’s defined under its aliased name
zig move
esp32 mentioned
i got to use one of those for work experience once and i got to take it home so now i just have an esp32
i wrote that project before knowing what a .env file is apparently lmao
loveeee
"how point perfect do you want ur svg?" yes.
@hoary sluice what bindings of tree sitter do you need for nvim
this was so annoying
i removed tuples, triples, and sigils as specific nodes
just highlighting identifiers based on regex now
they are all call_expressions
lol sorry i think i shouldve made that clearer
theres this in the docs but i dont think its comprehensive enough
$x, while is considered a sigil semantically, is just a $ in the identifier
yeah thats fine
i might try to rewrite this grammar quickly to make sure it covers all cases that are in the parser because at a glance its missing a few things that i probably wasnt entirely clear on lol

can anyone tell me what ansi color is this? i need this for a sequence
what does this sentence mean
im using nvim-lspconfig
which i think everyone else also uses
nvm
not bad
i have news for you
@valid jetty use kvantum they said
easy qt theme configuration they said
i don’t want linux !!😡😤🤬
who brainwashed you
lowkey this server
as a linux user, linux lowk sucks
biggest skill issue
wrong
have u ever tried it
ofc
which distro and what made u dislike it
its good if you dont play games
you dont love broken system libraries?????
I tried yesterday fedora again, i rate it as 0/10
fax
mint;
- drivers issues
- low performance in games and some software
- no adobe/autodesk/other big companies software
??
let me gatekeep
this tells me you've neevr used arch
also recently i booted into an ubuntu usb and my wifi just didn’t work for whatever reason
i ued arch for almost 2 years
pretty sure mint comes with drivers preinstalled
you almost always end up with library missmatch errors on arch
canonical event
ur first mistake was using ubuntu
skill issue lol
Only if you -Sy without -u
always a user issue
ive always Syu
nixos better
ik but the fact that happens is annoying
its happened like 3 times ever for me
if you Syyu and dont cut power ur fine
yes but my mic just didn’t work for some reason that i never figured out
and yeah nixos solves a lot of versioning issues (while introducing other issues)
never said its not a user issue???
whats a Syyu
thats an issue you have on more barebones distros like arch or nix cause audio drivers dont come preinstalled but on mint they most definitely do
then y are you complaining about it
pacman -Syyu
Yeah nix's versioning is superb, problem is everything else
you are expected to fix ur system if u break it
yes, whats the difference
who is
but it literally didn’t work
Syy updates mirrors Syu updates system
have u tried googling
Syyuu
of course
nix is by no means barebonesa
its byfas the most bloated one i've used (still gonna use it)
idk ive never heard anyone have issues with pipewire on mint
i fixed my switch today, got into hekate, looked through the settings and what i saw made me sick to my stomache... i found "nyx", i instantly filled with rage, how can this be? nixos on MY nintendo system=??? i filled with rage. the only way to prevent the spread of nix was to destroy my very nintendo device. I grabbed it and threw it out of the window.
are you just arguing for the sake of it
thats so wrong
yeah but skill issue u caused it
just because it doesnt delete old system versions doesnt mean its bloated
fuck off
- it rarely happens unless ur a nub
mainly cause ur wrong
Nix is the only distro I know with a gc
oh i dont have to worry about that, i cleanup often
well other distros dont really need it cause they overwrite packages right away
are u on nixos
i simply fuckinig said i dislike how i've had such issues on arch
how is that fucking wrong
yes
no youre wrong cause u said nix is bloated
how is nix bloated
its more bloated than lfs (oh no)
this was meant for nyx
not the nixos claim
ok i still want an explanation
how is nixos bloated
is it just because it doesnt delete old versions
no
then why
its because there's a ton of duplication in the store (even after cleanup)
yea it sandboxes programs
thats not bloat
thats the whole point of the distro
bloat means stuff that comes preinstalled that you dont need
what makes u say that
One small issue I have with nix is that you can't replace libraries without recompiling everything from scratch
Things like gtk patches
idk what exactly you mean but its probably true and nix does take a while to compile
but so does rust and i still use and love both
If you overlay gtk it'll compile firefox from source
its the perfect distro
there is no better operating system
some would disagreee
name one
nina
what
"It's perfect" and "there's no better" are two very different claims
@nimble bone
I asked my friend (nixos user) to help me test out a vencord plugin and they replied back saying they can’t so
Windows
vencord on nixpkgs is 
although you cant really do any better for an immutable fs
unless you move discord itself out of the store
impure nix packages when
hmmm
nevermind its possible to load vencord from somewhere like ~/local while also keeping discord in the store
its perfect and theres no better
ok im switching to windows
good
idk it literally just works
you should use the vesktop flatpak on NixOs
nop
flstpaks so good
i can run random apps without trusting them
i should write an anti nix license
NixOs doesn't sandbox
i just installed a plugin and it works perfectly fine
ill add sandboxing to nixos
updates are managed by nix afaik
updates to vesktop?
i dont think thats the case, at least not on vesktop
oh vesktop
i have 0 issues with vesktop
package.nix: Lines 18-25
version = "1.11.8";
src = fetchFromGitHub {
owner = "Vendicated";
repo = "Vencord";
rev = "v${finalAttrs.version}";
hash = "sha256-Ej04ONaeNt55mbQ5RTKM4MySYsw3UJky9ZK9h1gMEzo=";
};
i thought you used the vencord overlay or whayever they call it
why would i
and darwin.nix
u mean its not latest version by default?
the versions are managed by whoever manages the nixpkg
if u want to pull from latest always u can just paste this and make it pull latest
newsflash thats how package managers work
no shit chief
regular vencord installer can autoupdate
you cant with this
idk what that is all i know is you can pull latest vesktop from git using nix
eh vesktop updates once a decade so using nix for vesktop is okay
these are non issues
just change it to the new hash?
yeah ik
https://github.com/KaylorBen/nixcord this however is deranged
based
newsflash nian that what nixos users love to do
might use
this is the part i dislike about nix
i should add this to my config

I started this project after having to reinstall my NixOS system several times, resulting in manually enabling and configuring the ~100 Vencord plugins more than 4 times. With Nixcord you can configure once and save it to a git repo.
has never heard of vencloud
illness
finally got to the part where i implement the interpreter 
might as well have a different configuration backup system for every app then
we should ask elon to ship nixos users to some planet so they stop polluting our lives (except for eageler)
REAL!
i will also leave
(including @meager turret)
hopping off of nixos
discord users when confrontend with people of differing opinions on the internet
NixOs concept is nice just poorly executed
if elon endorses nixos i will switch to gentoo
also useless on servers since docker compose exists
true
well executed*
docker compose 
nix is NOT containers
using NixOs is committing to the declarative lifestyle but also to a life full of suffering while diagnosing issues caused by that lifestyle
it could be used to remotely manage the actual server itself (still need to maintain the actual host os)
its by far not the only solution, but it exists
i know
wait did someone make declarative docker containers
wing wong bing bong youre wrong
🤣
nix is perfect for the server
never said its not
isnt docker already declarative
NixOs is perfect if you unironically use bare metal services
by declarative i mean Nix
time to make my own distro
LFS TIMEEEEEEE
my host server config;
- nin0 user
- has root access
- tailscale
- docker
- clone https://gh.nin0.dev/selfhosting to /sht
- enjoy
nina endorses k8s
my server config
literally just debian with a systemd service which seems to keep randomly crashing
me when i write one configuration file and deploy it on all my servers and it works (too complicated,) (effort) (shouldve used docker, kubernetes, proxmox, aws, ansible, and openshift)

dont listen to them...
chloe is paid by the debian organization
vwhybanne 402104961812660226
Banned by vending.machine: obnoxious, constantly talks about random shit unrelated to the current conversation, essentially treating chat like his personal blog
no
the more i use webstorm the more i feel like my jetbrains hate is warranted
im paid by microsoft
he is the reason NixOs should die for good
nix stands for no issues
@dusty moth
@dusty moth
does he know?
lol
unironically vencord got me to use nix
Name two contradicting things:
NixOs- no issues
vesktop needs a license Anti Nix and something to disable itself on NixOs
Name two contradicting things:
- not NixOs
- no issues
impossible to make
how
i could say the same for "linux, no issues"
check mate nerd, now hop off fedora and become an apple sheep
true
i will just ignore the license
i will sue
you wont know im using vencord
all licenses are worthless when you dont speak of them
when the cops come i will delete it
when the cops come i will install windows 7 and say whats vencord
you cant tell if someone is pirating until they admit to it or you physically witness it
until then said person is not guilty
If a cop is asking if you saw someone pirating, then no you didn't
if a cop is asking you anything shut the fuck up
no exceptions
life advice from me
are you chloe <last name>? we would like yuo to come with us to help us identify your family that has just been in a car crash

i dont have a family so i know they are lying just to arrest me
@valid jetty what font do i use on my system for not code
what abt ur vencord family
maple mono everywhere looks old
macos font
meh
Has anyone tried to make a plugin that enhances forum channels in any way?
"enhances"? in what way
SF is peak
Reverse-filtering (i.e. right-click on a tag to hide posts with that tag), searching through posts that have been posted by a given author...
reverse filtering is not possible
where do i install san francisco font on nixos
same with your other idea
search goes through discord api
if the discord api doesnt have that option youd have to make your own search algo
having to make your own can very much count as api abuse
probably not on nix pkgs
Dang
Perhaps I or someone would have to contact discord to add such possibilities or API calls to their existing API. Thank you for your respose!
inter is tho
oh yea inter exists
grab the dmg from apple website and extract it
im using inter
airdrop it
wait is it really that simple
i wanted to install sf mono or whatever it’s called but got faced with a dmg file and thought oh okay nevermind
half of apple’s formats are renamed zips
yeah but no font file there either
what’s in it
payload is also a zip I believe
there are definitely otfs in there
yep it is
oh. i tried double clicking it inside 7zip to open as an archive but it didn’t work so assumed it’s not
they dont but i generally dislike doing that
i would pirate stuff and all but i dont like using it outside of my local setup
i.e on my website or something
oh i thought by "use it" you meant using it for like a code editor or something
also i recently found this font but jfc why is it $75
i cant imagine paying that fucking much for a FONT
eh it's pixelated
me when i share the entire font in an image and then charge money for it
a) not the entire font, b) image -> portracer -> vector -> font will be crappy
gaming
nvm their stupid ass gave a pdf
yop i love
i need some good font
i will shill monaspace
i mean theres definitely a torrent somewhere
i really love these unicode box drawing tuis but for the life of me i cant make one look pretty myself
ok i guess i better not show the name of the group or whatever it is
finance in a tui 
i won
by lots of realtime processing
not trying to demean their beatboxing skills
but there is definitely processing involved
i know, i want to make shit look like this
but i simply cant
🤝
i need someone to teach me to make those kinds of tuis
TRUE
best i can do is this, and this is an eyesore
figma for tuis
The H being italic but not the rest looks weird
its the website im using to make the ascii text

@lucid trail i co authored you i hope thats ok
all llvm based languages are basically DSLs for llvm IR
my world view has been shattered
i made an alternate tree-sitter and fixed:
- the variadic keyword was missing (and its statement)
- the precedence for binops was a little different to the precedence in the parser itself
- ranges are literally just binops in the parser so i made them be binops here too :3
- got rid of the targets that arent node and rust because youre only really gonna need this for zed and vsc
- got rid of tuple and triple literals because theyre just functions (you probably already did that but i didnt have the updated parser)
- things like ElleMeta and FILE are structs and should simply be handled as such
- parsing directives was slightly wrong; in the parser there are directives that can take in types or exprs and it doesnt matter which but it can be any
- parsing generics was slightly wrong; when parsing a generic instance's type, you just allowed identifiers as if it was a generic definition but it allows for any type in there so i made a seperate one that expects $.type instead of $.identifier
I'm using it, it's great
awesome
BRO WHY IS i-c-l word banned here
anyways uh
what i was gonna say is that no font is worth $75 regardless
The precs for the rules are kinda questionable in the first place
yeah true
im really struggling in getting it to differentiate expressions and types in directives when the type is a generic struct where the generic types are all identifiers
why do ppl use gmail
ie ```rs
#alloc(Foo<void *>);
```rs
#alloc(Foo<Bar>);
``` does not
i just do this idk if theres a way to get it to recognize it as a type correctly than just to raise the precedence of type for this context
Connections, multi account inbox, and mostly convenience
my followers
are you like famous or something
is 67 followers a lot on github
uhh a little
well half are bots
rosie has triple
but i think its more word of mouth (or followers)
like
you star it
some of your followers star it
their followers star it
etc
it shows up in the explorer tab
yeah
rosie since when are you using task: summary commits
whats the difference between # and $ calls
interesting
tessie bypass!!!!
fake
default branch “mistress” is crazy @valid jetty
LMAO
i set that up in my git config a whileeee ago
ok im a little confused
directive_expression: ($) =>
prec.left(
13,
seq(
"#",
choice(
seq(field("name", $.valid_directives)),
seq(field("name", $.valid_directives), "(", ")"),
seq(
field("name", $.valid_directives),
"(",
commaSep(choice(prec(2, $.type), prec(1, $.expression))),
")",
),
),
),
),
with this
fn foo() {
#alloc(Foo<T>);
}
incorrectly interpreted as
(directive_expression [1, 4] - [1, 18]
name: (valid_directives [1, 5] - [1, 10])
(expression [1, 11] - [1, 14]
(identifier [1, 11] - [1, 14]))
(ERROR [1, 14] - [1, 17]
(generic_parameters [1, 14] - [1, 17]
(identifier [1, 15] - [1, 16]))))))))))
``` but this
```rs
fn foo() {
#alloc(Foo<T *>);
}
correctly treated as
(directive_expression [1, 4] - [1, 20]
name: (valid_directives [1, 5] - [1, 10])
(type [1, 11] - [1, 19]
(generic_type [1, 11] - [1, 19]
(identifier [1, 11] - [1, 14])
(generic_instance_parameters [1, 14] - [1, 19]
(type [1, 15] - [1, 18]
(pointer_type [1, 15] - [1, 18]
(type [1, 15] - [1, 16]
(identifier [1, 15] - [1, 16]))))))))))))))
``` even though type has priority the parser is still going the expr path
making icps treesitter is gonna be painful
imma get functions to work properly today
just copy a minimal one like gleam and work with that
maybe it has something to do with the parens
i had a lot of issues with that
i might base it off haskell
actually hang on why am i even parsing empty parens lol
commaSep is already optional
cause icps is currently sugary haskell
i mean that doesnt fix but yea
true
icypeas
icypeas is an awesome name cause its silly and theres almost nothing already called icypeas besides some lead finding website
yeah and you can make the logo blue balls
😭
peas are not blue
@valid jetty what is that commit naming scheme called
conventional commits
is renaming the project "chore"
conventional commits
i would say so
its not a fix because youre not fixing anything
its not a new feature
probably a chore
ok
but the ice is
this battery indicator is way too silly
@lucid trail i think
im just gonna hardcode the structure for directives
IDEALLY i would just have # <ident> <(?> [ <prefer(ty) | expr>? ] <)?
wdym by that? like possible combinations of expression list and types?
like
#alloc is #alloc(ty, count_expr?) so i will just assert that the 0th thing is a ty if the ident is alloc
and repeat that for the other directives that take types
makes sense, I’m pretty sure i had a version of this
good thing i specified the interface for the directives :)
that is the aforementioned lead finding website
if you google elle theres a big fashion magazine and a whole bunch of other stuff
our schools moodle-ish website is called elle
dalle
why is it so good
is this 4o
i thought it was lead as in the element lol
the free one
grammar.js: Line 613
directive_expression: ($) =>
i think they made some kind of new diffusion based dalle
i really don’t think it’s diffusion, i have no evidence for this belief tho
oh lol too late i already wrote it
const DIRECTIVES = {
len: ($) => ["(", $.expression, ")"],
size: ($) => ["(", $.type, ")"],
i: ($) => ["(", $.identifier, ")"],
env: ($) => [],
alloc: ($) => ["(", $.type, optional($.expression), ")"],
realloc: ($) => ["(", $.expression, $.type, optional($.expression), ")"],
free: ($) => ["(", $.expression, ")"],
set_allocator: ($) => ["(", ")"],
reset_allocator: ($) => []
};
thank you anyway tho
they make it seem like diffusion cause u can see the image get progressively less pixelated
Definitley not plain, separate, diffusion though, just from the introduction in https://arxiv.org/pdf/2504.05979
thats pretty clean i think
directive_expression: ($) =>
choice(
...Object.entries(DIRECTIVES).map(([k, v]) => seq("#", k, ...v($))),
seq("#", $.identifier),
seq(
"#",
$.identifier,
"(",
commaSep(choice($.type, $.expression)),
")",
),
),
ok to simplify cast_expression and prevent ambiguity
im gonna turn casting into a directive
instead of (T)x its gonna be #cast(x, T)
return to the time when nvidia's gan was the only cool image gen tool
Make casts <type>(value) instead of (type)(value)
i think #cast is a better idea
doesnt interfere with any other syntax while <T>(x) does
i think at some point too much # will become meh
@valid jetty i think imma rewrite functions to only have 1 argument, get that to work and then make multiple arguments sugar over multiple functions or something like that
it wont look too bad hopefully
@hoary sluice #cast(T, x) or #cast(x, T)
You love typescript casts
x as T
@valid jetty i will write my stdlib in elle
(no i wont)
but that would be really funny
🍛
raaaaaaaah
light mode users
no FP in my devices
its actually really simple
its like writing a normal systems programming language except its closer to asm
very intuitive
yes
atleast bother to add a background-color to body even if black 😭
chrome --enable-features=WebContentsForceDark:inversion_method/cielab_based/image_behavior/none/foreground_lightness_threshold/150/background_lightness_threshold/205 --flag-switches-end```
goes hard
i need to redesign this at some point
now is the point
wait till you see: https://thaunknown.github.io/
like finals project
i made this like 3 years ago i think
its AWFUL
it was like my first svelte project ever
or was this 4 years ago at this point
Aug 2022
why no domain
didnt make fuckall back then
it costs 10$ a year
if only
the error reporting leaves a lot to be desired
sometimes it doesnt even report the right line it just reports the end of the function
and the errors are really cryptic
no actually pick one i need to write the parse node for it
i wish porkbun showed me how much i'm paying yearly for these domains
whats wrong with x as T
use cloudflare
kinda annoying to parse
porkbun was cheaper for the shit i was buying
i dont have a parse_expr in the current parser, i would have to yield tokens until the as keyword and parse those
cloudflare adds 0% markup
porkbun was probably cheaper for the first year and more expensive afterwards
how does that work
how do u parse everything else
carefully
lol
literally better than mine
for things that can preceed an expr i do this
but this is really more of a hack and i dont like it
other than being extremely slow and flashbanging you at the start it looks fine
i just use gh as my portfolio tbf
rather than a website
if youre aiming for hireability you are not doing well by being so private about your location lol
lazy XD
why not just use tree sitter for lexing and parsing since you already made a grammar definition
