Techy Stuff

Software architecture

Some of the many definitions of software architecture can be found here. Here's a few quotes which seem to relate to the way I am working …

Ebenezer Adegbile (Consultant, Self Employed, London, England):

Software Architecture can be defined as language-independent representation of a given software system. It represents the skeleton of a software system, emphasizing a clear definition of the structure, communication and interrelationship of the body of the components that fulfills the purpose of a given software system.

Wahab Ahmed (Software Engineer, National, Islamabad, Federal, Pakistan):

Software architecture is a coherent set of abstract patterns, or principles, guiding the design of each aspect of a large software system… Software architecture is a sketchy map of the system. Software architecture describes the coarse grain components (usually describes the computation) of the system. The connectors between these components describe the communication, which are explicit and pictured in a relatively detailed way. In the implementation phase, the coarse components are refined into "actual components", e.g., classes and objects

Charlie Alfred (Technical Director, Foliage Software Systems, Inc., Burlington MA USA):

Software architecture consists of the rules and principles for how a system is decomposed into its component parts, the rationale for how responsibilities are allocated among those parts, and the policies and mechanisms that coordinate the interactions between those parts as they collaborate to fulfill the purpose of the system. Software architecture is at once the partitioning of a system into its significant elements, and the organization and integration of those elements into a cohesive whole.

Marshall Anthony (Student, Fairleigh Dickinson University, NJ):

Software Architecture is the logical flow (or design) of interrelated components that work towards the goal of a current or prospective system.

Tony Roy Bastin (Software Engineer, Coralgrid Software, Chennai, TN, India):

Software Architecture is the overall big picture of the entire software system which gives an overview of the functionalities of all components and the relationship between various components i.e the collaboration and interaction of every component with other components.

Ozten Chelai (University lecturer, Ovidius University of Constantza, Constanta, Romania):

A system architecture represents the conceptual model of a system. A conceptual model is the map of concepts, relationships and constraints.

… and from another site

in most cases you can begin to communicate intelligently about a software architecture by answering the following questions to the level required by the parties who need to communicate about it.

* What are the elements of the system?
* What are the roles and responsibilities of the elements?
* What are the externally visible characteristics of the elements?
* How do the elements relate to each other?
* What are the characteristics of the relationships?

I will use these questions to help formulate an architecture for my main project.


The building tools in Second Life are very basic. Most building involves making transformations to a limited set of primitive shapes (prims). Sculpties provide a method for importing models made in external 3D modelling programmes. A model is made in, for example, 3DS Max and is enclosed in a spherical or ovoid mesh grid. The position of each point on the model's mesh is measured against a corresponding point on the enclosing mesh. The x,y,z information of the points is converted to r,g,b information for pixels in a 2D image. The image is uploaded to Second Life as a .jpg file. It is applied to a prim and the information is converted back to x,y,z.


Sculpties are good for creating organic shapes but they have some disadvantages: they can take a long time to load, appearing as grey blobs for several seconds, texture-mapping is tricky and there are only a few transformations that can be done on them. They will be useful for creating an organic-looking environment for my creatures, but not for the creatures themselves, because the disadvantages make them unsuitable for working with constantly changing creatures. I'd like to use the 3DS Max workshops to make a sculptie environment.

I'll be following Chip Midnight's Tutorial.


" … a service that enables you to connect, tag and share real time sensor data from objects, devices, buildings and environments around the world. The
key aim is to facilitate interaction between remote environments, both physical and virtual"

This looks exactly what I need to send data back and forward between my sensors and Second Life. It's founded by Usman Haque:

Pachube is here to make it easier to participate in what I expect to be a vast ‘eco-system’ of conversant devices, buildings & environments.
Pachube will facilitate the development of a huge range of new products and services that will arise from extreme connectivity. It’s relatively easy for large technology companies like Nike and Apple to transition into the Internet of Things, but Pachube will be particularly helpful for that huge portion of smaller scale industry players that *want* to become part of it, but which are only now waking up to the potentials of the internet — small and medium scale designers, manufacturers and developers who are very good at developing their products but don’t have the resources to develop in-house a massive infrastructure for their newly web-enabled offerings.
Basically, having built a generalized data-brokering backend to connect physical (and virtual) entities to the web, others can now start to build the applications that make the connections really useful.

From a really good interview here. This interview has details of lots of projects I must look at. I have signed up as a beta tester and am using it to build a Jiggly Wobbly Thing

Weather Stations

After much shilly-shallying, including asking advice on the pachube forum, I have ordered the one pictured below. I "reckon" it should be easy enough to communicate with this directly using Processing's serial library. If this is not the case, I "reckon" that there is enough expertise in the college to help me write a hand-shake. If all else fails it comes with a 14 day money back guarantee.

During the Arduino workshop, I asked the tutor about ways of sending live weather data to Processing or to another programme. He suggested just looking for a ready-made weather station that could communicate via a serial port, rather than cobbling something together with Arduino.

These are the ones I am looking at …

this one looks good

and I found a useful article here about using weather stations to communicate over longer distances.

Microbial Fuel Cells

I went to the Bio Play event at the Dana Centre on 28 Oct., where Alex Zivanovic and collaborators from Goldsmiths University presented their design prototypes - Carnivorous Domestic Entertainment Robots


"Share a room with the 'Carnivorous Domestic Entertainment Robots' and their creators. These robots are devices for utility, drama and entertainment, existing in a similar way to an exotic pet such as a snake or a lizard. How should we react to robots that prey on living creatures and is there an appropriate response to a contrived life-and-death scenario? How should we regard the distinction between function and spectacle?"

The design rationale was that people enjoy watching creatures catch and eat other organisms, which is why they keep vivariums and watch lions catching gazelles on the telly. This theory was confirmed at an exhibition of these prototypes when visitors actually began feeding the robots with insects they found in the gallery. These are designed objects which blur the boundaries between living organisms and machines - robots with biological stomachs … imagine a coffee table that catches and eats mice in order to power a visual display of its digestive state, or a robot that steals flies from a spider's web in order to power a clock. Very cool stuff and I'd love to incorporate this technology into my project. I don't think anything presented here was quite as interesting (to me) as SlugBot, an early prototype using the same technology, coupled with a simple object recognition system, to catch its lunch in the garden, and the Ecobot (see below), which aims for true energy autonomy …


How Microbial Fuel Cells work …
"With readily-available chemicals (such as methylene blue), the fuel cell can be used to generate a small electrical current from the metabolic activities of ordinary yeast!" (from the website of the National Centre for Biotechnology Education, Reading University)


There's an exploded interactive diagram here
A paper by Peter Bennetto on Microbial Fuel Cells (pdf)
and a step-by-step guide to using them here (pdf)

I've had a look and they cost £53 each, plus chemicals (just sayin'!).

Widgets and Mashups

I have been looking at these in relation to researching ways of getting web data into applications I make. The tools I have mostly been looking at are:

Widgetbox - I have found myself using this quite a lot for this wiki. It's an easy way of creating embeddable content out of just about anything you can find on the web, which is exciting and/or scary, depending on your attitude to IP rights.

Zoho - online office and presentation tools. Good for making embeddable widgets such as slideshows.

Yahoo Pipes - mashup tool. This looks fairly flexible and may be a good learning tool for me.

Microsoft PopFly - make mashups and online games. This uses Silverlight and seems to be more aimed at children and teens. Very simple to use.


MashupCamp - website of the annual international "unconference" on Mashups. Lots of theoretical discussion on the wiki.

Mashup ecosystem poised to explode - article about mashups and the concept of the "uncomputer". The responses to this article are mainly negative and point out some of the pitfalls of this way of working.

Dr. Mashup; or, Why Educators Should Learn to Stop Worrying and Love the Remix - article about the use of mashups in education.

Add a New Comment
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License