HN user

nonrecursive

3,363 karma

www.flyingmachinestudios.com daniel at the domain above

Posts155
Comments477
View on HN
nickjanetakis.com 2mo ago

I Like Using Docker Compose in Production

nonrecursive
6pts0
old.reddit.com 1y ago

Mean People Suck, Folks

nonrecursive
10pts2
blog.burntsushi.net 5y ago

Ripgrep is faster than {grep, ag, Git grep, ucg, pt, sift} (2016)

nonrecursive
2pts0
www.designboom.com 5y ago

Tsuchiya kaban crafts luxurious leather bag to carry a watermelon around

nonrecursive
2pts0
stripe.com 6y ago

Opposing Racism

nonrecursive
4pts0
defold.com 6y ago

King shares the Defold game engine source code and invites collaborators

nonrecursive
1pts0
flyingmachinestudios.com 6y ago

Frameworks and Why (Clojure) Programmers Need Them

nonrecursive
4pts0
previewhunt.com 6y ago

Preview Hunt: make sure your PH submission looks good

nonrecursive
3pts0
www.brainpickings.org 6y ago

Brain Pickings: An inventory of the meaningful life

nonrecursive
4pts0
github.com 6y ago

Clojure's Instaparse: context-free grammars as easy to use as regexes

nonrecursive
3pts0
gratefulplace.com 6y ago

Show HN: Grateful Place, a community for growing resilience, peace, and joy

nonrecursive
6pts0
github.com 7y ago

Instaparse: What if context-free grammars were as easy to use as regexes?

nonrecursive
1pts0
github.com 7y ago

DataScript, an Immutable Db and Datalog Engine for Clojure, CLJS and JavaScript

nonrecursive
4pts0
flyingmachinestudios.com 7y ago

Buddy Systems at Work: A Framework for Rewarding Relationships on Remote Teams

nonrecursive
2pts0
github.com 9y ago

Base16: the holy grail of emacs theming?

nonrecursive
2pts0
www.communitypicks.com 9y ago

Show HN: Community Picks, recommended books for hacker subreddits

nonrecursive
1pts0
www.communitypicks.com 9y ago

Show HN: Community Picks, the best books for hacker subreddits

nonrecursive
4pts0
www.flyingmachinestudios.com 9y ago

Techniques for Efficiently Learning Programming Languages

nonrecursive
2pts0
www.flyingmachinestudios.com 9y ago

Techniques for Efficiently Learning Programming Languages

nonrecursive
1pts0
blog.cognitect.com 9y ago

Living the Lean Startup with clojure.spec

nonrecursive
1pts0
medium.com 9y ago

Open Sourcing Lacinia, Our GraphQL Library for Clojure (WalmartLabs)

nonrecursive
3pts0
blog.datomic.com 9y ago

New Datomic Training Videos and Getting Started Docs

nonrecursive
2pts0
www.braveclojure.com 9y ago

An Introductory Ansible Tutorial

nonrecursive
2pts0
www.braveclojure.com 9y ago

Show HN: Free Online Book on Deploying Your First Clojure App

nonrecursive
3pts0
www.braveclojure.com 9y ago

Show HN: Deploying Your First Clojure App

nonrecursive
6pts0
www.people.vcu.edu 10y ago

Book of Proof – An introduction to the methods of proving mathematical theorems

nonrecursive
208pts27
www.reddit.com 10y ago

A Brief Guide to Participating in Open Source

nonrecursive
3pts0
jobs.braveclojure.com 10y ago

Show HN: Brave Clojure Jobs - Use the Language You Love

nonrecursive
1pts3
advancedlinuxprogramming.com 10y ago

Advanced Linux Programming – book with free PDF (2001)

nonrecursive
229pts36
www.flyingmachinestudios.com 10y ago

Timeless Programming Tools

nonrecursive
52pts7

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.

Learn CSS 5 years ago

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.

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.

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.

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 :)

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/

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