#ot2-the-original-pubsta

652 messages ยท Page 37 of 1

keen burrow
#

Lua has a very minimal API, making it suck reallllllyyyy bad for real word apps

severe trout
#

yeah, they can

tranquil ridge
#

oh well yeah by looking it up roblox provides a kind of a game engine

#

the scripting is lua

tribal tinsel
#

but one can make a good api to interact with the world. and then people script in lua to make it function like they want

keen burrow
#

Lua is good for sandboxing

severe trout
#

i dunno, i was just impressed by lua's size

tranquil ridge
#

well it is a planet

#

it even has a satellite PepeWTF

tribal tinsel
#

lol, I'm chilling at finish line in a race in crayta with one other player. neither of us want to go through

severe trout
#

so the satellite does make sense

tribal tinsel
#

luna means moon. but they may have still got inspired by that

severe trout
pliant trench
#

"Lua" (pronounced LOO-ah) means "Moon" in Portuguese.

#

yea

#

๐ŸŒ‘

odd sphinx
#

to the moon

hazy laurel
#

unless I'm mistaken

#

oh yes I barely read the context

tribal tinsel
#

oh, Portuguese

#

that makes sense, I don't know Portuguese

hazy laurel
#

I only knew from Warframe \๐Ÿ˜ฉ

echo fern
#

it's Luna in a lot of languages, but TIL Lua isn't a made-up name just for Warframe

hazy laurel
#

You'd be surprised how many Warframe words are real

#

like I think "Syandana" is from another language

mild juniper
#

Do you create games or trading bots with lua?

hazy laurel
#

no

mild juniper
#

What than?

hazy laurel
#

embedded scripting

#

mods, usually

mild juniper
#

Yes, I forgot about it

#

My friend uses lua for a trading bot

hazy laurel
#

that doesn't sound right at all

#

trading what?

mild juniper
#

Trading robot

#

Bot, who can trade

hazy laurel
#

yes but trade what

#

What would there be to trade

#

what's being traded

mild juniper
#

Stocks, for example

hazy laurel
#

What the. that doesn't sound right at all D:

mild juniper
#

Why? I think it is ok

hazy laurel
#

It doesn't sound within the scope of Lua at all

#

you don't just make independent Lua scripts... or at least I hope not

mild juniper
#

My friend do that only with lua

hazy laurel
#

Poor guy

#

didn't know such a masochist existed :/

echo fern
#

What's a good Rust crate for creating animations/visualisation/whatever? Roughly speaking, I just need to make frames from 2d arrays, a pixel per cell (kinda like plt.imshow) and then show them and stitch them into gifs or something

echo fern
#

I want to, for fun, implement a visualizer of pathfinding algorithms like A*.

odd sphinx
#

nice

pliant trench
#

aight

echo fern
#

I could have done that in Python, but I want to do so in Rust for performance (I wonder how fast can it be if I push it) and practice

pliant trench
#

i got kicked from that factorio server

#

๐Ÿ˜

dusky cliff
unreal sigil
#

๐Ÿ‘€

#

I did that a lil while ago

#

then did a maze generation visualiser

#

and then got the a* visualiser + maze generation

#

threw them together

#

bing bang book

dusky cliff
#

amazing

unreal sigil
#

bok

unreal sigil
#

oh dear

dusky cliff
#

bok

unreal sigil
#

the spelling has left me

echo fern
#

I also want to test how A* compares to non-guaranteed-optimal ones

#

since I know Rimworld doesn't use A* for performance reasons, but instead a more empirical algorithm that isn't guaranteed-optimal

odd sphinx
#

satisfying

#

can u do dijkistras algorithm

#

have u tried

#

?

unreal sigil
#

maybe I'll make a return to pathfinding algorithms

#

I haven't tried dijkistras no

odd sphinx
#

i see

echo fern
#

dijkstra's algorithm is a lot simpler than A*, isn't it

unreal sigil
#

yeah

solemn panther
echo fern
#

IIRC it's basically A* with a trivial empirical distance function

#

so it doesn't get any speedup by digging in the right direction

unreal sigil
#

I'm trying to remember my pathfinding knowledge

echo fern
#

it's a low-level graphics library, though

#

I'd be basically making my own rectangles

#

I'll decide later how to show the results in real-time, if I care enough to do so

round moss
#

rust does lack of quite a few libraries.

solemn panther
#

Like WrappingAdd trait in std

#

I tried to create custom type and it's very confusing

echo fern
#
>>> cargo add image
>>> cargo add ndarray
>>> cargo run
Building [==============================>                          ] 1/66:

๐Ÿ˜”

odd sphinx
#

relatable

odd sphinx
#

wait

dusky cliff
#

haha car go vroooom

odd sphinx
#

u can add packages like that?

#

cargo add rand

#

?

echo fern
#

there's a package that allows it

odd sphinx
#

lol

echo fern
#

cargo-add or something

odd sphinx
#

i see

#

so u install that

#

?

#

cargo install cargo-add-dir

echo fern
#

at least I'm doing:

[profile.dev.package."*"]
opt-level = 3

[profile.release.package."*"]
opt-level = 3

which should hopefully result in the deps being compiled precisely once

echo fern
odd sphinx
#

yea

#

im looking at it rn

#

interesting

echo fern
#
 Finished dev [unoptimized + debuginfo] target(s) in 2m 39s

guess that wasn't too bad

odd sphinx
#

2 minutes

echo fern
#

huh, I didn't enable the rayon feature, yet rayon still got downloaded and compiled

#

why

solemn panther
echo fern
#

doubt it's a dependency of image

solemn panther
#

๐Ÿ‘

echo fern
#

and it's certainly a dependency of ndarray... but I'd expect it to only be so when that feature is enabled

#

lol, CowArray

solemn panther
#

.cowsay

#

๐Ÿ˜ฆ

radiant socket
#

cowsayrray

#

that should be a thing lol, .cowsay

#

time to make an issue lul

solemn panther
radiant socket
#

!remind 1H do the thing

clever salmonBOT
#
Alright.

Your reminder will arrive in 1 hour!

echo fern
#

It is also possible to serialize NumPy arrays in .npy/.npz format and deserialize them as ndarray arrays (and vice versa) using ndarray-npy.
๐Ÿ‘€

radiant socket
#

what is .npy?

#

is that their format

solemn panther
#

.npz is when you have QWERTZ?

odd sphinx
#

reqwest

solemn panther
odd sphinx
#

damn numpy so cool they have their own file format

echo fern
echo fern
solemn panther
radiant socket
#

it looks exactly like json, but it's different

odd sphinx
#

lol

#

nice

glacial pendant
#

I've been using file handling for a while and now while working on a new project, I thought about which is a better place to keep text(not much schema, mainly something key-value pair like):

  • JSON
  • YAML
  • TOML
  • plain old txt
  • Redis Cache
  • Add another file to the code and add the text in a list/dictionary

It would be awesome if someone could give some insight on this

daring jay
#

I personally like YAML.

#

It's also pretty pythonic.

round moss
#

that seems like a great usecase for unix DBs

#

there is also plyvel

glacial pendant
#

Interesting

round moss
#

you could also toss it into text columns in sqlite

#

sqlite is pretty fast when it comes to reading text

tribal tinsel
#

for me - nested a lot == json
some general config thing == yaml

round moss
#

ig what really matters is whether this is config or a datastore

#

for config, a .env file would be my choice

glacial pendant
#

For config .env files are best ๐Ÿ‘

#

(atleast in my usecases)

round moss
#

I wouldn't use any text format other than csv or xml for datastore

clever salmonBOT
languid osprey
#

Oh

#

Hey

echo fern
#

where's the actual source

#

wtf is this stub

jovial island
#

What programming project should I do using Tkinter?

echo fern
#
no method named `min` found for struct `ndarray::ArrayBase<ndarray::OwnedRepr<f64>, ndarray::Dim<[usize; 2]>>` in the current scope

method not found in `ndarray::ArrayBase<ndarray::OwnedRepr<f64>, ndarray::Dim<[usize; 2]>>`

note: the method `min` exists but the following trait bounds were not satisfied:
      `ndarray::ArrayBase<ndarray::OwnedRepr<f64>, ndarray::Dim<[usize; 2]>>: std::cmp::Ord`
      which is required by `&ndarray::ArrayBase<ndarray::OwnedRepr<f64>, ndarray::Dim<[usize; 2]>>: std::cmp::Ord`
      `ndarray::ArrayBase<ndarray::OwnedRepr<f64>, ndarray::Dim<[usize; 2]>>: std::cmp::Ord`
      which is required by `&mut ndarray::ArrayBase<ndarray::OwnedRepr<f64>, ndarray::Dim<[usize; 2]>>: std::cmp::Ord`
      `ndarray::ArrayBase<ndarray::OwnedRepr<f64>, ndarray::Dim<[usize; 2]>>: std::iter::Iterator`
      which is required by `&mut ndarray::ArrayBase<ndarray::OwnedRepr<f64>, ndarray::Dim<[usize; 2]>>: std::iter::Iterator`rustc(E0599)

aaaaaa

#

hmm, actually that might just be because f64 really isn't Ord

echo fern
#

poggers

#

okay, so I can create images from ndarrays now

odd sphinx
#

nice

echo fern
#

bigg exponential gradient

blissful coral
#

try visualizing embedding arrays with different colors - its mesmerizing for some reaosn

odd sphinx
#

sorting algos visualized

echo fern
#
  --> src\main.rs:13:46
   |
13 |     let img = scalar_arr_to_image_normalized(arr);
   |                                              ^^^ the trait `MaybeNan` is not implemented for `i32`
...
45 | pub fn scalar_arr_to_image_normalized<T>(arr: Array2<T>) -> GrayImage
   |        ------------------------------ required by a bound in this
46 | where
47 |     T: Into<f64> + ndarray_stats::MaybeNan + Clone,
   |                    ----------------------- required by this bound in `scalar_arr_to_image_normalized`

why am I alive, just to suffer?

#

oh right, I don't need maybenan

#

maybe

#

or I do

#

or do I need a second version of this function just for non-NaN types...

odd sphinx
#

just implement it bro

wide totem
#

^

echo fern
# odd sphinx just implement it bro

I did

pub fn scalar_arr_to_image_normalized_nonNan<T>(arr: Array2<T>) -> GrayImage
where
    T: Into<f64> + Copy + PartialOrd,
{
    let low:  f64 = (*arr.min().unwrap()).into();
    let high: f64 = (*arr.max().unwrap()).into();
    let img = arr.mapv(|el| ((el.into() - low) / (high - low) * 256.0) as u8);
    array_to_grayscale_image(img)
}
wide totem
#

It's not that hard to write code

#

Even if you don't know how it works

#

And then leave the code for the next dev to mess with

#

Even tho uh, it's a single dev project so I'm the next dev

median blade
#

Is there any good tutorial for yaml?

#

I wanna learn yaml

jovial island
daring jay
tranquil ridge
#

just check out official website ye

median blade
#

Bruh there are pages of info in that

#

Is there a short and sweet tutorial which has basic concepts

round moss
#

yaml is very complex, I would just look at some example files and guess at it and google what you con't guess at

median blade
#

Oh alright

round moss
#

there are 8 ways to do multiline strings

#

and not every parser handles them correctly

median blade
#

So

#

I want to make a settings file for my GUI app

#

Which is the best file format for it

round moss
#

I would go with .ini or .toml

median blade
#

Hmm

#

So, any good tutorial for toml?

round moss
median blade
#

ah thanks :D

#

so uhh

#

which python module is suggested for toml

#

there are many listed on their github page

#

wow toml is sweet

twilit sorrel
#

What is the best way to grow a discord bot

jovial island
#

Fertiliser, water and sunlight

#

Fuck that's for plants

languid osprey
#

Nono your not wrong

jovial island
#

Pog

solemn panther
sinful sun
#

Do the admin stuff properly

#

Readmes, docs, site possibly

#

Setup issues on github

#

Contributing guidelines, licenses, etc

tawdry salmon
#

I really don't know how MEE6 and Dank Memer blew up

sinful sun
#

Kids with tiny attention spans and nothing better to do using them

tawdry salmon
#

I mean... ๐Ÿ˜…

#

There's no way someone will invite my bot to his server, because other bots are far more reliable

sinful sun
#

Everything starts small

tawdry salmon
#

How bots do grow now, when there's pretty much a bot for everything

sinful sun
#

Chances are if youre developing it solo it wont take off like they did

tawdry salmon
#

There are a ton of bots for moderation, therer's even https://www.botghost.com for creating your own small moderation bot

#

And not only for moderation, you have bots for welcoming someone and to send a message when someone leaves

#

And a ton of bots for fun things, from memes to games

#

and even currency to buy roles and such

#

I can't imagine what does a bot need for someone to invite it

twilit sorrel
#

Making a bot with botghost or something link that is not coding/making

twilit sorrel
#

*not sure is that is considered self promo, i delete it it is.

sinful sun
#

Is this open source

wide totem
twilit sorrel
#

Pita?

twilit sorrel
#

though I plan to in the future

jovial island
wide totem
#

Can I ask for the source of this ot name

#

Because uh

#

Self duck has some very interesting sound alike phrases

#

I just want to know that it's not trying to be an innuendo

wide totem
sinful sun
#

Yea pretty sure thats the source

#

Pun on self fuck

wide totem
#

Ironic if so

#

I nearly got in trouble for an innuendo the other day smh.

echo fern
wide totem
#

Uh

#

Need a little more context

echo fern
#

there's a staff-only starboard, basically, except you react with ducks to nominate a message to it, so it's #duck-pond

wide totem
#

Oh right

#

Well what did you send that you self ducked

echo fern
#

that wasn't me

wide totem
#

Ah

#

Akarays smh

echo fern
#

Oh yiss, pathfinding is doing nicely

#

now to make it show progress in realtime

#

actually, I'm a dumbass and used a heuristic function that's literally worse than nothing, lol

#

that's why it scans so many cells

#

there we go

sinful sun
#

Waiting on a gif

echo fern
#

that'll take a while

echo fern
#
mismatched types

one type is more general than the other

note: expected type `std::ops::FnOnce<(&std::collections::HashMap<(usize, usize), ordered_float::NotNan<f64>>, &std::collections::HashSet<(usize, usize)>, &[(usize, usize)])>`
         found type `std::ops::FnOnce<(&std::collections::HashMap<(usize, usize), ordered_float::NotNan<f64>>, &std::collections::HashSet<(usize, usize)>, &[(usize, usize)])>`rustc(E0308)
#

sometimes I just don't even

#

what

sinful sun
#

#justrustthings

solemn panther
#

I had similar problems when using generic types

echo fern
# solemn panther Can you paste the code?

the callback right now is just a stump:

    let callback = |g_score, open_nodes, path| {};
    let results = a_star_search(SearchQuery {
        map: &map,
        start: (n - 1, 0),
        target: (n - 1, m - 1),
        callback: Some(&callback),
    });
//...
//definition of that struct:
pub struct SearchQuery<'a> {
    start: (usize, usize),
    target: (usize, usize),
    map: &'a Array2<isize>,
    callback: Option<&'a dyn Fn(&HashMap<Position, F>, &HashSet<Position>, &[Position])>,
}
#

Position being an alias for (usize, usize).

solemn panther
echo fern
#

Oh, I solved it by specifying the type:

let callback: &dyn Fn(&HashMap<Position, F>, &HashSet<Position>, &[Position]) =
        &|g_score, open_nodes, path| {};
echo fern
#

but it's weird this is needed, since it got inferred as exactly this

solemn panther
#

Like I said

solemn panther
echo fern
#

๐Ÿ˜”

#

aargh, now I need to convert to rgba

solemn panther
#

I had similar problems with generic type like

struct SomeStruct<T> {
  x: T,
  y: [T; 4],
}

I cannot write let x = SomeStruct { x: 0u8, ... } but let x: SomeStruct<u8> = ... ๐Ÿ˜ฆ

echo fern
#

yikes

echo fern
#

oh no, my gif is 0KB

#

something isn't right

#
&dyn for<'r, 's, 't0> std::ops::FnMut(&'r std::collections::HashMap<(usize, usize), ordered_float::NotNan<f64>>, &'s std::collections::HashSet<(usize, usize)>, &'t0 [(usize, usize)])
#

the compiler tells me this is too complex a type for some reason

#

no idea what that might mean ||\s||

#

oh dear

#

is it going to be a 500Mb gif?...

#

it has been writing for like a minue

#

huh

#

no, it's just super slow

#

and that's on a 128x128 gif, dear god

#

why does it take dozens of seconds to write a small gif

#

oh no it just keeps getting bigger

echo fern
#

something is deeply wrong with the crate I'm using, I guess

sinful sun
#

Extremely happy

#

Thats pretty af

echo fern
#

heh, something pretty weird happened here actually

#

the final point got blocked off by walls by random chance

#

so the algorithm explored literally everything else before pathing through them

#

(they are a big, but finite cost to traverse)

wide totem
echo fern
#

pathing from bottom left to bottom right through a random maze

#

here's a way faster-terminating one

#

here it had to go through one wall early on

wide totem
#

lol

echo fern
#

now writing a 64x64 one where it goes through zero walls

#

I really should figure out why writing frames into a gif is so slow lol

#

maybe switch to apng or something

#

oh, I wonder if that's because I didn't buffer the writing, lol

stone glade
echo fern
#

@unreal sigil this is what you've done to me

echo fern
#

I think it might be writing slower than the gif is showing, lol

bright leaf
# echo fern

now apply it to a robot arm motion planning problem

unreal sigil
#

nice

echo fern
#

profiling Rust under Windows is a pain

#

time to load up MSVS 2019 to figure out what's so slow

#

it's all the gif writing

#

as expected

#

but why

#

W H A T

#

why does creating a gif require creating and training neural networks

#

what the fuck

#

pallete reduction

#

it's using neural networks for pallete reduction

#

to write a goddamn gif

idle comet
#

ohwhat?

#

that is

#

scary

solemn panther
#

๐Ÿ˜ถ

idle comet
#

like, scary someone would come up with that idea

echo fern
#
/// Creates a frame from pixels in RGBA format.
    ///
    /// `speed` is a value in the range [1, 30].
    /// The higher the value the faster it runs at the cost of image quality.
    /// A `speed` of 10 is a good compromise between speed and quality.
    ///
    /// This is a lossy method. The `gif` format does not support arbitrary alpha but only a 1-bit
    /// transparency mask per pixel. Any non-zero alpha value will be interpreted as a fully opaque
    /// pixel. Additionally, only 256 colors can appear in a single frame. The palette will be
    /// reduced by the NeuQuant algorithm if necessary. Different frames have independent palettes.
#

hmm

idle comet
#

is that like a dependency you're using?

echo fern
#

it's image

#

hmm, let's see what happens if I lower the speed

#

oh, lol, default speed is 1

#

maybe... 10?

proper python
#

hold on

#

so that's only for compression?

#

you should be able to disable it

#

actually, that shouldn't even be a problem

#

if you can pretrain the neural network

idle comet
#

when the init call literally clears the network

languid osprey
#

Lol

#

Hey

echo fern
#

okay, I don't see any difference in size from setting the speed to 30

#

which is the max

solemn panther
#

Set 31

#

Is there any check against it?

echo fern
#

yes, actually

#
        assert!(speed >= 1 && speed <= 30, "speed needs to be in the range [1, 30]");
#

(heh, that should have given them a warning to do 1..31.contains(speed) instead)

echo fern
#

oh god why are apngs so much faster

#

argh, not embedding ๐Ÿ˜ฆ

#

this apng took literally seconds to write

#

using a library with basically no docs that I had to read the source of to figure out how it worked, written by a Japanese student who can barely write English

#

and it works way faster than the very-well-developed image's gif support

idle comet
#

rename to .png and it works when you open in browser

echo fern
#

why is the world so scuffed

#

doesn't run in the client for me, but does in browser

idle comet
#

yeah discord client doesnt run them

#

some time ago ppl abused that to hide malicious imagery behind the first frame which encouraged opening in browser

#

while apngs are nice, i have how awfully defined the format is. you have to manually read specific blocks to distinguish from a png.

#

also

#

why not just make a mp4?

echo fern
#

I'm not sure what's a good way to do so with rust

#

the problem with apng is that it looks like I'll have to change the source to edit, say, the framerate

idle comet
#

ah, rust. opencv works flawless in python lol

echo fern
#

it's hardcoded at 3:

    fn write_fc_tl(&mut self, frame: Option<&Frame>) -> APNGResult<()> {
        let mut buf = vec![];
        buf.write_u32::<BigEndian>(self.seq_num)?;
        buf.write_u32::<BigEndian>(frame.and_then(|f| f.width).unwrap_or(self.config.width))?;
        buf.write_u32::<BigEndian>(frame.and_then(|f| f.height).unwrap_or(self.config.height))?;
        buf.write_u32::<BigEndian>(frame.and_then(|f| f.offset_x).unwrap_or(0))?;
        buf.write_u32::<BigEndian>(frame.and_then(|f| f.offset_y).unwrap_or(0))?;
        buf.write_u16::<BigEndian>(frame.and_then(|f| f.delay_num).unwrap_or(1))?;
        buf.write_u16::<BigEndian>(frame.and_then(|f| f.delay_den).unwrap_or(3))?;
idle comet
#

you could just write images and then call ffmpeg in a subprocess

echo fern
#

these 1 3 are

   20    delay_num             (unsigned short) Frame delay fraction numerator
   22    delay_den             (unsigned short) Frame delay fraction denominator

according to the specification

idle comet
#

or maybe there are ffmpeg bindings

echo fern
#

there are

#

but they have 0 docs

#

and I don't really get how to send frames into the stream created by them

echo fern
idle comet
echo fern
#

heh, same

idle comet
#

seems simple enough pub fn write(&mut self, image: &Mat) -> Result<()>

#

(i say with almost 0 knowledge of rust)

thorn eagle
#

x = msgbox("is awesome",0+64,"Python")

thorn eagle
#

You all = y'all we all = pydis_off_topeek

full marlin
#

@thorn eagle found this pretty funny

thorn eagle
#

w'all

#

yup

jovial island
#

I'm thinking TS is more a subset of JS since TS can be converted to valid JS

#

Or at the very least, none of them is sub or super

shadow elk
#

yeah

#

anything that's valid syntax in JS is valid TS

#

and if you turn off type checking (that's possible), it will compile to the equivalent JS

hazy laurel
#

some only allow for 3 letter extensions

#

that's why we've got jpg

#

up to 3 letter, I mean

limber pollen
#

Since when?

#

Took a while but I might actually be motivated to write Discord bots now

unreal sigil
#

since when what

limber pollen
#

The table of contents

unreal sigil
#

Fair while I believe

#

the update was like

#

at least several months ago I think

#

Wasn't the table of contents always there?

limber pollen
#

I don't remember it being that nice though

unreal sigil
#

Ah yeah they did change things visually and whatnot a few months ago

#

and changed up some other stuff

waxen zodiac
#

I was looking around at the Discord modules and they don't seem very organized.

neat light
#

I don't like how everything's on one page tbh

hazy laurel
#

Would love if more docs looked like the Rust docs

#

Well, like the book I mean

odd sphinx
#

ikr

tranquil ridge
#

best docs

jovial island
#

.topic

#

.topic

rustic harborBOT
#
**If you could have any superpower, what would it be?**

Suggest more topics here!

lucid osprey
#

invisibility.

jovial island
#

to rob stuff?

lucid osprey
#

Naw.

#

it'd just be cool.

sinful sun
#

To tickle random people in the street

lucid osprey
#

teleportation sounds cool.

jovial island
#

upsidedown in Australia

odd sphinx
severe trout
#

well... tbf there are some nice python docs too

#

but the official site doesn't even have dark mode lemon_sentimental

echo fern
#

the rust book? it does.

severe trout
#

python official site

echo fern
#

ah

severe trout
#

and.... java and c++ official docs are.... lemon_cut

waxen zodiac
#

There are dark-mode browser add-ons.

#

Make it dark yourself.

echo fern
#

dark reader is dope

waxen zodiac
#

I haven't tried dark reader. Honestly I forget reader is an option most of the time.

echo fern
#

nah, no relation to reader mode

#

it's just the name of an extension

hazy laurel
#

tbh I don't like dark reader

#

it makes normal pages look weird

#

like Google, for example

severe trout
#

lol

#

dark reader only has contrast, sepia, brightness

#

oh and grayscale too

#

i can't make them blu-ish lemon_sentimental

waxen zodiac
#

I seem to remember an extension that let you enforce your own stylesheets on sites.

#

Maybe I am misremembering though.

severe trout
#

but yeah, dark reader is much easier to use

#

you don't need to make your own css

waxen zodiac
#

Neat.

#

Dark Reader doesn't appear to work on internal Firefox pages though.

#

I keep a task manager tab pinned as first tab and that is blinding

median blade
#

Reload the page maybe

waxen zodiac
#

no dice

#

no worries

#

alt+shift+d is an extension I do not have

#

but I opened a new tab with about:performance and it didn't work there.

#

I imagine the internal pages work differently.

severe trout
waxen zodiac
#

oh I see. sorry

jovial island
#

.topic

rustic harborBOT
#
**What is your favourite holiday?**

Suggest more topics here!

jovial island
waxen zodiac
#

haha that shortcut bugged out.

jovial island
jovial island
#

For better or for worse

echo fern
#
memory allocation of 1048576 bytes failed
error: process didn't exit successfully: `target\release\algorithm_visualisation.exe` (exit code: 0xc0000005, STATUS_ACCESS_VIOLATION)

๐Ÿ˜ฆ

#

also, I think my viewer can't open 15-MB apngs lol

#

nevertheless, this works if you open it in browser

tranquil ridge
#

you making qrcode gen

echo fern
#

lol

tranquil ridge
#

hmm nvm that doesnt look like one i think

echo fern
#

open the original in browser

tranquil ridge
#

ohh path find visualization

#

nice

echo fern
#

the dijksta one got me a memory error

tranquil ridge
#

that maze looks like total pain though

echo fern
#

since I'm holding all the frames in memory before writing them

#

and that takes, uhh

#

some work

hazy laurel
echo fern
#

oh no the frog is spreading

median blade
#

Ye

echo fern
#

run, you fools

#

E X P A N D F R O G

hazy laurel
#

it looked like that one :peepoLeave: emoji or whatever

#

but... red

echo fern
median blade
#

D:

echo fern
#

there are some problems with storing all the frames before writing them

#

it's about a megabyte per frame

hazy laurel
#

lol that almost looks like a phone number

jovial island
#

Call it

echo fern
#

open in browser to see the animation

hazy laurel
#

575 is one of the area codes in our state

echo fern
#

2.9GB for 2900 steps ๐Ÿ˜ฉ

#

still better than the apocalyptically slow gif

#

but I should switch to a video or something

dusky cliff
#

what

#

is each frame

#

like

#

1 mb

#

isn't it

echo fern
#

yup

#

but then they all get into a 15MB apng

#

magic

#

lemme convert them to a mp4 with ffmpeg really fast lol

jovial island
#

lemme convert them to a mp4 with ffmpeg really fast lol

dusky cliff
#

?

halcyon tiger
#

Hi @bold dove

daring jay
#

Not using Hello World smh

echo fern
#

something magical is happenning

#

now as an mp4 it's even smaller

daring jay
#

Ooh, nice

halcyon tiger
#

@bold dove hasnt replied to me for 2 months

jovial island
#

wow

echo fern
#

argh, I don't get ffmpeg

halcyon tiger
echo fern
#
ffmpeg -i "progress0.apng" -f apng -i progress1.apng -filter_complex "[0:v][1:v]vstack=inputs=2[res];[res]fps=10" output.mp4

let's see if this works...

#

wtf, was it 3 frames per frame earlier or something?..

#

ooooh

#

fps duplicates/drops frames

#

it doesn't change the duration of the video

#

oh, I hate this a lot

#

how do I actualy speed it up then?..

#

and if I do setpts, it instead skips frames ๐Ÿ˜ฉ

#

there we go

#

uhh, lemme change that to hstack...

#

Now behold.

hazy laurel
echo fern
#

first is A*, second is dijkstra

echo fern
odd sphinx
jovial island
#

no?

echo fern
odd sphinx
#

im on phone and its really weird

echo fern
#

I reposted it because hstack is probably easier to view than vstack for most

odd sphinx
#

its glitching out

#

like

echo fern
sinful sun
#

Doesnt load for me haha

#

still waiting

echo fern
#

it's just an mp4, wtf

odd sphinx
#

i downloaded it to play on my phone locally

echo fern
#

okay, lemme go an avi

odd sphinx
#

and it says unsupported file type

#

something's up

#

lemme open wit vlc

#

oh i don't have vlc

#

lo

echo fern
#

argh

#

not embedding ๐Ÿ˜ฆ

#

let's go with, uhh

#

I dunno

#

mkv?

keen burrow
#

mkv doesn't embed either

echo fern
#

doesn't avi?

#

I recall doing that before

keen burrow
#

!wl list file_formats

clever salmonBOT
#
Whitelisted File Formats (14 total)

โ€ข .flac - embeddable audio format
โ€ข .gif
โ€ข .jpeg
โ€ข .jpg
โ€ข .m4a
โ€ข .mov
โ€ข .mp3
โ€ข .mp4
โ€ข .mpg
โ€ข .ogg
โ€ข .png
โ€ข .wav
โ€ข .webm
โ€ข .webp

keen burrow
#

All of those embed

echo fern
#

nice

odd sphinx
#

ok this one works @echo fern

echo fern
#

webp incoming, I guess

odd sphinx
#

so the right side one is Dijkstra's?

echo fern
#

frame= 1495 fps= 44 q=-0.0 size= 0kB time=00:01:39.60 bitrate= 0.0kbits/s speed=2.95x
0kB for 1495 frames ๐Ÿ‹

#

(really, it means "less than 128")

#

4.7MB

#

not terrible, but worse than mp4

#

also, lmao, discord can't load it for me

#

so much for embeddable

#

okay, so now I need to figure out how rust-ffmpeg works

#

that's going to be terrible, I can tell

#

there are basically no docs, and only a few examples

median blade
#

e

echo fern
#

I think I'd need to basically dig through docs for the C API of ffmpeg

#

that's impressively horrible

#

maybe opencv for rust is nicer?..

dusky cliff
#

djikstra gets a D

odd sphinx
#

bruh

echo fern
#

it feels like both are bad tbh

#

I dunno if I can do an even more aggressive heuristic function

#

this one is eucliden distance

#

oh boii it's happening

elder verge
#

is it allowed to logout of discord using js code in the dev console?

hardy prairie
#

gusy

#

guys

#

i have a question

#

for any of you who know a tiny bit of html

#

you know the a tag and its href attribute

#

do you say href as "aych-ref" or "her-ef"

jovial island
#

i say it as aych-are-eee-ef

upbeat sandal
#

AbstractNonJavaNameInterface

languid osprey
#

pfft

wide totem
#

@upbeat sandal is there a way to figure out the function that called a function

upbeat sandal
wide totem
#

I was thinking

#

!d inspect.stack

clever salmonBOT
#
inspect.stack(context=1)```
Return a list of frame records for the callerโ€™s stack. The first entry in the returned list represents the caller; the last entry represents the outermost call on the stack.

Changed in version 3.5: A list of [named tuples](../glossary.html#term-named-tuple) `FrameInfo(frame, filename, lineno, function, code_context, index)` is returned.
wide totem
#

But not sure how to convert that to a function object

upbeat sandal
#

!e

import inspect
from pprint import pprint

def b():
    print('b called')
    pprint(inspect.stack())

def a():
    print('a called')
    b()

a()
clever salmonBOT
#

@upbeat sandal :white_check_mark: Your eval job has completed with return code 0.

001 | a called
002 | b called
003 | [FrameInfo(frame=<frame at 0x7fbab858ee40, file '<string>', line 6, code b>, filename='<string>', lineno=6, function='b', code_context=None, index=None),
004 |  FrameInfo(frame=<frame at 0x7fbab858e580, file '<string>', line 10, code a>, filename='<string>', lineno=10, function='a', code_context=None, index=None),
005 |  FrameInfo(frame=<frame at 0x7fbab858e740, file '<string>', line 12, code <module>>, filename='<string>', lineno=12, function='<module>', code_context=None, index=None)]
upbeat sandal
#

@wide totem so you're trying to retrieve the function that called the current function?

wide totem
#

Yeah

#

That gets the named tuples of frame info

upbeat sandal
#

looks like it would be inspect.stack()[1].function, though that returns the name of the function and not the function itself

#

so you'd have to look up the function in the symbol table

wide totem
#

What is the symbol table?

#

Also what if one has two functions of the same name
Like in cogs or classes

upbeat sandal
#

brb

upbeat sandal
upbeat sandal
wide totem
#

Docs?

upbeat sandal
#

!e

import inspect
from pprint import pprint

def b():
    print('b called')
    pprint(globals())

def a():
    print('a called')
    b()

a()
clever salmonBOT
#

@upbeat sandal :white_check_mark: Your eval job has completed with return code 0.

001 | a called
002 | b called
003 | {'__annotations__': {},
004 |  '__builtins__': <module 'builtins' (built-in)>,
005 |  '__doc__': None,
006 |  '__loader__': <class '_frozen_importlib.BuiltinImporter'>,
007 |  '__name__': '__main__',
008 |  '__package__': None,
009 |  '__spec__': None,
010 |  'a': <function a at 0x7fc62ce62f70>,
011 |  'b': <function b at 0x7fc62d0bb040>,
... (truncated - too many lines)

Full output: https://paste.pythondiscord.com/tedocunuyo.txt?noredirect

upbeat sandal
#

globals() returns the global symbol table.

echo fern
#

I've given up

#

and implemented it via writing every frame as a png into a temp folder

#

and then making ffmpeg make me a video from them ๐Ÿ˜”

#

but nevertheless, it works now!

#

1 MB video for a 2800-step pathfinding

clever salmonBOT
#

You are not allowed to use that command here. Please use the #bot-commands channel instead.

wide totem
#

Fffffff

#

@upbeat sandal won't work it doesn't show the class name smh

radiant socket
#

AbstractSingletonProxyFactoryBean

jovial island
#

is black a good linter?

wide totem
#

Yeah

jovial island
#

ok

viral hare
#

think black tries to make changes

jovial island
#

running it

viral hare
#

while flake8 only flags

sinful sun
#

Black is a formatter

jovial island
#

damn its good

wide totem
#

It gets everything that Flake8 complains about

jovial island
#

nice

wide totem
#

@viral hare because Flake8 and black are two different things

#

Flake8 is actually linter

#

Black is a formatter

jovial island
#

except line lengths though

wide totem
jovial island
#

ok

sinful sun
#

You can customise black to be pep8 compliant with line lengths

#

I think by default line length is 88

jovial island
#

ok

#

yeah i did

echo fern
jovial island
#

@echo fern what is this?

echo fern
#

a* and dijkstra

#

pathing from bottom left to top right

jovial island
#

wut dat

echo fern
#

pathfinding (graph search, more generally) algorithms

jovial island
#

ok

echo fern
#

bigg search

wide totem
#

I USE TABS

radiant socket
#

@echo fern that's 2 mazes side by side?

#

left dijkrsrtnrseyaokvceaia's and right bfs?

#

oh you said what you used

#

w<

echo fern
warped osprey
#

what are your guys favorite mobile games/genres

median blade
#

Reject mobiles, return to PC's

jovial island
undone wharf
#

what

odd sphinx
#

today i learnt that discord renders gifs while im in the settings page

jovial island
#

.topi

#

.topic

rustic harborBOT
#
**Do you speak a language other than English?**

Suggest more topics here!

jovial island
#

bee

tribal tinsel
jovial island
#

Yes true

tribal tinsel
#

I had some closeup photos from our beehives as well but I'd probably need to spoiler them and it's easier to do that on computer

#

Hm, I also have photos and short videos of a bee on my hand. Bee fell into a pool and I kept it on my hand when it was cleaning itself from moisture

tribal tinsel
#

As I said, I'd need to spoiler them and it's not easy to do on the phone. Some people feel uncomfortable with insects, and closeups are even more of a trigger

tawdry salmon
#

the channel name in cringing me out cringe

tribal tinsel
#

We have two hives since last year. But we got them late and didn't get any honey for ourselves

tribal tinsel
tawdry salmon
#

That's so annoying

#

That's the last thing I'll want to do

tribal tinsel
#

Well, obviously we got them for something XD

tribal tinsel
#

Because the spaces vs tabs isn't about pressing multiple times vs pressing once. It's about copying code and stuff. Tabs don't always show in browser etc, especially multiple ones. But their width can be configured however the programmer wants

jovial island
tribal tinsel
#

The only time when I actually press space multiple times is when I write code manually on discord or SO

severe trout
tribal tinsel
severe trout
#

oh

#

it was just unicode trickery?

#

:(

tribal tinsel
#

We once covered it in #esoteric-python and once someone trolled in #bot-commands that "their python broke" by using zero-width character for similar stuff in strings

severe trout
#

yeah ik

undone wharf
#

thx 4 suggesting omicron

#

and that was not a 0 width char where there were spaces

hazy laurel
#

oh no. this again

undone wharf
#

it was a space and alt+255

hazy laurel
#

I have PTSD from that one program I wrote

undone wharf
hazy laurel
undone wharf
pliant trench
#

should every function have a definition in haskell?

hazy laurel
#

Basically this replaces with ASCII characters with characters that look like ASCII characters

undone wharf
#

lol

hazy laurel
#

it was... really buggy and this code kind of works

undone wharf
#

it curses things, yes?

hazy laurel
#
async def mะฐแŽฅีผ():
    with open("input.txt", "r") as f:
        t = ๊ฎฏ๐Œ‰าฝะฐีผ(f)
    าฝีผ๐™ฉ๊ฎ๐‘ฃƒาฝ๊ฎช = ๐‘ฃƒ๐‘ฃ๐“ช๐Œ‰ะฐ๐”ฑาฝ(t)
    ๊ฎฏแ‚ะฐ๊ฎ๏นmะฐั€ = ึาฝีผาฝ๊ฎะฐ๐“ฝาฝ๏นmะฐั€(าฝีผ๐™ฉ๊ฎ๐‘ฃƒาฝ๊ฎช)

    with open("output.json", "w+") as f:
        json.dump(๊ฎฏแ‚ะฐ๊ฎ๏นmะฐั€, f, indent=4)

    with open("mod.txt", "w+") as f:
        with open("original.txt", "r") as o:
            ๊ฎาฝ๐‘ˆ๐‘ฃ˜๐Œ‰๐™ฉ = mแ€๊“’แŽฅึ„๐‘ฃœ(o, ๊ฎฏแ‚ะฐ๊ฎ๏นmะฐั€)
        print(๊ฎาฝ๐‘ˆ๐‘ฃ˜๐Œ‰๐™ฉ)
        f.write(๊ฎาฝ๐‘ˆ๐‘ฃ˜๐Œ‰๐™ฉ)
#

yes. lol

undone wharf
#

and is cursed itself, yes?

hazy laurel
#

yep

undone wharf
#

lol

#

it cursed itself

hazy laurel
#

it was a headache getting it to work

undone wharf
#

_ _

undone wharf
hazy laurel
#

Did you know you can combine emoji

undone wharf
#

wdym

hazy laurel
#

โ€
^ This is called a Zero Width Joiner (ZWJ)

undone wharf
#

aha

vital nimbus
#

_ _

#

spaces

undone wharf
#

write this in chat: _ _

hazy laurel
#

โ€๐Ÿฆฒ๐Ÿ‘จ

#

oh I broke it

vital nimbus
#

helloโ€ซworld โ€ซ

#

โ€ซ

undone wharf
#

how

hazy laurel
#

๐Ÿ‘จโ€๐Ÿฆฒ

undone wharf
vital nimbus
#

use dis character

undone wharf
#

lolโ€ซkek

#

lolโ€ซ

#

kek

#

doesnt work

vital nimbus
#

edit message, type first bit, paste character, write second bit, do space, do character again, finish!

#

helloโ€ซworld โ€ซ

hazy laurel
#

oh, I finally did it

undone wharf
#

lolโ€ซfghjโ€ซssdvfb

odd sphinx
#

nice โ€ซ one โ€ซ

#

this is very interesting

tribal tinsel
#

It's a right-to-left character

#

Isn't it?

vital nimbus
#

mhm

odd sphinx
#

yes

undone wharf
#

dunno

vital nimbus
#

RIGHT-TO-LEFT EMBEDDING

#

funny in general use

hazy laurel
#

๐Ÿ‘จ + โ€ + ๐Ÿฆฒ = ๐Ÿ‘จโ€๐Ÿฆฒ

#

that took ages

tribal tinsel
#

Yep. And the gender-neutral emojis were supposed to be here ages ago but emoji makers just decided to leave non-specified person emojis as male. Because apparently default masculine doesn't only apply to some languages but to pictograms as well :x

hazy laurel
#

\๐Ÿง‘

#

emoji look too tiny :(

tribal tinsel
#

The skin-coloured person emojis are also from combining characters.

hazy laurel
#

๐Ÿง‘๐Ÿป

#

oh that looks a little awkward

#

๐Ÿ‘Œ๐Ÿป

undone wharf
#

๐Ÿ‡บ๐Ÿ‡ฆ

#

oh that looks like my country

#

๐Ÿ‘Œ

hazy laurel
#

You can also combine regional indicators for flags lol

undone wharf
#

yes

#

i knew that

odd sphinx
#

how?

hazy laurel
#

๐Ÿ‡บ๐Ÿ‡ธ

undone wharf
#

like there are separate regional indicator lretters

hazy laurel
#

U + S

undone wharf
#

reg indicator U + reg indicator S

hazy laurel
#

:regional_indicator_u: :regional_indicator_s: without the space

odd sphinx
#

๐Ÿ‡บ๐Ÿ‡ธ

#

oh

#

damn

#

interesting

hazy laurel
#

lol

#

If you're on Linux, you also have access to the Compose Key... Not sure how it works on other OS's

undone wharf
odd sphinx
#

no spaces

undone wharf
#

๐Ÿ‡บ๐Ÿ‡ฆ

severe trout
#

๐Ÿ‡บ๐Ÿ‡ธ

odd sphinx
#

yes

undone wharf
#

i know

hazy laurel
#

โ‰ 

severe trout
#

๐Ÿ‡บ๐Ÿ‡ธ

hazy laurel
#

lol I need to figure out fonts

#

โ‰  still looks like =/ to me

odd sphinx
#

รพ

undone wharf
severe trout
#

put it in a strikethrough

odd sphinx
#

backslash?

severe trout
#

:)

undone wharf
#

-=-

hazy laurel
#

__ = ยฏ somehow

undone wharf
#

=

tribal tinsel
#

๐Ÿ‡ต๐Ÿ‡ฑ

#

But I prefer

#

๐Ÿณ๏ธโ€๐ŸŒˆ

undone wharf
#

๐Ÿ‡ต๐Ÿ‡ฑ

#

pl

odd sphinx
#

poland

lament kestrel
#

๐Ÿดโ€โ˜ ๏ธ

hazy laurel
#

_-ยฏ

lament kestrel
#

How

tribal tinsel
#

And flag_bisexual flag_pansexual flag_transgender

odd sphinx
#

๐Ÿ‡ฎ๐Ÿ‡ณ

#

hm

#

interestng

undone wharf
#

๐Ÿ‡ฎ ๐Ÿ‡ณ

#

๐Ÿ‡ฎ๐Ÿ‡ณ

odd sphinx
#

๐Ÿ‡ฎ๐Ÿ‡ท

lament kestrel
#

๐Ÿ‡ฎ ๐Ÿ‡ณ

undone wharf
#

dia

odd sphinx
#

whats the code for ireland

#

?

hazy laurel
#

\๐Ÿ’ต

tribal tinsel
odd sphinx
#

oh

lament kestrel
#

๐Ÿ‡ฎ ๐Ÿ‡ณ

#

?

odd sphinx
#

if u put a backslash before the characters

tribal tinsel
hazy laurel
#

oh wow. I can make arrows with the compose key too

#

โ†“โ†‘โ†’โ†

tranquil ridge
tribal tinsel
odd sphinx
#

oh ie

tranquil ridge
#

:(((

#

tell

tribal tinsel
tranquil ridge
#

hmmm

hazy laurel
#

ยฑ

#

Man, I'm learning too many cool symbols

tranquil ridge
hazy laurel
#

ยท

odd sphinx
tribal tinsel
tranquil ridge
#

ooh, wait i dont understand what this means

tranquil ridge
odd sphinx
#

this:

#

โ€ซ

#

^^

tranquil ridge
#

well right to left from what it seems

odd sphinx
#

yes

tranquil ridge
#

lol

#

\U+202B

#

eh google showed this

#

now how do i use it

hazy laurel
#

._.

odd sphinx
#

paste

tranquil ridge
#

i cant copy

hazy laurel
#

viman you're on Linux, right

tranquil ridge
#

yes

#

!charinfo U+202B

clever salmonBOT
#

You are not allowed to use that command here. Please use the #bot-commands channel instead.

odd sphinx
#

oof

hazy laurel
#

ctrl + shift + u, then type 202B

tranquil ridge
#

oh this exists

#

โ€ซ

#

damn

#

thanks

hazy laurel
#

โ€ซ

tranquil ridge
#

thats hella useful

hazy laurel
#

ikr

tranquil ridge
#

wow so if i look up unicode points

#

i have the power for every character

hazy laurel
#

yep

tranquil ridge
hazy laurel
#

You should also set up your compose key

#

what's your DE?

tranquil ridge
#

WM, i3

hazy laurel
#

uh. but your DE

#

what's neofetch show

tranquil ridge
#

i dont use DE

hazy laurel
#

welp

#

what was the base DE

tranquil ridge
#

xfce

#

i still have it

#

but i dont use it

#

i dont want to either

hazy laurel
#

welp. idk if you're able to set up the compose key

#

Follow this, maybe

tranquil ridge
#

ok โ€ซ later

hazy laurel
#

lol

tranquil ridge
#

ghost ping? >:(

hazy laurel
#

where

tranquil ridge
#

someone pinged me

keen burrow
#

doesn't seem like it ยฏ_(ใƒ„)_/ยฏ

tranquil ridge
hazy laurel
#

:O I can do fractions

#

ยฝ

tranquil ridge
#

:OO

#

โˆš2

jovial island
tranquil ridge
hazy laurel
#

oh yes, that's neat

odd sphinx
#

โ˜ƒ

tranquil ridge
#

sad

hazy laurel
#

\โ˜ƒ

jovial island
#

Yes

odd sphinx
#

\โ˜ƒ๏ธ

jovial island
#

Press alt and f4 for free spiff coin

odd sphinx
#

no

jovial island
#

? Why?

#

.help

rustic harborBOT
#
Command Help

EasterRiddle
.riddle
Gives a random riddle, then provides 2 hints at certain intervals before revealing the answer.

EggDecorating
.eggdecorate [colours...]
Picks a random egg design and decorates it using the given colours.

EggheadQuiz
.eggquiz
Gives a random quiz question, waits 30 seconds and then outputs the answer.

EightBitify
.8bitify
Pixelates your avatar and changes the palette to an 8bit one.

Emojis
.emoji <emoji>
A group of commands related to emojis.

jovial island
#

.riddle

rustic harborBOT
#
What kind of jewelry do rabbits wear?

You have 10 seconds before the first hint.

#
Here's a hint: They can eat it too!
jovial island
#

none

rustic harborBOT
#
Here's a hint: 14 ___ gold!
#

Nobody got it right...

The answer is: 14 carrot gold!
hazy laurel
#

._.

#

.riddle

rustic harborBOT
#
What kind of bunny can't hop?

You have 10 seconds before the first hint.

hazy laurel
#

oh lord

rustic harborBOT
#
Here's a hint: Might melt in the sun!
#
Here's a hint: Fragile and yummy!
#

Nobody got it right...

The answer is: A chocolate one!
hazy laurel
#

what

#

Who in their right mind would guess a chocolate bunny

tranquil ridge
hazy laurel
#

what the heck is with the easter stuff

jovial island
#

.riddle

rustic harborBOT
#
Why was the little girl sad after the race?

You have 10 seconds before the first hint.

#
Here's a hint: 2nd place?!
jovial island
#

She lost

rustic harborBOT
#
Here's a hint: Who beat her?!
jovial island
#

Died

#

me

rustic harborBOT
#

Nobody got it right...

The answer is: Because an egg beater!
jovial island
#

?

hazy laurel
#

my god.

#

why

#

that'd be a great otn ngl. "#ot2-who-beat-her"

crude trail
#

I am also not happy with the current #ot name:
Suggestion: #ot2-intending-with-tabs-but-IDE-changes-them-to-spaces-automatically

jovial island
#

.battleship

lament kestrel
#

#ot2-intenting-with-newlines

crude trail
lament kestrel
#

Kk
Indentation with periods

atomic mantle
#

@ankith

#

WHERE IS HE

rustic harborBOT
#

Game Over! @hazy laurel won against @jovial island

#

TheHive#3899's Board:
:stop_button::regional_indicator_a::regional_indicator_b::regional_indicator_c::regional_indicator_d::regional_indicator_e::regional_indicator_f::regional_indicator_g::regional_indicator_h::regional_indicator_i::regional_indicator_j:
:one::fire::fire::fire::fire::fire::fire::anger::ocean::fire::ocean:
:two::fire::ocean::ocean::ocean::fire::fire::fire::anger::fire::anger:
:three::fire::anger::ocean::ocean::ocean::ocean::anger::ocean::fire::ocean:
:four::anger::ocean::ocean::anger::ocean::ocean::ocean::ocean::fire::anger:
:five::anger::ocean::ocean::ocean::ocean::anger::ocean::ocean::ocean::ocean:
:six::fire::anger::ocean::ocean::ocean::ocean::ocean::ocean::ocean::anger:
:seven::fire::ocean::ocean::anger::ocean::ocean::ocean::ocean::ocean::ocean:
:eight::anger::ocean::ocean::ocean::ocean::ocean::ocean::anger::ocean::anger:
:nine::ocean::ocean::ocean::ocean::ocean::ocean::ocean::ocean::ocean::ocean:
:keycap_ten::anger::ocean::anger::ocean::anger::ocean::ocean::anger::ocean::anger:

#

Cypheriel#3837's Board:
:stop_button::regional_indicator_a::regional_indicator_b::regional_indicator_c::regional_indicator_d::regional_indicator_e::regional_indicator_f::regional_indicator_g::regional_indicator_h::regional_indicator_i::regional_indicator_j:
:one::ocean::anger::ocean::anger::ocean::anger::anger::fire::fire::fire:
:two::anger::anger::anger::ocean::ocean::ocean::ocean::anger::ocean::ocean:
:three::ocean::ocean::ocean::ocean::ocean::anger::ocean::ocean::ocean::ocean:
:four::ocean::anger::ship::anger::ocean::ocean::ocean::ocean::ocean::anger:
:five::anger::ocean::ship::ocean::ocean::anger::ocean::anger::ocean::ocean:
:six::ocean::ocean::anger::ocean::anger::ship::ship::ship::ocean::anger:
:seven::ocean::ocean::ocean::anger::ocean::anger::anger::ocean::ocean::ocean:
:eight::ocean::ocean::ocean::anger::fire::fire::fire::ship::ship::anger:
:nine::ocean::ocean::ship::ship::fire::fire::anger::ocean::anger::ocean:
:keycap_ten::ocean::anger::ocean::anger::ocean::anger::anger::ocean::ocean::anger:

hazy laurel
#

:)

jovial island
#

Hey

atomic mantle
#

hj

#

its a me

#

rei

lucid osprey
#

Hi.

lucid osprey