Big Bee Consultants Ltd

Scala & Java Enterprise Software

Welcome to Big Bee Consultants

Experience and good problem solving count for a lot in Enterprise Software. That's why Big Bee Consultants has been successfully meeting the needs of clients for many years now. This website will let you sample the range of new thinking and other issues that have been covered here in recent times, organised mostly in the form of a blog. If you'd like to comment on any of the recent articles, please use the comment form you'll find there.

How are Akka actors different from Go channels?

From the Quora.com question How are Akka actors different from Go channels? I have worked extensively with both Akka actors and Go channels/goroutines and would like to offer a few comments. Firstly, it is important to stress that CSP allows rendezvous-based synchronisation between goroutines using channels, and channels can optionally include buffering. When one goroutine attempts to send on an unbuffered channel, it checks whether the other party is present. If not, it sits waiting, during which it consumes no CPU and only a little memory.

Hosting A Hugo Website Behind Nginx

I’ve been exploring Hugo lately. Interesting. There are many Content Management Systems (CMS) in the world - this site you’re reading is hosted within Drupal. But I’ve always felt that a live CMS is sometimes a needlessly heavy-weight solution to the problem of authoring content and handling the digital assets to go with it. Even large corporations blunder into complex arcane content management, maybe suffering poor productivity and bad performance, with expensive licences to boot.

Communicating Process Architectures - CPA2014 Conference Summary

The CPA2014 conference held in Oxford over the last few days brought together an interesting group of around three dozen experts in the field of communicating process architectures. Discussions were on concurrency and parallelism topics, both theoretical and practical, in areas related to communicating process architectures (CPA). Also known as process-oriented programming, CPA is about both concurrency (the natural expression of things that are happening alongside each other) and parallelism (the physical execution of many parts of a program at the same time) by means of process algebra formalisms and CSP in particular.

Avoiding Race Conditions

At a recent conference, I had one of those 'aha!' moments when some existing pieces together to give a new insight. Sometimes, a glimpse of greater clarity sheds light on where we are and where we're going. In this particular case, I'd been wrestling with concurrency issues. All concurrent software needs to share state. Obviously, if this were not true, it would just be a bag of disjoint stuff otherwise. Sharing state is where the fun starts.

A Tour of Go

I was asked to give a tour of Go to colleagues, so what better than to flatter Russ Cox by imitating his excellent tour of Go. The presentation material and code samples for my tour are here.

Getting Go

It’s quite easy to install the Go language on Ubuntu and similar Linuxes. In fact, Ubuntu has an old version straight out of apt-get. However, if you want to install the latest, maybe you want to download the latest and install it in a clean way. Here’s how I chose to do it - YMMV. #!/bin/bash -xe V=go${1:-1.1} if fgrep $V /usr/local/go/VERSION; then echo Go $V is already installed in /usr/local/go echo To uninstall or upgrade, first echo " sudo rm -rf /usr/local/go" else echo Installing Go programming language $V ...

Wrestling With Concurrency - Scala Exchange 2012

I was very fortunate to join the London Scala Exchange conference over the last two days. A good range of quality talks were offered - some thought provoking, some highly entertaining. And most wrestled to some extent with concurrency. It seems that Scala is not yet at ease with itself in its concurrency model. The root of the issue is the JVM: threads are very expensive and limited to small numbers (say, 30).

Google's Go Revisited

At the end of 2009, a delightfully “little” programming language was fully released following a few years of gestation. I wrote back then about the major features of Google’s Go. Nearly two years of intensive Scala, Java and Groovy work later, I felt it was time to revisit Go with one question in mind: with so much new-found enthusiasm for non-Java languages around, what has Go got to offer that might make it stand out from the crowd?

Dispatch HTTP Critique

Dispatch is a library for asynchronous HTTP interaction. It provides a Scala vocabulary for Java’s async-http-client. It is apparently popular and crops up as a transitive dependency of several other popular Scala products. So it can’t be all bad. However, a recent project of ours had an unhappy experience with it. Disclaimer I’ll say at the outset that there is an alternative HTTP client of my own. So I’m biased. Nevertheless, I’ll try to be dispassionate, keep this brief and stick to the facts as we found them in our particular experience.

Bee Config - simple, compelling replacement for Properties in Scala

The new Bee Config API provides an alternative to using java.util.Properties in Scala programs. The API provides a very simple Scala API for loading configuration files. Simplicity is the key! Often, java.util.Properties is still used in Scala applications, but it is often unsatisfactory. This API is broadly similar in intent, but pimped to work well in Scala. Features Config files are like properties files, except they are always Unicode. UTF8, UTF16 and UTF32 are supported (either word order); boms differentiate them.