1. Recommendations
  2. Donate
  3. Resume
  4. Blog
  5. Projects
  6. About

Running Clojure on Google App Engine

Clojure excels at pure transformations of persistent data. One area well-suited for this is a stateless server which transforms data between the client and the datastore. For distributed server development in Clojure, we already have Onyx, as well as wrappers for Mesos and others. An apparently less-explored option is the use of Clojure on Google App Engine, which runs sandboxed applications in Google-managed data centers while providing automatic scaling.

Clojure's forgotten for loop

Higher order functions in Clojure get a great deal of attention, and for good reason. Clojure has a rich standard library of functions which focus on purely transforming data. To those studying Clojure, the for macro for list comprehension may stand out as verbose and awkward; it may also go entirely unnoticed.

Installing Arch Linux with a fully-encrypted disk

On a typical GNU/Linux install, you won’t have disk encryption. Though you’re a keen user and you’ve chosen a very strong passphrase, your data is still stored openly. Should anyone steal, confiscate, buy, or otherwise obtain your hard drive, every bit of data is going to be readable. Should anyone boot into a live CD on your system and mount your drives, your data is readily available and your strong passphrase is none the wiser.

HTTPS and the illusion of privacy

With the rise of per-website encryption, and the ease at which it now comes, we begin to expect new sites, and popular sites, to adopt this added security. But what does it buy us? Don’t be misled into thinking your browsing is private.

Signing Git commits with GPG

Anyone can make a Git commit using any name and any email address. What prevents someone from using my name and my email to contribute a malicious commit, or even simply a commit no representative of me?

HTTPS for your Github Pages' custom domain

With the rise of free encryption through Let’s Encrypt, and the weight of global surveillance on our minds, adopting HTTPS is now more important than ever. Github now allows unforced HTTPS for its username.github.io domains, but that coverage doesn’t carry over to those using custom domains. The approach I’m using for this blog and my home page, by way of reverse proxy, is documented herein.

Shave 20% off your optimized ClojureScript

ClojureScript uses the Google Closure compiler, which not only mangles and minifies code, it also inlines functions and removes dead code. Still, every extra KB in your application is distributed to every client who wants to use it. So how can we make it even smaller?

Unity3D and Arcadia on Linux

For the past decade, Unity3D has lacked official Linux support. Some tenacious users have worked around this with WINE, with varying degrees of success. Fortunately for us Linux users, Unity3D is now officially available and support is provided in the new Linux forums. To improve the situation further, Arcadia is also compatible with this new Linux build. I’ll cover here how to get things up and running.

From Vim-GTK to Vim-Qt

Vim-Qt is a gVim replacement which aims to address a number of graphical issues in the standard GTK-based Vim. After having used the default gVim for years, and putting up a number of its quirks, I decided to give Vim-Qt a run for its money. In short, I was pleasantly surprised.

NixOS: first impression

NixOS is a novel Linux distribution started in 2003; it’s built upon the Nix package manger which provides a functional, declarative approach to package management. NixOS takes the direction of Nix, which can run on any Unix-like distro (including OS X), and continues further to allow control over the entire OS, from the file system to various services like SSH and HTTP, using the same declarative syntax. This means an entire NixOS setup, including all services, packages installed, and even configurations, can be represented in Nix configuration files and, potentially, stored some place like Github.

Trying Emacs (evil mode) after 5 years of Vim

As I’ve covered in a previous post, I’m a passionate Vim user; maybe a little obsessive at times (my configs). Setting my love for Vim aside, Emacs, being Vim’s life-long nemesis, presents some interesting benefits. I took a week, this month, to use Emacs exclusively in my work (including C++14, Clojure, and Common Lisp) in order to weigh its benefits. Here’s what I found.

Common Lisp, Parenscript, and AJAX

When looking to make full-stack web applications in lisp, Common Lisp and Parenscript are just as capable as Clojure and Clojurescript, if only less documented. As I wanted to make a web-based REPL for jank, my statically-typed functional programming language, I evaluated both the Clojure and Common Lisp stacks and, ultimately, decided on Common Lisp.

Vimb on Slackware

The popular vim text editor is known for its modal editing, intricate key sequences, and powerful capabilities and extensibility. Vim-style editing and navigation is incorporated deeply into my computing experience, covering:

sbopkg on Slackware

Package management in Slackware (14.1, currently) has a reputation for being rather manual. The official packages are distributed as binaries, with the source included, and can typically be manipulated using the slackpkg tool exclusively. SBo provides hundreds of unofficial packages, ranging from games, to multimedia players, to desktop environments.

Running Xen on Slackware 14.1 with GCC 5.1

My Slackware setup is unique, since, unlike most Slackers, I’ve compiled my entire OS from source. I require the latest GCC 5.1, for work with C++14, the latest Vim, for use with color_coded, and the ABI incompatibilities that follow have led me down a winding path.