codegourmet

savory code and other culinary highlights

Comparing Deeply Nested Structures

| Comments

For testing a JSON API response I recently had to compare two deeply nested structures. To do this programmatically would be quite a pain, so I wrote a gem which tests a prepared structure (imported JSON) against the output of my (unit test) code.

Screencasting With Ubuntu as GIF

| Comments

Sometimes I need to send someone instructions on how to use software.

Instead of fiddling with annotated screenshots, wouldn’t it be nice to just send an animated GIF via email? Also, I now can show off my struggles with Vim! ;)

Here’s a setup that I found on the internet and it works like a charm with my system (Ubuntu 14.04 LTS and xmonad).

Ruby 2.0 Not Compiling Due to Readline Error

| Comments

Ruby 2.0.0 didn’t compile anymore after reinstalling rbenv on my Ubuntu 14.04 system. The error message was only hinting at /tmp/ruby-build.xyz.log.

Inside the build log I found an error similar to this:

1
2
readline.c:1977:26: error: ‘Function’ undeclared (first use in this function)
     rl_pre_input_hook = (Function *)readline_pre_input_hook;

Integration Tests With Celluloid::IO, Part 2

| Comments

In the first post, we wrote an integration test setup for a Celluloid::IO application.

One remaining problem is that the tests are “absorbing” all exceptions that occur during worker execution, or are raising them some time later. This is because the workers can just crash internally and/or the worker thread is still running when the test is done.

Integration Tests With Celluloid::IO, Part 1

| Comments

While creating Celluloid based applications is more fun than you’d expect from multithreaded programming, testing them has some caveats.

Here’s how we did the test setup with MiniTest and as a bonus I’ll describe a hack to handle worker exceptions correctly in a second post

Vim Modifiable / Readonly Buffer

| Comments

Sometimes, vim shows an annoying warning saying

1
2
E21: Cannot make changes, 'modifiable' is off
Press ENTER or type command to continue

or:

1
2
Changing readonly file
Press ENTER or type command to continue