Thursday, May 10, 2012

Apache Cassandra on a Raspberry Pi


One of the  reason I got hold of a Raspberry Pi (the $35 arm based Linux
machine) was to play around with building a cluster of them  for handling
"Big Data".  This is a real exercise in tinkering, very much a “what if” scenario.  The first thing I wanted to play with was getting Apache Cassandra to run on  the Pi.  Of course Cassandra is built with Java, there is no java on the Pi out of the box.    Several people suggested building Openjdk (http://openjdk.java.net/) but I plumbed for Oracle’s java SE for  embedded available here:


Download Java SE for Embedded 7 (ARMv6/7 Linux - Headless )and install it on the PI.  Once done and with the path and java_home correctly set you should be able to run the java on your pi.

Next get hold of a version of Apache Cassandra (http://cassandra.apache.org/)  I was using version 1.1.0.  Install it as usual.    If yo u try and run Cassandra from the bin directory it will fail to start with the serror:

“Invalid initial eden size: -Xmn0M”

The problem is that cassandra-env.sh is trying to work out the heap size by getting the  amount of memory on the machine and multiplying it it by the number of processors (line 69)

max_sensible_yg_in_mb=`expr $max_sensible_yg_per_core_in_mb "*" $system_cpu_cores`

The number of system cpu cores (line 22 or there abouts):

system_cpu_cores=`egrep -c 'processor([[:space:]]+):.*' /proc/cpuinfo`

is failing on the Pi (there is no processor line in /proc/cpuinfo).  For now I’ve manually altered cassanda-env.sh  to report only on core. 

system_cpu_cores=1

Cassandra now runs on the Pi.     There must be a better way of doing this( my Linux programming is failing me for the moment)  but for now I’m just tinkering so it will do.

Next up, try and get some performance figures for the Pi running Cassanadra.

Update

The correct way to fix this is to add change the Linux section of cassandra-env.sh to
           system_memory_in_mb=`free -m | awk '/Mem:/ {print $2}'`
            system_cpu_cores=`egrep -c 'processor([[:space:]]+):.*' /proc/cpuinfo`
            if [ "$system_cpu_cores" -lt "1" ]
            then
               system_cpu_cores="1"
            fi
            echo "Linux"
            echo "memory" $system_memory_in_mb
            echo "cores" $system_cpu_cores

Tuesday, June 14, 2011

Generate rails from a ERD ?

This isn't much of a blog post, it's a question !  I love ERDs (Entity Relationship Diagrams)  for database design and have been known to produce them before the database or the code .  Recently I've been doing a lot of work in Ruby on Rails which generates the database and model code for you, hiding the database under a ORM layer.  This is all very well and good  but you can see my problem.  No longer can I build  a ERD, check it's normalisation  nd optimise it with a bit of de-normalisation.

So, the question is:

Is there a tool out there that will take a ERD and generate the rails commands to build a app from the ERD.  I mean create the models and generate the migrations at least  ?

Suppose you had an ERD like this:


When I want to generate rails this would do something like the following

rails generate scaffold Person name:string
rails generate scaffold Town name:string<
rake db:migrate

It would then go in and alter the model for Person to set up the relationship to town.


Answers on a postcard !

Wednesday, May 25, 2011

Setting a home directory link in Rails 3

If you need to set up a path to the home directory in Rails 3  you need to change your routes.rb  file to create a named path.  In your routes.rb file you create the following mapping


match '/' => "home#index", :as => :home

(
this assumes your rails app has been created with 

rails generate controller home index

)

you can then create a link using linked_to

<%= link_to "Home", home_path %>

The point here is we've created the named link as "home"  but the path is referred to home_path.

Wednesday, April 20, 2011

Fun with the Independent's URL's

So:

This blog points out that you can alter URL's at "The Independent" to say anything you wish.  For instance @girlgeeks produced this one

http://www.independent.co.uk/environment/Cameron-destroys-environmental-laws-inUK-26-2270274.html

And

http://www.independent.co.uk/news/business/news/rupert-murdochs-is-a-PROPAGANDA-peddling-bampot-2270217.html

The question is, will they find their way into google search engine ? Lets wait a day or to and see !

Wednesday, April 6, 2011

General Advice for commissioning a web service (web site)

Contract
Ensure you are clear what you are going to get for the money ! Make a tick list of what will be delivered and produce a Gantt chart to track the progress. Ask what development methodology the programmers are going to follow, agile or waterfall. Make sure they explain their methodology so you are clear when you are going to meet with them and how you can track progress.

Browser support
Define which Browsers should be supported. At a very minimum this should include:

I.E9, I.E8
Firefox 3.6 and 4
Chrome 9 and 10
Safari 4

HTML version
Define the version of HTMl you want, make sure your website validates correctly to that version. If you plumb for HTML 5 make sure it displays correctly on the supported browsers. If you use HTML 5, use roles correctly.

CSS version
Again, check the supported browsers will support the version of CSS you choice. If you use CSS3, use only features supported by all browsers.
Interface

Ensure the interface is restful. Ensure return codes are meaningful. This will help when you want to create a mobile verson of the site or create mobile apps that use the site as a service.

A restful interface should help with jQuery support as well. Make sure your interface supports returning data as JSON at a the very least and a RSS feed as an option
Security

Escape all input to avoid XSS attacks . For PHP use htmlentities, all other languages should have something similar

All input and queries to the database should either be Paramatised or better still stored procedures should be used.

Any uploaded content should be limited to known file types. The content of the file should be verified and the file should be stored outside the webserver directories. Download should be anonymous so the file system is obscured.

Version Control
What version control system will they use. If they use a public one are they aware of any copyright problems that it may bring

Testing
How are they going to test the site ? Do they propose to use unit testing, if so will it be automated ?

Wednesday, March 23, 2011

Hackday at Dundee

I've started wandering around taking pictures of the students in acton as they near the start of Dundeeuhack 2011. The demos will take place on Friday afternoon in the QMB street area. Looking forward to seeing what everyone does. The current list of projects is here:


http://hackday.computing.dundee.ac.uk:8080/allhacks.jsp?Year=2011

Pictures as they arrive,



www.flickr.com

acobley's items tagged with uhackdundee11 More of acobley's stuff tagged with uhackdundee11

Friday, March 11, 2011

So you think you own your twitter name ?

Update Tuesday 15th March

An interview with @girlgeeks with the full story is available here: How-safe-is-your-Twitter-name/



Update Sunday 13th March

I believe this matter has now been resolved and the girlgeeks name will go back to the original owner. Thanks for all the support.



So you think you own your twitter name ?

Chances are you don’t, chances are you could have it taken away from you at any moment or have it changed by twitter adding an underscore to it. So what does it matter, it’s only a twiter account after all. Wrong, your twitter account can be your main online presence, your main identity that people know you by and your main contact.

Suppose you’ve spent 2 years building an international reputation, have thousands of follower, some of own are leaders in their fields, some of who are close friends. Overnight their contact books are out of date, overnight their DM messages no longer go to you but some third party, overnight any archived Follow Friday tags #FF are out of date, overnight your on line reputation has gone. And worse, think how many resources you will need to update, business cards, linkedin, Skype and thats not to mention your presence in search engines. Can’t happen here ? It can and it has.

It happened to a close friend of mine last night. She spent over two years building the @girlgeeks account, spreading words of Girl Geek Scotland to over 26 countries. Last night an organsation called @GIRLGEEKS contacted Twitter to say they had registered trademark for Girl Geeks and wanted the @girlgeeks account for themselves. This organisation only stated a couple of months ago and yet compared to the prior reputation of @girlgeeks this meant nothing, Twitter took the account and handed it to them on a plate. To make matters worse, twitter sent message to the original owner to say they where going to change their twitter name, there was no chance to respond, to argue or to appeal. They just change your name and then tell you afterwards. Oh, and they ask you to make it clear on your that your account is not associated with the brand.

As the previous owner of @girlgeeks says:

“The message from Twitter is get an International TM for your name or they'll take it for a private ltd company”.

Just to make the effect clear, here's what happes if you do a search for girlgeeks on google:


Clearly pointing to the old account, we'd expect to see the good work girlgeeks has been doing. if we click on we get:



Not what expected and very damaging to the original owner to the original owner of the twitter account.


This is clear case of #copywrong, its heavy handed and I suspect that Twitter have no clear idea of the damage they have done. The message is clear, you don’t own your twitter account, Twitter does.

There is an official responce from the other side here PDF