Matt Whipple, Software Engineer

Writing in a Vacuum

Mutable Accumulators in Scheme

18 Oct 2016

Scheme is agnostic about immutability….I prefer it in Lisps since it seems to fit the structure of the language well while code that mutates state can seem clunky, but I may have just drank too much immutability Kool-Aid.

Sometimes, regardless of ideals, mutability makes sense and in those cases the mutable values should still be handled in an organized way rather than defaulting to global variables or the sprawling binding environments that using set! by itself may invite. Here’s an approach I adopted to put a tighter rein on some of that potential chaos.

Full Post >

Assessing MongoDb Text Search

17 Oct 2016

Versions of MongoDB since 2.4 have integrated supported for full-text searches…but just how useful is it? It certainly offers greater convenience than a dedicated search solution but a cost is paid in some significant limitations.

Full Post >

Hacking on GnuCash (Options, Part 2-Registration)

09 Oct 2016

In a previous post I worked on easing the retrieval of option values for a given GnuCash report. The issue of registering the options is more complicated due to the divergence in registration logic, but now that will be addressed by extending the objects developed in that post.

The original option registration code in the budget report is basically multiple flat lists which scatter the declaration a bit and doesn’t mesh with the more hierarchical result where options are grouped together. By including the registration logic into the objects created in the previous post the scattering can be removed and the single list can be structured to reflect the resultant grouping.

Full Post >

The Perils of Dropping ACID Transactionality

16 Sep 2016

ACID compliant transactionality has been part and parcel of RDBMS-backed enterprise software development for years, but its absence or relative incompleteness is also one of the major trade offs of using one of the newer breeds of NoSQL databases.

Transactionality introduces a hefty cost: a cost that seems often disregarded by enterprise developers even though it should be apparent if the functionality provided is thought through rather than being written off as something the database “just does’. Even before getting to bits about scaling and sharding and the CAP theorem: transactions are expensive and incur a significant performance hit…so I also look forward to the opportunity to try avoid them.

Full Post >

Hacking on GnuCash (Options, Part 1-Retrieval)

12 Sep 2016

As outlined here, I’m spending some time noodling around with GnuCash to attempt to bend it to my wishes. Presently, I’m focusing on tweaking the provided budget report a bit with the larger goal of making report authoring an overall more pleasant experience that utilizes some more modern technologies. The grand vision/possibly interesting things will be covered in later posts, but for now I’ll be getting my feet wet with Scheme.

When trying to get my head around the original budget report, one of the first obstacles was processing the way options are handled, starting with looking up option values (I actually ended with value retrieval but its simpler logic than registration). So here’s some scheming to try to make that a little more readable (for me at least).

Full Post >