Friday, 27 February 2009

Taking Moodle Offline: How can we sync?

OK, here's a risky approach. Some one contacted me about Offline Moodle. They have their own version of an offline moodle client and want to incorporate work done to help with synchronisation between offline and online moodles.

Good question I'm thinking. I thought I'd put the responsde here because I think it is the same question many have and they deserve an answer. So to save effort I've included the reply email here. I just haven't said who I'm replying to :-).

You’ve done a good job in getting people to realise how relatively easy it is to get moodle to work from a usb stick or any other portable memory device. Have you checked out U3 technology. It’s the precursor to USB 3.0 while we all still have usb 2.0 drives. Using that you find that Moodle on a stick runs pretty much as well as moodle on your machine. A stick only costs approx £15 so not out of reach for the average person. So great work. We’ve done just the same with our work check out  It’s great that we now have multiple ways of running Moodle on a portable device. That’s got to be good for those who need it. Nice work. I’ve included these references in case there’s any thing you want to take from what we’ve done. I like to share since I always borrow from others. Life seems easier that way J

Anyway the synchronisation work is a good topic and there is a reason we’ve been quiet. It really comes down to it being ‘the’ challenge. As you’ve said packaging up Moodle and running it on a device is a relative cinch. Getting two Moodles talking to each other database to database was relatively easy to do also. Took a month or two but we got it working for forums and simple things like resources. Problem is this is insecure and couldn’t happen in real life. It just proved that if you had a reliable way of getting the data and files from a to b then synchronisation is entirely possible. Proving this for forums was key because it was complex enough for people to feel it wasn’t possible.

So getting data in and out of Moodle and marking it up so you know where it fits, what are changes etc is in my opinion key to being able to sync. That’s where Moodle isn’t sufficiently advanced enough. I haven’t said this so bluntly before because I don’t want to appear negative. Moodle is still young it’s achieved a lot. However the concept of being able to share information reliably between separate instances has a lot of hidden and upfront security, technical and other requirements. These haven’t been addressed from the start and so implementing them now is possible but requires significant effort.

For example for the second prototype I moved from transferring data directly between the databases to using the backup and restore process to package up the data into a file that could be transported and then read in at the other end. Again this works but now we’re using tools that aren’t mature yet. They’re very good tools. Backup is a fine piece of work but it needs a refactor those things that weren’t quite built right initially. The same goes for web services. I used Moodle Network. It’s great but it’s young and wasn’t designed from the outset to work specifically like a web service. As far as I know Moodle still does not have a standardised web service api or a mature web service component. It will have in time I’m sure but not right now.

We chose backup because, at that point, it was the only tool that had access to all parts of Moodle and a defined and supported process for getting data and files in and out of Moodle. It also new where to get everything from and how to put it back reliably. While it’s not perfect it fits the bill and just needs work.

The synchronisation work began with the concept of incremental backups/updates. Basically breaking large files down into smaller ones and ensuring you don’t have to download larger updates. Just what you need at that given time. That went well but we’re trying to do so much here at the OU that the offline work has to compete with other demands. It requires a lot of work and other areas such as mobile tools demand a lot of attention.

I always felt that an Offline solution was a necessity and also very possible. However I also see that it is kind of the last stop on a long journey towards making Moodle ubiquitous in our lives. I think it is a worthy step

but it’s best achieved whilst achieving other goals too. That way the cost is paid as we go along. Each new problem solved proves the work we’re doing. Another way of putting it is that synchronisation is essentially a series of questions and answers. What has changed since I last updated? What changes has a student made? What is a student going to do offline? What content do they need? Moodle is not built to make answering the questions very easy. Each question has to be thought of before it’s asked and specific solutions for each need to be developed and maintained. It would help us if there were a common set of places where we could ask generic questions and get answers. We then combine these answers to provide the full answer that is sought by the user or system. This is quite an abstract notion. I’d like to explain it further but I’m conscious I’ve already rambled on enough.

For those who’ve already fallen asleep all I really said is that Offline Moodle is entirely possible however it’s a long arduous road to achieve it, unless some one can explain a better way. Moodle isn’t built to easily answer the questions that synchronisation asks of it. Adding support for that will likely require fundamental changes Martin D and the community will resist. Therefore political as well as technical challenges lay ahead. We’re in the process of looking where next? The incremental backup stuff has been impacted by other demands. It’s still there but waiting. I prefer to kill many birds with one stone, it’s often cheaper that way, so there’s a possibility we’ll detour and focus on mobile solutions as a way to provide the underlying functionality an offline solution requires.

Whew that’s a lot. However when you ask an important question I prefer to give a (half) decent answer. I hope that goes some way to explaining our position. We’re not stalling. Just planning where to go and until we’re clear there’s not much point in spreading the news.

Kind regards


edit: 20100203
Just found out about bitnami. They provide pre configured moodles for many situations. Not sure pricing etc but could be useful

Thursday, 19 February 2009

Visual Tools for everyone: applications to vsiualise everything

OK, not quite everything but a lot. Just got passed a list of tools to help you visualise anything from multivatirate data to statistics. Just logging it here for reference. There's also a tool called exploratree  (from the UK’s Futurelab) that's government funded 

Wednesday, 18 February 2009

Immune System as a game

Cool a game based around the immune system. That's the kind of thing I've been waiting for for years.

I haven't actually tried it yet... I'm downloading it right now. At 512mb it's gonna take a wee while. Still I'm excited to see how this is gonna work. 

Fingers crossed

Forget the Future, It's the Present That Concerns Me: Preparing Students for Today's World

Wow, what a great presentation. I know, I know, I always just point to something else. Who cares, if I see something amazing I want to record it. 

Here's a guy talking about everything, mainly how the US won't be the dominant economy unless they change their approproach to education. Leading on to how education can and is changing over the world to really help people learn rather than being indoctrinated.

Mind the Gap!!!

Yep, I bet everyone knows this. I'm really just logging it for me. 

Anyway gapminder seems a really cool way of investigating the world through graphs. Just recording for reference later.

Keeping up with the pace in 2009

Here's a set of articles that really some up the approach I have found really useful for keeping up in this day and age

I do find that a balance of theory and practice is what makes everything work. You've got to do both regularly to make things work really well. These articles go into why that's important and how it's bother easier and more difficult now than ever. 
  • More difficult because there's more available than ever before and the pace of change is ever increasing. 
  • Easier because there are more tools available than ever to help with the load. tools are often cheaper, easier to use and more relevant than ever and it's easier to collaborate and share solutions. 
By understanding these two opposites I think it becomes obvious that we have no choice about the speed of change. Our real choice is how we adapt ourselves and our processes to deal with this. 

I think of it very much like hitting a moving target. What is good enough today is not tomorrow. gap between these two points is getting ever greater. That kind of means that to keep up I need to get fitter so I can cover more and more ground each year.

Being a software developer and a sport scientist. I can both learn from mans acheivements and natures. The best way of dealing with this that I have found is to be flexible in your approach to just about everything, particularly the skill set and abilities you yourself develop and work on. this means:
  • looking at the wider picture. 
  • regularly reviewing and improving your approaches and direction
  • Aiming for general targets that leave several options open rather than specific targets that cannot accept change
The main point of linking to these articles is that Tony Karrer, who runs the blog seems to be writing about many things I relate to and coming up with many of the answers I have. I learned a few new tricks and tips reading the articles so I think you may too. 

The Conceptual Age

What a fascinating article I just read. It proposes that we are now in a Conceptual Age where, in my interpretation much of the information or solution is already provided. The challenge is now in combining it all in a way that take things forward and builds on what is known. 

Essentially we don't have to "reinvent the wheel" so to speak so much. We've just got to think about how best to implement and use what tools are already there. Tweaking as we go. 

I like that idea because that's every bit about what I do. To ge things done quickly and to a high standard I don't generally build from scratch I just glue things together with little bits of code or even just documentation. The concept being as long as the end users understand how things work and what they should be doing with a tool then you can make it perfect over time. You've first got to prove the tool fills a need and that people will use it. 

I also like that the examples used are a call center worker and an engineer doing R & D. I've worked in both areas so I've seen both sides. In fact since I was a callcenter guy first who spent his day fixing problems in things that should already work. I think it influenced my approached to software development. Again I just bring a bunch of things together that work independently and have learnt loads of ways to get them working together to varying degress. The whole is much greater than the individual parts in this approach.

Tuesday, 17 February 2009

Calls for an open source governement

Wow, and about time too. Here's a news flash. There are now calls for governments across the world to use more open source software to cut costs and be more open to everyone. What a great idea. Maybe it will be a way to reduce the monopolies that proprietary software has. 

In truth it will probably also mean that proprietary software gets more open and the companies that own these systems also buy more open source companies to keep their market share.

Saturday, 14 February 2009

Work smarter by fixing other peoples bugs

How should a software team manage itself?

I feel one of the biggest challenges with managing or orking in a busy software team is picking up where someone else left off. 

You know, when some one gets ill, leaves their role, or get's pulled onto a another project some one else has to get their head aroun the code that's left. Sometimes it just a ess and that;s the only ay of describing it. Most often thugh it looks like a mess to the newcomer, but to the guy who has been maintaining it for these past few months or years it has it's own organisation and plogic.Once you understand it you'll be right at home.

The trouble is there's normally very little info as to ho to get your had roun all this and you're never given any tiime to get up to speed. Most often you're picking it up bcause your boss needs you to get something done using this code. Heaven knows how the lat guy got things sorted but you surely don't kno where to start.

Ok that as a quick intro into how my software life has otn been. So often you come it sort things out and you've got to gt up to speed quiclly. 

Well I wonder if it has to be this ay at all. My first IT job was on a computer helpdesk that run 24x7x365. We also had upwards of 2000 contracts t support so you ca guarantee that there were a lot of diffrent peole involved, different copmanies to ork ith and diffrent orgniational cultures. 

We still managd to get a high quality job de though and it was usually obvious why things workd better on one contract or for one organisation than it did for another. Most important as always communication. Do the people along the chain communicate well and use their available tools to their potential. That was the key.

In the xample given above I would want a developer to provide me with alittle information bout his coding style and the loic her uses. Not an essay fbut a few tips and poiners. Myself  use design pattern philosophy and try to determine the patterns that occur in an script or cde base and then rovide common solutions for these. Then each script just usese these solutions in hatever order is necessary. So things a re loosely coupled and there is a clear contract between the function or method nd its caller. I don't rigidly fllow the design pattern approach mrely I realise there are patterns and as I gain more experience  will be clearer abot which pattern I am using.

Ok that's a little air fairy but  feel it ould give you a little idea abut the ay I code and would help you make better use of the code that I write. 
for eampleit means that I create lots of functions, methods and classes. All seemigly separate nd self contained. Thn I just chain these together in any script I write. So all these methods and fucntions alll ork together but as a whole they work like an MVC approach that's extrememly flexible in its application. 

So if you ere trying to work with my code you might realise tha reuse of key methods and functions (patterns) is key. By knoing this you'd pobably ant to figure out the key methods relevant t hat you want to do. Leanr a little about them n thn search the code bas e for examples f how to use them. 

So often with my code if you just use n example that previously worke and then configure it a lttle differently you'll have a chance of getting hat you want. 

Other people hoever generally have their nn approach. One application in Moodle made no sense t me until the developer expained it as simply  portlet based pproach taken from Java ith xforms. All of a sudden code I'd been struggling to understand for 2 years made lots of sense ecause I'd been working on the same approach albeit in a different langage previously.

You see just a few short sentences can make a mess of code trn into a nice ordered and understandable application.

So what does this t a lving breathing team. In short each developer should spent some of their time working on another  developers code. My suggstion would include bug fixing. If ach week everyone did a little bug fixing uing something like bugzilla to mange the bugs. Then everyone culd take a bug for a peice of code the don't know so well and basically try and fix it. 

Woah nelly, you mean just fix someones code straight off. Of course not. That's the end goal. I realy meean build in progrssions from the easiest being the guy responsible for a peice of code fixes a bug with another developer looking over his shoulder. This way quality is maintained an the novice on this codebase can't muck things up. The problem is that they won't learn so much. the other extreme is when the bug gets assigned to a guy who has had no introduction to the code at all. He is then expected to just pick up the ug and fi it within  certain time limit. 

Ooh  can see a fun competition emerging out of this.I like gaes. e might get to that later. Any waythe latter example is here you are aiming to be. If it's possible for someone who has never seen your code before and never met you to maintain or develop your code quickly then you must have done  hell of a job and your code must be really easy to maintain. Well done you must be amazing. 

Well, this may see impossilble to some, opefullyjust difficult to others. To me it's well within the realms of possibility. Yo see I told you I worked on a helpdesk. ften I never mt the people ho resolve the issues I logged. Yet hen it came to bonus time I did really ell once i'd been working on th helpdesk for a couple of years. The reaon. I'd learnt a lot about communication. About how tofigure out what some one else ould need to kno to be able to not only resolve the issue but to comunicate ith the person logging the call. 

Since software development is in essence a set of bugs (problems) and features (solutions) surely the skils learnt on a helpdesk would e useful in a development team. I think so. If each developr routinely spent a small portion of their week fixing other peoples code then they'd make damn sure their own code was easy to understand and work with too. Sort of a pay it forward approach. You'd also find that all sorts of advice woul pop up on wikis and blogs in the team. Since everyone woul have t chip  in everyone would care aout having a standard approach to things hile still being able to code the way they're used to. 

Things ould be awkward for a little whle but quickly everyone would agree on some simple standards to follow. thigns like documentation within code, common words and acronyms to use, method signatures, here to pt supporting code and documentation. here test scripts are stored and run. Where info supporting the project should be stored and what it should include.  

Once you've got this figured out you'll most likely find that when the'@:: hits the fan you're all set to deliver much faster an with fewer bugs than you ever have before. Why you all begin to speak  common lanauge, know ho to work with each other and spend more time going forward, working on keys tasks, than you do looing ackwards and fiing things that shouldn't have gone wrong in the first place.

Android on a netbook! can it be done?

Can you run Google's Android mobile operating system on a an asus eee 701 netbook. 

That's a question that came to mnd recently and I think it's gonna burn in my mind until I get an answer.

Well I've een using my netbook for a few months no and love it. Problem is I'm not a linux head so the xndros os that came installed was good bt I quickly found it limiting. Same oes for the linux it runs on that you can access. I want to tweeak it to run how I'd like but I don't know linux. I ca't be bother to learn it right now.

So I installd windows cos I know how to tweak it. f course now it's not as fast as it was. What do you expect. So any way I really just want an OS designed for a this small mobile device not something designed as a swiss army knife with loads of features I'll never use

Enter Android. The dream is that it provides the internet based apps I want . Plus with me being a software developer who wants to get into Android it gives mme a chance to write apps on my main machine and run them on a mobile one wth out forking out for a gphone. Bit of a long shot
but then no one ever ahcheived anything by being negative. 

So let's do a bit of resarch. 
Q1: Has anyone gt Android running on a netbook?
Ok, #2 is a bit whingey but it came up in the results and  think it's always important to critique thingsso yu get balance. His question 'hy oul you want to?'. Well my answer is that I have a pc at work that's pwerful annd equipped to run windows. to be honest I think the the asus eee 701 are underpowered for the future requirements. Don't forget people that windows alays gets bigger and hungrier. If you want to keep up with security updates you also have to keep upgrading your machine. That's the rule of life.

Now windows do a fine job t what they do but to be honest I'm ready for fresher approach to designing ghtweight operating systms for lightweight machines and I have a hunch that google may do a dcent job of providing a mobile os. Right now it's early days but given  a year or two I think it will truly be market leading.

Anyway I then found out that there are plans afoot for asus to bring out a obile device running android. Perhaps they may even bring a eee out ith android?
So that's where my research has ended for now. Wow it's already a lot further than I coul have hoped. Fantastic. I'm thinking that for now I'll just try and run android from  memory card, if I can make it bootable or a bootable usb. Just so I cn trial it before getting rid of windows.

Let's see what the future holds

Screencasting for free!!!

Yep it's here. You cannow screencast from your desktop for free. How crazy is that. Just visit screen toaster to find out. I found this at Yet another blog that seems full f useful titbits.

Friday, 6 February 2009

The advent of next generation browsing

In my web travels I came across are really interesting description of how the web may develop into a structured browsing experience. Reading through the pdf I'm really impressed how well the challenges are described and how the new technology is shown to be providing solutions.

I am certainly interested to see how this develops in time.

a £7 laptop. I've seen it all

India are claiming they will be releasing a laptop that costs just £7. It would be truly amazing if this actually gets released for just £7. Anywhere below say £50 would be amazing.

In the west this just seems too hard to believe. BUt then as a developer I'm constantly aware of how the end users demand often dictate what gets focused on and thus what is achieved. In the west we're relatively rich so £300-£400 for the cheapest laptops is considered a decent price. But that's kept a lot of the world out of the picture.

It will be something to see how this all pans out. If you've got a culture that aren't used to computers then they won't have the high quality comparisons that we have in the west. They'd just be amazed to do simple things like word processing and learning with low spec machines with no outlay in software. Since the expectations of the consumer may be lower and they won't already be used to a specific operating system. It could be possible to specify a very low price point as a condition of the project to ensure no barriers to take up.

India would have a lot to gain if they became computer savvy as a culture and those behind the deal would stand to gain a lot of customers.

edit: 10:09 11/02/2009
A cheap indian $10 laptop has now been unvailed. I can't be sure it's the exact same one described above but the price is close enough. OK they've explained the cost will be more like $30. OK still mega cheap for a computer. The main problem is that there won't be a keyboard or screen with it. 

Yep that's right nothing to show what it's doing and no way of putting things in. That's what everyone seems to be complaining about, atleast the westerners that are commenting. 

I don't think it's such a silly idea though. My point is that I don't necessarily want to buy the keyboard or mouse or screen at the same time I buy the processor and what comes with it. since you always get what you pay for I feel this project has had to be really blunt about it's approach. I like the comment from some one reading a related article at engadget who says that since the device has a built in printer the concept could be that the school or university has digital copies which the student copies to the harddrive or a memory stick. The pc then prints this out on cheap recycled whenever they need something. The latest content could even be downloaded by the school, transferred to this machine and printed. The school might even provide the paper and cheap ink or something. 

Even writing this I'm getting to think about the practicalities. I prefer to think of the human using the tool and what they need rather than the tool itself. So what does the human need. While this all seems amazingly low tech to a westerner I could see it being really helpful and useful to some one who earns sy $30 a month. This then represents say an £800-£1,300 laptop to us. the choices made mean the processor and copmonents will be the best spec they can be for $30. Ratherr than shaving say $10 or more adding a keyboard and screen. 

I also think most people don't realise that the biggest cost for a laptop for many reasons is the screen. Particularly because it takes the most energy to run and also forces up the size of the unit. together with a keyboard you always get soemthing that's hard to fit in a rucksack. Yet when you remove these things then a machine can literally fit in your hand because the rest is all so small. It can also run for hours and hours because it doesn't need so much power and can standby more easily. 

So I can understand the argument not to supply one. I just hope that there are keyboard and video inputs. Or atleast usb slots that can handle both. If I had just $30 coming in a month I would buy the unit assuming I could get files into it and also afford to print from it. I'd be really happy. Then I might get a second hand screen and keyboard in a few months when I feel the need and have enough cash. They wouldn't be mobile they'd be say at home in my room but then I'd have a pc at home and a portable intelligent media storage device on the go. Not bad for $30. 

don't forget. Us westerners balked at the £200 laptop when it first came out. That cos we're used to luxurious devices that care for every whim. India is really trying to cut costs not just do a half arsed approach. They're stripping out every cost to find the most flexible solution. I don't know if it will work because details of the specs aren't available. The concept though, I think, has legs and would fit a market if it can be built. In truth I would rather manufacturers went down this route. I'd rather I could upgrade each component as I had the cash rather than having to get a whole new machine every time. Plug and play components would work for me. I think it would drstically change the market for the better. 

Thursday, 5 February 2009

Everything I new about rechargeable batteries is now wrong!!

If any of you are like me then you were raised to believe rechargeable batteries have a memory effect nd you should fully charge and diischarge them to keep them woring well. 

That weas true until recently. I found out that lithium ion batteries work  the opposite way round. They have no memory effect and suffer if repeatedely charged and discharged fully. They also suffer if they're kept hot. 

Who knew. I certainly didn't. Atleast I do now.  checked and it seems all the batteries I am using are Lithium ion so I'd better start treating them right soon!!!

Monday, 2 February 2009

DNA: our Achilles heal

I just feel I've made a small break through in my understanding of health and disease and the role DNA plays in it. It's probably something really obvious that was explained to me years ago but I feel like noting it all the same.

It's really inspired by all the info that I've heard over the years and I just feel I put it all together into an explanation that fits all. 

Basically I pictured the role of DNA in our cells. It's a code that used to builds all that cell needs to survive. Importantly it holds the info for a cell to fix itself. There are a lot of mechanisms in place to ensure that this code doesn't get corrupted. If it does then the code slowly becomes useless or even begins to code for things that can threaten the life of the cell or the entire body. i.e. become cancerous. 

It came to me when I was thinking about how best to recover from a sports injury. A lot of the experts I listen to really base their treatment around promoting the bodies own recovery processes rather than using anything man made. This highlights the importance and quality of what we all have inside us. It also highlights how dependent we are on these processes. 

The problem then is if these begin to break down. So the question is how would that be possible. This is more poignant than just determining whether someone recovers from an injury. I believe that the answer to this is what controls the healing process for pretty much any cell damage. From sun/skin damage, to bone, to muscle, to nerve. 

In essence the healing mechanisms all seem to originate from the same place, the code within the DNA and so the extent to which this is protected will determine how well each cell in the body recovers from injury and disease and in my view it determines the quality and length of life of the individual. That is yet to be proven but it's my view. 

So how could the DNA code get ruined?
I think the knowledge in that area is growing but it comes down to 
  • internal corruption
  • external attack
By internal corruption I simply mean mistakes in the code that could be introduced in judst one of the many millions of times the code is transcribed to produce new materials. It could be the the DNA itself is simply copied wrongly. This may only affect the particular item made from this bad copy but if that copy is reused many times then the effects of the mistake could easily multiply. I believe there are other methods but I don't remember them at this point and I don't have the energy to google them. 

External attack means factors such as viruses, ultraviolet light or oxidants within the cell altering the DNA code itself or the copying process.  I understand that more and more viruses are being identified that alter the DNA and cause illnesses, particularly cancer. 

What I notice most is that those things that cause cancer all seem to be related to DNA altering processes. Skin cancer being affected by ultraviolet light which may damage DNA, cervical cancer being caused by the human papilloma virus, which changes the DNA of the cervical cells, anti-oxidants, which seem to affect DNA.

Debates, I believe, revolve around all these areas but the logic does seem very sound to me. Every time the body wants to repair itself it looks to its DNA at some point. So any time that DNA is affected is going to effect the ability to repair. Since each cell has it's own DNA it means there are literally billions of cells in your body that all have the potential to go wrong at any time. 

To me this says work closely with your body and do those basic things that ensure your body can protect it's DNA. If you do this then it doesn't matter so much if you live a little and make mistakes. As long as the body is well stocked in nutrients, is regularly pushed to encourage regrowth, yet has plenty of rest to allow for the regrowth, you're doing the best you can. 

I feel these basic factors are so much more important than so many of the other things we are recommended all the time. For example I don't think there's much worth in flooding the body with anti-oxidants to fight all the oxidants. I've read critiques that suggest that anti-oxidants can wreak just as much havoc and I believe them. I don't agree with such reductionist talk based on individual nutrients. I simply believe that the body is generally the best judge of what is right and wrong and it's in our interests to help it but also let it get on with what it does. 

I feel by pushing yourself when you feel ready and then giving yourself time to recover. Just building this into your life. Feeding yourself when you need it but not when you don't. Just maintaining the balance all the time. Just do that and your body will take care of itself. It's funny. I read so much and there's so much research going on. And I end up saying just work with your body and let it do what it does best. 

That said there are times when our body does not know best. I think that as we age all our bodies begin making more and more mistakes in their DNA. So I expect that in time we'll begin to find ways to correct our DNA and improve our healing processes.   I understand they're already investigating this by using the ability of viruses to inject their own DNA into ours. They're getting the viruses to inject DNA that we want to add rather than what the virus wants to add. I think this is a good concept and it a natural progression from our traditional inoculation based approaches. It's another version of using natures tools rather than inventing our own which is just what we should be doing. 

So in time I think things could really lookup for us. If we're able to reliably correct our DNA then maybe we will begin to see the end of things like cancer and the beginning of exceptionally long life spans with limited or now disease. Life spans thatr we'd all want to have. 

Here's hoping.

Learn more about battling cancer through exercise