A few weeks ago Cognitect ran the annual State of Clojure Survey, and presented the results, shortly followed by the analysis. While they did a great job on presenting and analyzing the choice answers, text responses were largely dismissed. Each year text responses contain the most information about which features users lack, or what are their biggest gripes with the language; so to avoid the survey being just another reason to feel good about Clojure, these should be analyzed too. It is easy to overlook a problem people are having if it is stated in stone-cold percentage. The other thing is when you read the sincere words of real people.

I understand that manual digging through 2000 textual responses is a hard and thankless job, but a man's gotta do what a man's gotta do. I've spend the whole day, I've read them all, and boy oh boy do I have some information for you.

NB: I processed only answers related to Clojure, as I'm not into ClojureScript yet. If you want to do the same for CLJS, be my guest. Especially since CLJS has fewer answers.

NB: Great thanks to Alex Miller and Justin Gehtland for running the survey and providing the results.

Read more ->>

Meet clj-vagrant-new, a Leiningen template that allows you to do this

lein new vagrant myproject +datomic

I struggled for some time to find a Vagrant-powered Clojure+Datomic setup until I stumbled upon this blog post. Even though everything was very nicely explained there, I still had to apply effort to remove overly specific parts, bring configuration files up to date etc. To save the trouble for others I made a template for creating a complete development setup with just one command.

The template uses Vagrant, and Ansible for provisioning. Once vagrant up is done inside the project directory a free version of Datomic (which uses local storage only) will be already set up, as well as the headless nREPL server for your Clojure program. You can now immediately connect to it from CIDER/fireplace.vim/… and start hacking. Some extra information is available at template's Github page.

If you want to move an already existing project to Vagrant it will be easier to just copy the files from clj-vagrant-sample which is a baseline project generated by the template.

Please try it, report issues and enjoy!

EDIT: In the comment section Alex Miller advised against using inline functions for now as they are subject to change in the future version of Clojure.

Clojure's inline functions is one of the rarely discovered features. Unlike any other concept that you can introduce via macros they are important enough to be treated specially by the compiler. But still many Clojure users have never heard about inlines let alone used them.

In this post I investigate what is an inline function, how is it different from macros and when either should be used.

NB: This post is a rewrite of this Gorilla session (you should definitely check Gorilla REPL out, it's awesome).

Read more ->>

ownCloud logo

This post is a follow-up to The Big Migration.

So, with moving many of Google-powered services to my personally hosted ownCloud, I've run into need of providing the necessary infrastructure on the device side. Since I own only Androids it was already easier for me to deal with a single platform, but subtleties, oh subtleties galore. In the post I describe the very ownCloud-compatible Android applications I use up-to-date and am quite happy with.

Read more ->>

For many of us Emacs is more than just a text editor. It is a programming environment, text processor, file manager, image viewer, organizer — you name it. But what's most enthralling about Emacs is the simplicity of ad-hoc repurposing it to the specific task. In this take I describe my recent application of Emacs to conveniently label large amount of images.

Read more ->>

DigitalOcean logo

Although OpenShift is a great service and fit all my needs completely, I decided to move on. There were several reasons for that. First of all, I wanted to have a more independent setup, bringing closer the day when I can run my own server reliably. OS being an IAAS applies certain restrictions on what you can and cannot do. Secondly, I hit the limit of three cartridges provided by free, and while it was just the amount I required, it prohibited me from doing any casual testing and web-doodling from that account. And when the money becomes involved, you apply a more careful judgment to where you wanna be.

So farewell Openshift, greetings DigitalOcean. I picked DO mostly for, I won't conceal it, the price tag. $5 is the exact amount I'm willing to spend on a VPS so far, when there is also an option of not paying at all. And for these $5 DigitalOcean provides a decent single-core VPS with 20GB SSD storage space. This is more than enough for me right now, and DO offers more advanced plans for roughly the same amount of money as other VPS providers do. I opted for an instance in San-Francisco (Amsterdam was unavailable when I was creating an instance), and that gives me around 150 ms latency — which is sufficient for my use-cases.

Read more ->>

Many novice Emacs users often complain about Emacs being slow to start. This makes them use alternative editors like vi or nano for quick edits. Emacs is indeed a slow beast to power up, but the following solution will show you that it's not much of an issue even if you want to make some quick changes in a single file.

Read more ->>

Proud owners of Intel Sandy Bridge-powered laptops have been experiencing power regression problems for three months now. Starting somewhere at 3.6.x kernel the power consumption suddenly seared high as well as the overall CPU temperature. My typical laptop temperature being around 45°C with introduction of 3.6 it rose to 80. Average battery life jumped from 3-4 hours to pathetic hour and a half. Briefly speaking the changes were too much to bear so I rolled back to 3.5.6 and stayed there for these three months.

Read more ->>

Welcome!

So I have finally overcome my laziness and finished this site. The idea for a personal standalone blog came to me almost a year ago when I bought this domain. Now at last I've made something that I'm not very ashamed to show others.

I pursued a few reasons when I decided to move from cozy and curated Wordpress/Blogger-like environment into the wild. Primarily, I want to be able to prepare posts using an editor instead of a browser. Second, I want my articles to be stored as files rather than some database entries. Finally, managing your stuff personally gives you much more freedom in manipulating it.

Read more ->>

One of the greatest features of GNU/Linux is that it shares the Unix amaziness of having lots of small tools which are easily combined together via stdin/stdout. Today we are going to explore the possibilities of playing MP3 files with these little tools.

Read more ->>

For more posts see the Archives page.