Clojure from the ground up
aphyr.com
aphyr.com
I know you are trying to help but you need to realize that the whole section, and this part in particular, is incredibly condescending and guaranteed to piss off any female who might be reading you.
You want to help achieve gender equality in the technical field?
Pretend that the gender of your reader is of no consequence and just write your stuff, period.
Just because you don't see the agenda doesn't mean it's not there. How do you explain that half of the comments in this thread are not about the content of the article but about the mysogyny of its author?
And the fact that people are commenting on the author's agenda could be evidence that people are defensive or in denial that they are part of a system that is biased against women as much as it is evidence that the author maybe hasn't done the best job of combating that problem.
Misogyny /mɪˈsɒdʒɪni/ is the hatred or dislike of women or girls.
Pretend that the gender of your reader is of no consequence
and just write your stuff, period.
Are you having your period?Stop clogging this post with your feminist angst. Learn some fucking Clojure or STFU.
* stfu
* learn ClojureInterviewer: So how do you think race should be addressed?
Freeman: Just stop talking about it! I'm not a black man, and you're not a white man.
Necessary disclaimer: I am a guy and I have no expertise. I am just thinking out loud.
I am not a woman, but I'm sure a woman would be just as frustrated as me reading that section and going "oh come on, tell me if I should read this article based on what I know, not what sex I am."
(And BTW, these same people I know occasionally mention HN as a cesspool of reactionary ideologies, mythologies about how the tech/startup industry actually works, and general absurdity. So like most places online, beware the comments section. Then again, it's a great place to discuss the latest nontechnical thing DHH said.)
I think it's safer to say that anyone would be annoyed by being treated in a condescending manner.
You keep reinforcing these stereotypes about IT that (a) women aren't capable, (b) men are antagonistic towards women (c) they will never be promoted or accepted amongst their peers and (d) there is rampant sexism. These stereotypes are not pervasive, not unique to just IT and simply don't exist at many types of companies in particular many enterprises.
But don't worry women despite all of this you have come to save the day with a beginner's Clojure article that will gain you the respect of your peers. Give me a break.
If you don't like how others are trying to raise awareness or encourage women in IT, then get off your high-horse and do something yourself that you do agree with. Sitting there lambasting others' efforts does nothing to improve the situation.
I don't really mind "being left out" as a straight white male that's been into hard sciences and computers since I was six (before then it was all dolls, if I am to judge by our family albums) -- but it does strike me as a little strange to read an entire page about "who's this for" and still not getting any real information other than that if I were slightly gay, I'd be more in the target audience? What does that even mean?
As a side note, I've never heard the tech/science community nor higher education was discriminating on sexual preference -- race and gender (as largely a function of wealth and old bias) -- yes -- but there's a gay issue as well? If true that's sad, and I'm glad to be made aware of it -- but I still think the entire about-page could do with a rewrite.
You don't realize it but your words are extremely condescending toward women, you might want to ask someone to help you understand what your position about this really is, because from what I read so far, you certainly seem to believe all these stereotypes about women being less capable than men in the computer area, you just happen to be in strong denial about it.
I certainly don't think that follows from what he has written at all.
While I can certainly appreciate your objective point, and even agree with it, you're making the same mistake you're accusing the writer of: generalisation based on limited information, at least in my opinion.
I think the section is misguided, and conflating two points (the gender gap in programming is unlikely to be because of the lack of "female targeted" tutorials). But I am not so sure it follows that the author is misogynistic.
I think you should check your assumptions.
I think this is the problem other people are picking up on. Implicit in the idea that you need special technical explanations targeted to women is some notion that women have difficulty with "regular" tutorials. What is that notion? Is there a gender bias to most technical explanations? If so, how does it work, and how is this different? Perhaps there is something, but it needs to be stated and applied.
Without making your "we need explanations specifically targeted to women" theory explicit and robust, you just come off as saying "women need tutorials, so I made you one", which is why it comes off as condescending. Worse, since the tutorial seems perfectly "normal", it's easy to think you're just name-checking a concern as intro boilerplate and then writing a totally unrelated thing about Clojure.
The thing is, it's good article about Clojure. It can stand on its own, and women will read it because it's useful and because they want to know about the language. Perhaps they do need a tutorial, but not because they're women.
There is a possible answer to this. I'm just thinking out loud here, but hear me out.
There is a huge gender gap when it comes to programming, as we are all well aware of. A lot of tutorials (even some of the more basic ones, I struggled a lot when trying to move on from "hello world", and "Animal -> Dog" style OOP into actual programming, and this tutorial seems to address that (I've not read it yet, so I hold my judgement).
If those two assumptions hold, then it could be argued that: due to the gender gap, we can assume that females who are starting from scratch may not have the base knowledge for "regular" tutorials to fit them properly.
Now: This may not be true. And usually I'm the first to argue that gender, race, etc. should have no impact on technical writing and knowledge sharing. However, nearly every other tutorial in the worlds body of knowledge is written gender neutral, and the gender gap remains.
That statement could be said to be conflating two issues; Somehow I don't feel like tutorial writing is the missing link to fix the gender gap in our industry. But it was interesting to think about, for me at least.
So I doubt your theory. And so it seems that either those tutorials have a more intrinsic gender bias (defensible but needs defended) or the problem has nothing to do with tutorials on the internet and has deeper and broader causes, which is my default position. Or, like you said:
> Somehow I don't feel like tutorial writing is the missing link to fix the gender gap in our industry.
I'm not sure what this has to do with gender/race/sexual preference disproportions...
Aphyr I really admired you dude until you decided to post extremely graphic descriptions of your sexual activities on Twitter. I unfollowed you because of it, and I assure you it has absolutely nothing to do with your personal sexuality. I would've unfollowed anyone who posted what you did (hint: it was the 'toilet-cleaning' tweet last week).
And now this blog post. My god. Assault against women is "routine" in STEM fields? It's not routine, it's never been routine, it will never be routine. You live in a social media echo chamber that you need to break out of.
You know what the tech community needs more than anything? Thought-leaders who can teach the rest of us important, practical things about the technology we take for granted every day. What we don't need more of: pandering, condescending horseradish. I honestly will not be surprised if I get attacked personally because of this post as a woman-hating or homophobic bigot. This is the level of discourse now, unfortunately. Ergo why I waited until this post had passed its peak to post.
Break out of your dumb echo chamber, it's decreasing your worth as a teacher.
My kingdom for a decent comparison between NodeJS+ClojureScript vs vanilla Clojure (w/Compjure maybe?) for high performance web applications!
I really hope Clojure catches on. It's so fun to write in, I'm never going back!
Node version: http://json-mirror.herokuapp.com/ Clojure version: http://mirror-clojure.herokuapp.com/
Also, ClojureScript is super interesting because a lot of clojure libraries will work (provided they're not a Java wrapper library) automatically. Draw backs though? Speed. ClojureScript uses Google Closure to optimize, which brings it close to pure JS speeds, but according to Conrad Barski, the webfui creator, it's not quite there. Check out his presentation though here if you're interested (demos and speed explanations included): http://www.youtube.com/watch?v=HeI5-D7SQe8
CRAP: Should have replied to parent comment, but it's fine here as well.
For example, until recently ClojureScript's :keywords were just strings under the hood and it required a string compare to test equality. Apparently this is no longer the case due to this commit 2 months ago: https://github.com/clojure/clojurescript/commit/2cef52840fcd... but it shows you the kind of stuff you might run into. In a recent talk I saw by David Nolen, the lead maintainer of the ClojureScript compiler, he brought up multimethod dispatch as something that can still be as much as 100 times slower than the JVM.
As a tooling example, Clojure gives you helpful errors if you initialize records the wrong way:
user=> (defrecord Thing [foo bar])
user.Thing
user=> (Thing. 1 2) ; correct usage
#user.Thing{:foo 1, :bar 2}
user=> (Thing. 1) ; wrong number of fields
CompilerException java.lang.IllegalArgumentException: No matching ctor found for class user.Thing, compiling:(/tmp/form-init7089728177345913731.clj:1:1)
user=> (Thing 1 2) ; forgetting the dot
RuntimeException Expecting var, but Thing is mapped to class user.Thing clojure.lang.Util.runtimeException (Util.java:219)
That's good! Especially if you're new to the language. You see where you messed up right away.But ClojureScript just silently gives you nils:
ClojureScript:cljs.user> (defrecord Thing [foo bar])
cljs.user/Thing
ClojureScript:cljs.user> (Thing. 1 2) ; correct usage
#cljs.user.Thing{:foo 1, :bar 2}
ClojureScript:cljs.user> (Thing. 1) ; wrong number of fields
#cljs.user.Thing{:foo 1, :bar nil}
ClojureScript:cljs.user> (Thing 1 2) ; forgetting the dot
nil
This should be a bug report against the CLJS compiler (edit: now it is[1]), and it's probably not that hard to fix. I could fix it. You could fix it. (The CLJS compiler is very approachable and needs contributors, by the way.) But, especially as a newbie, this kind of stuff can bite you. JVM Clojure is more polished.Thanks!
I wouldn't say that. In this case for instance it more or less just shoves java's error message in your face, you have to translate that back into the clojure you typed beforehand.
[1]: http://benchmarksgame.alioth.debian.org/u64/benchmark.php?te...
I say this because if a windows user actually opens up their terminal and types in wget, I'd say they're lucky to give up so early considering that the terminal they're using is straight trash. You can't even make it full screen.
I'd recommend a virtual box to new Clojure programmers on Windows.
> If your preferred package manager has a relatively
> recent version of Leiningen, try that first.
> Otherwise you can install by hand:
It's kept up to date: https://github.com/mxcl/homebrew/blob/master/Library/Formula...Clojure, and indeed LISP is one of the things I would really like to learn but most of the tutorials have been way to academic in there format. This one so far has been much more focused and clearer on the intent of the language.
Thanks
I loved your Jepsen series and you communicate on a level that I can relate to. As such I was thrilled to find your guide at the top of HN.
Keep up the awesome work!
So I second this idea, especially if someone doesn't have CLI experience and just wants to get cracking at some code.
That way they can run `lein new <project-name>` to get the app skeleton created. Then open it with Lighttable.
In fact, anyone that wants to check out the Clojure version of Sinatra/Flask should run `lein new compojure <project-name>` and it'll create it from a template. Then run `lein ring server` from the project root to start the dev server.
Someone happened to tell me those incantations my first day with Clojure and I was instantly productive.
and a workshop that I did: https://github.com/echeran/intro-clj-pres