Sad day

Learning gives creativity
Creativity leads to thinking
Thinking provides knowledge
Knowledge makes you great.

A.P.J. Abdul Kalam


Excel Formula Grammar for peg.js

I have been asked about this a few times, and here it is.  I like Excel a lot.  I felt differently until I had to start parsing Excel files, and it is an amazing piece of software.  It is also an amazingly complex piece of software and if you want to implement an entire Excel parser and evaluator (which I did), ask yourself if you would be better off just installing a Windows box.  Excel has a evaluation model that is hard to optimize.  I might write about it in the future.  Until then:


Crispy: a new .NET DLR language


A while back I wrote a few languages targeting the .NET DLR.  I just released one of them on github:


It is designed as a throwback, 1980s-style language; it is simple, procedural, and – hopefully – easy for beginners to use.  It also has some more advanced features with its support for lambda expressions.

I am not working on the language right now.  The .NET DLR has some very real issues that I will write on in the future.  I fell in and then out of love with the DLR, moving now to LLVM for future language development.  That being said, the .NET DLR is amazingly powerful and it was a pleasure to work with most of it.




Teradata: exception info for program name: disstart

If you are getting this:

Internal error: Please do not resubmit the last request.  SubCode, CrashCode:

and this:

signal: 11 SIGSEGV
code:   1 SEGV_MAPERR
addr:   0000000000000002
rip 0000000000000014  eflags 3d247208
rsp 000000000000b000  rbp 00002aaaaed7bd60
rax 00002aaac06e8000  rbx 0000000000000000
rcx 0000000000000000  rdx 0000000000000000
rdi 00002aab3d3f5728  rsi 4099e80000000000
r8  00002aaac06f2c68  r9  0000000000000000
r10 0000000000000000  r11 0000000000000000
r12 40d1ba0000000000  r13 000000006bb68410
r14 0000000000000000  r15 3ff0000000000000

… more segfault data

and you have added a table recently, re-run your statistics.  Fixes everything.

I see a lot of people with this problem.  Only took half a day of my life that I will never get back.

Java, JDBC, Ruby

Some quick code updates

Here are a few things that I have pushed out the last few months, Ruby edition:

Active Record Teradata Adapter



I had posted about this before.  This is a jruby teradata adapter.  It is a lot more complete now, and follows most of the active record spec.  From feedback via email, it appears to be used in quite a few projects.

Trinidad BoneCP Database Pool Extension


If you are using Trinidad and want to use BoneCP for you database pool this extension will work for you.  I have been using it in a production environment for a while.

Kalc.  Excel expression-like parsing language


I had to develop a language that parsed Excel expressions for a project, and was able to make it FOSS.  I also have another project that converts XLSX files to Javascript that I am hoping to release in the future also.

Active Record JDBC Import


This is a somewhat incomplete effort to quickly import data from flat files using either prepared statements or MySQL LOAD DATA INFILE statements.  It works and it is fast and it is being used in a project.  Needs some work, but it should work for anyone who wants to speed up data imports.

Code, Java, JDBC, Ruby

ActiveRecord JDBC Teradata Driver

Quick update here.

Just pushed out some code for an ActiveRecord JDBC Teradata driver.  I had been looking for a driver for a project I was working on, so if you have the same need feel free to play with the code.


I only have been able to test basic functionality: Model.first(), Model.all(). I do not have write access to the Teradata system I am working with, but SELECT statements seem to work really well.  I grabbed a VMWare VM from Teradata to test additional functionality with, but I haven’t had time to play with it.  If you have any changes, fork the code and hack away!