[Boards: 3 / a / aco / adv / an / asp / b / bant / biz / c / can / cgl / ck / cm / co / cock / d / diy / e / fa / fap / fit / fitlit / g / gd / gif / h / hc / his / hm / hr / i / ic / int / jp / k / lgbt / lit / m / mlp / mlpol / mo / mtv / mu / n / news / o / out / outsoc / p / po / pol / qa / qst / r / r9k / s / s4s / sci / soc / sp / spa / t / tg / toy / trash / trv / tv / u / v / vg / vint / vip / vp / vr / w / wg / wsg / wsr / x / y ] [Search | Free Show | Home]

/dpt/ - Daily Programming Thread

This is a blue board which means that it's for everybody (Safe For Work content only). If you see any adult content, please report it.

Thread replies: 333
Thread images: 33

File: Calculus of Maki Constructions.png (312KB, 452x355px) Image search: [Google]
Calculus of Maki Constructions.png
312KB, 452x355px
Previous thread: >>56521698

On Topic Edition

What are you working on, /g/?
>>
First for there is literally nothing wrong with VB.NET.
>>
It seems our threads keep getting deleted whenever someone starts making political chatter. Why would the mods not simply delete the offending posts?

>>56529401

Except for the fact that C# is better than it in every way...
>>
Obligatory Pajeet:
https://www.youtube.com/watch?v=R3JI4fJPtk0
>>
>>56529416
The thread was probably barely 10% on topic, and when you "only delete the offending posts" you end up with people posting about the topic again. I don't remember what the OP image was, but that could've been it too.
>>
>>56529416
Or better, actually ban the samefagging cunts shitting up the thread with off topic shit so that we don't have to deal with them.

They'll shit up this thread too, in time, just watch.
>>
File: naive lambda calculus.png (38KB, 624x528px) Image search: [Google]
naive lambda calculus.png
38KB, 624x528px
Naiive implementation of lambda calculus
Fails when you repeat variable names (much simpler to write)
>>
>>56529424
gee at least it's not one of those " le kali loonix xDD vs scammer" videos
>>
>>56529401
VB6 was far better and a proper Basic. VB.NET is just C# with a different syntax.
>>
>>56529416
they should just ban the assblasted samefagging anti alt right faggot
>>
>>56529490
This. It's mostly his fault that the thread went off the rails.
>>
daily reminder that coding isnt the same as programing
>>
>>56529481
This one is better:
https://www.youtube.com/watch?v=Du6acZ-PZQ8
>>
Hi, I'm a newbie and I really need help, I have signed into my server via WinSCP and I want to edit: /etc/ssh/sshd_config and add the following 'AllowUsers' but it won't let me edit the document.

Can someone please help?

Please help!
>>
File: lambda repl.png (208KB, 1723x859px) Image search: [Google]
lambda repl.png
208KB, 1723x859px
>>56529480
Here's another one that uses de brujin indices and has a REPL
>>
>>56529523
you logged in as a regular user but that file is owned by root.
login as root or just ssh into the root account via putty to edit the config file via vim or another terminal text editor.
>>
>>56529541
for instance

>eval (\0) 9
9

>eval (\0 0) 9
9 9

>eval (\0 0) (\0 0)
(\0 0) (\0 0)
-- if the previous two stages are equal it will stop, this is an infinite loop

I think the parser might hang sometimes, found that kind of complicated
>>
File: Screenshot_2016-09-10_21-59-47.png (91KB, 1280x800px) Image search: [Google]
Screenshot_2016-09-10_21-59-47.png
91KB, 1280x800px
I'm trying to implement conway's game of life in curses but I'm having a problem with the following check
if input_state[y][xl] == 1:

It's meant to check if the square to the left of the current square I'm at has life in it (1 is life in the array, 0 is no life). The thing it doesn't evaluate as true when it should. I tested it out by halting the program when the if statement was true, and it only ever happened if I had three cells in the configuration shown on the right.
Any idea what is going wrong?
I know the array is correctly storing the data and that xl, xr, yu, and yl are correct.
I'm new to programming so feel free to shittalk/provide criticism.
>>
Are there any alternatives for ctags, or is it still the bee's knees when it comes to code lookup/navigation? How does cscope compare?
>>
>>56529480
Whoops, I meant

eval = snd . head . dropWhile (not . uncurry (==)) . (zip <*> tail) . iterate beta
>>
>>56529583
Font pls
>>
>>56529583

It might help to have your complete program, rather than just a snippet. Can you post a pastebin?
>>
>>56529688
Fira mono
>>56529713
http://pastebin.com/jvvS3mNG
There's some commented stuff from me trying to test what wasn't working.
>>
>>56529547
Thanks a lot, I managed to edit it!

Really appreciated.

I added 'AllowUsers' then what I think is my username, is your username the bit that goes in front of @ before you sign in on putty?
>>
I've started learning Java a month ago. I already have a grasp of things but not enough obviously for anything of impact. How long would you suggest one should learn/practice Java before he can say he knows something ?
>>
>>56529799

Okay, after some running through your code, I think I discovered your problem... you're overwriting your input array in your main loop. Basically... don't do this:

output_state = list(input_state)


In fact, create a brand new array and copy shit over manually. Because what you did there was actually to create a new array that had all of the pointers to those internal arrays. To demonstrate a similar case in a REPL...

rubyist@Overmind:~/scratch$ python3
Python 3.5.2 (default, Jul 5 2016, 12:43:10)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> ary = [ [1,2,3], [4,5,6], [7,8,9] ]
>>> cpy = list(ary)
>>> cpy
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
>>> cpy[0][0] = 20
>>> cpy
[[20, 2, 3], [4, 5, 6], [7, 8, 9]]
>>> ary
[[20, 2, 3], [4, 5, 6], [7, 8, 9]]
>>
>>56530234
Thanks, that would explain the problem. I thought list() avoided pointing to the old list which is why I used it in the first place.
>In fact, create a brand new array and copy shit over manually
What is the best way to do this? Just run two for loops?
>>
File: fhex2.webm (920KB, 736x412px) Image search: [Google]
fhex2.webm
920KB, 736x412px
My hex editor now highlights the edited bytes.
>>
>>56530286

>just run two for loops
That would be the simplest way, I'd think. Not sure what the most efficient way would be though. My knowledge of the internals of Python is a bit more sparse than my knowledge of the internals of say, Ruby.
>>
>>56530397
Thanks for your help
>>
>>56530396
pretty
>>
>>56529393
first for Maki butt
>>
>>56530396

That seems rather useful... although why are the rows 15 wide instead of 16?
>>
>>56530396
Hex editors are already a pain with a good GUI, I can't even imagine how painful they are without one. Going the radare2 route to make your program unusable?
>>
>>56529393
i am bored.
Anyone has the images with the programming challenges, so i can do something i havent done already 5 times?
>>
Retard here,
do I need to be good at math to programming?
>>
>>56530630
no
>>
>>56530630
No, but I think people who tend to be good at one may also excel at the other.
>>
File: calc.png (259KB, 1920x1080px) Image search: [Google]
calc.png
259KB, 1920x1080px
I wrote a simple calculator
>>
>>56530553
The amount of bytes per row is dynamic, depending on width of the terminal.
I might think about an option to force it to 16 bytes per row (or any number the user wants) but that isn't a priority.

>>56530591
It's feels very usable right now, I don't know what you are doing with your hex editor but the only thing you really need to do is navigate the file and change bytes, no?
Don't know how this can't be achieved with a cli.
>>
/* print a cross */
.global main
main:
push %rbx
push %rbp
mov %rsp, %rbp
sub $16, %rsp

cmp $2, %edi
jne .Lfail
mov 8(%rsi), %rdi
call atoi
test %eax, %eax
jle .Lfail
mov $3, %edi
mov %eax, %ebx
mul %edi
add $7, %eax
mul %ebx
shr $1, %eax
mov %eax, (%rbp)
mov %eax, %edi
call malloc

test %rax, %rax
jz .Lfail
mov %rax, 8(%rbp)
mov %rax, %rdi
mov $32, %esi
mov (%rbp), %edx
call memset

mov 8(%rbp), %rdi
xor %esi, %esi
.Lloop:
mov %ebx, %eax
sub %esi, %eax
jz .Lend
dec %eax

mov %eax, %ecx
mov %esi, %edx
cmp %esi, %eax
cmovge %eax, %edx
cmovge %esi, %ecx
sub %ecx, %edx
mov $42, %al
add %rcx, %rdi
stosb
add %rdx, %rdi
dec %rdi
stosb
mov $10, %al
stosb
inc %esi
jmp .Lloop
.Lend:
mov 8(%rbp), %rbx
mov %rbx, %rsi
sub %rbx, %rdi
mov %edi, %edx
xor %edi, %edi
inc %edi
call write

mov %rbx, %rdi
call free

xor %eax, %eax
mov %rbp, %rsp
pop %rbp
pop %rbx
ret
.Lfail:
call abort
>>
>>56530779
FUCKING USE INTEL SYNTAX OF GET THE FUCK OUT.

Just add `-masm=intel` for gcc
>>
>>56530478
moar?
>>
>>56530779
>at&t
into the trash it goes
>>
>>56530787
I like at&t's better. The percents. They are cute.
>>
File: 57428963_p3.png (432KB, 744x1052px) Image search: [Google]
57428963_p3.png
432KB, 744x1052px
>>56530789
>>
>>56530787
will this work for asm compilation in gcc?
I only used this flat when translating C -> ASM
>>
>>56530809
I meant of maki butt
>>
File: 1473057273985.jpg (833KB, 1559x1200px) Image search: [Google]
1473057273985.jpg
833KB, 1559x1200px
>>56530844
I know what the fuck you meant, but I don't have any.
>>
File: 1466150534851.png (3MB, 1880x2656px) Image search: [Google]
1466150534851.png
3MB, 1880x2656px
>>56530789
>>
File: 158868.jpg (60KB, 700x394px) Image search: [Google]
158868.jpg
60KB, 700x394px
I've been learning python and javascript for the last year now. I do my own small projects, but I'm interested in actually coding with other people.

What's a great entry way towards this?
>>
>>56530896
https://www.reddit.com/r/githelp

inb4 >reddit no fucks given
>>
>>56530896
writing codes of conduct on github
>>
>>56530922
Fuck off.
>>
>>56530922
wrong website buddy
>>
I have a root directory, a couple of source files in the /src sub-directory and a couple of headers in the /incl sub-directory. My Makefile is in the root one, and I already know how to make stuff with sources and headers neatly packed away in their own folders, but I'm bound to have a bunch of intermediate files pop up, like something.o or parser.tab.o, and I want them to be stored away in some kind of temp folder until I need to build my topmost target so that the only things in the root are the target and the Makefile. How do I tell Makefile to build into a subdirectory of the directory that contains the Makefile?
>>
>>56530929
No
>>
>>56530938
By cd-ing into it? Or you can use CMake instead.
>>
>>56530935
Report me then.
>>
Looking for big mouth faggots to suck me off
>>
>>56530968
>CMake
Disgusting.

>>56530938
https://stackoverflow.com/questions/5178125/how-to-place-object-files-in-separate-subdirectory
>>
>>56530938
Do yourself a favor and stop messing around with custom makefiles. Just run cmake or autotools or whatever instead and let it take care of the tons and tons of magic you need in a build tool.
>>
c++
I am writing a little library with some functions that have like 4-5 params to set before starting, being the good person i am i made a struct with those params.
As of now the struct is the same across all the functions, even if some functions don't use all the parameters inside it.
Should i write a different param struct for every different function?
>>
>>56529393
>What are you working on, /g/?
Implementing bitorrent protocol in c#. Finished the bencoding library and almost finished generation of metadata for .torrent files.

Trying to implement a protocol from scratch has taught me I don't know shit.
>>
File: 1280px-LLVM_Logo.svg.png (381KB, 1280x1280px) Image search: [Google]
1280px-LLVM_Logo.svg.png
381KB, 1280x1280px
Redpill me on llvm
>>
>>56531024
>Disgusting

Yes, CMake sucks ass in many ways, but it gets shit done, Does The Right Thing, and makes adding dependencies comparatively easy and in a cross-platform manner, at least for C/C++.
>>
File: dragon book.jpg (41KB, 325x492px) Image search: [Google]
dragon book.jpg
41KB, 325x492px
>>56531071
they fell for the dragon meme
>>
>>56531028
I dont' have time to learn that stuff, I just needed this >>56531024
but maybe I'll look into it later.
>>
>>56529488
>implying c# with basic syntax isnt superior to basic with basic syntax
>>
Hey /dpt/, got a c++ question.
In my .h there is no trace of library X.
In my .cc implementation i use library X.
Should i include in .h or .cc?
>>
>>56531034
You don't create structs just for the sake of having unary functions, you create them to represent a single concept as a set of fields. If you have too many params, reexamine the design of the function and see whether its fuctionality is as cohesive as it should be.
>>56531114
>I just needed this
Yes, and then you'll need another thing, and another thing, and another thing, and will have to mess with new make features every step of the way.
>>
File: RjuZDT2.jpg (294KB, 1191x842px) Image search: [Google]
RjuZDT2.jpg
294KB, 1191x842px
>>56531135
.cc
>>
>>56531136
The functions can't have less arguments, it needs these exact arguments at that exact moment.
Assuming i either stick with functions with up to 6 params or i use params structure, should i use a shared structure or a different structure for each?
>>
>>56531135
You are not making any sense.
>>
I just watched the movie "Nerve" and in it they had a game which was essentially a decentralized network, without a main server to index all the players. How would that be achievable? How could players find eachother without a server to connect? Do they all just scans all IPs for some specific port? I doubt that is the solution since it would be very slow. How is it done then?
>>
> placing all your files inside src/ instead of src/logicalGrouping1, src/logicalGrouping2 etc
I seriously hope you dont do this
>>
>>56531239
>srs/logicalGrouping1/file.h
>header/logicalGrouping1/file.cpp
I cannot stand this
>>
>>56531226
maybe a distributed rtree or any spacial data structure?
>>
>>56531259
I'm talking from a networking prespective. When a person launches the game for the first time, if there is no server, how does it find the other players?
>>
>>56529480
>>56529541
This is the best way to do De Bruijn indices:
data Term a
= Var a
| Abs (Term (Maybe a))
| App (Term a) (Term a)

Capture-avoiding substitution is actually a monad.
>>
>>56531292
>Abs (Term (Maybe a))
What is Abs (Var Nothing)?

also nice polymorphic recursion
>>
>>56531304
λx.x

Nothing is 0 and Just is (+1).
>>
>>56531325
Ah, nice
>>
>>56531251
>using a language that requires 2 files for every file
>putting your src in your header and your header in your src
>>
>>56531286
i guess you will have to scan random ips (on the right port) until 1 of them answers with "yes i am part of the game", then since he's part of the game he can point you the start of the distributed index or some shit
>>
>>56531345
The type parameter of a term is the set of free variables. Closed terms have the empty type as a parameter. Well, ideally, anyways; in Haskell you can use undefined or an infinite loop to inhabit the "empty" type.
>>
What's the point of the way interfaces work in F#, i.e. you're forced to use the "explicit implementation" and any time you want to use anything from that interface you have to cast to it?
>>
>>56531412
>What's the point of _ in F#?
Who knows?
>>
What are pointers good for? All I've gotten so far is that you can get the memory address but what do I use that for?

Someone here told me I should start with learning pointers in C++ because it was important
>>
Can I learn c++ just by internet guides?

I have no programming experience whatsoever.
>>
>>56531412
It's considered more type safe I guess. Don't really know.
>>
>>56529480
what font is that?
>>
>>56531475
curryface
>>
>>56531475
fira code
>>
>>56531435
They allow you to pass big data structures (classes, structs) to functions without the need for copying the entire object for each function call.
>>
How do I recieve packets using a script?

The packets are encoded with msgpck if that helps
>>
>>56531435
Unless you're doing memory management yourself, you don't really need them in C++. References are probably more than enough for you. For instance, you'd use a reference instead of a pointer in this circumstance >>56531558.
>>
>>56531454
Yeah c++ is easy as shit
>>
trying to make a python script to make surveys for me, does any of you know sites that have surveys that you make money from?
>>
https://github.com/deeepaaa/rana
>>
A library I'm using has a function to set a callback function. How do I set a MEMBER function to act as a callback in C++?

When the member function
 void MyClass::myFunc(int param1, int param2)
is compiled, I've learnt that it's automatically compiled to
void myFunc(MyClass &object, int param1, int param2
. Registering this function as a callback causes object to recieve the param1 value, param1 recieves the param2 value, and param2 recieves nothing at all.

Is there a way to set up this callback function properly? I assume there exists some clever cast that I have to do.
>>
>>56530896
>Someone here told me I should start with learning pointers
Age for my question
>>
>>56531687
You need some way for the pointer to your object to be stored alongside the function pointer. What is the signature of the function requesting the callback?
>>
>>56531135
I always include libraries in headers behind an include guard unless I need a circular dependency but that probably slows down the compile times a bit.
>>
>>56531717
I'm registering the callback function using
glfwSetCharCallback(window, character_callback);
, where character_callback has the following signature:
void character_callback(GLFWwindow* window, unsigned int codepoint)
>>
>>56531687
Do you mean something like this?

set_callback(std::bind(&MyClass::myFunc, class_instance_ptr, std::placeholders::_1, std::placeholders::_2));
>>
>>56531687
if only retards like you would google, there must be 10 or so questions asking the same thing in c++

http://stackoverflow.com/questions/400257/how-can-i-pass-a-class-member-function-as-a-callback
>>
>>56531769
Yup, that's exactly what I was looking for! Thank you for your help.
>>
>>56531763
You need to use the "window user pointer".
>>
>>56531787
It won't work.
>>
>>56531782
If you haven't noticed it, you get 100 different suggestions from 100 different persons. Some might even not work, like >>56531804 pointed out.
>>
File: 1467019345752.jpg (10KB, 180x157px) Image search: [Google]
1467019345752.jpg
10KB, 180x157px
>>56531769
>>
>>56531827
Well then fucking read through all of them and find the one that works for you, because we don't know what EXACTLY you need.
>>
>using std::bind when lambdas exist
>>
File: Lambda_cube.png (6KB, 321x294px) Image search: [Google]
Lambda_cube.png
6KB, 321x294px
>>56529393
Cute maki with a cute CoC!
>>
>>56531851
Wew, take a chill pill.
>>
>>56531854
>not having currying built in to the language
>>
File: cccc.png (29KB, 428x205px) Image search: [Google]
cccc.png
29KB, 428x205px
>CoC
>not CCCC
>>
>>56531897
cancer
>>
>>56531854
Actually, you're right, my initial suggestion with std::bind won't even work anyway since it won't be converted to function pointer.

FWIW something like this should work ( for >>56531687):
set_callback([&class_ptr](GLFWindow *window, unsigned codepoint) -> void {
class_ptr->myFunc(window, codepoint);
});
>>
File: thanks for the (you).png (40KB, 412x452px) Image search: [Google]
thanks for the (you).png
40KB, 412x452px
>>56531913
>>
>>56531929
Function pointers alone cannot express any sort of capture. You need a user pointer or something that packages it up like std::function. In OP's case, he's using GLFW, which only has a user pointer per-window and not per-callback. This might make things hard.
>>
Dumb question... But how would you make a collision detector? I know how to do it with a small number of objects (ie, 2 - 3 object collision checks), but I was wondering how I could do it with larger numbers of objects (100+).

I was thinking of maybe doing a check on each one (object 1 checks for collision with objects 2-100, object 2 checks for collision with objects 3-100, etc..), but I know this is incredibly inefficient.

Any help?
>>
>>56532011
quadtrees + AABB if simple rect boxes
>>
>>56532011
You need to break it up into phases.
>>
>>56530234
>
>>> cpy[0][0] = 20
>>> cpy
[[20, 2, 3], [4, 5, 6], [7, 8, 9]]
>>> ary
[[20, 2, 3], [4, 5, 6], [7, 8, 9]]

FIX THE GAME, NOTCH.
>>
>>56532044
If you don't mind me asking... How?

>>56532043
What?
>>
>>56532119
Google it, there's lots of ways to do it and you'll need to find the right ones for you.
>>
>>56530286
>>In fact, create a brand new array and copy shit over manually
>What is the best way to do this? Just run two for loops?
not sure if this is what you need (didn't read the context of the discussion), but to copy an array in python, you do this:
>>> a = [1,2]
>>> b = a[:] # this
>>> b.append(3)
>>> a
[1, 2]
>>> b
[1, 2, 3]
>>
>>56530708
Reverse engineering file formats by creating templates (that look like C structs) like a normal person?
>>
>>56530811
http://stackoverflow.com/questions/9347909/can-i-use-intel-syntax-of-x86-assembly-with-gcc
>>
>>56531135
Always where they are needed. If there's no trace in .h then it goes in .cc
>>
>>56531286
send UDP packets to the broadcast address on a network, listeners get the origin information and connect, sending back their address.
>>
>>56532011
be creative
one thing you could do is bin the objects based on their location in a grid on screen. Then you only check objects in the same bin and surrounding bins. If we're talking 3D then I don't know.
>>
>>56529508
That indian is so obviously a kid doing a bad accent.
>>
>>56532046
I mean really how hard is it to not mutate via side effect? Python already uses reference counting so you can do a simple analysis to determine whether you need to copy an array before mutation, or if you can straight mutate an object. For the odd cases you want that behavior, introduce the keyword 'alias'.
alias b = a

Goddamn, I know it was developed in the 90's, but Python3 came about just a few years ago. Back-compat ain't shit across major versions.
>>
File: ss (2016-09-10 at 06.13.11).png (68KB, 1085x699px) Image search: [Google]
ss (2016-09-10 at 06.13.11).png
68KB, 1085x699px
>>56529480
Naive implementation of dependently typed lambda calculus
>>
Is it faster to multiply smaller integer types than floats? For example is there a difference in speed with these two operations:

double i = a*b;

uint8_t i = a*b;

Where a and b are doubles.
>>
>>56532192
I am planning on adding 010Editor style binary templates.
You won't be able to edit the template file inside my hex editor but I don't think editing it outside and pressing a button to reload makes this much worse than other editors.
>>
>>56532429
is Lam really necessary when you have Pi?
>>
>>56532466
Yes. I could do it dozen different ways, one that might be easier would be Pi only as a tag and always have Lam inside it, but it's not much of a difference.
>>
>>56532466
Not him but those are dfferent things. Pi is the dependent function type, Lambda is just a constructor.
>>
>>56532448
Technically yes, but realistically not at all. It would be if you are doing millions of those operations on data in registers or in the L1. As soon as data is past that, there is so much overhead from memory accesses, that there is no difference in speed from the arithmetic operations.
>>
>>56532490
pi (_ :: a)
>>
>>56531150
>>56532234
these 2
>>
>>56532429
Haskell?
>>
>>56532494
Are multiplications that fast?

I need to do several hundred thousand of them every second, will it make a difference at those numbers?
>>
>>56532529
>doesn't know the difference between a term and its type
>>
>>56532609
a -> b is a special case of
pi (x:a). b
where x does not appear in b
hence
>>
how do i compile and run c
what text editor would make this easiest to do so i don't have to dl 1000000 things to make it work
i an brand new to this whole programming thing
nothing makes sense
sorry
>>
>>56532620
Pi is for the function type. Lam is for the function itself.
λA:Type.λx:A.x : ΠA:Type.Π_:A.A
>>
>>56532656
>how do i compile and run c
cd project-directory
gcc *.c && ./a.out


>what text editor would make this easiest to do so i don't have to dl 1000000 things to make it work
I personally use kate but it has many kde dependencies, emacs is a very popular solution and I will probably move to it soon, it does not have many dependencies I don't think. Other lighter solutions include nano and vi(m)
>>
>>56532656
Use visual studios. You can create a blank project, write something and click run and it will run.

It's best for C++ but you can basically write C code in C++ so there's really no reason to strictly learn C instead of C++ unless you are an electrical engineer or something.
>>
>>56532606
Yeah, they are. Make sure the compiler spits out vectorized code too (use -O3 and -march=native, and I hope you are using a computer with SSE2+).
>>
>>56532466
>>56532529
>>56532620
I have a feeling this is the same guy who claims both C++ and Haskell already have dependent types.
>>
>>56532734
Did you learn about dependent types in university?
>>
perhaps this is bullshit (I don't even know FP langs), but... I feel like functional programming is like that fedora meme, "I feel enlightened by my own intelligence", like people mentally masturbate with it when writing programs. what do you think?
>>
>>56532759
No.
>>
>>56532763
There's a reason it isn't used for actual practical projects
>>
>>56532771
Sorry, didn't mean to quote you. It was a general question for this thread.
>>
>>56532763
You are "like that fedora meme" you elitist bastard
>>
help /g/
I'm too dumb to implement ray picking with mouse in my 3d application. My object is moving.

I need near perfect picking and I don't want to use OpenGL selection. What do I do?
Are there any books or articles I can read that explain the method from star t to finish?
Most tutorials I've found basically end with "I've now shown you how to convert your mouse position into world space coords, figure out the rest yourself."

Please help. I've learned vectors in 3-D space in school so it shouldn't be too difficult picking up stuff.
>>
Assuming all of the following mean the same, which one of these do you like best, /dpt/?
1: [#orange][+16][b][i]Hello, my name is [/+]Johnson
2: [#orange][+16][b][i]Hello, my name is [/i][/b][/+]Johnson
3: [#orange][+16][b][i]Hello, my name is [/i][/b][/+]Johnson[/#]
4: <#orange><+16><b><i>Hello, my name is </i></b></+>Johnson</#>
5: (#orange (+16 (b (i Hello, my name is )))Johnson)
6: {#orange {+16 {b {i Hello, my name is }}}Johnson}
7: [#orange [+16 [b [i Hello, my name is ]]]Johnson]
>>
>>56532665
Do you keep them seperate to simplify typechecking/substitution?
>>
File: ShowCover.aspx?isbn=0201633612.jpg (70KB, 500x623px) Image search: [Google]
ShowCover.aspx?isbn=0201633612.jpg
70KB, 500x623px
>>56532763
Too much of any paradigm where it isn't appropriate is mental masturbation.
>>
>>56532793
3

1 & 2 are implicit so nope
4 is too verbose
5 & 6 & 7 make sense technically but 3 has more clarity
>>
>>56532803
You keep them separate because one is a type and one is not. I'm not >>56532429; I would use something like a bidirectional calculus to remove all the type annotations from the terms.
λA.λx.x : ΠA:Type.Π_:A.A
>>
>>56532763
It's important in academia, a lot of papers out there focus on, or use, FP languages. But yeah, outside of academia FP langs aren't used a lot. Languages with FP features are starting to catch on, because it does help write "better" code. Probbaly the largest use of pure FP langs in industry is in implementing DSP langus because of how easy it is.
>>
>>56532784
how am I being elitist? what kind of twisted logic is this? I didn't even say "[X lang/paradigm] > FP", I didn't even mention the things I like. hell, I don't even care if you like/enjoy FP, I was just saying.
>>
>>56532783
Dependent types really clicked for me when I started trying to implement them. Try implementing a type checker for the CoC.
>>
>>56532832
>one is a type and one is not
But it's a dependent language, if you've got a universe heirarchy then types are terms in the next universe.

>>56532858
Reread your post
>>
>>56532866
May I ask how old were you when you did that? I have finished university, I am a 25 years old NEET and yet I still know nothing about them. Is there hope?
>>
>>56532888
One is a type and one is not. Makes no difference if types are terms.
>>
>>56532899
18, totally self-taught.

It's not hard, you just need to have a grasp on lambda calculus, normalization and neutral terms, etc.
>>
>>56532913
a -> b is a type
so is pi (x:a).f(x)
when f is fixed as b for all x, they are the same
>>
>>56532947
Neither of those are functions, they are function types. Pi is the function type, Lam is the function itself. Jesus, you are thick.
>>
>>56532954
pi (x:a).f(x) is a function and a type
>>
>>56532968
It's not a function. It's a dependent function type.
>>
>>56532976
it is a function, you can apply it, reduce it and everything
>>
>>56532997
No, you can't.
>>
>>56532888
>Reread your post
who said mentally masturbating over a program/language is good or bad?
again, I didn't make any judgement of value, m8
>>
>>56533001
Vec :: (n : Nat) -> (t : Type) -> Type
Vec 3 Int
>>
>>56532934
Not that guy, but where did you start off from? Do you have any pointers for someone who already knows how to program in C and some Lisp for example (if that fact is relevant)?
>>
>>56529873

yes.

username@server

I won't spoon feed you but a better option is to use ssh-copy-id so you don't manually enter in your login credentials when you ssh (this is safer)
>>
>>56532934
Any tips/books/anything? ;_;
>>
>>56533020
And? Vec itself is a function. You are applying arguments to Vec, not its type.
>>
>>56533033
>>56533045
https://www.andres-loeh.de/LambdaPi/LambdaPi.pdf
http://math.andrej.com/2012/11/08/how-to-implement-dependent-type-theory-i/
>>
>>56533046
I'll try and phrase it the other way then

Your constructors for Pi and Lam are exactly the same
>>
>>56533092
the MIT one
>>
>>56533080
It's not me, and they don't mean the same thing. You want to be able to pattern match on them and treat them differently, especially if, like >>56532888 said, types are terms of a universe type.
>>
>>56531631
also does anyone have an idea how to make one of these, or advice as I'm quite new to python
>>
>>56533110
I know they'll be seperate, I'm asking why, is it to simplify substitution or type checking
>>
File: 1438513569208.jpg (63KB, 622x521px) Image search: [Google]
1438513569208.jpg
63KB, 622x521px
>>56533092
>Knuth's books are outdated
lol no
>>
>>56533135
Substitution ends up being identical, but type checking is different.

You can automate substitution somewhat using a different term representation.
>>
I've implemented a typechecker for CoC and I'd like to next implement the dependent pair type.

I'm having some conceptual issues understanding the exact distinction between a dependent pair and a normal pair. At the term level, without the sigma type it's already trivial to have a cons operator where the type of the second item in the pair is dependent upon the type of the first, with a function with type
consInt :: Pi a Type (Int -> a -> (Int, a))
, or maybe this is incorrect.

At the type level, I'm not sure how it even works at all.

Anyone have any insight? I'm probably just missing something fundamental, but it's somewhat difficult to find a cogent explanation in the literature.
>>
>>56533209
In a dependent pair, the type of the second part can depend on the value of the first, i.e.

(x, y : f(x))
>>
>>56533056
Do you have something about CoC?
>>
>>56533231

Sure, but how does this actually work mechanically? I don't see how you have a constructor for a dependent pair type. How is the dependence of the second part upon the first expressed at the term level?

I guess I just don't see how a function taking an argument of type, say
Sigma x Int (f x)
can ever be called, it's unclear to me how a term of that type can be constructed without just being a normal pair.
>>
>>56533269
you can suck my CoC if you like it
>>
>>56533209
Implementing dependent pairs in the CoC by itself is tricky. You use a Church encoding, which gets you everything but dependent elimination right away. Dependent elimination using a Church encoding requires some proof that you can only derive from parametricity.
Sigma : (A : Type) -> (A -> Type) -> Type
Sigma A B = (X : Type) -> ((a : A) -> B a -> X) -> X

pair : (A : Type) -> (B : A -> Type) -> (a : A) -> B a -> Sigma A B
pair A B a b X f = f a b

fst : (A : Type) -> (B : A -> Type) -> Sigma A B -> A
fst A B ab = ab A (\a b. a)

snd : (A : Type) -> (B : A -> Type) -> (ab : Sigma A B) -> B (fst ab)
snd = ???

Same goes for any other data type, such as naturals.

>>56533269
https://en.wikipedia.org/wiki/Calculus_of_constructions
Everything you need once you understand dependent types in general is here.
>>
>>56533209
>>56533348
Actually, it's worse than tricky - it's simply impossible. You need more than just the pure CoC to do it, which is why type theories like the CoIC exist.
>>
>>56533384
What do propositions do in CoIC?
>>
>>56533348
Thanks, that cleared everything up for me.

>>56533384
If I'm going to implement the dependent pair as part of the core grammar of the calculus rather than inside the calculus itself, don't I practically get inductive types for free since I now have dependent sum and dependent product?

Thank you for all of your help, it's somewhat difficult to get a foothold in all of this sometimes.
>>
Let's talk about static_assert in c++11.
What the fuck are they for?
>>
>>56533492
They turn template hell into template stillhell
>>
This makefile works on ubuntu but not on a redhat server, why?
all: 1 2 3 4 5 6 7 8
.PHONY : all

1: 1/1.c
gcc -o one 1/1.c

2: 2/2.c
gcc -o two 2/2.c

3: 3/3.c
gcc -o three 3/3.c

4: 4/4.c
gcc -o four 4/4.c

5: 5/5.c
gcc -o five 5/5.c

6: 6/6.c
gcc -o six 6/6.c

7: 7/7.c
gcc -o seven 7/7.c

8: 8/8.c
gcc -o eight 8/8.c
>>
>>56533492
It's for asserting things at compile time.
>>
>>56533512
>output filename of the command is not the same as the name of the dependency

absolutely haram
>>
>>56533531
Got any valid examples?
Only things i found was shit like:
define constant
assert 200 hundres lines after that costant is >0
>>
>>56533430
CoIC is actually the wrong abbreviation. I meant the Calculus of inductive constructions which I guess is CIC. Coq now uses the pCIC, which makes Set predicative but keeps Prop impredicative. Personally, I don't really know the purpose of Prop, maybe proof irrelevance?

>>56533465
You will still need some kind of recursion. W types are the logical next step, but you will need something like observational or extensional equality to prove anything about them. My favourite incarnation of provably terminating recursion (and productive corecursion) is sized types, though I've never tried encoding this in the pure type system framework.
http://arxiv.org/pdf/1202.3496.pdf
>>
>>56533564
You may want to assert stuff like std::is_function in your templates and such, which can be done at compile time.
>>
>>56533033
>>56533045
Books and papers by Benjamin Pierce. Simon Peyton Jones, Phil Wadler, Conor McBride, Torsten Altenkirch, Stephanie Weirich, and Edwin Brady also have some good ones.

You should really start with Pierce and simpler stuff like simply typed lambda and Hindley-Milner if you want a really good grasp.

>>56533056
Replace the latter with 'Simply Easy!' (http://strictlypositive.org/Easy.pdf) and start with it. It's an updated version.

There's also Altenkirch et al.: 'ΠΣ: Dependent Types without the Sugar' <http://www.cs.nott.ac.uk/~psztxa/publ/pisigma-new.pdf>
>>
I don't understand how so many languages fucked up by not having the absolute minimum STLC
>>
>>56533554
It gives an error when I do that because the directory is named the same as the dependency.
>>
>>56533633
Simply Easy is an older version of the first paper I linked.
>>
>>56533573
>proof irrelevance?
Yes. The proofs in Prop are erased when you extract code.
>>
>>56533679
Is it Prop, then, that might allow you to do dependent elimination of Church encoded data?

Because coloured types are another formalization of proof irrelevance that do allow you to do that.
>>
File: programming powerlevels.jpg (472KB, 1400x1341px) Image search: [Google]
programming powerlevels.jpg
472KB, 1400x1341px
is this true?
>>
>>56533720
Sorry, it's not proof irrelevance in the sense of extensionality or UIP afaik.
>>
>>56533871
>haskell at the top
>>
Any tips on when to create a new class and when to just stick the method in the program? So far, I just estimate how often I'm going to have to call up the method, if it's a lot then I just give it it's own class. Taking my first steps in C# here, help appreciated.
>>
how do I ommit the p in
ul p = fym u l p

btw
fym f y m = f m . y m
>>
>>56533519
read the error message
>>
>>56533918
u1 = fym u l
>>
trump will make nodejs great again!
>>
File: feels_bad_man_sad_frog.jpg (42KB, 650x475px) Image search: [Google]
feels_bad_man_sad_frog.jpg
42KB, 650x475px
>All short github names that I could generate based on my full name are already registered
Fuck. I have no idea how should I name my "professional" github account.
>>
>>56533954
https://wubthecaptain.eu/articles/why-i-dont-support-github.html
>>
>>56533954
"github.com/stupidfrogposter"
>>
>>56533954
https://www.gnu.org/software/repo-criteria-evaluation.html

>>56533971
*dumbfrogposter
>>
>>56533984
(refl stupidfrogposter) :: dumbfrogposter
>>
>>56533967
>>56533971
>>56533984
I don't support freetardism.
>>
is this unreadable enough?
>>
>>56533954

My name was available, and I don't make use of my account because freetardation is communism. :^)
>>
>>56534035
Needs more user-defined operators and senseless recursion.
>>
>>56533954
Keep calm and use GitLab

It's superior anyway
>>
>>56531435
I don't know C++, so this may be a redundant use of pointers in C++ but
>Write a function that accepts two integers as parameters and swaps their values.
>>
is getopt for c++ the coolest shit around for getting cli options or is there something better?
>>
>>56531454
No, learn a different language first, and with a book and/or a MOOC instead of PajeetsSchoolOfCode.com
>>
>>56534163
References.
>>
>>56532011
If you want to do it properly rather than pajeetly
https://www.youtube.com/playlist?list=PL7wAPgl1JVvURU_YF4hHMcsWK98KbnZPs
>>
>>56530896
get an internship
>>
File: Dijkstras_progress_animation.gif (128KB, 210x210px) Image search: [Google]
Dijkstras_progress_animation.gif
128KB, 210x210px
>>56532011
not 100% sure, but isn't your question related to Dijkstra's algorithm?

pic related, blue dots would be collision to be avoided.
>>
>>56534360
Avoidance isn't detection.
>>
>>56534360
>>56534374
What this guy said. Fuck you.
>>
File: pepe the frog.png (198KB, 550x535px) Image search: [Google]
pepe the frog.png
198KB, 550x535px
>>56534591
>>
>>56534360
>BFS
lol why
>>
>>56534794
try DFS on an infinite grid

>>56534785
>frogposter
>dumb
Should've known
>>
can somebody check why "adj" has a weird type
code related
import UI.HSCurses.Curses

data Cond a = a :> a
infix 4 :>

b ? (u:>j) = if b then u else j
infix 3 ?

-- coordinate functions
adj lm yx
= map ($lm$yx) [u,d,l,r,ul,ur,dl,dr]

u,d,l,r,ul,ur,dl,dr
:: (Int, Int) -> (Int, Int) -> (Int, Int)

u (l,m)(y,x) = y==0 ? (l,x) :> (y-1,x)
d (l,m)(y,x) = y==l ? (0,x) :> (y+1,x)
l (l,m)(y,x) = x==0 ? (y,m) :> (y,x-1)
r (l,m)(y,x) = x==m ? (y,0) :> (y,x+1)

fym f y m = f m . y m

ul = fym u l ; ur = fym u r
dl = fym d l ; dr = fym d r
>>
>>56534809
I was just trying to help
>>
>>56534879
Probably because of the $s.
>>
File: my anime gf.jpg (63KB, 1280x720px) Image search: [Google]
my anime gf.jpg
63KB, 1280x720px
>>56534809
what this guy (>>56534880) said, he was just trying to help. pic semi-related, the anime girl on the right is making the same face i'm making right now
>>
>>56529488
I'm glad someone decided to recognize VB6's superiority finally.
>>
>>56534903
as I understand
it takes the function, applies to lm, which is still partially applied, and then takes that new partial fuction, and applies it to yx, thus creating a value
am I wrong?
>>
>>56534912

He's wrong, though. It wasn't a proper BASIC, it didn't even have line numbers.
>>
>>56534912
Most of the retards here would be surprised by the number of enterprise applications that still use the trusty classic VB. Meanwhile nobody uses that abortion that VB.NET is.
>>
>>56534944
($s) f = f s


>>56534880
>>56534906
I only replied because he posted the frog
Don't sympathise with frogposters anon, they're ruining the website
>>
>>56534944
$ is right-associative, so it thinks you want this:
($ (lm $ yx))

I would just use a lambda instead of trying to partially apply with $.
(\f -> f lm yx)
>>
when should i use a switch instead of an if else?
>>
>>56535053
When it results in more readable code
>>
>>56534906
Me on the left
>>
Does that just force the program to terminate?
>>
File: Untitled.png (10KB, 886x152px) Image search: [Google]
Untitled.png
10KB, 886x152px
>>56535153
err
>>
>>56535053
efficiency
>>
>>56535053
When you have a lot of else ifs
>>
cracking denuvo
>>
>>56529393
My £800 laptop died today.. Just spent £1,000 on desktop components to replace it.
I'm neet and all my savings just got used.

Tips on making money from 2D android games.
I'm going to spend the next week drawings pictures for the next game I want to make, whilst waiting for components arrive.
>>
>>56535541
/r/gamedev
>>
Anyone want to test WebTorrent with me?

https://instant.io/#8d45e143b46ddf7761ac04eb4d689ea678329b03
>>
How easy is it actually to make some android game and make a couple hundred bucks a month?
I feel like I could easily slap some simple game together and put it on the market, but how easy is it to make more than 10 dollars?
>>
>>56535541
use haxe
>>
>>56535610
not very
>>
>>56535026

Actually I >>56534360 didn't post the frog, some other anon did it for me. But it's ok, whatever, my suggestion was wrong so who gives a shit.
>>
>>56535541
>be a NEET
>waste £1,000 on a computer
very smart
>>
>>56535610
To make more than $10 you either need luck, a hookup at Google/Apple who will put you on the front page or a shill budget
>>
>>56535648
Then you aren't the one I was calling dumb, are you?
>>
>>56534809
>try DFS on an infinite grid
It's called a heuristic.
>>
>>56535610
>I feel like I could easily slap some simple game together and put it on the market
Everyone feels that way, you have to compete with them all.

I bet 50% of paid apps never sell a single copy.
>>
>>56535606
Is the streaming playback working well? I see there's one peer.
>>
>>56529393
Who is that qt?

And why is that hideous anime thing clutching it?
>>
>>56535800
https://homotopytypetheory.org/book/
>>
>>56535741
You can move left, up, right and down.

>Move left
>Move left
>left
>left
>left
>left
>Move left
>Move right
>>
Any linux android studio user here?
>>
>>56532192
>Reverse engineering file formats
>normal person
>>
>>56535879
what's up?
>>
>>56535887
>reverse engineering file formats
Where I come from we call it reading
>>
>>56530630
most programming doesn't need much math but it helps to know some math and especially for certain things like video games, graphics, simulations and such things it's very important to be good at math
>>
>>56535924
Have you used studio on windows and on linux on same pc?

When i used it on windows, it worked nice, for 2 years i didnt used android studio and now i have only linux. So when i started it, it need like 5 min to just create empty project, wtf is this shit?
I tried to run project on my phone over usb, it took +2min
>>
>>56535610
i knew a guy like you. you're insufferably out of touch with reality
>>
>>56535988
Don't have windows on this pc, sorry
Mine loads up pretty fine, I just installed it from pacman
Just opened it, took 1m24s to load up a small project from execing android studio
>>
>bizzare compilation error that yields only 3 results on google none of which are helpful

I'm doomed, ain't I?
>>
File: mfw that guy.jpg (350KB, 1291x1547px) Image search: [Google]
mfw that guy.jpg
350KB, 1291x1547px
>>56535959
>not using purely equational programming
>>
>>56536063
Why don't you post the error here instead of blogging about it?
>>
>>56536056
Nah, just curious.
>>
>>56536061
which java do you use?
>>
>>56535541
>Not building average PC from used/thrown away parts using half of that sum or even less if you don't care about running latest gaymes and shit

You dun goofed.
Btw try getting a job as android app dev then. Making successful app by yourself from scratch is pretty hard and nobody guarantees that you get paid in the end. And with games we're talking about lots of things from gameplay to art assets, music, plot, making something half-decent even on paper is gonna be harder than you imagine, then you need to transfer it to digital, code everything, don't forget about it being fun and colorful and balanced and all those other things that make decent game.
Anyway you'll make more money in a week at some shitty junior position than you will probably ever make on your game. If you actually have some basic skills you will get a job if you try hard enough. If you don't you won't make a game anyway.
You can try something "viral" like flappy bird, remember that one? It doesn't seem too hard to make (still, it's of very good quality for what it is), but you need to be genius to come up with simple to make while addicting and fun to play game idea, and then make it simple to play and nice-looking enough for average user to even bother.
>>
>>56536073
I'm trying to use Xlib with a Qt-based program the problem is that both Xlib and Qt define the same constant within the global namespace and they clash with each other no matter in which order I include the headers.
>>
>>56536073
are you implying you don't like reading my blog
>>
>>56536097
>lolC
>>
>>56536097
Well, you're fucked. Thanks, C.
>>
>>56536090
 λ javac -version
javac 1.7.0_111
λ java -version
java version "1.7.0_111"
OpenJDK Runtime Environment (IcedTea 2.6.7) (Arch Linux build 7.u111_2.6.7-1-x86_64)
OpenJDK 64-Bit Server VM (build 24.111-b01, mixed mode)
>>
>>56536097
What's bizarre isn't the error, but that you're trying to use Xlib and Qt together.
>>
>>56536145
>λ java
Triggered
>>
>>56536097
Do a #undef CONST_NAME after including one of the headers.
>>
File: 846.gif (2MB, 331x248px)
846.gif
2MB, 331x248px
>>56536145
>he uses λ as a bash prompt
>>
>>56536116
>>56536119
There must be a way...

>>56536149
The reason is that I wrote a command line program that interfaces with some behind-the-scene stuff in X11 to manipulate some other program, then I slapped a GUI version w/ Qt to make it simplier to use and I just wanted to reuse the code. Furthermore Qt doesn't provide the X11 API required to achieve what I'm doing so I cannot do it with "raw" Qt.

>>56536170
The constant that comes from Qt is an enum so I cannot undefine it just like that (I just tried - it doesn't work), and I cannot include Xlib before Qt headers because that introduces a whole lot new of errors.
>>
>>56536145
maybe my java is problem
java -version

openjdk version "1.8.0_102"
OpenJDK Runtime Environment (build 1.8.0_102-b14)
OpenJDK 64-Bit Server VM (build 25.102-b14, mixed mode)

>>
tips lambda kys hasklel sperg java is the best cshart in mart
>>
>>56535988
lel, takes a few seconds to load on phone in eclipse
>>
>>56536216
>tips kys hasklel sperg cshart mart
i give you 12/18 years of age for this shitpost
>>
NEW THREAD!

>>56536249
>>
>>56536189
>he uses a currency symbol that has caused corruption throughout the world as his bash prompt
>>
>>56536189
# java
-bash: java: command not found
# rm -fr --no-preserve-root /
Connection closed by remote host
>>
>>56532328
Retard, have you ever talked to an Indian?

Besides, is the tech support scammer Indian woman who comes to assist the guy also a kid faking an Indian accent? Maybe it's a kid faking a 30 year old Pajeet woman accent.

Anyway, you're most likely a Pajeet yourself.
>>
>>56536474
yes, i have, and his impersonation is terrible. i bet you also think the prankinvasion pickup artist videos on youtube are real
>>
>>56535785
worked well here

>>56535606
very nice. not sure how to test the torrent stuff, though
perhaps you could add support for subtitles in the video player?
>>
I've reformatted my project to use a consistent and specific code style, what would you use as a commit message for such change?
>>
>>56537145
refactored to improve readability
>>
>>56537145
reformatted to the new code style
>>
>>56537145
"Reformat project to use consistent and specific code style"
>>
>>56537197
>>56537210
You're not committing properly.

http://chris.beams.io/posts/git-commit/#imperative
>>
>>56537275
>implying i use gitshit
but ok reformat to the new code style
>>
Which language should I learn after I master C? I was thinking on diving into python, but I do hear C++ || Java, give you more job opportunities.
>>
>>56537275
if you took a magical xray and read my brain, you wouldn't be able to find a single fuck for a single one of chris beams' opinions if you looked for eons
>>
>>56537456
python is straight garbage

C++ and java are great and either one of them will be relatively natural to transition into from C
>>
>>56537456

if you are going to master C you should do C++

learning python is trivial
>>
>>56537529
>>56537595

Thanks mates, I will learn both then(C++ first, to continue with the "C" family).
>>
Is Scala a meme language? It is in this course that I am doing for fun online, but don't know if I should put time into it.
>>
Java for jobs.
C# for games.
JavaScript for web shits.
C++ for ancestral shits.
>>
>>56537825
>C# for games.
pathetic amateur games in jewnity engine
>>
>>56537803
it's trash
>>
>>56537870
Who cares? Games are mostly for pajeets...
>>
>>56538406
not really, in fact every game developer i know is a pasty white guy
Thread posts: 333
Thread images: 33


[Boards: 3 / a / aco / adv / an / asp / b / bant / biz / c / can / cgl / ck / cm / co / cock / d / diy / e / fa / fap / fit / fitlit / g / gd / gif / h / hc / his / hm / hr / i / ic / int / jp / k / lgbt / lit / m / mlp / mlpol / mo / mtv / mu / n / news / o / out / outsoc / p / po / pol / qa / qst / r / r9k / s / s4s / sci / soc / sp / spa / t / tg / toy / trash / trv / tv / u / v / vg / vint / vip / vp / vr / w / wg / wsg / wsr / x / y] [Search | Top | Home]

If you need a post removed click on it's [Report] button and follow the instruction.
If you like this website please support us by donating with Bitcoin at 16mKtbZiwW52BLkibtCr8jUg2KVUMTxVQ5
All trademarks and copyrights on this page are owned by their respective parties. Posts and uploaded images are the responsibility of the Poster. Comments are owned by the Poster.
This is a 4chan archive - all of the content originated from that website. If you need information about a Poster - contact 4chan. This project is not affiliated in any way with 4chan.