HN user
nonrecursive
www.flyingmachinestudios.com daniel at the domain above
It’s possible for something to be more than one thing at the same time. You can both leave a company as a protest of its politics and move on to some other venture that you have the means for.
And anyway the article, which doesn’t dig deeper into this person’s motives, doesn’t even paint it as a protest. It could simply be not wanting to participate in harm, which is not exactly the same as a protest.
This looks amazing! Good job. I don't know that I'd ever use it because there's never enough time for all the things, but thanks for the few minutes of aesthetic satisfaction that brought.
https://jobs.braveclojure.com/ - a Clojure job board! Usually #1 search result for "clojure jobs"
Thank you very much!
This is amazing. Did y'all use any kind of static site generator or documentation tool (e.g. Antora) or was it hand rolled?
Good god the Southpoint Apple store is terrible. I went there once because I wanted to buy a new iPad and apple pencil so I could participate in a digital painting workshop the next day, and they wanted me to wait 45 minutes before they would help me. I said that I wasn't going to wait that long and hopefully wasn't an asshole about it (it's never cool to be a jerk to retail employees!) and they did manage to ring me up within about 5 minutes.
The experience was just so weirdly baffling and frustrating and I've since avoided the place. I realize this sounds like the height of American consumer entitlement but it was truly bizarre that the response to "Hi I would like to hand you more than $1,200" was "please wait 45 minutes."
Then there was also the confusion about who to actually to talk to in the first place if you wanted to buy something. Do I talk to the person at the door? Nope, because I don't have an appointment. I should just stand in a corner and hope someone finally talks to me. It was truly amazing that Apple could so thoroughly botch the experience of exchanging money for goods.
thank you for the kind words :)
Are you a vegetarian? I am! And as a vegetarian, I can tell you that I love it when restaurants sell Impossible Burgers. First, I don't cook (unless you count making a bowl of cereal cooking), so it's not like I'm going to make it for myself. Second, restaurant dining is about more than just calorie intake - sometimes I want to go to a restaurant, and as a vegetarian I appreciate when they have tasty things for me to eat. Third, if I'm going to a restaurant as part of a larger social gathering, or as a company outing or whatever - in other words, if I'm at a restaurant when I would not have otherwise chosen to (which I'm sure doesn't happen to just me!), then I appreciate it when there are options for me.
Your opinion is unpopular because it is an ignorant opinion. American policing has its roots in "slave patrols" - it is an institution (like many American institutions) founded on anti-blackness. Americans are socialized to see Black people as inherently dangerous, and Black and brown people continue to be policed much more than white people.
Your comment is rightfully being downvoted because it reveals that you haven't even tried to research this topic. It is offensive because it continues to perpetuate attitudes that contribute to violence toward Black and brown people. It is also offensive because it is _so easy_ to educate yourself and contribute informed opinions instead of ignorant ones. One place to start is "The New Jim Crow" by Michelle Alexander. I really hope you take the time to read it and other books that explain what it's really like to be Black in America.
I think that's debatable. Hiding the content allows the learned to focus on the content at hand. If the user prefers to always be looking at a TOC, they still have that option.
Or maybe it makes sense to show the TOC by default, with the option to hide it. Either way, I'm curious to hear more about your reasoning for why it's so horrible.
Congrats on your launch, this looks really cool! And I love your story!
Did you do the design, too? What's the tech stack? How do you stay motivated?
There's a Kickstarter project to fund the production of the new version: https://www.kickstarter.com/projects/2142694884/the-chemical...
I'm going to be contrary and suggest that, when you're first learning a Lisp, write a macro every time you think "hey this might be a good place to write a macro" - and then try to achieve the same behavior with a function. There's no better way to learn when macros are useful and when they over-complicate things.
More info can be found at https://jobs.braveclojure.com/jobs/17592186045748/clojure-en...
You can also read more about the job at https://jobs.braveclojure.com/jobs/17592186045631/software-e...
I've changed the title in case there have been other Clojure-only job boards out there, but as far as I can tell RemoteOK and other job boards do not focus exclusively on Clojure. They maybe allow you to filter to show only Clojure jobs, or have a Clojure section, but I consider that different from catering exclusively to Clojure jobs :)
It's not on github, but I have some build notes at http://www.flyingmachinestudios.com/penguins/job-search-sani... :)
I plan on creating more content :) I wrote a blog post with a couple more details (http://www.flyingmachinestudios.com/programming/brave-and-ne..., fourth paragraph). But yes, I want to cover testing, web development, and more. Right now I'm working on an in-depth explanation of reducers.
edit: also, clojure applied is a good book for what you're talking about
Thank you for the explanation and penalty reduction, you've made my day! I blame overzealous coworkers.
I'm pretty bummed that this submission is in HN purgatory for some reason, but it's really great to read these nice comments! I'm glad y'all have found the book useful and enjoyable :)
Oh jesus, my site got submitted and is #1 on HN again. It kind of amazes me that a guide that begins with a Thich Nhat Hanh (buddhist monk) quote can bring out such heated debate.
A few things to clarify:
* The before/after flyers were taken from real life. These were printed out and tacked up to community boards and the like.
* One reason why I think the right poster is better is that it looks nicer on the surface and would therefore be more enticing for people to read to find the details. I think the left poster looks like it would be harder to find information. If an ad looks hard to decipher, then people aren't even going to bother. A lot of criticism here has to do with how the phone number doesn't stand out. If you're walking down the street and just see a giant phone number scrawled on a wall, would you call it? No. You need to have a reason to call it. I think that the flyer on the left gives passersby less reason to call.
* That said, I do need better examples, and the site needs to look less ugly. As it happens, my next project after finishing http://braveclojure.com is to revamp this site. If you're interested in hearing about the revamp, please sign up for an email reminder: http://eepurl.com/biiMZT . I'm going to add more content on actually implementing this stuff using CSS/SCSS. If you think the Clojure site is OK looking then you'll probably like the new visual mess content.
* For some reason, beginners seem to love this site as it is. Weird!!!
edit: If you have little or no experience trying to do visual design, I hope the site has encouraged you to give it a try, if only so that you can do better than I did :)
edit 2: Back in 2011 I wrote a blog post thanking readers, looks like it's relevant again: http://www.flyingmachinestudios.com/design/cuym-thank-you/
This made my day. Thank you :)
You'll need to make sure you require/refer the core.async namespace according to the preceding code block. If you have the code there, make sure you re-evaluate the file. Here's a resource on require and refer: http://www.braveclojure.com/organization/
If you still have trouble feel free to leave a comment on the site or tweet me - I'll be able to respond more quickly that way :)
The book covers functional programming because Clojure places a heavy emphasis on functional programming, and learning it is essential to learning Clojure. The book is not "Functional Programming for the Brave and True, with Clojure as the Medium." That doesn't mean that I'm merely "going through the motions" and am "not fully committed" to helping people understand functional programming, and it's bizarre, presumptuous, and rude that you would suggest that. At this point, it seems to me like you're merely being argumentative.
You're right about being able to point to the same tail from two different lists in common lisp, of course. I'm not very experienced with scheme so I can't comment much on that. Clojure is different in the way it implements its data structures, so "structural sharing" in that context refers to its use of tree structures to implement vectors, maps, etc.
Still, though, I think you have it wrong about Clojure's design. You mentioned the talk "the value of values." Immutability and functional programming are core to Clojure's philosophy. This is pointed out on the clojure.org home page. I'm not sure why you think it's not?
Also, Clojure is meant to be a general-purpose language. Also from the home page: "It is designed to be a general-purpose language". So I'm not sure why you think otherwise? I started learning Clojure with 0 experience with the JVM, and many others are doing the same.
I'm also not sure what you mean by "education is entirely orthogonal to Clojure." I think you're commenting on the value of producing an introductory Clojure book? In any case - you mention that "there are better languages for teaching functional programming." The point of Clojure for the Brave and True is not to teach functional programming, it's to teach Clojure.
I don't think I read On Lisp the same way. From 3.1: "If a function is advertised as destructive, that doesn't mean that it's meant to be called for side-effects. The danger is, some destructive functions give the impression that they are. For example,(nconc x y) almost always has the same effect as (setq x (nconc x y))". Calling it dangerous sounds like a warning to me. I definitely agree, though, that he makes the case that the preferred approach is writing side-effect free functions. I'm not sure what you mean by "persistence" though, because Common Lisp doesn't have persistent data structures.
I don't know if its emphasis on functional programming and values makes Clojure unique, but that's definitely one of its core design concerns. The "article" is a chapter from a book on Clojure, and learning to write in a purely functional style is essential to learning Clojure. The point of the chapter isn't to get to the heart of what makes the language unique, it's to offer instruction on how to use it.
The book chapter aside, I think you might actually have it backwards. Hopefully I'm not misunderstanding you terribly! The reason why PG has to spend as much time as he does warning programmers about hidden ways in which Common Lisp mangles your data structures (nconc, for example) is because Common Lisp does not come with immutable data structures out of the box. My impression is that he's telling you how to work as well as you can (strive for purely functional code) with the tools at hand. Clojure, on the other hand, was built so that you could code without having to worry about that stuff by default.
Also, you say that lisps have "always had shared structure." I'm not sure what you mean by that? Clojure implements _structural sharing_, which is what allows it to have persistent, immutable data structures. Common Lisp certainly doesn't do the same.
I'm not sure what you mean by "Lisp went on a journey to Java and was transformed by the experience." I think you're saying that Rich Hickey designed Clojure to be a lisp that's more Java-like? Could you explain how? My impression is that Rich Hickey thinks OO is broken (see the talk "Are we there yet?"), as is the notion of mutability as implemented by Java. Clojure's interop with Java is a great convenience, but the emphasis is still on functional programming. I don't think I understand what you're saying, or maybe it's just that we disagree?
Finally, from clojure.org: "Clojure is predominantly a functional programming language, and features a rich set of immutable, persistent data structures. When mutable state is needed, Clojure offers a software transactional memory system and reactive Agent system that ensure clean, correct, multithreaded designs." Maybe it's these state management features you're concerned about? If so, then I would suggest that vars, atoms, refs, and agents are not as inspired by Java as you're saying. Or maybe we just disagree that, the majority of the time, you should be writing pure functions and using immutable data structures in Clojure?
I think you may be misunderstanding a few things, and I hope I can clear them up :) First, the term "pure function" does not imply "ivory tower" any more than "recursion" does. Pure functions are tools that allow you to "isolate mutation". In fact, Paul Graham mentions that experienced lisp programmers "try to segregate side-effects in a few functions, allowing the greater part of the program to be written in a purely functional style" (http://unintelligible.org/onlisp/onlisp.html#SEC27). So - don't let the terminology throw you :)
Second, the point of the point of the chapter is to show how much can be accomplished without mutating data structures. I think that's something valuable to focus on. Saying "You can do a lot with pure functions and immutable data structures" is not the same as saying "You'll never need to mutate anything" and as the author, I apologize if my writing suggests otherwise :(
Lastly, Clojure definitely places a huge emphasis on limiting mutability by using pure functions and immutable data structures. I think Rich Hickey even describes pure functions as stable bricks or stable atoms in one of his talks. My impression is that it's definitely not the love child of common lisp and java. Clojure is pragmatic, but that doesn't mean it doesn't place an emphasis on functional programming. I agree that it's "not bogged down in a theory of pure anything", but that doesn't mean it wasn't intentionally designed to support and encourage programming with pure functions and immutable data structures.
Clojure From the Ground Up http://aphyr.com/tags/Clojure-from-the-ground-up is a good resource, and there's also my own Clojure for the Brave and True http://www.braveclojure.com/ . I actually started by going through "Land of Lisp" first. Though it covers common lisp, not Clojure, it's a very fun book.
edit: Realm of Racket is also a good lisp book, and a lot of people like "the little schemer". It's hard for me to say how good these are for people completely new to programming, though.
Finally, there's the ClojureBridge curriculum, which is targeted at new programmers: https://github.com/ClojureBridge/curriculum