« first day (1789 days earlier)      last day (860 days later) » 

12:11 AM
Just finished day one on advent of code :) Going to sleep. Thanks again!!
W're going in lock down again, so got some time to do some more puzzles ;)
 
12:28 AM
@Adám i forgot the monadic "⌊"
@Adám ⋄2{⍵ ⍺ + ⍺}{⍵ ÷ 2} is a oprerator?
 
@Fmbalbuena
┌─┼──┐     ┌┌┌┌
2 {⍵ ⍺+⍺} {⍵÷2}
 
Hmmm i don't understand how to define a oprerator.
 
1:19 AM
@Adám what was the term (<Alt>F8) mode used for in APL*PLUS?
 
 
2 hours later…
3:04 AM
@Fmbalbuena No it is a 3-train
 
@Fmbalbuena ⍺⍺ and optionally having ⍵⍵
 
3:36 AM
so I was reading <https://xpqz.github.io/learnapl/iteration.html> a bit ago and was confused by the binary search example, so wanted to test. the numbers I'm seeing for linear search are both nothing like his and don't make a lot of sense.
I did randInts ← 100000 ? 100000 and compared execution times of randInts ⍳ 1, 19326, and 46729. the return values of those are 94438, 1001, and 1 respectively. the execution times are 0.13ms, 0.47ms, and 0.12us respectively. can anyone explain what's happening?
 
 
2 hours later…
5:42 AM
⋄ o←{5 ⍺⍺ ⍵} ⋄ +o 4
 
@PyGamer0 9
 
@Fmbalbuena ^ here is a monadic operator
 
6:20 AM
@Fmbalbuena It is floor.
@JeromeIbanes I don't remember. It has been like 15 years :-)
 
 
2 hours later…
8:17 AM
What if A f was {⍺←A ⋄ ⍺ f ⍵}?
 
 
2 hours later…
9:54 AM
@Adám is there regex replace in APL?
 
@Fmbalbuena Yes, ('pattern'⎕R'replacement')'input text'
 
Ok I understood and just replace?
 
You mean without regex, just plain text?
 
Yes
I mean both
 
('pattern'⎕R'replacement'⍠'Regex'0)'input text'
 
9:58 AM
No, I mean "AAAA".replace("AAAA", "calm down")
 
⎕←('AAAA'⎕R'calm down'⍠'Regex'0)'AAAA'
 
@Adám calm down
 
Hmmm ok
 
10:24 AM
⋄('^(.+).*\1$'⎕R'Truthy')'input textinput tex'
 
@Fmbalbuena Truthy
 
@Adám Regex check if there is Matches?
 
@Fmbalbuena If you replace ⎕R with ⎕S you get a list of matches, so then you can simply count them to see if there are any.
 
⋄('^(.+).*\1$'⎕S)'input textinput tex'
 
@Fmbalbuena
SYNTAX ERROR
      ('^(.+).*\1$'⎕S)'input textinput tex'
                   ∧
 
10:28 AM
You still need a return value.
 
⋄('^(.+).*\1$'⎕S'')'input textinput tex'
 
@Fmbalbuena
┌┐
││
└┘
 
⋄ ⍴('l'⎕S'')'hello' ⋄ ⍴('L'⎕S'')'hello'
 
@Adám
2
0
 
⋄ ⎕IO←0 ⋄ 1 2[0]
 
10:32 AM
@PyGamer0 1
 
oh so can you teach me a useful command (I have learned commands in APL that i can't implement in Python 3)
 
@Fmbalbuena which commands you cant implement in python?
 
@PyGamer0 dyadic ⍳
 
Surely, it can be done.
 
^
how does dyadic work?
⋄'Hello'⍳'hi'
 
10:34 AM
@PyGamer0 6 6
 
i can do but i can't implement in Python
 
@PyGamer0 ⎕←'Hello'⍳'hello'
 
@Adám 6 2 3 3 5
 
is it find?
wait i think i know
find but if ⍺ is not found in ⍵ then return 1+≢⍵
 
@Adám > oh so can you teach me a useful command (I have learned commands in APL that i can't implement in Python 3)
 
10:35 AM
@Fmbalbuena You have simply not learned yet.
 
monadic?
 
Yes.
 
monadic ≢ is tally
 
Which, for lists, is almost the same as monadic
 
What is tally?
 
10:36 AM
⋄≢ 1 2 3 4 5
 
@PyGamer0 5
 
Like you counting by drawing lines on a wall.
 
What are the differences between "⍴" and "≢"
 
⋄≢3 3⍴⍳9
 
@PyGamer0 3
 
10:37 AM
@Fmbalbuena Until I teach you multi-dimensional arrays; none.
 
⋄⍴3 3⍴⍳9
 
@PyGamer0 3 3
 
(well, returns a list, and returns a single number.)
@Fmbalbuena OK, I'll teach you a powerful dyadic operator: @
 
⋄≢⍳⍳4
 
@Fmbalbuena 1
 
10:38 AM
@Adám how powerful?
 
@ is called "at" because it substitutes values or apply a function at specific positions.
⋄ (-@2 3)3 1 4 1 5
 
@Adám 3 ¯1 ¯4 1 5
 
This applied - to the subset defined by the indices 2 3
You can also substitute values: ⋄ (10@2 3)3 1 4 1 5
 
@Adám 3 10 10 1 5
 
@Adám do i read that as "negate at indices 2 and 3`
 
10:40 AM
@PyGamer0 Yes, exactly.
 
@Adám so it is an operator?
 
It is.
 
⋄(÷@⍳3)3 1 4 1 5
 
@Fmbalbuena
DOMAIN ERROR
      (÷@⍳3)3 1 4 1 5
        ∧
 
@Adám ^
 
10:42 AM
@Fmbalbuena You need to put a parenthesis around ⍳3
 
why?
if the code reads right
⋄(÷@(⍳3))3 1 4 1 5
 
@Fmbalbuena 0.3333333333 1 0.25 1 5
 
@Adám ^ why?
@Adám pfp changed
 
@Fmbalbuena Because operators bind before functions. So @ "grabs" befor has a chance to apply to 3
@Fmbalbuena Nice. So is APL number 1 favourite now?
 
@Adám oh i forgot to change
done
ok, one more command or task.
@Adám ^
 
10:57 AM
@Fmbalbuena Same as before with @ but if you put a function as the right operand it must return a Boolean list indicating where to apply: ⎕←-@{2|⍵}3 1 4 1 5 9 2
 
@Adám ¯3 ¯1 4 ¯1 ¯5 ¯9 2
 
Notice how this negated the odd numbers.
⎕←-@{⍵>3}3 1 4 1 5 9 2
 
@Adám 3 1 ¯4 1 ¯5 ¯9 2
 
This negated numbers greater than 3.
⋄ '_'@{⍵=' '}'here is some text'
 
@Adám here_is_some_text
 
10:59 AM
⎕←-@{⍵=3}3 1 4 1 5 9 2
 
@Fmbalbuena ¯3 1 4 1 5 9 2
 
⎕←-@{⍵≥3}3 1 4 1 5 9 2
 
@Fmbalbuena ¯3 1 ¯4 1 ¯5 ¯9 2
 
11:23 AM
@Adám Print every case of a word
('ab' should return 'ab' 'aB' 'Ab' 'AB')
 
Just succeeded in day2, first part of Advent of Code. :)
https://adventofcode.com/2021/day/2
Could you please comment on my solution? Could it be done more efficiently?

data←⊃⎕nget'inputDay2.txt'
f←+/⍎¨(¯8⌽'forward'⍷data)/data
d←+/⍎¨(¯5⌽'down'⍷data)/data
u←+/⍎¨(¯3⌽'up'⍷data)/data
⎕←f×d-u
 
@Fmbalbuena ⋄ {⎕C¨∘⍵¨,⌿¯1*2⊥⍣¯1⊢¯1+⍳2*≢⍵} 'Hey'
 
@Adám
┌───┬───┬───┬───┬───┬───┬───┬───┐
│HEY│HEy│HeY│Hey│hEY│hEy│heY│hey│
└───┴───┴───┴───┴───┴───┴───┴───┘
 
Join with space?
 
@Adám wow!
 
11:35 AM
@Fmbalbuena ⋄ {1↓∊' ',¨⍵} 'hello' 'there' 'world'
 
@Adám hello there world
 
is "∊" useful?
 
Yes.
 
what does "e" do?
 
It makes one vector of each of the elements of an array
 
11:41 AM
@Richard ?
 
'one' 'two'
'three' 'Four' becomes 'onetwothreefour'
 
in this case ' hello' ' there' ' world' becomes ' hello there world'
 
and ¨
 
¨ means "do this for each member". So add a space to the beginning of each string in this case
 
 
2 hours later…
1:17 PM
@Fmbalbuena i think this is it:Try it online!
 
1:36 PM
@Richard Another fun approach: ⎕← {¯1↓¨⊃{⍵∘.,⍨¯1 1⎕C¨⍺}/⍵,0} 'Hey'
 
@Adám
┌───┬───┐
│hey│heY│
├───┼───┤
│hEy│hEY│
└───┴───┘
┌───┬───┐
│Hey│HeY│
├───┼───┤
│HEy│HEY│
└───┴───┘
 
1:49 PM
ow man i'm such a novice... Impressive Adam.
It's just as starting learning to read; I am still at the level that I can read the letters but don't recognise the words :)
what is the Quad C?
 
Case-conversion.
A rule of thumb is that all single-letter system names have something to do with text:
A: Alphabet
Á: Áccented letters
C: Case-conversion
D: Digits
R: Replace
S: Search
 
:) and 1 is upper and -1 is lower
and what does the alfa refer to in the inner dfns? left argument in the outer dfns?
 
CMC: Convert all zeros in a binary array to negative one. Ex: 0 1 1 0 0 -> ¯1 1 1 ¯1 ¯1
 
@PyGamer0 ¯1@~ (doubt there's a 3)
 
smart
 
2:07 PM
@Richard The left argument (as always). That inner dfn is used in the reduction.
@PyGamer0 ¯1*~
 
@Adám hm another 4 byter
 
It is on APLcart, but I'll add some keywords.
 
@PyGamer0 ((0=vector)/vector)←¯1
 
@Richard 0=~
Announcement: APL Campfire in four hours, featuring Charles Brenner.
 
what is the i beam
 
2:14 PM
For?
@PyGamer0 Wait, are you asking what the I-beam does?
 
@Adám this is an alternative solution to @PyGamer0 question?
and is the right arrow intended?
 
@Richard No, I'm telling you that you can change your 0= into ~
 
:)
yes, thats better!
 
@Adám yes
 
2:23 PM
system related?
and its experimental?
 
Yeah, all sorts of stuff. Click the (?) link for a list.
 
21	is the syntax identifier for "character constant"
19	is the syntax identifier for "primitive"
3	is the syntax identifier for "white space"
34	is the syntax identifier for "local name"
7	is the syntax identifier for "global name"
23	is the syntax identifier for "idiom"
^ someone can write an apl syntax highlighter o_o
 
Already exists.
Also, there are I-beams for that :-)
 
yeah i saw that (i copied the text from the i beam example)
@Adám pygments apl lexer o_o
gives me ideas
 
2:52 PM
@PyGamer0 Basic functionality:
 SC←{
     (n c)←2 3⊃¨⊂↓⍉201⌶⍬
     i←n∘⍳¨200⌶src
     ∊¨i{'<span class="',(¯4↓3↓⎕XML 0 '_'(⍺⊃c)),'">',⍵,'</class>'}¨¨⍵
 }
      ↑SC 'foo←{' '⍵ ⍵' '}'
<span class="MINI_DFNNAME">f</class><span class="MINI_DFNNAME">o</class><span class="MINI_DFNNAME">o</class><span class="MINI_PRIMITIVE">←</class><span class="{">{</class>
<span class="MINI_META">⍵</class><span class="MINI_WHITE"> </class><span class="MINI_META">⍵</class>
<span class="}">}</class>
It should of course be enhanced to use a single span for consecutive characters of the same class, but you get the idea.
 
@adam do we have another meeting today?
 
Yes, there's the APL Campfire.
 
great
 
@Adám was the APL logo decided?
where can i watch the BAA webinar?
 
@PyGamer0 No. People have until the end of the calendar year to submit designs/concepts/ideas to apl.wiki/APL_logo
@PyGamer0 They need a volunteer to edit the videos before publishing.
 
3:00 PM
@Adám oh ok
 
3:18 PM
@Adám which TZ are you in?
 
utc i think
 
GMT. (UTC is not a time zone.)
 
utc+0?
@Adám o_o what
 
UTC +/- 00:00 is a time zone
 
then whats utc?
 
4:13 PM
Just finished day 2 first part (AoC). Parsing and formatting the input costs most of the time, not the puzzle itself
Sorry, ment day 3
 
4:26 PM
@Richard Do you publish your solutions?
 
@Richard my parsing was data←⍎¨↑⊃⎕NGET'Day 3.txt'1
 
@Adám ⋄≢'abc' 'def'⋄⍴'abc' 'def'
 
@Fmbalbuena
2
2
 
i don't understand why
 
Why what?
 
4:50 PM
@rak1507 thanks! The 'mix' (↑)is very usefull
 
5:05 PM
@Adám Yes I could. Where? Here in the chat, or elsewhere?
 
5:16 PM
@Richard A lot of people put theirs on GitHub, and then link from apl.wiki/Advent_of_Code
 
5:40 PM
@Adám ah, ok. I'm not very proud of them yet so would like to polish my skills first before sharing them to 'the rest of the world'. Maybe later on.
 
@Richard fair enough - no one will judge you for unpolished solutions though (at least, I hope not or I should remove some of mine)
 
ok. I'll give it a try later on!
 
Campfire about to begin!
 
oh, thanks for the reminder
 
6:17 PM
@Adám Wait what?
 
Yes, it is ongoing right now.
 
oh ok.
when ends?
@Adám ^ last question
 
In about an hour.
 
but it's fine to ask questions? (few)
 
I'll answer when I can.
 
6:21 PM
ok
Hmmm in Zoom?
 
Yes.
 
understood
 
Feel free to join.
 
@Adám sorry i can't do it.
 
No worries. You can watch it on YouTube later.
 
6:26 PM
@Adám ok
i can't watch because for some reason, But some videos i can watch.
 
Oh, you're behind a filter of sorts?
 
7:09 PM
@Adám meeting ended before I could suggest golfing {×⎕NC⍺:⍎⍺⋄⍵} to {0::⍵⋄⍎⍺} :P
 
@rak1507 I avoid error-based programming (and APLcart is not a golfing library).
 
I mean for his 'or' function
 
Same thing, no?
It might be nice if ⍺← could be generalised.
 
One thing I was wanting to add but didn't know how to say it properly is if he's working with any other people to preserve/maintain the code for when he's unable to anymore
 
You can write to him and ask.
 
7:15 PM
@Adám yes and no, I feel like not knowing if variables are defined or not seems like bad practice
 
Sounded like he wanted/needed young people he could teach to take over.
 
@Adám Will do then
 
Do you have his contact info or do you want me to email it to you?
 
I don't but I assume I can find it on his website
 
Oh yes, it is there.
 
7:16 PM
just checked and he has an email there, so that should be fine
 
That's the same one I have.
 
ok, good, not going to go straight to spam then :)
 
7:47 PM
@Adám Ended?
 
Yes.
 
youtube link if possible.
 
interesting meeting
 
@Adám commented
 
too bad the APL*PLUS/360 code was probably lost
370 rather
 
8:10 PM
@Adám check if "⍵" is Function/lambda or non-function/lambda?
 
8:28 PM
@Fmbalbuena {3∊⎕NC⍵}'name'
 
@Adám why you post too late?
 
@Fmbalbuena Because I have a spouse and children that sometimes needs me. And on top of that, my mother is visiting this week.
 
@Adám OK, no worries.
 
If you're around tomorrow and I'm not too busy, maybe I can finally teach you about multi-dimensional arrays.
 
@Adám How long i will learn about multi-dimensional arrays?
 
8:33 PM
I wonder how APL/PC 2.x was compatible with APL\360
 
You mean APL*PLUS/PC?
 
no I meant IBM APL/PC
 
Oh, APL2.
 
well, I'm not sure exactly when it became APL2
 
It was a new, not backwards compatible implementation released in 1984.
 
8:36 PM
interesting
 
@Adám why aren't you busy tomorrow?
 
so when APL/2 was later ported to mainframes, it was not compatible with APL\360?
 
APL2 was originally on MF, and was ported to PC.
 
I seem to recall APL/2 PC, unix and mainframes were fairly compatible
I see, so the PC/unix port was 31 bits or 32?
 
Yes, they are.
32.
As far as I know, there are 3 incompatibilities between APL\360 and APL2:
∘ APL2 doesn't support the original I-beam functions
∘ APL2 does not support the array;array syntax for output
∘ APL2 binds bracket indexing stronger than stranding
 
8:40 PM
was STSC's apl the most "popular" apl of the 80'?
 
@Fmbalbuena Well, yes, it is a normal workday, but part of my work is to teach people APL.
@JeromeIbanes I don't know. I don't think APL vendors made usage/sales public. It was probably the most successful PC APL, though.
 
⎕←+6 monadic "+"?
 
@Fmbalbuena 6
 
@Fmbalbuena Complex conjugate.
 
⎕←+'abc'
 
8:43 PM
@Fmbalbuena abc
 
seems fine for me
 
so Dyalog was started from scratch?
 
Yes, that was a completely independent implementation of NARS.
 
too bad we can no longer get the old versions of Dyalog
 
Why?
 
8:45 PM
it would have been interesting to study its evolution
 
@Fmbalbuena It negates the complex part of every scalar. If there's no complex part, it leaves the scalar alone. ⎕C does something similar with characters, ignoring anything that isn't a character.
 
⎕←+0J1
 
@Fmbalbuena 0J¯1
 
@Fmbalbuena i is written 0J1
 
Done
⎕←×99
 
8:47 PM
@Fmbalbuena 1
 
@JeromeIbanes Does apl.wiki/Dyalog_APL#Versions answer your questions?
 
@Adám it does, and it's fairly comprehensive and great, I'd like like to run earlier version if I have the chance; much like it's fun to run APL*PLUS in 2021.
 
We still build everything from 12.1 and up on occasion. I think we have 10+ available. But frankly, it mostly feels the same :-)
 
good to know
sad that some architectures were discontinued like sparc, etc.
is it written entirely in c?
 
@JeromeIbanes As per apl.wiki/Dyalog_APL: C, C++, APL
 
8:57 PM
nice
 
I think there's a drop of assembler too, but I might be mistaken.
 
I often wondered why the binary was so large, say compared to other APLs
 
The interpreter itself? 12 MB isn't that much, is it?
 
I can't say it's small either, probably due to the "richness" of dyalog apl
 
OK, maybe it is. APLX's is 3 MB.
 
9:00 PM
yeah that's more aligned with the others
 
I don't know how to count APL2, as it seems to be made of a bunch of small files.
 
mostly libapl2.so really
which is ~1MB or so
but doesn't include the UI
 
@JeromeIbanes Yeah, just as an example, Dyalog's core interpreter includes the IDE, the Unicode table, PCRE, etc.
 
right
 
And in today's world a 12 MB executable isn't very much
 
9:04 PM
yes that part is true
one of the issues I ran into was to use APL at work, it just was a bit orthogonal to the current stack
I ended up relying on k for the most part, which is probably equally orthogonal, but easier to ship to lambdas as it's smaller.
unfortunately most of the APLs and derivatives have licensing clauses that make them difficult to be deployed on dynamic environment (autoscale, lambdas, etc.)
 
What do you mean by "lambda" here?
 
AWS lambda, pretty much ephemeral environments
(very) ephemeral, but run several million of times a day
 
9:19 PM
Ah. So the problem is that you can't easily compute how much you're using your code?
 
yes, that's one of the problem
and there's a lot of daily variance
 
Is there be anything we could do to make that licensing easier (other than making it free, of course)?
 
I tried hard to find a solution to this problem, but haven't really found any, but I'm afraid other customers may have the same constraints.
as that's how software runs these days, at least in some high-throughput applications
happy to brainstorm this with you when time allows.
 
Sure. I'm not really in that area of the business but I can certainly get messages through.
 
I talked to Morten about this a few years back
 
9:26 PM
Not really his area either. Gitte would be the one to speak to.
 
and I'd personally would love to see APL (and derivatives) used more in FAANGs
 
Isn't that MAANG now? MANGA?
 
oh haha, yeah I guess
 
10:02 PM
⌊1 ⎕DT 'J' is the current date right?
 
@user1115629 That's the current UTC date in days since the beginning of 1989-12-31, yes.
 
thanks. I want to make an array of enclosed strings, what's the least painful way to type one in?
 
Does 'abc' 'def' 'ghijk' work for you?
Alternatively, use the editor )ed ∊voes
 
I thought ⍴that was 5 3. evidently it isn't but I'm confused why it isn't
 
Btw, the common terminology is a vector of character vectors.
@user1115629 APL uses multidimensional arrays, but every element can itself be any array, multidimensional or not.
A 3-by-5 array is called a matrix.
However, a vector of (character) vectors is just another vector, so its shape is just 3.
Note that arrays cannot be "ragged" so if you store the three texts in a matrix, they'll need to be padded to equal length (usually with spaces).
@user1115629I hope this helps. Maybe also have a look at apl.wiki/Array_model
 
10:21 PM
thanks, will take a look ^^
I see aplcart has some stuff for "days of month Is in year J"/"month I of years J". is there a more elegant one if I only need the days in a single month?
 
@Adám, I'm working at this problem
https://problems.tryapl.org/psets/2021.html?goto=P3_Multiplicity
With X as the left argument and Y as the right argument I came as far as this
(↓(0=X∘.|Y))
 
OK?
 
Thats gives me the vectors I want to use to reduce the right argumnet
however you can't do
(↓(0=X∘.|Y)) / Y
cause the length are different
should I use inner product somehow?
 
@Richard The problem is that for each vector on the left of / you need to compress/replicate (not reduce!) the entire Y.
 
It works for each vector seperatly fpr example
(⊃↓(0=X∘.|Y))/Y
 
10:30 PM
Right, but / will try to match up each element on the left with each element on the right.
And the elements on the left are not valid for /
Instead you need an explicit each ¨ on the / and enclose Y so it becomes a scalar that distributes: …/¨⊂Y
Alternatively, you can bind Y as a constant right argument to / and apply that derived monadic function to each mask: /∘Y¨
 
I tried ¨ but I shouldn't the ¨ be on the left side of / because I want each vector used for the replicate?
sorry, where I said reduce I meant the binary replicate
 
No, ¨ is a monadic operator, taking a function on its left and deriving a new function which is like the given function, except that it maps.
 
ok!
(↓(0=X∘.|Y))/¨⊂Y works!
 
It might help to use the function {⍺⍵} instead of / (or any function, really) as an aid in understanding how ¨ (or any operator, really) pairs up arguments.
@Richard Regarding the left side of / think of how you can remove one level of parentheses because of APL's evaluation order.
 
don't understand yet why the enlcose in necesary.
@Adám yes will do
 
10:38 PM
@Richard Notice my two italicised words above: each and entire.
You want to pair up each element from the left with the entire right.
@Richard Do you want a tip for simplifying ↓∘.ScalarFunction?
 
yes sure
 
Note that scalar functions have implicit ¨
So what you want is pairing up each element from X with the entire Y, i.e. X|¨⊂ which is the same as X|⊂Y because | is a scalar function.
 
You are realy helpfull!!! I'll study your tips thoroughly tomorrow moring after a good sleep. It's a lot of new information.
 
No worries. Do you want to use this to put together a simpler solution, or do you want me to give it away now? You can also ping me tomorrow if/when you want it.
 
no, no, let me think about it :)
 
10:45 PM
OK, good night then!
 
I learn by trying
one last question, what did you mean by
"It might help to use the function {⍺⍵} instead of / (or any function, really) as an aid in understanding how ¨ (or any operator, really) pairs up arguments."
make dfns of everything?
 
No, but when dealing with pairing up, as was your issue here, an explicit "pair" function, {⍺⍵} might be helpful rather than trying to understand the result or error cause by attempting to actually compute a result.
For example:
      X←2 4 7 ⋄ Y←5 7 8 1
      (↓(0=X∘.|Y)){⍺⍵}Y
┌─────────────────────────┬───────┐
│┌───────┬───────┬───────┐│5 7 8 1│
││0 0 1 0│0 0 1 0│0 1 0 0││       │
│└───────┴───────┴───────┘│       │
└─────────────────────────┴───────┘
      (↓(0=X∘.|Y)){⍺⍵}¨Y
LENGTH ERROR
      (↓(0=X∘.|Y)){⍺ ⍵}¨Y
                       ∧
      (↓(0=X∘.|Y)){⍺⍵}¨⊂Y
┌─────────────────┬─────────────────┬─────────────────┐
│┌───────┬───────┐│┌───────┬───────┐│┌───────┬───────┐│
││0 0 1 0│5 7 8 1│││0 0 1 0│5 7 8 1│││0 1 0 0│5 7 8 1││
 
Thanks!
I'm off, ggod night
 
○/
 
11:07 PM
@JeromeIbanes I would too but when companies invent new languages like Go because the people they hire are 'not capable of understanding a brilliant language' - it seems unlikely :(
 
11:43 PM
yes, there's some truth in that
 

« first day (1789 days earlier)      last day (860 days later) »