« first day (4065 days earlier)      last day (771 days later) » 

12:29 AM
huh, can haskell not have ragged lists?
 
its lists have to be of homogeneous depth yeah
 
dang ok
 
it's not hard to circumvent that with custom data types but the builtin list type doesn't permit it
 
@UnrelatedString uh how
ummm if i do that though, will i have to add bytes to my answer
 
you can probably get the golfiest way to do it from existing answers that do it
 
12:33 AM
it looks like they do haskell + free, whatever that means
 
wow there's so few qns with the tag ragged-list
but theyre all quite good qns except mine 3 votes no ans :(
 
I love it when powershell decides to cover the taskbar
4
makes accessing vs code and everything else so much more fun
and by fun I mean annoying
 
@lyxal guys star these msg :D
 
imagine not having your taskbar on the left side of the screen
also why are you using powershell
 
for java compilation
 
12:44 AM
lets say input is i. is it a valid submission to make a function f that takes in input as f(i,i) instead of just f(i)?
 
@AidenChow ragged lists and hetero depth aren’t the same are they
What’s the word for hetero depth lists?
@AidenChow idts
You could use the S combinator with id maybe
 
@user oh ok, because i saw an answer doing that
 
The S combinator is like <*> or something in haskell
 
@AidenChow y would u do tat
oh
 
@AidenChow where? Time to downvote
@DialFrost pointfree
 
12:50 AM
@user uhh downvote? its a good answer, just not using proper io format
@user what does that do
idek what s combinator is
 
1:13 AM
@Bubbler As an APLer, you might like to take a look at tabl!
@DLosc Can you see yourself using tabl if I add Haskell to it? What languages might you want it with?
(Assuming it'll run at native speeds, which I'm on top of with the localhost bash script.)
 
what is tabl
 
I think you might have messed around with it earlier when the url name wasn't working so you might not have realized it had a name!
@AidenChow avifs.xyz/tabl
 
yeah, i see a text editor, but what is it for
 
It's running APL by default, but I'm looking for langs people want me to add.
@AidenChow Where are you?
In the world, I mean.
 
@AviFS python
 
1:28 AM
If you just mash the keyboard, you should see it displaying stuff on the right.
And if you declare some variables, use them, and then change the variables at the top, you should see the relevant values reactively updated.
Eg.
@AidenChow Is it working?
 
1:51 AM
oh nvm, this answer does take input normally, its just that their test suite made it seem like that wasnt the case: chat.stackexchange.com/transcript/message/60665193#60665193
 
2:50 AM
@AviFS Hmm, interesting question. The concept is really cool; but apart from Python (which I always have available locally), I'm not sure what language with a REPL would be something I'd find useful. I don't see myself using Haskell super often, though I was glad to finally learn it for LYAL.
Maybe some variety of Lisp?
 
@DLosc Aww, shucks! That's the one language that doesn't work well with this line-based display. I did start adding your tinylisp to tabl when it was the language of the month, though. I can finish that at some point. But for now, Lisp is the least interesting/applicable of the langs I've tried.
 
@AviFS What was the problem with Lisp? I think you can write anything on one line if you have to--or does that make the lines too long?
 
@DLosc Post-fix notation (and of course infix) work great, because you just display the current stack on the right. But with prefix like lisp it's pretty tricky to have anything meaningful to display, unless they've written an entire expression you can just evaluate repl-style. I know there are Lisp repls, including one for tinylisp, so maybe I'm just using lisp wrong, but I've never written anything interesting in a single line.
My lisp stuff tends to span multiple lines, and tabl doesn't handle that multi-line stuff very well except for a few paradigms. (Eg, even in the middle of a multiline stack-based expression you can always display the stack.)
@DLosc No, you're right, so long as you write it on a single line, you can do any lang, including Lisp.
 
Hm, okay. So part of the issue is that there isn't anything meaningful you can display while the line is partially entered, because it's just functions without enough arguments?
 
I think another thing that made it less than ideal is that it doesn't lend itself to intermediate output even on a line-by-line basis
@DLosc Wow, I was just remembering that! You got there before I did. And yes.
A lot of the fun/novelty/added value of tabl, in my mind, comes from that output being constantly updated as you type.
And with Lisp that doesn't really happen until you finish your expression anyway, and close the last parens.
 
3:01 AM
Makes sense.
If you're open to adding esolangs, would Pip be a possibility?
 
However, if you came up with something meaningful to display on the right in the meantime, it could be really cool.
Like displaying the stack for a stack-based lang.
But I can only think of some kind of pprint of the current AST, which seems hard to do (and hard to read) in a one-line string. And also just not that useful.
@DLosc Absolutely! I'm looking it up right now.
@DLosc This is a dream come true. The interpreter's in Python!
 
And it's infix with a heavy focus on expressions, like APL.
 
This should be pretty easy to add. Unless it turns out you've made something difficult for me :p
 
I certainly hope I haven't. ^_^ Thanks for looking into it!
 
Ooh, okay, so this is gonna suffer from its loop dependence. (If you have everything on one line, it'll work fine, of course.) But I want to add a multiline mode to tabl, and for esolangs, multiline will be the default.
So, for FizzBuzz, instead of just entering it one line like: LhP J["Fizz""Buzz"]X!*Ui%^35|i
The idea is that tabl should be able to work as a self-documenting sorta thing.
You should instead be able to split it like the explanation:
Lh                              Loop 100 times:
  P                             Print this expression:
                         ^35    35, split into a list of characters [3;5]
                      Ui%       Increment i and take its new value mod each of those numbers
                    !*          Logically negate each value (0 -> 1, nonzero -> 0)
     ["Fizz""Buzz"]X            String-multiply "Fizz" and "Buzz", itemwise, by the above
                                The result is a list containing "Fizz" or "" depending on i%3
And to the right of each line, you'd have the current output/state as the program flowed through.
I wouldn't worry about supporting recursion for now, but otherwise, I think the only thing getting in the way of this is loops.
Would you be up to helping me modify the interpreter slightly so that an unclosed loop, prints the value of the first iteration?
 
3:13 AM
Possssibly--we'd need to talk more about what that means exactly.
(I will point out that that explanation format disregards the correct syntax in favor of following the logic of the algorithm. It won't run as Pip code.)
 
I haven't added bf to this version of tabl, but here's an example of what it would look like.
That's an addition program, and as you're typing until you close the loop, you can see that we're printing the value as it goes through the first iteration.
 
Oh, okay. Makes sense.
 
And then only once you close the loop does it 'fast-forward' through. Which I think is a useful way to visualize it, and write programs.
For now though, I'll be happy to add it as is. But I think it'd be really nice to be able to make sense of it piece by piece that way.
 
By the way, does anyone know a BF interpreter that just works (TM)? It should be in an interpreted lang, pref python or js, rather than being compiled to C.
 
@AviFS I'm not sure how applicable that concept is to Pip, for a number of reasons. 1) Loops don't inherently have values or even "state" that could be displayed (unless you want to display the value of every variable, which isn't practical). 2) If the loop body is a single statement, it doesn't use a token to close the loop like ] in BF.
Pip works a lot like Python (or any other C-like, dynamically typed language). Something like the Python REPL would fit it pretty well, and showing the value of the current line whenever the current line is a well-formed expression would also work well.
Once you start getting into the nested syntactic structures and leaving parts incomplete, I'm not sure how much meaningful information you can display until the structure is completed.
But maybe I'm just experiencing a failure of imagination. :)
 
3:29 AM
@DLosc I may be missing something, but if you have unclosed for i in list { abc; lmn; xyz; , you'd print the values of each line for the first iteration. In this case, the value of each line where i = list[0]
Does that work? I don't know what kinds of looping constructs you have, but for instance with the FizzBuzz example you're looping over 1..100, so you'd just display the values where i=1.
I'll also add tabl magic functions eventually. So there might be a syntax at the beginning of that line where you could do !loop=35 after you decided that the first iteration is trivial and not useful.
And then it would instead display the 35th iteration for that loop.
 
@AviFS Kind of. I can see the usefulness of displaying the values of loop-body expressions that they'd take during the first iteration. The syntactic problem is still there, though. Let me cook up a simpler example...
 
It doesn't have to be this way of doing it, but I really want there to be a meaningful multiline display so you can open a CGCC link to an esolang you don't understand, and actually see the program flow. And then be able to change the input, and watch that trickle through the state of every line.
 
Okay, so here's a sample program that prints the ASCII code of every character in a string:
a:"Hello, World!"
Fca
 P Ac
 
@DLosc Doesn't have to be that in particular. Just something to display for most lines. And to not display anything whenever you're in a loop, for a lang that uses loops all over, is a bit unfortunate.
 
Fca is "for each c in a," and P Ac is "print ascii(c)"
 
3:37 AM
Like for the FizzBuzz example, there'd be no way to get any multiline output since the whole thing is surrounded in one big loop. So you kinda have the LISP problem of no output until you're done.
@DLosc So my gut reaction would be that within that Fca loop, you'd print the values for c = 'H'. Am I missing something?
By the way, there are separate input/output boxes which I've currently disabled to have a cleaner interface.
So the display isn't the same as output.
The display, in this case, would be H.
But in the output box, you'd get "Hello, World!"
It's not particularly helpful here, but if you do all sorts of fancy manipulations on c in the loop, like with FizzBuzz, then it's nice to be able to track a single item through the loop and watch what happens.
 
So if you entered it on three lines like that, the first line of course would have a value of "Hello, World!". The second line is the loop header, and I'm not sure what value you'd give that. The third line could theoretically have the value of 72. The problem is, there's no way of knowing whether the third line is the complete loop body, because if it's followed by a fourth line -5, that -5 would be part of the same expression, which would become P Ac-5, "print(ascii(c)-5)"
 
@DLosc That's an interesting point. One option would be:
To print 72 then 67
Which is the BF model of just printing the value at every step of the way.
 
The thing is (and it's not entirely clear from this example), that's not going to give you accurate intermediate values, depending on the precedence of the operators involved.
 
But I came up with that when thinking about langs like BF and stack-based langs which can be divided at any point in the program, and still mean the equivalent thing.
 
Yeah
 
3:44 AM
For a more "normal" language like this, I'm thinking we might actually want to put some restraints on where you're allowed to split an expression.
And splitting an expression in the middle of an infix thing seems like pretty bad form.
Oh wait.
That's actually what the interpreter+tabl will do by default.
 
Agreed. I think for Pip, the thing that would make the most sense would be to treat it like a REPL, so adding -5 on a new line would be a separate expression rather than part of the previous expression.
 
No wait. It isn't what would happen by default.
@DLosc That's along the same lines my head was starting to go, but way better and way cleaner.
Yeah, that definitely seems like it makes a lot of sense here.
Is that going to get in the way of any of this other line splitting though?
 
I want to say that adding an implicit semicolon at the end of each line will cause exactly the desired behavior, but I haven't thought it through very thoroughly.
 
@AviFS Eg, is one-line FizzBuzz still going to be equivalent to this?
 
(Holy silent gh, Batman!)
 
3:48 AM
@DLosc Uh oh, what does that mean!?
 
Referring to my use of "thought" "through" and "thoroughly" in one clause ;P
 
Oh my goodness, I didn't even notice, haha!
@DLosc Yeah, I'm just realizing maybe I'm not totally sold on it.
 
@AviFS No, it would have to be either all on one line or (I think) the loop header could be on one line and the loop body on the next line.
 
@DLosc Eek, that's a no-no.
My one concern is that it'd be nice for a Pip-ignorant reader to keep spamming new-lines, and breaking up the program into digestible-chunks without changing the result.
 
@AviFS ¯\_(ツ)_/¯
 
3:51 AM
To that end, a better solution might be to actually have the value be 67
 
you could introduce a system for representing newlines uniformly as an in-line character
 
@AviFS That's fine, as long as you don't expect each chunk to have an independent meaning
 
@DLosc No, I wouldn't.
But as many as possible!
Let's go with your idea for now.
Only that it has to be a bit smarter, instead of just implicit newlines.
Because it should be possible to split up that loop.
It may require adding a new primitive, so I'd send over: lines.join(';')
Where ; isn't whatever you currently have, but some newly defined thing.
Something that acts as a newline when we want a newline, like -5, but not where we don't, like... lots of the other places.
 
Uhh... how can we possibly distinguish that? -_o
 
Isn't that a thing we can do?
Definitely at the level of the parser, though I think it should be possible to be a bit stupider than that.
 
3:55 AM
What you're saying is you want to break up an expression across multiple lines, right?
 
tfw chat flags in russian ಠ_ಠ
 
Eg. in this case it'd just be code.replace(';-', ';0-').replace(';+', ';0+').replace(';', '')
Remember, this is just in a new Pip branch for tabl. If this is hacky and lame, it only affects tabl every now and then, not Pip :p
 
@AviFS I've got one, do you want autocomplete brackets as well?
 
@emanresuA Pleaseeeeeee! And thank youuu.
No, please ignore unmatched brackets.
That's kind of critical.
 
Wdym?
Just ignore the code inside unmatched brackets?
 
3:58 AM
Also, please make sure you can run: --<-<<+[+[<+>--->->->-<<<]>]<<--.<++++++.<<-..<<.<+.>>.>>.<<<.+++.>>.>>-.<<<+.
I don't know why, but every bf interpreter loves to fail on TIO's hello world program.
Something about those nested loops throws them all off and they never terminate.
 
@AviFS I don't see how that's ever going to work. Pip has a gajillion operators, many of which have both unary and binary versions; for some, the unary and binary versions do completely different things, so no ;- to ;0- replacement is possible.
 
@emanresuA No, just ignore the unmatched brackets. Code +[-]>[- -> +[-]>-
 
@AviFS That works. But what do you mean about unmatched brackets?
Oh okay. That might require a bit of parsing...
Do you mind if I make that into a challenge?
 
@DLosc Ah, yeah, you'd know better than I. Well the only thing I need to add it to tabl is a repl that returns one {"stdout": String, "stderr": String} object per line.
Once I've gotten it to that state, I can trivially get the rest. But that's the bit that, depending on how the interpreter is written, can be pretty tricky. I can't tell yet how simple that's going to be.
@emanresuA A challenge for me?
 
As in a CGCC challenge
 
4:04 AM
@AviFS Ok, I can work on that. A simple REPL that requires each line to be a well-formed statement (i.e. doesn't allow breaking up loops, expressions, or functions over multiple lines) shouldn't be too hard to put together.
 
Or CGCC problem? I feel like that's up, but otherwise by all means. I'd just assumed there was one somehow!
@DLosc Or just sends that back in stderr: ""
The tricky thing is capturing all the output in a single variable to print in the json.
 
@AviFS How do you want "returns" to work? A Python function that returns a dictionary?
 
@DLosc JSON, but Python dictionary also works. All that other stuff I can do.
In the best case, it's just something like:
while True:
    out, err = "", ""
    try:
        out += interp(input())
    except e:
        err += e
    print(f"{{"out": {out}, "err": {err}}}")
 
Oh, okay, it should be printed. Got it.
 
Yeah, although returned works too. The only part I need is the guarantee that all stdout and stderr are captured in a single dictionary/something.
Lots of interpreters are written with side effects, with print statements throughout, so this approach doesn't actually work.
 
4:11 AM
Right. Pip is written that way, so this might need some reshuffling. I think I remember how to redirect stdout to a string, though, so maybe not too much reshuffling.
And just to be clear: that code looks like it's running a full program of multiple lines and returning all the output from the whole program. Is that what you're looking for? (Rather than acting like a REPL and printing the value of each line, even if it doesn't have an explicit print?)
 
Eg, the frontend needs to get:
print(1); print(2); print(3)
{out: "1\n2\n3\n", err: ""}
Instead of:
print(1); print(2); print(3)
1
2
3
{out: "", err: ""}
 
Can't you use shell commands to redirect stdout?
 
@DLosc No sorry, you're right. I want it to act like a repl.
stdout and display are actually two different keys that the JSON passes back.
But I'm trying to give a simple version of what I need, and I'll do the rest.
 
@emanresuA If you're down to help me get that working, please! I've spent a tonnn of time getting that stuff to work. With child processes, pseudo terminals and all other forms of shenanigans. No luck yet. I was hoping @RadvylfPrograms would be able to help me do that at some point.
 
4:19 AM
:(
I don't really understand shell stuff, sorry
 
I know (or know how to google) simple shell redirection commands
 
He's spent a lot more time with that low-level stuff than I have by now. But I spent days. And days.
@DLosc That I can do. It's python3 pip.py 2> >(./err) 1> >(./out) if you want to redirect each stream into another executable.
Even python3 pip.py 2> >(python3 err.py) 1> >(python3 out.py)
Any technique you want to use is fair game, I'm just a bit burned out myself on that stuff. But happy to help with that.
 
Ok, but if I output JSON (to stdout) with keys out and err, that will be sufficient?
 
Yup!!
Eventually we might add a separate output which is where the 'proper' output would get redirected, since what you're giving me is the repl output.
So I'll rename your out->display and eventually add an additional stdout key.
 
Hm, which does raise an interesting point: In Python, print(42) outputs 42 and then returns None, which the repl doesn't output. In Pip, P42 outputs 42 and then returns 42. I think the repl should output that return value. Which means P42 would output 42 twice. (It does the same thing as a full program, BTW.)
 
4:35 AM
I'm glad that they unpinned accepted anwers
Although if that had been the top answer, I probably would've kept looking.
 
4:52 AM
0
Q: Is this the shortest, most efficient prime number generator in python? (or am I just delusional)

user111545I have come up with this line of brain **** code... please tell me if this is the shortest AND most efficient prime number generator... https://pastebin.com/zUP6yDYP

 
this is not a line of code, or brainfuck, or short, or efficient
i also do not understand exactly what it's supposed to do
 
I'm gonna let someone else deal with that while I try not to burst into laughter.
 
@NewPosts flag it?
@hyper-neutrino looks like some kind of weird infinite prime generator in python
they seem to be using this? math.stackexchange.com/questions/855/…
not really too sure
guys do you know if ap calc bc contains any physics that i need to know
 
5:12 AM
It has a small amount of applied physics and a large amount of stuff that you need for physics.
 
@emanresuA like what? any specific laws/equations i absolutely need to know, or does that change every year?
 
More that calculus in general is necessary for physics
 
huh, so how would i even study for the physics part of ap calc, any materials i should look at
 
5:27 AM
¯\_(ツ)_/¯
 
@emanresuA -_-
im so screwed for ap calc bc lol
 
wats ap calc bc?
 
Go through it at your own pace, ask for help when you need to. You'll be fine.
 
@DialFrost an exam
u can literally search it up
 
oh
wait ur doing calculs ah
 
5:32 AM
idk if they do ap exams in countries other than america
 
oh
 
uhhhhh quick question. for lotm, if ur language gets chosen (i think desmos is coming up in about 2 to 3 months), do u have to give bounty for ppl's answers in that language
i dont have a whole lot of rep to spare :\
 
I can do the bounties for desmos
 
@emanresuA uh are u sure, u just got 25k rep
thanks a lot though!
 
I have the power of large internet numbers
2
CMC: Prove that for any array, sublists of it can be reversed repeatedly to arrange it into any permutation.
 
5:48 AM
sublist as in consecutive elements or any?
 
Consecutive
Nvm, just realised this is an easier version of the pancake problem
 
idk how to explain it properly, but cant u just switch two elements next to each other to "move" an element to the right or left
so u can move stuff anywhere, meaning every permutation is possible???
not too sure
@emanresuA whats the pancake problem
 
Pancake sorting is the mathematical problem of sorting a disordered stack of pancakes in order of size when a spatula can be inserted at any point in the stack and used to flip all pancakes above it. A pancake number is the minimum number of flips required for a given number of pancakes. In this form, the problem was first discussed by American geometer Jacob E. Goodman. A variant of the problem is concerned with burnt pancakes, where each pancake has a burnt side and all pancakes must, in addition, end up with the burnt side on bottom. All sorting methods require pairs of elements to be compared...
 
6:03 AM
@NewPosts okay 20k+ gamers, time to vtd the question
 
does anyone here know how to find the equation of a parabola given the focus and directrix, except the parabola is rotated (so the directrix is not a horizontal or vertical line)
 
calculate the equation for the horizontal directrix case, and then apply rotation
 
@Bubbler how to apply rotation? i just know cot(2theta)=(A-C)/B and x=x'costheta+y'sintheta and y=x'sintheta+y'costheta
does that help in any way
 
You can simply plug in the formulas for x and y
 
6:22 AM
@Bubbler how do i find the angle
is it the slope of line perpendicular to directrix
 
angle = arctan of slope
 
@Bubbler so i take the arctan of the slope of the directrix?
 
I... think so?
also one of the signs in the x and y formula should be minus, but my brain wants to sleep so I can't find where
 
@Bubbler oh yeah, i think its the x one
ok so the specific problem i got is focus = (7,11), directrix: y=-0.5x+9.5
so arctan(theta)=-0.5 ?
i mean theta = arctan(-0.5) ?
uhh
wait i only have to solve for cos theta and sin theta right
right???
 
yes
 
6:38 AM
should i find the vertex from here, or should i be converting this to regular parabola form directly
 
oh hmm
 
u know, i should probably ask on math SE on how to do this, but idk if theyll just close it as a hw problem or what
 
guys whats the requirement to have a "positive qns record"
 
@DialFrost Basically it means you need to have many open and positive-scoring questions, and few closed, negative-scoring, or deleted questions
 
is there a specific percentage or number?
 
6:50 AM
@AidenChow In that case, my strategy would be: 1) move the thing 9.5 units downwards so that the directrix passes through the origin 2) rotate CCW by atan(0.5) angle so that the directrix becomes the x-axis (you need to rotate the focus accordingly) 3) find the parabola 4) rotate back 5) move back
 
21
Q: How is a "positive question record" calculated?

TravisFor the badges Curious, Inquisitive, and Socratic, you need to ask varying numbers of well-received questions on different days. You also need to maintain a "positive question record" On Stack Overflow, I have enough well received questions for the Curious badge, and am almost there on Math SE....

 
Most things about how the site works can be found by searching on meta.stackexchange.com
(total questions - negative questions - closed - deleted)/total questions >= 0.5
> Questions that have been downvoted and closed and deleted count three times in this calculation!
 
is dupe qns counted?
 
Dupe counts as closed
 
ah ic
ah the closed qns contribute the most for me
cuz alot of my qns i posted when i was new were crap
 
6:58 AM
At least you're improving over time, which is good
 
@Bubbler :D
i js thought of a challenge, but its prob a dup or js dumb
so given integer `n`, output a sequence of numbers as the following:
if `n=3` then `321321321` basically 321 3 times
if `n=5` then `543215432154321`
atm its too easy tho
thiking of a way to make it harder
any opinions?
 
7:43 AM
Take in n and x, and output the sum of the first x terms of the sequence [n, n-1, ..., 1, n, n-1, ..., 1, n, n-1, ...]
@DialFrost ^
 
8:09 AM
Is there a Ukrainian flag challenge yet?
 
Too easy
It would probably be a duplicate of some other similar flag
 
the coat of arms thing or whatever could be interesting though
 
@ophact that also feels a bit too simple, idk
 
There have been many simpler challenges
 
maybe some mathematical insight can make it interesting though
 
8:18 AM
That's also what I was thinking
 
8:53 AM
why is my wall glitch question unanswered still :( : codegolf.stackexchange.com/questions/242581/…
 
It's hard
And that's okay!
 
@emanresuA yeah ik, but like it isnt impossible right? i wouldve expected at least one answer by now. i guess i severly underestimated how hard my challenge is :P
 
IIRC there were quite a few questions posted around that time and I guess it just got swallowed up.
 
@emanresuA idk what you are abusing, but very nice
 
Vyxal was never meant for graphical output, but I managed to make it do that which is kinda cool and kinda cursed
 
9:28 AM
@DialFrost i have a 26 byte solution to this
 
9:49 AM
0
Q: Long period primes

pajonkA long period prime is a prime number \$p\$ such that decimal expansion of \$1/p\$ has period of length \$(p-1)\$. Your task is to output this number sequence. For purposes of this challenge we will consider only odd primes. Period of a decimal expansion of a rational number is the smallest perio...

 
10:16 AM
@NewPosts Anyone who wants to try PARI/GP can start from the code on the OEIS page.
 
10:46 AM
@alephalpha what is a PARI/GP
 
it's a language of the month
 
11:29 AM
grdedrg
I keep having to spray my cat because she wants to go outside and won't stop screaming at me
 
Well how would you like it if I kept spraying you because you wanted to go outside and you wouldn't stop screaming at me?
 
I wouldn't
so I would stop
but she won't
 
her urge to go outside is clearly stronger than yours
tfw a cat has more motivation to go outside than you
 
i just sprayed a hell lot of water on my friends muhahaha
 
what, did they want to go outside too and not stop screaming at you?
kids these days spraying objects left right and centre
 
11:37 AM
the malfeasance demon herself:
 
@lyxal lmao
^ today is eve of holi
(i think)
hence i sprayed lots of colored water on my friends :p
 
@GingerIndustries I'd let her out if I were you
in hindsight, bright green does not read well on white
> amasus
hmm yes
my favourite eCommerce site
perfect for when I need to vent
 
@GingerIndustries you must resist
 

« first day (4065 days earlier)      last day (771 days later) »