Thursday, July 12, 2012

DataBasin development: logger and semi-joins

I am working on two long-needed features of DataBasin, the open source application to extract and inspect data from salesforce.com

The first feature is rather simple: a log window which shows some informative or debug output usually thrown to the console. While on standard Unix we always have the terminal emulator open and all debugging is very convenient there, on mac and especially on windows it is inconvenient: DataBasin logged every output as an Event in the windows log. Quite painful.

A much more complex, interesting and long awaited feature is that DataBasin now supports semi-joins! In other words, one can reference a field of a referenced object with the dot notation (like: Case.Account.Name) exactly as in the Salesforce.com Data Loader. The objects are recursively scanned and flattened so that they can be written to the CSV file. The column names are generated through the descent of the object tree.
This feature required a much more flexible approach in the CVS writer core. This means that some regression bugs could appear... hopefully not.

This feature applies to all queries, including the Select Identify query tool.

As the parser was being rewritten and the supported API bumped to 25, it is now improved to handle Aggregate Objects, thus one can now issue the following SOQL query:

select count(id), status from case group by status

and get the expected result:
"Status","expr0"
"New","16"
"Closed","31"

I hope these features make DataBasin much more useful!

Wednesday, July 11, 2012

NetBSD quick update guide

Since I always tend to forget and the documentation on the website is a bit incomplete, I sum up the procedure I use to update from source the kernel and userland:

Update /usr with cvs, create /usr/obj and /usr/tools (or clean its content).

As per documentation, build the tools. Inside /usr/src:
$ ./build.sh -O /usr/obj -T /usr/tools -U -u tools
Now build the kernel:
$ cd /usr/src
$ ./build.sh -O ../obj -T ../tools kernel=
Install it:
# mv /netbsd /netbsd.old
# mv /usr/obj/sys/arch/i386/compile//netbsd /
And now, important, build and install the modules:

# ./build.sh -O /usr/obj -T /usr/tools -U -u modules installmodules=/

Reboot and check that the kernel works. Then build and install userland:
$ ./build.sh -O ../obj -T ../tools -U -x distribution
# ./build.sh -O ../obj -T ../tools -U -u -x install=/ 
 Cross your fingers and happy BSD!

Monday, July 02, 2012