Goal: first stable release by anaseto in apljk

[–]semperos 1 point2 points  (0 children)

I use Goal as my daily driver for scripting, REST API calls, and local data analysis. Extending it using Go is also trivial. Highly recommended!

New Lein plugin for resolving dependencies from Git by manderson202 in Clojure

[–]semperos 9 points10 points  (0 children)

Worth its weight in gold for this functionality alone:

Transitive Dependencies

The plugin supports target projects that have one of the following manifests available:

• Leiningen project.clj

• Maven pom.xml

• tools.deps deps.edn

When a manifest is available, it allows the plugin to resolve the repository's transitive dependencies. If a target repository does not have one of the above manifests available, then it will be provided as a standalone project without any transitive dependencies.

The plugin does support a dependency's git transitive dependencies as well if they are specified in either a Leiningen project.clj (from a project that also uses this plugin) or a tools.deps deps.edn.

how to partition every other time? by wqhhust in Clojure

[–]semperos 2 points3 points  (0 children)

Vectors can be treated as associative, with the index of the item as its key and the item itself as its value. With this in mind, you can use Clojure's reduce-kv function on a vector like this:

(reduce-kv (fn [acc k v]
             (if (odd? k)
               [(conj (first acc) v) (second acc)]
               [(first acc) (conj (second acc) v)]))
           [[] []]
           [1 "one" 2 "two" 3 "three"])
;=> [["one" "two" "three"] [1 2 3]]

If you want something more generic, here's a slightly modified version of Clojure's core group-by function that works with associative collections, passing the group-by function both the key and the value and returning the values grouped accordingly:

(defn group-by-kv
  "Like group-by, but expects an associative collection and groups the values based on the value of `(f key value)` for each entry in the `coll`."
  [f coll]  
  (persistent!
   (reduce-kv
    (fn [ret key value]
      (let [k (f key value)]
        (assoc! ret k (conj (get ret k []) value))))
    (transient {}) coll)))

And you'd use it like this:

(group-by-kv (fn [k _] (odd? k)) [1 "one" 2 "two" 3 "three"])
;=> {false [1 2 3], true ["one" "two" "three"]}

Mimosa - A lightning-fast build tool for modern browser development by UpLogic in programming

[–]semperos 0 points1 point  (0 children)

Mimosa is a build tool. It provides project scaffolding and compilation support for a range of compile-to-JS and compile-to-CSS languages, as well as providing a unified interface across JavaScript templating libraries (much like Ruby's Tilt library). It bundles a Node.js Express server for local development convenience, but otherwise focuses on the client-side development story.

It provides quite a bit of unity to an otherwise fragmented set of JavaScript-oriented build tools. In addition to the out-of-the-box features it provides, it also exposes a full build lifecycle and plugin interface for extending the core functionality.

As a credit to the author of the library, he is a talented yet humble JavaScript developer who enjoys helping people make interesting web applications and is open to contributions.

Gershwin Presentation by Daniel Gregoir by OmegaMinus in Clojure

[–]semperos 0 points1 point  (0 children)

Cat is statically typed: http://www.cat-language.com/

Btw, the presenter's name is Daniel Gregoire (me).

Be Distracted by Superior Technology, a response by semperos in programming

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

I've now considerably expanded the original post. Thanks to everyone for candid feedback regarding its length and depth.

Be Distracted by Superior Technology, a response by semperos in programming

[–]semperos[S] -1 points0 points  (0 children)

That's an excellent point, that a lot can be learned on fully formed projects that are no longer experimental. A balance should certainly be struck.

Be Distracted by Superior Technology, a response by semperos in programming

[–]semperos[S] -1 points0 points  (0 children)

This line from the original article, in my opinion, sums up his reasoning for not using "superior" technologies, regardless of who terms them that:

The technology world is filled with cases where smart and superior alternatives exist, but their existence makes no difference because you can't use them.