Nov 12 2013

Chuck Moore / GreenArrays at Strange Loop 2013

Published under Technology

I think this was my favorite bit of Strange Loop 2013. Chuck Moore (inventor of FORTH and other interesting things) spoke about his work at GreenArrays  on a novel CPU. The CPU consists of 144 separate “computers” those computers are quite small in capability compared what we typically think of as a computer or CPU. They are extremely RISC and startlingly efficient in terms of nanowatts per unit of computation. Chuck made a compelling case that a few years down the road this metric, energy expended relative to work done will become a main driver in system design.

2013-09-20 Strange Loop Chuck Moore2

Chuck is a low-level kind of guy, so he spent much of the talk discussing ways to program this array of tiny computers at the individual level. The techniques are quite radically different from any kind of programming I’ve ever heard of; for example it is necessary to make two or three of these tiny computers collaborate over a wire/channel between them merely to communicate with main memory! Also, these tiny computers have an unusual six-bit “byte” and 18 bit “word”.

Now the obvious thing to want here is a compiler. A compiler that takes a program written in a high-level language and emits an array of programs to run on this array of computers to achieve the high level program’s purpose. My understanding of the state-of-the-art in compiler design is woefully incomplete, but I’m fairly confident that the thing needed here is far beyond what anyone is doing. I can’t find much about this concept on the GreenArrays website, surprisingly. I wonder if there are any research projects attempting to build such a compiler. Certainly this would be an extreme case of the quest for a “sufficiently smart compiler“.


Comments Off

Nov 10 2013

AngularJS Lunch-time user group, St. Louis MO

Published under Technology

There are plenty of user groups that meet in the evening. We’re going to try one at lunchtime, which is potentially more convenient for those of us with kids in school.

Angular Lunch, in St. Louis MO.

Third wednesday of each month. Noon. At the offices of Oasis Digital, who will supply the pizza and space.


Comments Off

Nov 07 2013

One Plug to Rule Them All

Published under Technology

USB has taken over as the “one plug” for most purposes. The coming-soon Power Delivery specification will likely expand that reach quite a lot.

Already though, USB has taken over my desk, thanks to this shiny new 7+2 hub. (Not an affiliate link, I just like it.)


2013-11-07 USB hub

Comments Off

Oct 13 2013

AngularJS Training

Published under Technology

Over at work, we’re re-launching a line of business from some years ago: training. Specifically, an Angular “Boot Camp” course to help developers become productive in some powerful but daunting tool.

Why? Because we think AngularJS (and its competitors like Ember) are an important step forward in how complex “single-page” web applications are constructed. The AngularJS approach is not the only good way to build such applications (for example, over in the Clojure space, Pedestal is genius; elsewhere in JavaScript, Facebook React is very appealing). But AngularJS is popular, growing fast, and suitable for many application needs.

Comments Off

Sep 17 2013

JIRA API – Anonymous Access to Public Instances

Published under Technology

There are rumors around that it is impossible to use the JIRA API anonymously, even with an instance set up for public read access.

This is not true. I wrote a tiny example tiny project to demonstrate it by retrieving info from a public JIRA instance (the one for Hibernate).

The main source of this confusion: neither the official JIRA API Java client, nor the third-party (and easy to work with) rcarz client ships with anonymous access classes or examples.

Get the bits on Github.


Comments Off

May 31 2013

Opaque Binary Formats are Terrible

Published under Technology

I’m looking at you, Crystal Reports!

Opaque binary file formats for development assets are a scourge on the software development community.

Here’s some context. At Oasis Digital we typically work on complex enterprise data systems. These systems have a long life, with multiple (or many) developers working concurrently and over time. These systems are important to the companies which use them, which is to say, we must not accidentally break things.

In that context, we’ve encountered the following problem on numerous occasions, using numerous tools, on multiple platforms, over many years. Today I’m going to pick on one specific and especially painful instance of it: report definitions.

We believe strongly in code review, where code is defined broadly to include things like the definition of a report. That definition can include SQL, layout information, styling, parameter definitions, and so on. Whenever a developer makes a change to a software system, another developer (often a more senior one) reviews the change to see exactly what is changed, and verify it appears correct, and that no accidental changes are included. In this way, we greatly reduce the incidence of accidentally changing or breaking something that was not supposed to be changed.

Code / change review is very common in most or all mature software development organizations.

For source code, almost universally represented in plain text, the mechanics of code change review are straightforward. The diff command, or any of 1000 tools for comparing files, can readily show the differences between version and an version M. (As an aside, whenever someone presents a mechanism for representing source code is something other than plain text, I dismiss it with a chuckle unless there is also a solid solution provided for the question of how to review changes.)

Happily, many reporting tools represent the layout and query information for a report in a text format. Sometimes it is a proprietary text format, sometimes it is XML; regardless of the ugliness, these all have the merit that it is possible to compare them as text and see what changed between two versions. Offhand, I would like to call out:

  1. Jasper Reports, in the Java world
  2. ReportBuilder, in the Delphi world

for doing the right thing: offering a text-based, diffable representation of a report definition.

Crystal Reports, though, is both a popular and problematic tool. It represents reports in an opaque binary format, for which a “diff” produces nothing readble. With only this in hand, “code review” of report change consists of:

  1. Run the old report
  2. Run the new report
  3. Hold them up next to each other and compare the output
  4. Hope that no accidental changes were made that would break the report for some parameter that wasn’t used for testing

I have heard that “Hope is not a strategy” and that is certainly the case here. Yet this tool (and others like it), an opaque binary representation of report definition leaves us with only hope.

A Way Out

I have read that Crystal Reports offers an API (object model) by which software can inspect and manipulate the report definition. Using this, it should be possible to write a tool which takes a report definition is input, and emits a text file as output, such that the text file contains a human readable definition of every important piece of information about the report definition. this simply adds a minor step to a review/diff process: run both the before and after representations through this conversion, and diff the outputs of the conversion.

To be effective, such a tool would need to produce a text representation which is both complete (which is to say, includes essentially everything that will be needed to re-create a report definition) and stable (which is to say, minor changes to the report definition produced by clicking around, result in minor changes to the text output)

Unfortunately, I have not been able to find such a tool. If anybody knows of one, I would love to hear about it.

Comments Off

« Newer Entries - Older Entries »