Re-building a Wheel

Curi­ously, there is no 5-minute guide for a stan­dard Ant + Ivy setup avail­able on the Inter­net, despite the fact that there are no more than one-and-a-half ways of doing it.

I have cre­ated a “skele­ton” con­fig­u­ra­tion (tar.gz, sha256sum, sig) that can be used to quickly get started with the process of writ­ing code and tests, rather than set­ting up build tar­gets, fold­ers and pack­ag­ing instruc­tions. The con­fig­u­ra­tion assumes you want to write code in Scala, but it is easy enough to replace that with good ol’ Java if need be.

What’s inter­est­ing about this setup is that it assumes that you have Ant and a JRE installed, and noth­ing else. Ivy is down­loaded directly from the repos­i­tory as part of the build process, and so is the Scala com­piler. The only file that needs to be cus­tomized is build.properties, which includes details such as the name of the project and the entry-point to your application.

The Multiverse Myth: Part 1

The archi­tec­ture of large-scale sys­tems is befud­dled with an abun­dance of terms, method­olo­gies and philoso­phies: ser­vices, clients, libraries, com­mu­ni­ca­tion pro­to­cols, work­flows, per­sis­tence, caching, service-oriented archi­tec­ture, REST­ful ser­vices and so on. As a result, dis­cus­sions per­tain­ing to the design of sys­tems often tend to be slightly con­fused. Even with smart, expe­ri­enced engi­neers hav­ing many “pearls of wis­dom” at their dis­posal, there is a ten­dency to com­pare apples to oranges, with no easy way to quan­tify the ben­e­fits of spe­cific choices.

You could con­clude from all of this that per­haps there are mul­ti­ple valid approaches to solv­ing the same prob­lem of sys­tem design — this is what I’ve dubbed “the mul­ti­verse myth” — but this con­clu­sion would be wrong.

Con­tinue read­ing

Every Solution is a Trade-Off

In the world of applied com­puter sci­ence, every deci­sion that you make is a trade-off between mul­ti­ple, com­pet­ing inter­ests. For instance, any computer-science stu­dent worth his salt would be aware of the trade-off between time-complexity and space-complexity. In lay­man terms, you can usu­ally find an algo­rithm to do any job faster if you are will­ing to allow it to make less effi­cient use of space.

Con­tinue read­ing