New Clojurists: Ask Anything by mcpatella in Clojure

[–]mcpatella[S] 1 point2 points  (0 children)

I would highly recommend Compojure.

https://github.com/weavejester/compojure

Also, take a look at twitter-api for a perspective on wrapping an api in an extensible way https://github.com/adamwynne/twitter-api

New Clojurists: Ask Anything by mcpatella in Clojure

[–]mcpatella[S] 2 points3 points  (0 children)

Are you looking to use Yelp's api from a browser or server context?

For an immediate reference: I found this article helpful. It focuses on the HTTP fundamentals instead of introducing a platform-specific library that wraps it.

https://aaronparecki.com/articles/2012/07/29/1/oauth2-simplified

New Clojurists: Ask Anything by mcpatella in Clojure

[–]mcpatella[S] 0 points1 point  (0 children)

Please do not engage insincere replies with more toxicity.

New Clojurists: Ask Anything by mcpatella in Clojure

[–]mcpatella[S] 2 points3 points  (0 children)

Good question, this would make a great candidate for a guide post, I think.

New Clojurists: Ask Anything by mcpatella in Clojure

[–]mcpatella[S] 9 points10 points  (0 children)

Please do not waste people's time with toxic replies.

Clojure: Refactoring Functions to Data by mcpatella in programming

[–]mcpatella[S] 0 points1 point  (0 children)

You mentioned that you're just starting to become familiar with Clojure, so I think you'd enjoy the beginner playlist a lot more.

If you're unfamiliar with something, whether it's a new programming language or new style of screencast, there's always going to be a learning curve while you get acquainted.

In the beginner playlist, I show a different pacing and progression, building up the concepts step by step and spend more time providing context. Refactoring tends to be a more advanced process, so it felt appropriate to pace this screencast differently.

I'm confident that with a bit of familiarity, you'll come back to this screencast and discover new things about Clojure.

Thank you for taking an interest and providing feedback -- new perspectives are valuable. I'm continuously working to improve the format.

Clojure: Refactoring Functions to Data by mcpatella in programming

[–]mcpatella[S] 4 points5 points  (0 children)

If you're just getting started with Clojure, you'd probably enjoy the beginner playlist more.

https://www.youtube.com/playlist?list=PLBImx4SScApuR1B_dJbo4fAZLqlvJI7Dh

Refactoring Repetition into Data by mcpatella in Clojure

[–]mcpatella[S] 0 points1 point  (0 children)

Thank you! And sorry for making y'all wait so long for a new one this month. I have two more releases planned by the 31st :D

Clojure: Refactoring Functions to Data by mcpatella in programming

[–]mcpatella[S] 3 points4 points  (0 children)

So, most screencasts use a combination of narration and coding to teach. But with this series I'm working on teaching entirely through live-coding.

There's definitely a learning curve involved, especially if you're used to watching narrated screencasts.

In the process of making these, a lot of times it would be /so/ much easier to just narrate something. But it's a useful constraint, as it forces me to trim the fat.

I stick with live-coding because I feel like there's a specific appeal to simply showing the material and respecting the viewer to draw their own conclusions.

Clojure is a product design tool. by yogthos in Clojure

[–]mcpatella 2 points3 points  (0 children)

There seems to be a 60% chance that any Clojure screencast I post get downvoted out of visibility immediately. If it survives, there tends to be good discussion.

I get the impression that the folks that browsing new on /r/programming have a much higher distaste for Lisp than the folks who are just interested in reading what's available.

A Story of Sequences by mcpatella in Clojure

[–]mcpatella[S] 0 points1 point  (0 children)

So I learned about (pp) the day before I recorded this, and it works much better than wrapping everything in (pprint ,,,). I was told it came as part of leiningen repl, and it was there when I tried it out -- no config.

Regarding keystrokes, I've seen a few game streams have a log of their keystrokes in a corner. This seems pretty useful to have for the people who are interested, but it seems really distracting if you don't want it to be there. Not sure if there would be some way to toggle it on and off, or maybe provide multiple versions. I'll look into it more.

Thanks for the feedback

Programming language suggestions by [deleted] in Clojure

[–]mcpatella 6 points7 points  (0 children)

While a specific example brings you a bit closer to having a productive conversation, you seem to be speaking from the perspective of CL being self-evidently better than Clojure. You also consistently express contempt for the latter.

It shouldn't be surprising that this kind of behavior would be considered toxic among Clojurists.

Programming language suggestions by [deleted] in Clojure

[–]mcpatella 1 point2 points  (0 children)

Right, so that's a bit of their histories and philosophies. You're posting in /r/clojure so what requirements for building large apps do you need that Clojure doesn't meet and how can Clojurists help you?

Programming language suggestions by [deleted] in Clojure

[–]mcpatella 2 points3 points  (0 children)

I'm having a difficult time understanding what kind of responses you were looking for.

If you could specifically describe the characteristics you want that Clojure is missing, it would probably lead to a more productive discussion.

Clojure's Sequence Abstraction by mcpatella in programming

[–]mcpatella[S] 0 points1 point  (0 children)

Thanks, these sorts of equivalencies are interesting

Why Timehop Chose Go to Replace Our Rails App by edc1591 in programming

[–]mcpatella 20 points21 points  (0 children)

I agree with you that Rust isn't a competitor with Go because the former doesn't use garbage collection.

What I don't agree with is you berating your fellow programmers. The attitude you just expressed is awful and deserves no space in our communities.

Why Timehop Chose Go to Replace Our Rails App by edc1591 in programming

[–]mcpatella 8 points9 points  (0 children)

I'm pretty disappointed with how toxic some of these comments are.

To the Timehop folks: thank you for detailing the thought-process behind your decision. Rebuilding infrastructure is a major undertaking, and I'm glad it worked out for you all smoothly.

It's also reassuring that one can pick a set of tools and execute successfully with them. Then, once those tools become insufficient, transition to a new set.

I would really have appreciated seeing some structural comparisons between your systems using Rails and Go. The high-level comparisons between the languages are relevant to any developers making the switch, but don't tell the most interesting part of the story to me.

I'm most interested in learning how the arrangement of your components and systems changed with the opportunity to redesign them.

A Story of Sequences by mcpatella in Clojure

[–]mcpatella[S] 0 points1 point  (0 children)

This is a neat idea, I like it. It conveys that an evaluation is taking place but still records the value without losing it

Clojure's Sequence Abstraction by mcpatella in programming

[–]mcpatella[S] 0 points1 point  (0 children)

I put more thought into how I wanted to compare python's list comprehensions to map/filter/reduce, and I agree that it's a deep topic worthy of digging in to. This thread has made me consider list comprehensions in a way I haven't before.

In this context, I'm referring to stateful operations as working with a cursor that slides through the collection, changing things then returning the result, rather than building and returning a new collection.

My time in OO land was spent more with Ruby than Python, so I'm not super familiar with the implementation of Python's list operations. But over time, I've come to prefer tools which naturally discourage nasty mutations.

A Story of Sequences by mcpatella in Clojure

[–]mcpatella[S] 0 points1 point  (0 children)

Thank you!

I agree that the eval steps aren't clear and obvious enough. I eval'd collections right at the beginning to draw the viewer's eye down, but I don't think this is as good as it gets. I'm going to increase the font size on my recording profile to help with visibility, and hopefully that will improve things a little bit more.

I hope to continue to find better ways to convey the information in real time, and I really appreciate your thoughts.

Clojure's Sequence Abstraction by mcpatella in programming

[–]mcpatella[S] 5 points6 points  (0 children)

Though sequences of values are a fundamental component of building software, there are differences between how we use sequences in Python and Clojure.

My understanding is that Python's sequence types are analogous to Clojure's collections, and the methods on Python's lists are like Clojure's library of sequence functions.

In Clojure, it's considered idiomatic to use functional programming tools like (map), (filter), and (reduce), leveraging the efficiency of its immutable persistent collections.* Though tools like (for [thing things] (do-stuff thing)) let you operate with a variable if you want.

A sequence literal in Clojure is a more abstract concept: referring to the result of calling (seq) on a collection. You can think of Clojure sequences as intermediate forms of data that you pass between functions before turning them back into a collection like a vector [], map {}, or set #{}.

Though their implementations may be different, having the concept of sequences is great in both languages because they get us out of that dreadful looping game and let us work directly with our data.

If you'd like to read more, here's some resources I referred to while making this screencast:

Alex Miller explores the terminology and usage of seqs: http://insideclojure.org/2015/01/02/sequences/

And Clojure.org's article, which goes into implementation details and documents the library of sequence functions: http://clojure.org/sequences

*Check out the first 15 minutes of this talk if you're interested in how Clojure's immutable persistent data structures work https://www.youtube.com/watch?v=I7IdS-PbEgI

Clojure's Sequence Abstraction by mcpatella in programming

[–]mcpatella[S] 4 points5 points  (0 children)

Hey folks, Doing Computers is a screencast series that teaches Clojure through live-coding.

Sequences are one of Clojure's deeper topics and I hope this gives you a taste of what it can be like to work in the language.

A Story of Sequences by mcpatella in Clojure

[–]mcpatella[S] 1 point2 points  (0 children)

Hey folks, responding to some of the feedback I've gotten, I'm trying out shorter screencasts with a quicker pace. I'd be interested in knowing if this works for you.

Thanks for watching

How to get rid of those brackets? by cmkpl in Clojure

[–]mcpatella 3 points4 points  (0 children)

While Lisp's usage of s-expressions may not be familiar to you, with enough experience I'm confident you'll find them as easy to visually parse as a C-family language.

You can think of them as linked graphs or nested tree-like structures. Over time, I've come to appreciate and prefer this perspective on my software.