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.

Where to Go Next ~ Operators

Go version 1.0 arrived in late 2009. It’s now a well established language and ecosystem, having carved out a significant niche in server integration and bespoke webserver code, amongst others.

Unashamedly a quirky language, Go’s developers pioneered an opinionated approach to minimalism that has evidently served it well.

This post is one of several looking to the future; it focusses on operators in Go.

Where to Go Next ~ Range

Go version 1.0 arrived in late 2009. It’s now a well established language and ecosystem, having carved out a significant niche in server integration and bespoke webserver code, amongst others.

Unashamedly a quirky language, Go’s developers pioneered an opinionated approach to minimalism that has evidently served it well.

This post will focus on iteration in Go using range. Later posts will take a more detailed look at a few other Go features.

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.

Go Web Toolkits and Frameworks

Beego FrameworkTL;DR. Sorry. Revel Framework* strongly opinionated - you may or may not like what it requires you to do + routing, filters, middleware, templates/views + nice development environment - hard to step outside the Revel wayTraffic Framework+ routing, filters, middleware, templates/views - dependency on regexp-based routing: impaired performance Gorilla Toolkit+ fast routing + subrouter / tree capability is very good - ‘context’ shares a common table of state - ‘session’ uses ‘context’

Go Gaps

Go is a great and superbly simple language. It has a high degree of credibility in its competence because its progenitors worked tirelessly on achieving simple and clean precision. But it’s not perfect. There is no easy way to compare structs deeply without using reflect.DeepEqual or some hard work http://stackoverflow.com/questions/24534072/golang-how-to-compare-struct-slice-map-is-equal I really would like some single-assignment style of immutability. Channel selection doesn’t have boolean guards, unlike Occam. This is a shame when these are essentially easy to implement and greatly simplify the code needed to write stateful actors (processes in CSP-speak).

Scala, The Good Bits

== ~ Or: Why Java devs might find Scala-lite very useful ~ Case classes awesome; Javabeans smell Exception handling, schmexception handling

Cake Or Dependency Injection

Traits encourage inheritance (by a different name) instead of aggregation Cake can be harder to test - stubs/mocks; example… Cake has a single namespace, with collision problems.