[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: 332
Thread images: 31

File: 1484177458718.png (514KB, 810x698px) Image search: [Google]
1484177458718.png
514KB, 810x698px
What are you working on, /g/?

Old thread: >>58460686
>>
>>58467161
Iverson did nothing wrong
>>
Friendly reminder that if you don't use chinese characters for variable names then you're not a real programmer
>>
>>58467180
>>
>>58467161
Thanks for using an anime image faggot
>>
>>58466760
>Any good video to learn C structures and linked list from?
>I've been trying for two days now and still haven't figured it out.

asking again
>>
File: task.png (31KB, 628x152px) Image search: [Google]
task.png
31KB, 628x152px
>>58467161
I'm making a taskwarrior clone/inspired task manager.

It works pretty well even though I totally cannot into databases and my current JSON processing is probably inefficient as shit.
Now just improve the CLI parser and then maybe web interface
>>
>>58467206
There is no anime image faggots, there are only anime image (pure) girls.
>>
>>58467043
>You sure are making a lot of generalisations about a lot of code.
I've seen a lot of code in my time and C code bases seem to be by far the most stuffed with things like this.

It might be a somewhat unfair sweeping judgement, but my post was prompted by my being triggered by seeing this undocumented function in some (proprietary) C code:

bs_isec(bset_t **res, bset_t *bs, uint32_t bs_n, bs_idx_t rgn_s, bs_idx_t rgn_e)


I offer a (You) to whoever figures out what it does based on just the above.
>>
>>58467255
Sorry, how it actually looks is:

int bs_isec(bset_t **res,
bset_t *bs,
uint32_t bs_n,
bs_idx_t rgn_s,
bs_idx_t rgn_e);
>>
>>58467273
Context is important, this would only be bad if the workings cannot be easily inferred from the context AND variable name.
>>
File: IMG_20170113_092107351.jpg (3MB, 5344x3006px) Image search: [Google]
IMG_20170113_092107351.jpg
3MB, 5344x3006px
Just studying these days and doing simple class projects (Intermediate Java Programming and Software Security) and studying for the Network+ exam in March. Here are the books I'm working through.
>>
File: 3-column-width.gif (907KB, 745x382px) Image search: [Google]
3-column-width.gif
907KB, 745x382px
>>58467253
>>58467231
Same reason why printed text is best divided into columns you dumbos.

Hint: your eye can see the entire line at once.
>>
>>58467299
It's a part of the public interface of a library.
>>
>>58467255
result
set
set element count
region start
region end
>>
>>58467255
>on just the above
that's a stupid condition
>>
File: 1421139415594.jpg (112KB, 1358x765px) Image search: [Google]
1421139415594.jpg
112KB, 1358x765px
Reminder that pretending to be an Anime girl boosts your programming skills by 50%
>>
>>58467382
Why? Should I have to look up the internals of every function I see used?
>>
>>58467390
Does she run Gentoo?
Why there is no anime girl wallpaper?
>>
>>58467361
Close but not entirely correct.

What do you think it does?
>>
>>58467390
is sponge bob an anime girl
>>
File: primer.jpg (34KB, 600x791px) Image search: [Google]
primer.jpg
34KB, 600x791px
Has anyone read C++ primer or cpp primer plus?

Which book for C++ does /g/ recommend?
>>
Post code that is objectively terrible, i.e. unreadable even for a language expert.

I'll start:
https://github.com/jsoftware/jsource/blob/master/jsrc/v2.c
>>
>>58467630
>reposting the J source
It looks like J/APL. It's just how they like their code.
>>
>>58467630
>I can't read code unless it uses <some shitty coding standard> that I approve
fucking python babby.
>>
>>58467709
>hurr hurr readability is subjective and everyone is a special snowflake
Most style debates are a waste of time, but some things are objectively shit.
>>
http://www.strawpoll.me/12097496
>>
What target and options should I use for building GCC and Binutils for building for the GBA?
>>
>>58467630
>https://github.com/jsoftware/jsource/blob/master/jsrc/v2.c
the fuck? is it obfuscated/minified?
>>
im finishing my CS degree but my classes have all a very web dev context to it and i'd like to work in companies that do space/military kind of work, what projects should I try and do on my spare time to look good on job interviews?
>>
i want to punch whoever wrote this shit

https://github.com/openj/core/blob/master/ar.c
>>
>>58467863
>>58467893
>not valuing job security
>>
>>58467863
Probably
>>
>>58467893
Why do you care. It's not like you are going to program anything in C anyway.
>>
File: harrisonford.jpg (220KB, 600x324px) Image search: [Google]
harrisonford.jpg
220KB, 600x324px
>>58467630
https://www.reddit.com/r/programming/comments/5nes00/the_j_source_code_is_pretty_terrible/
>>
>>58467419
intersection of two binary sets
uses first argument as both input set and result
>>
>>58467893
CAN'T. BREATH. SIDES. ORBIT.
>>
>>58467599
According to this post https://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list "cpp primer plus" is a pile of horse manure. I did not read it but I read "C primer plus". It was not that bad since C did not change much. But I could clearly see that Prata that did not update his book much since the '80. His code examples are horrible. You can this it's-a-compiled-language-no-one-will-see-your-shitty-variable-names-anyway philosophy.
>>
>>58467863
I've been asking this myself. I can't believe anyone writes like this natively.
>>
https://www.youtube.com/watch?v=_DTpQ4Kk2wA
>>
I got memed yesterday with fizz buzz on a job interview.

AMA.
>>
>>58468182
how badly did you fuck up?
>>
>>58468182
Did you get hired?
>>
>>58468182
Were you able to complete it?
>>
>>58468195
Not that bad. I feel like it actually went ok, but that I could have done better (overall)
>>58468197
Not yet. I met with 5 different people, and I'm waiting for them to meet and make a decision.
>>58468198
Within 5 secs.
>>
I teach some programming and every year I get a couple of students who will spend an hour or two writing hundreds of lines of (very buggy) code without thinking twice or testing once. Then they get to try and run it, which ends in a much longer effort to untangle and debug the mess they have wrought.

Various students have different problems and I can assist them with most, help them understand various concepts etc.

But these people I just don't understand and I find it very hard to help them. Why do my comments that it's better to go bit by bit testing along the way not reach them? Those people do it repeatedly even after getting the same spiel from me over and over. Most of them are not even dumb people.

Did anyone on here ever go through such a phase? Can you explain me what went down in your heads?
>>
>>58467881
anyone pls
>>
webdev is the purest form of programming
>>
>>58467212
tldr linked list:
in your struct of data, have a backwards pointer and a forwards pointer.

if that doesnt give you a clue go learn more about memory.

also linked lists are inefficient fyi
>>
>>58467599
go read effective c++, and the books following that.
>>
>>58468393
>anon doesn't know how memory works
>expects anon to know how cache works
>>
>>58468441
lmao woops
>>
>>58468305
Most people are stupid.

Punish and reinforce the point.

t. Teacher.
>>
>>58468518
t. child abuser
>>
>>58468305
More lines = more (apparent) effort = bigger ego.

When I was in high school, my peers and I used to consider a larger LOC count to directly imply a larger and more complex program.

Now we were after ego - we didn't run to our teacher when our stuff didn't work, so I'm not sure this is like your situation.

Have you considered enforcing stronger restrictions on the assignments, that would promote smaller LOC count and more frequent testing? My one prof did this - he gave us a header file for a specific data structure. Our implementations were naturally smaller, and we could test them individually with a test file he gave us. It also was not entirely covering all of his test cases, which he told us so that we would think on it ourselves. You could do something similar, but add penalties to deter them from writing larger complex pieces of garbage.

Just my 2 cents.
>>
>>58468518
It's easier to address a problem when I understand how it arises.
>>
>>58468530
Punish through lowered grades.
>>
>>58468544
>low grades are punishment these days
>>
>>58467212
it's like a chain
>>
>>58468538
You'll find that given 30 students, there will be 31 reasons for not understanding something, taking up the entirety of your time, and initiating your descent into madness.
>>
>>58468305
are you using an IDE which points out syntax errors? because you should

are you starting them off with simpler tasks first?

it should be obvious to them right from the start that they need to focus a lot on writing code carefully and testing it often. if you get just one character wrong, the program is wrong.
>>
>>58468533
I got your back


#include <stdio.h>
int
main
(void)
{
printf
("Hello ");
printf
("world!\n");
return
0;
}
>>
>>58467881
>>58468307
FizzBuzz in Ada
>>
File: 1483714927513.gif (408KB, 400x264px) Image search: [Google]
1483714927513.gif
408KB, 400x264px
>>58468696
beautiful
>>
Alright /dpt/ I need help
I decided I'd start learning Java because why not, and I'm now going through generics
So, I tried to create a generic list that can be used to contain generic lists and so on, like:
List<K, List<K, List<K, ... >>> eldritch;


That's obviously unfeasible, so I thought that wildcards might help
List<K, ?> eldritch;


Which looks nice, until you have to instantiate it
List<K, ?> eldritch = new List<K, ____>();

I really don't know what I'm suppossed to place at ____, it's not a wildcard, that's for sure, and I'm way to scared of raw types to just do
new List<K, List>


How the fuck do I do this
>>
>tfw hearing arrogant students talking shit about haskell with nasally voices and "i just want to make money man" in lecture
>>
>>58468850
You just could show them big lists of C code and present "In Haskell, it's just..."
>>
>>58468839
Swap to Haskell

data List a = Null | a :> List (List a)


l = 3 :> [3,4,1] :> [[4,7,3], [4,3,6], [7,5,3]] :> Null
>>
File: 1468472224634.jpg (61KB, 990x557px) Image search: [Google]
1468472224634.jpg
61KB, 990x557px
>>58468850
>muh haskell
>>
>>58468878
Go away, Curry nigger.
>>
>>58468893
>Pajeet mad that Java will be replaced with a language he can't learn
>>
>>58468899
>delusional neckbeard thinks haskell is hard to learn and that's why it's unpopular and not because it's a terrible language
>>
I'll just leave this here: http://esr.ibiblio.org/?p=7294.
>>
>>58468913
Java is popular and a terrible language

QED
>>
>>58468899
I'm not even the javafag. I'm just sick of hearing about your GB of garbage per/second generating pile of shit you call a language. You monad cult fuckwits need to be gassed.
>>
File: 1483528151331.gif (3MB, 512x288px) Image search: [Google]
1483528151331.gif
3MB, 512x288px
>>58468938
>Java is popular
true
>Java is popular and a terrible language
false
>>
>>58468944
>using the first false criticism of Haskell you hear because you don't have any real reasons, you're just mad other people are enjoying FP languages without you
>>
>>58468964
>>>/g/fpg
>>
>>58468972
Sorry, this is the daily programming thread.
Programming is welcome here.
>>
>>58468964
>false criticism
>admitted by the creators of haskell themselves

Oh boy, would you look at the time:

https://www.amazon.com/WORTHINGTON-CYLINDER-CORP-347138-Disposable/dp/B000RHMWBQ/ref=pd_sim_21_3?_encoding=UTF8&psc=1&refRID=DRJ0V0VY1XZRDAXHAMJZ
>>
>>58468983
>implementing babby-tier data structures in haskell
>programming
have you even made anything non-trivial in haskell?
>>
>>58469000
Has anybody?
>>
>>58467161
>tfw two stupid to learn how to code
>>
>>58469000
Everything is trivial when you write it in Haskell
>>
File: [tilting increases].png (27KB, 500x500px) Image search: [Google]
[tilting increases].png
27KB, 500x500px
>>58469039
>>
>>58469039
Okay. Go write an OS kernel that runs on real hardware.
>>
>>58469057
Stop tipping your imperative fedora and start learning today
>>
>>58469060
While >>58469039 is definitely not strictly correct, just because a language can't be used to write an OS kernel doesn't make it completely useless. Java can't do that either.
>>
>>58469063
I already learned enough haskell to see that it was a waste of time.
>>
>>58469060
Java can?
>>
>>58469081
java is shit too. It's just less shit than haskell.
>>
>>58469060
>>58469081
https://en.wikipedia.org/wiki/JavaOS
>>
>>58468955
>Java is popular and a terrible language
>false
True ackshually
>>
>>58469119
http://programatica.cs.pdx.edu/House/
>>
>>58469119
If we're counting OS's that only run on virtual machines (which are written in something else) then Haskell can do it too.
http://programatica.cs.pdx.edu/House/
https://intoverflow.wordpress.com/kinetic/
>>
Why should I hire you when I can contract 5 Pajeets for half the cost and not have to worry about the feminists in HR screaming at me for hiring a white male?
>>
File: C_Programming.png (84KB, 838x535px) Image search: [Google]
C_Programming.png
84KB, 838x535px
>>58467863
>>
>>58468929
>C replacement
it's called C++
>>
>>58469081
>>58469098
http://eta-lang.org/
>>
>>58469167
And? The JVM itself is okay, it's Java itself that sucks.
>>
>>58469151
static AHDRR(jtmeanD,D,D){I d,i;D*y;D v,*zz;
d=c/n;
NAN0;
if(1==d)DO(m, v= *x++; DO(n-1, v+=*x++;); *z++=v/n;)
else for(i=0;i<m;++i){
y=x; x+=d; zz=z; DO(d, *z++ =*x+++ *y++;);
DO(n-3, z=zz; DO(d, *z+++=*x++; ));
z=zz; DO(d, *z =(*z+*x++)/n; ++z;);
}
NAN1V;
} /* based on REDUCEPFX; 2<n */


>*z++ =*x+++ *y++;
>*z+++=*x++;
>>
>>58469142
Java processors actually existed.
>>
>>58469181
Haha, oh wow. Didn't even notice that at.
>>
>>58469181
What does DO mean?
>>
>>58469182
There's no reason a Haskell processor couldn't exist. Nobody uses Java hardware any more so they aren't relevant to this discussion.

Lisp machines were once a thing but nobody claims Lisp is a systems language.
>>
>>58469177
I didn't voice any opinions, I just thought people would be interested.
>>
>>58469150

Quantity over quality is never a wise idea with regards to programmers. One bad bug can ruin the product and make it vulnerable to hackers. You don't necessarily need to hire white guys, but you do need to hire the best quality you can find, and you need to pay them full price to motivate them into doing a thorough job.
>>
>>58469206
A Haskell processor would be really interesting, or a processor for a pure language based on lambda calculus
>>
>>58469313
https://en.wikipedia.org/wiki/SECD_machine
>>
File: JvmSpec7.png (28KB, 1152x698px) Image search: [Google]
JvmSpec7.png
28KB, 1152x698px
Is there any good book or tutorial on JVM aside of official documentation?
>>
>>58469274
>You don't necessarily need to hire white guys
Heresy.
>>
Are stack machines better than register machines?
>>
>>58469530
Nope. They're a hell of a lot easier to implement (esp. for the compiler) but much less efficient and more difficult to optimize
>>
>>58469530
Yes. Anyone who tells you register machines are "faster" is just buying into the hype.
>>
>>58469530
It depends.
>>
>>58469652
Depends on what?
>>
>>58469699
Stack market prices
>>
>>58469577
>>58469583
>>58469652
>no
>yes
>maybe
/dpt/ is as informed as ever, I see.
>>
cross-language compilers when? I want to be able to compile python into java and haskell.
>>
>>58469846
there are
you compile python in C
>>
What's the best laptop for coding?
>>
>>58469993
The one that best meets the requirements for your specific needs.

There is no "best laptop for coding".
>>
I'm looking for a language to quickly write toy programs. Something like Go, but with FP memes. Is Elixer any good?
>>
>>58469323
OwO
>>
>>58469846
They exist, depending on what languages you're requiring and what you mean by that.

http://ironpython.net/
>>
>>58470055
H A S K E L L
>>
>>58470055
Give an example or two of a toy program you'd want to write.
>>
>>58469993
>Whats the best laptop for coding
a 10 year old dell running Fedora LXDE

You obviously dont code if your asking that question
>>
>>58470055
This: >>58470099
>>
>>58469993
The best thing about coding is that you can do it on anything, including shitboxes.

Well, anything except generating gigabytes of garbage per second.
>>
>>58470055
>toy programs
>FP memes
Literally Haskell
>>
>>58470099
For example: I want to rewrite my Rust torrent downloader. It downloads a bunch of RSS feeds and downloads all the torrent files listed in the feed and writes them to disk. Ideally using green threads.
>>
>>58469836
Don't listen to them, my answer is right
>>
>>58470180
Just use Python.

>>58470195
I see what you did there.
>>
>>58470204
>Just use Python.
I don't like Python. I'd rather use Go. Both languages are kinda dull. I want something more interesting.
>>
>>58470180
>>58470281
Use Perl
>>
>>58470312
Perl isn't a functional language.
>>
>>58470281
Unfortunately your spec isn't very interesting, so 'interesting' languages aren't well suited to it.

Here are some interesting languages:
Joy, Prolog, Haskell, LISPs, Smalltalk

Here are some languages that would be well-suited to your task:
Ruby, Python, Perl

>>58470348
http://hop.perl.plover.com/
>>
>>58470180
Haskell and netwire
>>
>>58470378
whoops i mean conduit and http
>>
File: installgentoo.png (50KB, 917x1003px) Image search: [Google]
installgentoo.png
50KB, 917x1003px
>>58467161
http://pastebin.com/raw/NtV3L7nw

needs some refinement, but it's a rough list of string occurrences on /g/ over the last 13 days, at least the top 10000.
>>
>>58470378
>>58470411
Whoops, I meant Java.
>>
Working on my process of learning python by continuing to play with beatifulsoup, sqlite3, matplotlib.

Previously as a hobby coder my stuff was always procedural PHP. I'm now looking to get better with OOP and other modern coding practices. Anyone with any advice for readings on the subject, I am using Python 3. Much appreciated.
>>
>>58470360
>>58470378
I think I'll pick up Haskell again. It's a fun language, but hard as fuck. I've read Learn You A Haskell, but never built something with it.
>LISPs
How's library support for something like Racket?
>>
File: 1483911917891.jpg (89KB, 700x525px) Image search: [Google]
1483911917891.jpg
89KB, 700x525px
>>58470425
Don't use Python 3, and don't learn OOP.
>>
As someone with a very good knowledge of C++, do you think I could learn Rust and make a simple 2D game engine in it in a week?
Also have lots of FP experience
>>
>>58470444
read haskell from first princples or the wikibook
>>
>>58470444
i suppose there was big haskell pasta
>>
>>58470444
http://adit.io/posts/2012-03-10-building_a_concurrent_web_scraper_with_haskell.html
>>
>>58470456
>>58470469
Reading Learn You A Haskell was a mistake. It's dated and does a poor job explaining. The wikibook looks much better.
>>
>>58470444
>Racket
This would be a good choice. It takes a bit of familiarity to become very effective in Racket but there are libs for what you need: TCP, threads, channels, HTML parsing
>>
>>58470444
Programming in Haskell, 2nd edition
>>
>>58470451
Most definitely.
>>
>>58470444
Racket has decent libraries. It's Scheme that has none.

Haskell can do pretty much anything you care to name*, so it's a decent choice. It also goes FAST if you write in an imperative style.

"Haskell Programming [from first principles]" covers absolutely everything, with both the positive and negative implications of such a statement.

*yes, you can generate assembly if you delve into the internals of the compiler.
>>
>>58470451
A week is a bit short, the semantics are too different from C++.
>>
Does anyone else find explicit recursion (such as found in large quantities in many LISPs) ugly and rather boilerplate-like?
>>
>>58470558
>the semantics are too different from C++
Not really, they're similar but saner. Borrowing is easy if you've already done memory management because you've likely thought through the process yourself while writing code.
>>
>>58470544
>>58470502
I think I'll go for Haskell, but I'll definitely take a look at Racket. The syntax looks a bit funky compared to Haskell though.
>>58470523
>>58470505
I'll start writing code and use the wikibook for looking up stuff.
>>
>>58470585
no. Coming from a mathematics background, I like recursion quite a bit. But I rarely use it because of performance limitations.
>>
>>58470585
Yes, which is why I never use explicit recursion in lisp.
;; Finding the mean, in racket
; Shitty boilerplate
(define (mean l)
(define (iter l acc)
(if (null? l)
acc
(iter (cdr l)
(+ acc (car l))))
(/ (iter l 0)
(length l)))

; Yuck. Slightly better with named let
(define (mean l)
(let iter ([l l] [acc 0])
(if (null? l)
(/ acc
(length l))
(iter (cdr l)
(+ acc (car l))))))

; Less code but hard to read:
(define (mean l)
(/ (foldl + 0 l)
(length l)))

; I love for syntax
(define (mean l)
(/ (for/sum ([x (in-list l)]) x)
(length l)))

; std deviation
(define (std-dev l)
(let ([x0 (mean l)])
(sqrt (/ (for/sum ([x (in-list l)])
(sqr (- x x0)))
(length l))))
>>
>>58470627
It seems like youll be better off with Haskell with all these resources + you have experience in it. But I really can't stand doing any larger that trivial programs in Haskell solely because Cabal hell
>>
>>58470665
Emphasis was on the word 'explicit'. See: >>58470683

>>58470683
Yeah, I would go with the fold there.

>>58470627
>>58470711
Avoid Cabal as much as possible. Use Stack for anything non-trivial.
>>
>>58470665
>performance limitations
>using a shitty language
>>
>>58470733
You'll hit performance limitations in any language, regardless of how 'shitty' it is.
>>
>>58470729
The fold is probably the best for this instance but for becomes extremely powerful when:
- iterating multiple sequences at once (parallel or nested)
- iterating non-list sequences (vectors, strings, ports)

>>58470748
Locally defined iterative recursion in languages like Racket are optimized into very efficient loops.
>can language optimize THIS into loops?
(letrec ([odd (lambda (x)
(if (zero? x)
#f
(even (sub1 x))))]
[even (lambda (x)
(if (zero? x)
#t
(odd (sub1 x))))])
(odd 40000000))

https://docs.racket-lang.org/guide/performance.html
>>
>>58470585
yes, but in most cases that it would be boilerplate you can replace it with standard second-order functions
>>
>>58470599
ESR couldn't figure out how to add two strings in Rust. Apparently it's because the + operator takes different types of strings.
>>
>>58470711
>>58470729
I'll give Racket a shot first senpaitachi. Holy shit, the standard library looks great. If everything goes FUBAR, I'll use Haskell instead.
>cabal
I haven't tried stack yet. cabal just works.
>>
>>58469530
most stack machines were internally register machines with a more limited interface
>>
File: thewormsinsideofthedirt.jpg (45KB, 1280x720px) Image search: [Google]
thewormsinsideofthedirt.jpg
45KB, 1280x720px
>>58470796
>I haven't tried stack yet. cabal just works.
>cabal
>just works
>cabal
>works
>cabal
>>
>>58470748
With TCO, recursion is no less efficient than looping. And in languages where functions aren't necessarily boxed and lambdas are values, you can express the code after the recursive call as a continuation that's allocated on a stack. Same run time as a loop with an explicit stack, way nicer code.

>>58470796
It takes an owned string and a borrowed string and appends the text from the string reference onto the owned string. So if you want to concatenate two owned strings, you first need to borrow from one of them with &.
>>
>>58470821
most stack machine optimizations entail temporarily converting it into a register machine
>>
>>58470828
Why can't the compiler do that for you?
>>
>>58470796
As much as I agree with his views on SJWs (especially that monologue about kafka-trapping), I feel that ESR is become less of an 'elder' and more just 'elderly'.

>>58470828
>With TCO, recursion is no less efficient than looping.
Yup. I think you meant to reply to the guy who is disagreeing with you.
>>
>>58470796
>ESR
Was reading the post and the discussion about it. Yeah, he's probably just a newb who didn't read the documentation well enough, but why doesn't Rust do overloaded strings like the GHC extension?
>>
>>58470842
Because it doesn't.

>>58470849
>Yup. I think you meant to reply to the guy who is disagreeing with you.
What?

>>58470860
>why doesn't Rust do overloaded strings like the GHC extension?
Good question.
>>
>>58470860
Because Rust is the fox and Haskell is the grapes.
>>
I don't know any languages yet.

Where should I start if I want to write a script that'll rip/scrape reviewers images/photos off AliExpress? Oh and most very likely a cli tool.
>>
>>58470866
>What?
You want to direct informative posts about the benefits of TCO at this guy: >>58470733
Not at me. Choir, etc.
>>
>>58469530
better in what way
>>
File: 1458944644167.jpg (433KB, 1000x1166px) Image search: [Google]
1458944644167.jpg
433KB, 1000x1166px
>>58470870
>fox
>firefox
>mozilla
>rust
dude
>>
>>58470796
If he had actually read the book he would have known how to: https://doc.rust-lang.org/book/strings.html#concatenation
>>
>>58470888
Both me. By "shitty language" I meant a language that doesn't have TCO or doesn't allow you to allocate memory for lambdas yourself.
>>
>>58468305
in my experience (which is decent, 4 years head TF for a large OS course) how you structure the assignments matters the most for this problem. if you give them a monolithic assignment and then tell them to come to office hours when they get stuck, then they will work on it monolithically and not come to office hours until they get stuck, which will be the night before the assignment is due.

break the assignment up into discrete portions for them when you assign it and describe how each part is expected to work independently. if the assignment is big enough, require a design document from them before they start, and skim the document to make sure no one is being fucking insane. make it clear that the document should contain solutions to individual problems, and not a blob description of how the system will "work" from a bird's-eye view

assign lots of little homeworks so they can iterate rapidly. if possible, flip your classroom and do assignments in class. i think the worst possible design for a class is "6 homeworks over the course of the semester due on equally spaced dates, and when you come to class you listen to me babble and look at powerpoint slides for an hour and a half." that kind of hands-off class design will always lead to students doing their own thing until the night the assignment is do
>>
>>58470893
Performance, let's say, given the rest is equal.
>>
>>58470908
I see. I thought you were one of those 'no performance in functional languages' guys.
>>
>>58470924
Far from it. My primary interest is getting performance in functional languages.
>>
>>58470935
Cool. From this, I guess we've learned that "shitty languages" is a fairly non-specific term.
>>
>>58470938
Yeah.
>>
>>58470938
>performance limited language
>with lambdas and first class functions
>but no tail call optimizations
I wonder which language this could be
>>
>>58470938
all languages are shitty languages, except English and Haskell
>>
>>58470963
Java.

>>58470970
English doesn't have TCO.
>>
>>58470995
>English doesn't have TCO.
that's where wrong you are
>>
File: 1481852295525.jpg (16KB, 480x236px) Image search: [Google]
1481852295525.jpg
16KB, 480x236px
>>58471004
>>
Where can I talk about databases and SQL?

Afaik there's only the web development thread and this, OOP general in denial
>>
>>58471046
Why would you want to?
>>
I'm teaching myself about computer vision and neural networks so I can create a basic CNN in python to read handwritten digits. Right now, I'm learning about loss functions and optimization, hopefully I'm on the right track
>>
>>58471052

I have to do lots of advanced SQL queries for my job
>>
>>58471046
wdg is fine
>>
>>58470883

Bump!
>>
Can someone post some examples trying to show off why rust is safe?
>>
>>58471046
Here
>>
>>58471108
Write "man wget" in your command prompt
Install Gentoo if this command doesn't work.
>>
>>58471123
If someone attacks you for being a woman, Rust deves will come to your defence. This is why Rust is called a safe language.
>>
>>58471123
>bounds checking
>borrow checker
that's it
>>
>>58470970
>english
>not shit
Enjoy your "ough"s, anon
>>
File: edlasticband.jpg (68KB, 500x363px) Image search: [Google]
edlasticband.jpg
68KB, 500x363px
>>58471150
>he's mad because he's not tough enough
>>
Why is Rust labeled as "SJW language"?

Young software developers, in general, are a very left-leaning bunch, regardless of language.
>>
>>58471170
Because the white males lean so far left they get a sex change and decide to vilify other white males for being white males.
>>
Job listings in my third world shithole:
Know everything from embedded programming and systems programming to backend web dev to desktop application development
Have 10 years experience.
Have 25" cock.
Be over 6.2 feet tall.

Average salary:
$600 month.

This country is a joke, I want to kill myself.
>>
>>58471150

It's so easy to spot the Frenchie
>>
>>58471145
But I want a "real world" example
>>
>>58471192
come to America lad we have rights and even get to vote
>>
>>58471192

Romania?
>>
>>58471200
Just look through some Rust project. A lot of the memory preconditions in the code are statically checked while the equivalent code in say C++ would be entirely reliant on programmer assumptions and testing
>>
>>58471193
guess again
>>
>>58471208
Close, just another post soviet shithole.

It's amazing that about 5-8 years ago there was no software development industry at all in the country, now they want fucking super genius tier talent or laughable pay.
>>
>>58471238
Come to the UK, we love filthy immigrant scum.
>>
>>58471061
Any else have experience with neural networks?
>>
>>58471238

Post-soviet is second world.
Latvia or Hungary, maybe? If it is EU, try move to Ireland or the Netherlands.

If not, it's probably all about connections in your country.
>>
>>58471200
you cannot do things like this:
fn main() {
let mut arr = vec![1,2,3];
let arr1 = arr;
println!("{}", arr1[2]);
let mut arr2 = arr;
arr2.pop();
}
>>
>>58471273
Hungary was never a part of SU.
>>
>>58471123
A lot of memory errors can be completely proven away using the affine type system and borrow checker. Assertions to prevent the rest are quite minimal so the overhead is deemed acceptable, but even then you can use e.g. libhoare to make externally proving correctness easier.

Rust basically splits itself into two languages, safe and unsafe Rust. Safe Rust itself can never lead to a memory error, it always has to be a bug in some unsafe Rust or a logic error at the safe/unsafe boundary (making an invalid assumption or violating a postcondition). So if you do ever encounter a memory error, you can much more easily pinpoint where it originates and fixing it will generally be much less likely to affect the operation of the program.
>>
>>58471200
A small one: It prevents Iterator invalidation, which is essentially use after free:

Here I iterate over mutable references of a vector and print them, which compiles fine:
let mut v = vec![1, 2, 3];

for elem in &mut v {
println!("{}", *elem);
}


If I try to mutate the vector while I am mutably borrowing an element, compilation will fail:
let mut v = vec![1, 2, 3];

for elem in &mut v {
v.push(*elem);
}


When trying to compile this:
error[E0499]: cannot borrow `v` as mutable more than once at a time
--> src/main.rs:24:9
|
23 | for elem in &mut v {
| - first mutable borrow occurs here
24 | v.push(*elem);
| ^ second mutable borrow occurs here
25 | }
| - first borrow ends here

error: aborting due to previous error


There are more examples, however it's a bit hard to think of one on the spot.
>>
>>58471270
Yeah MNIST digit recognizer is basically the Hello World of neural networks just do it and move on to different stuff. There's a million tutorials online for every popular framework under the sun.
>>
>>58471170
They have a code of conduct.
>>
>>58471238
>>58471208
>>58471273
Don't forget Poland!
>>
>>58471170
Mozilla
>>
>>58471380
>>58471288
Neither was Poland
>>
>>58471386
https://www.rust-lang.org/en-US/faq.html#is-this-project-controlled-by-mozilla

>No.
>>
File: vVsjW9D.jpg (115KB, 1024x768px) Image search: [Google]
vVsjW9D.jpg
115KB, 1024x768px
>>58471380
I can't, no matter how hard I try.
>>
why are you not using bit packing more often. it's beautiful.
>>
>>58471170
https://twitter.com/steveklabnik
>>
>>58471380
I wish I could.
>>
>>58471372
Yea I am doing that one, somebody did it for their independent study last year in a graduate course. I figured it would be a good project for my capstone. I don't really know anything about neural networks so I have to learn all of theach math behind it. Hopefully it will be a substantial enough project
>>
>>58471408
>it's okay to openly support communism on your social media linked to your github but if you're openly conservative or make jokes at the expense of non straight white males you should be banned
Hmmm...
>>
>>58467319
how is that C book though?
>>
>>58471408
>>58471487
This doesn't really have anything to do with Rust, by the way, I'm thinking more about that Opal shitstorm (though the eggplant spamming mong had it coming)
>>
>>58468305
Former TA here:
What worked for me is to ask very basic and necessary questions.

> My program doesn't work!
WHAT doesn't work?
WHERE is it in your code?
WHY doesn't it work?
HOW do you know that's the part?

I also enforced the paradigm of lots of little functions when I TA'ed Haskell and Prolog.
If you can logically break down what you need to do into smaller pieces, solve those, make sure they're correct, etc. then the problems become solvable.

So have your TAs pound this into their little heads at every opportunity. SICP's power of wishful thinking bit gets the point across really well. (First or second in the series on Youtube.)

I had my student write travel guide AIs and calendar applications in Prolog. They made it through because the obligatories broke down the problem for them to a certain degree. The rest they had to do themselves.
>>
>>58471487
>it's okay to openly support communism on your social media
[citation needed]
>>
>>58471343
So rust is trying to fix pointers. Just seems like trying to fix a broken system.
>>
>>58471550
You can't get around the reality of pointers without mostly throwing performance out the window.
>>
>>58471550
Rust is trying to fix mutability for an imperative language.
>>
>>58468305
Sounds like you're not teaching them to use an IDE.

An IDE prevents you from writing 60 lines of code after you missed a semicolon, because it immediately complains and points our your mistake. It's a superior tool for learning and productivity than Notepad + command line.
>>
>>58471475
That is a pathetically trivial capstone project if you're talking about university. The math is completely doable for anyone that has passed vector calculus which is a sophomore class in most schools.

Take a look at what undergrads in an introductory neural networks class at Stanford do for their final project:
http://cs231n.stanford.edu/reports.html
>>
>>58468839
Dude, really?

List<List<List<List<String>>>> thisIsAnIdioticThingToDo = new ArrayList<>();


>>58468878
Is kinda right. The <> notation will tell the compiler to use type inference (the same kind Haskell pioneered) to figure out what the type is supposed to be.

IOW, if you have the generics on the left, you don't need them on the right.
>>
>>58471613
>the same kind Haskell pioneered
lol
>>
>>58471608
Damn, see I'm actually going through that cs231n class on YouTube and doing the assignments. My linear math class was not helpful but yea the math seems trivial so far.

I guess I will do the digit identifier then move onto something more complex for my final project.
>>
>>58470544
GNU Guile is pretty librarious.
>>
>>58471608
Jesus those are some good projects. Wow, fuck I need to step it up
>>
>>58471046
By all means do it here. Just please.
Do not try to implement OLAP data cubes in Excel. It will not end well.
>>
File: 1481744753588.jpg (27KB, 300x297px) Image search: [Google]
1481744753588.jpg
27KB, 300x297px
>>58471192
> mfw my monthly salary is 8500€
How do you even survive on that?
>>
>>58467161
whats some small easy projects to do in python?
>>
>>58471646

Java uses Hindley Milner's type inference actually.
If you are willing to use compiler macros, you can get away with not explicitly typing just about anything, except generics and type signatures. (Lombok is rather neat.)
>>
>>58471786
Haskell has always done more than just HM so it's a bit disingenuous to refer to HM as Haskell's type inference.
>>
File: smbus.png (157KB, 1238x1020px) Image search: [Google]
smbus.png
157KB, 1238x1020px
anyone have any experience with I2C or SMBus?
I am trying to dump the eeprom from this device as the datasheet instructs. i need to save all 0-255 8bit bytes.

I tried
uint8_t save[255] = {0};
i2c_smbus_read_block_data(i2cHandle, 0x00,save);

the master signal looks correct on my scope, except for the prolonged clk high. the slave output is correct for the slave address and the first byte, then it stops. the save var has the single correct byte saved in it

the code
read(i2cHandle, save, length = 255)

gets the slave to recite approximately 255 bytes, but i cannot give it the command 0x00 so they are probably wrong, and it doesn't save to the save var anyway.
>>
>>58471867
But the type inference algorithm used by Haskell is HM. So saying that Java uses the same type inference algorithm as Haskell is completely correct.

They have different type systems, sure.
But they use the same algorithm to calculate types.
>>
File: Sif.gif (35KB, 230x200px) Image search: [Google]
Sif.gif
35KB, 230x200px
https://forum.dlang.org/thread/[email protected]
Got a pajeet working on ref counted pointers in D, wish him luck!
>>
>>58471933
>china
>pajeet

hmm
>>
>>58471951
Holy moly, I just saw his profile name and assumed India
>>
>>58471926
HM type inference is just the algorithm for the HM type system. If the type system isn't HM, it's not the same algorithm. You could say that Haskell's type system is a HM derivative (HM plus HKTs and type classes) and thus so is the type inference algorithm. Either that, or every type inference algorithm that uses decidable unification is HM and thus HM is meaningless.
>>
>>58471747
>mfw my monthly salary is 8500€
wtf?

what do you do?

programmer?
>>
>>58471926
>>58471970
Oh, and the HM type inference algorithm itself has a name, Algorithm W.
>>
>>58471343
That causes a runtime error in Ada, does it get a prize?
>>
>>58472057
>Runtime error

Come back when it's a compile-time error
>>
I hate how emacs nasm-mode indents just about everything, but I don't know emacs lisp enough to fix it
>>
Need forest related app idea and I don't think fizzbuzz with printing tree types is enough.
>>
>>58472132
Just look up the indentation rules for major modes, and you'll see how you can fix it easily.
>>
>>58471150
what's wrong with "ough"s?
>>
main()
{
int c;

while ((c = getchar()) != EOF)
if (c == ' ' || c == '\n' || c == '\t')
putchar('\n');
else if
(putchar(c));
}

Why is this printing a new newline per whitespace?


>>58472133
Make a text based tamagotchi where you look after your own tree
>>
>>58472266
if (c == ' ' || c == '\n' || c == '\t')
putchar('\n');

Because you're telling it to
>>
>>58467161
Question:

Has learning assembly advanced your career directly in anyway besides better understanding theory.
>>
So if you're using a VGA display, all you need to do is write to a certain area of memory and it will print out whatever you put there, in an 80x25 array. Could anyone give a basic rundown of how, let's say X for example, is able to extend this?
>>
>>58472295
I'm going into Information Security, and I imagine it'll be immensely useful once I actually try to learn reverse engineering
>>
>>58471747
>mfw £2k a month and flat paid for
long live neets
>>
What are some good ideas for a well-rounded portfolio?

I need a little bit of everything to show I'm versatile.
>>
>>58472295
I'm an Android dev, so no.
>>
>>58472295
Landed me a job programming micro controllers (avr assembly).
>>
>>58471747
>implying food, rent and bills aren't also scaled
>>
>>58471004
As someone new to TCO, would someone explain this?
>>
>>58472390
Look up tail call optimization
>>
>>58471613
I already know about <>. As far as I understand, type inference just fills in the blanks, it doesn't change dynamically every time I add a new list.
With
List<List<List<List<String>>>>
I'm forced to have a String after the fourth list, and I just want it to be turtles all the way down.

Now, if I want turtles all the way down, best I can do is use wildcards, to signify that anything goes, but I'm just delaying the inveitable.
List<?> eldritch = new List<>();

That'll compile, sure.
eldritch.insert(new List<>());

But this won't. I have to bite the bullet at some point and define what's in there.

I don't even give a damn who pioneered what or which language is better, I just want to fuck around with Java, and this recursive generic list thing just keeps gnawing at me.
>>
>>58472422
I have, and I'm unfortunately not making the connection. How is rewriting a function so it doesn't use an increased amount of memory due to recursion related to a poorly written sentence?
>>
>>58472430
Consider that what you are doing is outside of the scope of Java's ArrayList class.
The Arraylist class merely emulates C-style index pointer arithmetic plus list iterators. You can't do that with turtles all the way down.
Then consider an implementation that would work. What you're looking to do is not unlike a tree.
>>
File: 1483423464145.jpg (96KB, 576x720px) Image search: [Google]
1483423464145.jpg
96KB, 576x720px
>>58471684
>GNU
>>
>>58471951
Don't be racist, Anon. Any country can produce Pajeets.
>>
>>58472542
pajeet is my favorite meme on /g
>>
>>58471933
They don't have smart pointers in D land?
>>
>>58472479
He put the verb at the end.
>>
>>58472516
>What you're looking to do is not unlike a tree
More of a trie actually, that's what got me thinking on this.
Oh well, at least now I can rest easy knowing it can't be done
>>
File: 1474062352177.png (67KB, 400x400px) Image search: [Google]
1474062352177.png
67KB, 400x400px
#include <functional>

Haskell BTFO
>>
>>58472574
Nope. If that project goes well, they'll probably consider adding it in, especially since they're working on improving manual memory management right now
>>
>>58472430
I'm not sure what you're trying to do. Are you trying to have dynamic lists?
List a = new ArrayList(); 
a.add(new ArrayList());
a.add(1);
List b = (List) a.get(0);
Integer d = (Integer) a.get(1);
>>
File: 1483055809416.jpg (211KB, 1000x700px) Image search: [Google]
1483055809416.jpg
211KB, 1000x700px
>>58472602
import Foreign.C
>>
>>58472629
He wants an n-dimensional arraylist.
>>
>>58472583
Oh. Now I'm feeling quite dumb. Thanks.
>>
>>58472629
>
List a = new ArrayList();

>[code(List) a.get(0);
Alright, now compile that with -Xlint on and fix the warnings
>>
>>58472685
You should really have referred to >>58471016
It explains everything.
>>
>>58472709
@SuppressWarnings({ "unchecked", "rawtypes" })
>>
File: 1482007225219.jpg (58KB, 600x415px) Image search: [Google]
1482007225219.jpg
58KB, 600x415px
private static long pack(short x, short y, short width, short height, boolean rotate, int index){
long l = ((rotate ? 0x1 : 0x0) & 0x1) << 12;
l = (l | (x & 0xFFF)) << 12;
l = (l | (y & 0xFFF)) << 12;
l = (l | (width & 0xFFF)) << 12;
l = (l | (height & 0xFFF)) << 8;
l = (l | index & 0xFF);
return l;
}


I want to pack all those shorts and shit to pack into a long and this way it actually works. but I want to condense it on 1 line, but that somehow doesnt work. anyone an idea how to do it properly?
>>
File: 8.png (429KB, 556x478px) Image search: [Google]
8.png
429KB, 556x478px
>>58472820
>>
Okay, so I am trying to create 4 files based on a big list of data I have. Here's an example of one of each kind of data:
type=weaksubj len=1 word1=classic pos1=noun stemmed1=n priorpolarity=positive
type=strongsubj len=1 word1=closeness pos1=noun stemmed1=n priorpolarity=positive
type=weaksubj len=1 word1=clash pos1=adj stemmed1=n priorpolarity=negative
type=strongsubj len=1 word1=coerce pos1=verb stemmed1=y priorpolarity=negative


(It all works in the debugger, but I thought it'd be helpful to illustrate)

I read in the file, line by line. Trouble is, it's all going into the strong negative category. Here's my code;

while (line != null) {
String[] lineArray = line.split(" ");
String word = lineArray[2].substring(6);
String wordStrength = lineArray[0].substring((5));
String wordConnotation = lineArray[5];

if (wordStrength.equals("strongsubj")) {
if (wordConnotation == ("priorpolarity=positive")) {
//STRONG POS
strongPosWriter.println(word);
} else {
//STRONG NEG
strongNegWriter.println(word);
}
} else {
if (wordConnotation.equals("priorpolarity=positive")) {
weakPosWriter.println(word);
} else {
//WEAK NEG
weakNegWriter.println(word);
}
}
try{
line = reader.readLine();
}
catch(Exception e)
{
System.out.println("Failure reading line");
}


When I run the debugger, it appears the strings are equal to make some strong pos and strong negs, and weak pos's. If you have any other critique of my shit code, it'd be appreciated too.
>>
>>58472900
your brackets are ruining my autism. also
if (wordConnotation == ("priorpolarity=positive")) {

bug
>>
>>58472900
>All that hard coding and substring coding
If you're going to have everything at fixed indexes at least clean it up

String[] lineArr = line.Split(' ');

for (int i = 0; i < lineArr.Length; i++) {
lineArr[i] = lineArr[i].Split('=').Last();
}
String strength = lineArr[0];
String word = lineArr[2];
String connotation = lineArr[5];
>>
>>58473036
What is wrong with using substrings?
>>
>>58473057
Computationally? Nothing, .Split() is effectively doing the same thing.
But it's a stupid thing to do because you're telling it "Split on this index no matter what" rather than "Split on these characters". What if it changes to wordS1? Or another entry gets put into the middle?
As unlikely as that may be depending on the scenario it's a headache waiting to happen.
Plus using substrings means counting out characters like a wop instead of just seeing everything is split on = and having the computer do it for you

Plus it makes everything clean, as you don't have long method chains one after another, and you go from
if (wordConnotation == ("priorpolarity=positive"))

to
if (wordConnotation == "positive")

and etc
>>
>>58472430
It's not possible without polymorphic recursion
Try Haskell
>>
>>58473111
Thank you for the knowledge!
>>
How to check if some particular bit in variable is set in C?
>>
>>58473179
Do you know your bitwise operators? Do you know your shift operators?
Hint, you'll need & and >>
>>
>>58473179
var & bit
>>
>>58473179
You should embed v8 and use jquery for that.
>>
New thread:

>>58473197
>>58473197
>>58473197
>>
>>58473188
> >>
<< actually
>>
>>58467507
she is most moe girl
>>
>>58473237
>Right shift by (bit_position - 1), then and with 0x1
>>
>>58473309
Why not left shift 1 by bit_position, then and with variable?
>>
>>58472846
post your oneliner
>>
>>58473346
That works too, but I don't think one has any advantage over the other
>>
>>58473357
return ((((((((((((rotate ? 0x1 : 0x0) & 0x1) << 12) | (x & 0xFFF)) << 12) | (y & 0xFFF)) << 12) | (width & 0xFFF)) << 12) | (height & 0xFFF)) << 8) | index & 0xFF);    


somewhere is a bracket mistake but too retarded to see it
>>
>>58473380
what if the bit is at position zero?
>>
>>58473400
Compiler must throw an error, since you can't perform a bit shift by a negative value.
>>
>>58473400
Well, I'm assuming he's one-indexing, i.e. 1 - 32 for an int. If he's zero-indexing, then it would be
>Right shift by bit_position, then and with 0x1
>>
>>58473428
Do people one-index when they program?
Except Fortran, of course.
>>
>>58473390
might be that all those literals are treated as ints, so everything you shift over the 32 bit mark gets deleted. if not post an example of a successful packing and one with the one liner
>>
>>58473453
as it should be:
x: 1, y: 1, w: 30, h: 16, rotate: true, index: 0

output:
72075190550401024
0000_0001_0000_0000_0001_0000_0000_0001_0000_0001_1110_0000_0001_0000_0000_0000

and the values are correct.

now on one line:
31461376
0001_1110_0000_0001_0000_0000_0000


there are some shifts missing
>>
>>58473533
seems to confirm my suspicions
in your oneliner, the data type used when doing all those shifts is probably either int or even a short, only at the very end the number is converted to a long.
so when building your supposed long, you're actually acting on an int and shoving all those bits out the farther end of the datatype, where they get lost because the int only holds 32 bits. in the end the int gets converted to long and the first 32 bits for the long just get filled with zero.

as you can see in the values you posted, the last 4 bytes are correctly packed, but the first 4 got shifted out of the 32 bit int type used when packing
some casts should fix it
>>
>>58473656
you were right and it works now, but it looks like this now
return ((long)((long)((long)((long)((long)((long)((long)((long)((long)(((rotate ? 0x1 : 0x0) & 0x1) << 12) | (x & 0xFFF)) << 12) | (y & 0xFFF)) << 12) | (width & 0xFFF)) << 12) | (height & 0xFFF)) << 8) | index & 0xFF); 


not much more "beautiful"
>>
>>58473840
I think just one cast right in the innermost parentheses should work too, once it's a long it shouldn't get changed back
>>
>>58473840
also I'd consider using absolute values for your shift, i.e
 x<<16 | y<<8 | z 
instead of
(((x<<8) | y) << 8) | z
>>
>>58470683
>foldl is hard to read
just use loop macro
>>
>>58470683
fuck I hate that is called define instead of defun
and that function names are inside as if they were parameters
Thread posts: 332
Thread images: 31


[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]

I'm aware that Imgur.com will stop allowing adult images since 15th of May. I'm taking actions to backup as much data as possible.
Read more on this topic here - https://archived.moe/talk/thread/1694/


If you need a post removed click on it's [Report] button and follow the instruction.
DMCA Content Takedown via dmca.com
All images are hosted on imgur.com.
If you like this website please support us by donating with Bitcoins at 16mKtbZiwW52BLkibtCr8jUg2KVUMTxVQ5
All trademarks and copyrights on this page are owned by their respective parties.
Images uploaded are the responsibility of the Poster. Comments are owned by the Poster.
This is a 4chan archive - all of the content originated from that site.
This means that RandomArchive shows their content, archived.
If you need information for a Poster - contact them.