clj.orcery

Language, Expression and Design

Wednesday

16

November 2016

lucidity 1.2.8 deployed

by Chris Zheng,

The first cut of lucidity is feature complete - in that I've used it to deploy itself. It's nice to be able to go (./deploy) in the repl and have the project split into a bunch of jars that get uploaded to clojars. This project has been a serious yak shave. Besides integrating 5 different libraries into one, lucid.aether is a replacement for pomegranate and lucid.package just does what leiningen does. The reason that this was done was to remove dependencies and to stop clashes from happening. There's still some rough edges that need to be smoothed over - i.e. signing a file using bouncycastle (instead of…

Wednesday

16

November 2016

hara.security - making sense of the JCA

by Chris Zheng,

There's a lot of noise around security and even at the best of times, it's hard to make sense of what is happening with so much choice of implementation and strategies. The JCA (Java Cryptography Architecture) provides a really nice high-level interface to explore and extend the many different implementations of algorithms, ciphers and keys. To understand what to do with security, we have to understand the most basic forms of security that people are doing today. Broadly, they form into a couple of categories: Encryption (To send a recieve secret messages) Symmetric Asymmetric Verification (To ensure that the message is in fact from the correct person) Digests Signatures All…

Sunday

09

October 2016

vinyasa moved -> lucidity

by Chris Zheng,

I've spent the last couple of weeks consolidated a bunch of tooling libraries together into a code base that I can manage a little better. Essentially, lucidity is the merging of lein-midje-doc, vinyasa and jai with more emphasis on in-repl and in-emacs functionality. I've put a lot of thought into how to write code without getting lost and I've realised that documentation should be a habit. The quicker we get into testing and publishing pretty documents, the further along we are into the release cycle. That's why lucid.unit and lucid.publish are such a fundamental pieces in the tool suite. A video, outlining how they are used in my…

Tuesday

04

October 2016

why clojure.zip sucks

by Chris Zheng,

I have to say it. The clojure.zip implementation sucks. I'll be completely upfront here. The real motive of course, is to trash-talk an existing library and then point to something that I just wrote. Let's get that clear right from the start. Now back to trash-talking. IMPOSSIBLE!! you say. This is outright heresy. How can anything witten by Rich be anything but a masterpiece? clojure.zip has been around since the very beginning of clojure. It's so popular that so many libraries are built on top of it and it's also optimized with a fast implementation. So if it sucks, then why didn't people say anything before? Let me…

Thursday

15

September 2016

develop, test, communicate

by Chris Zheng,

hara version 2.4.4 has been pushed to clojars with documentation added for hara.io.file and hara.test. I want to focus a little bit on the test framework, having previously written a little bit concerning the initial release. I feel that this sits somewhere in between midje and clojure.test in terms of clarity and feature count. midje comes with it's own test runner as well as it's file watcher/reloading mechanism and countless other features. As much as I liked working with lein midje :autotest, I felt that the library could be pushed further. What I was working on was a way to manage function metadata…

Tuesday

13

September 2016

hara.io.file - nio for clojure

by Chris Zheng,

For the longest time, I detested writing the delete function for file system manipulation. It really bothered me that to delete a folder, there was serious pain. A comparison of how a folder was deleted in various environments: Desktop: <CLICK>, <SHIFT>-<BACKSPACE> Shell: rm -R <FOLDER> Clojure: from https://gist.github.com/edw/5128978 (defn delete-recursively [fname] (let [func (fn [func f] (when (.isDirectory f) (doseq [f2 (.listFiles f)] (func func f2))) (clojure.java.io/delete-file f))] (func func (clojure.java.io/file fname)))) Firstly, that's too much code to write. I also like to point out that the code uses…

Friday

02

September 2016

hara 2.4.0 released

by Chris Zheng,

I've just pushed version 2.4.0 of hara to clojars. I haven't done much open source in the last couple of months so not much old code has changed. There is a fix to maintain clojure 1.9 compatibility. No bug fixes. I think it's mostly good. The biggest change is me. To be more specific - my outlook. The 'new' parts of the library are replacements for two canonical workhorses - fs and midje. I have mixed feelings about this - hara used to be a bunch of namespaces that were purely utility - to provide methods that other libraries lacked. I wanted to respect the canon and…

Wednesday

01

June 2016

klipse is magic

by Chris Zheng,

Just last month, I sat down with the klipse guys and told them that because I'm super lazy, I didn't even want to use cljs-build/figwheel and just edit code directly on github/gists and have it be pulled and compiled directly on the browser. A month later... thanks to viebel's awesome work: http://blog.klipse.tech/clojure/2016/05/30/spec.html What people saw was the clojure.spec examples running live. What most may not realise is that the klipse editor is pulling code from github on the fly and resolving dependencies within the browser itself. This changes the game completely. It completely removes the requirement of a…

Wednesday

18

May 2016

live documentation with klipse

by Chris Zheng,

I've been in Tel Aviv for the last 3 weeks and have been lucky to be hanging out/hacking with some amazing clojurists - i.e danielsz of system fame, madlan and the klipse project. Now that cljs-in-cljs is a reality, klipse is a real treat to work with. I really like this project because it's essentially a repl in the browser. Well... it's alot more than that but what these guys plan to do is to create a no-install environment for clojurescript evaluation. I worked with cljs-build in the past and was severely traumatised by the development experience as well as the constantly changing landscape of cljs at the…

Monday

11

April 2016

fudje - a sweeter test framework

by Chris Zheng,

I'm been one of the biggest fans of midje ever since I laid eyes on the beautiful syntax and watched the amazing TDD videos by Brian Marick. The library changed my perception of testing to be THE means of development as opposed to being relegated to just "part" of the development cycle. Having the => input/output forms meant that midje tests were as readable as documentation. It led to my own explorations in how design and testing should be done and I am so thankful for the initial inspiration. However, midje has been a victim of it's own success and the initial flurry of code, pull-requests, and commits has…

comments powered by Disqus