Friday 21 August 2009

Shared knowledge and experience will make us free

I just had a realisation on the walk to work that I just had to write down.

It suddenly hit me that there is an interesting parallel between the role of DNA in our bodies and the knowledge and experience we share in our communities.

DNA is essentially a massive encyclopaedia of knowledge about the building blocks of human life. every cell has a copy and gets to decide how to use it depending on what is happening. Each cell therefore makes choices every day and is in control of itself. While most will respond to requests from elsewhere, such as the brain or liver they will also make regular decisions for themselves that benefit themselves, their neighbours and the rest of the body. So in a healthy body we have billions of cells all with their own near identical set of knowledge that they use to keep themselves healthy and work together to maintain the required equilibriums and optimal health.

I see that our own individual stores of knowledge and experience are the equivalent of DNA in cells. In the current climate it's easier for us all to share atleast the same fundamental knowledge. As long as you have access to the internet at a decent speed you can read the same stuff as any one else. If this continues, and I hope it will, then future generations will eventually have access to all the information they need to survive. Just like our cells do. I also feel the internet is really supporting and encouraging our basic instinct to share and learn from each other. To work in teams, social groups and communities with everyone doing what the do best and passing around the fruits of their labour. Just like cells. Each person can take the same subset of knowledge and use what they need to do what they want and need to do. They also listen to the community and figure out what they can do for it. Each cell then benefits from the work other cells do which means that of all the things a cell needs for survival it only has to produce a small amount of it. Thus the cell really benefits and has a much easier life than if it were outside in the world on its own fighting for existence. The community also benefits because it's able to keep adapting, surviving and growing.

I hope I've put the basic concept across clearly enough. I'm just seeing our bodies as an ecosystem that's essentially supported and driven by knowledge and experience and seeing that our species is in the same struggle. The ability to share our knowledge and experience has real potential to set us free as individuals just like the cells of our body by ensuring that as communities we can provide for all.

I think that's essentially where we're headed and why a lot of what I do, my goals etc, and to see what little I can do to help. Can't say I've done much yet but I've got ideas and I'll see where they get in time. Just like this analogy because I think it expresses the concept well and helps me understand where I'm headed.

Thursday 20 August 2009

Web apps or local?

Now I have a google android based g1 phone I've been thinking a lot lately about where to focus my development efforts.
I got the g1 because it's easy to programme for and because I already use a bunch of google services so it's a natural fit. It's natural to assume that the best things to develop are native applications, akin to desktop based applications on pcs. But then google have often stated that the web is the future, not local applications, so I wonder quite what they mean by this and how it affects development.
Obviously google are biased they, above all companies, make more money from internet applications compared to local than anyone else so they would say that. I also live in the uk where wifi and broadband are improving but nowhere near world leading. I heard recently of some people in korea getting 1gb wifi for the equivalent of £10 a month. We're lucky to get 2mb for that. So why is the internet the ground on which everything should be built?
Given that there will always be a multitude of different operating systems and device types for any application to support I realised that the common ground I would expect them all to share is access to inter and intranets. So any applications that support these technologies natively would always have a significant edge.
I'm also noticing the trend towards every man and his dog having some ability to design or develop on the internet. Such that I can assume knowledge and experience of some internet technologies, such as javascript, html, css , browser compatibility, usability etc, is becoming widespread.
If that's the case, and I think it will be in a few years time, then I can see organisations and individuals preferring applications with these technologies at their core because they'll find it easier to support them.
Many also point to a world where we use the same application on different devices for different tasks at various times of the day. In effect we're moving away from using just a small set of devices with little variation. The pc is no longer the only acces to the internet as mobile phones, netbooks, tvs, games consoles are all becoming increasingly connected to the web and come with the technology to use it too. The major games consoles, wii, Xbox 360, PS3 have internet access. some TVs already have web browsers built in and many more will from next year. the iPhone has introduced a true web experience to the phone market and the free android operating system promises to bring this concept to the masses.
As a developer I see a massive challenge in developing one application that suits all these situations and interfaces. It's extremely expensive to develop similar applications to support each use. Much cheaper to build one that supports all. But how can this be done.
It's too early to go into specifics but I thought of one way I'd do it with current technology. Thought i'd log it here and see if it becomes reality.
The simple answer is I'd build 80-90% of an application in html 5, the latest html specification. This would thus support mobile and offliine solutions natively and have new features to describe video and audio etc. This provides a basic application that as many devices and uses as possible can use and understand quite happily. Quality of experience and functionality would, of course, depend on the device.
Many devices have extra functionality such as gps, accelerometers, orientation, thermometers, extra storage, built in. That's where a lot of new apps are focusing. There are also always going to be local applications that do things better than the browser for tasks such as video, audio, games, office, chat, drawing. A user might prefer the internet app to work closely with any of these applications rather than use those already provided. I would add to an internet based application the ability to read from and use data from each device when it can be made available. All i'd do is provide standards ways (api's) for the application and device to talk to each other assuming the user has given permission.
That means I still only have to write one internet app. I'd also then have to write some, hopefully more simple, applications for each device or operating system that I want to be able to interact with. All these device specific applications would do is act as intermediary between between the local tools described above and the javascript within the internet application. Enabling the internet app to talk to the device specific tools and include their data where necessary.
This model provides many things including the ability to write once for the web and reuse on multiple devices and scenarios. An an application that works without any extra device specific data but is enriched greatly when it is available. It can also get extra device data in a standardised way so you write for a device type such as accelerometer or gps at the internet app level expecting standardised data. The device specific implementations then have to provide this data in standard format.
It's a way to effectively write 80-90% of an application once, knowing that it will work on most or all devices. The final 10-20% comes from the local devices and your ability to get them to work with your application.
As a developer, and project leader, this is inviting because it defines the riskiest part of development, the code for the local devices, to be the smaller part of the work. The majority being well understood technologies and approaches tried and tested over the web.
As usual this article contains a lot of assumptions as it's just a mashup of what I've seen and learnt. The idea that javascript in the browser could access local device resources is not entirely new, think active x, flash can actually do this, and is something I understand google to be pushing for in making desktop apps as internet apps.
It does explain how the internet could be the core of applications in the future while still taking advantage of local device capabilities. It also explains how it could make things cheaper, easier and faster to develop and support multiple interfaces over time. It's probably a rehash of some document out there but I haven't seen it so thought I'd put it down in writing myself.
I just want to see how the landscape changes over the coming years and whether this model in any way pans out.
edit 20090821
Just a quick note. I noticed this great quote on an email signature. It really encapsulates the core of this post in some ways.

"Programming is the key literacy of the 21st century" - Marc Prensky
edit 20090824
Lo and behold I just found a conference session about this very issue entitled Browser engine access to mobile device APIs. I've also found another session talking about HTML 5 providing the ability to deploy web applications without a web server using a websocket. This sysnopsis also introduced me to comet. I didn't realise that Ajax had so many versions and lots of other names

edit 20090826
I just found another example of this very concept being put into practice. This time using Google Web Toolkit linked with Android location services. this whole new development has many exciting applications. No doubt it won't be long before we see applications that bring this into the mainstream.

edit 20090904
Seems like I'm not the only one to reach this conclusion. Neil Mcallister compared both android and iphone software development kits and suggested learning web technologies may be the safest option to support futre technologies. I also ran into 'web apps for smartphones' which is a nice synopsis of the area.

Wednesday 19 August 2009

making mobile web sites fast

Just recording a bit of info for later use. Was just looking through some yui dom event stuff and found info on improving mobile browser performance using caching. It focuses mainly on the iPhone but other phones e.g google phone, will prbably follow a similar model. Especially since most mobile phones with any good web browser use webkit.

Mitochondrial Ageing

I'm passing this link on because it gives an explanation for the effects of ageing down to the mitochondrial and dna level. It's a positive message that explains my faith that as I age I can keep my vitality. The findings need to be confirmed but they fit wider research. Just wanted to provide a reference so I don't forget this.
http://conditioningresearch.blogspot.com/2009/08/ageing.html

Tuesday 18 August 2009

Nothing to hide


I remember being on an IT helpdesk as first line support. It was telephone support not face to face or email. This meant I was the first person people would speak to about their problem. So I gave the initial impression of the quality of support. I learnt a lot about how to build trust while supporting applications and products which weren't perfect.

I learnt that good support is more about explaining to people in their language what the problem is, or even that you're not yet sure so you've got to run a few tests, ask a few questions. I also learnt that long silences can build tension and anxiety. To prevent this I learnt to explain a little about what I was doing so that the person on the other end of the line knew that I was looking into their problem instead of ignoring it. Just a couple of words explanation at each point was all it took but it changed the tone of the entire call and frequently turned frustrated users into appreciative and trusting ones.

Since then it's what I've looked for as a mark of good service and of a good company. I don't expect perfect products and services because I don't believe they exist. I do expect good customer service because I know it does and should exist. Better to know you're in good hands if things go wrong than to pin all your hopes on it never going wrong.

I like working in an open source arena because I feel it encourages good customer service. Obviously not all cases are shining examples but the philosophy of openness and trust is what good customer service is grounded in. It's the idea of having nothing to hide.

What inspired this post is the experience I've been having recently with good support from Google and the guy behind android scripting environment. From google I found an issue in google docs in the chrome browser. I've already submitted a few tickets and was impressed how easy this was to do. This issue involving bullet lists in chrome is, I feel, a good example of how open they are prepared to be. There will be better examples of quality bug fixing. this is just a bug I've found and followed and I've seen things I like.

I didn't log the bug. It was easy to see it had already been reported and add my name to it to vote on its importance. So I already felt involved and I've been able to do my bit. I can see what's been done and that work is still going on. Obviously I'd like the bug fixed but sometimes things take time. Better to know that some one is looking at your bug and a fix will come in time. What I really like is the honest explanations and the diligence in which they put their thoughts down. They could have easily not included many of the little comments they've made such as http://trac.webkit.org/changeset/46200 That's the only patch in the revision range that touches editing and it's a followup to a patch that completely rewrites the way indenting is handled. I haven't tested it, but I'm confident that's the change we need to merge in. Is there a spreadsheet, tool or something I should update so this gets pulled in?

In my book admitting to the outside world that you don't know something is brave. It's also very trusting. yet for me I've learnt that by including the user in this conversation you're showing trust and that makes the user, in general, more likely to trust those involved.

Just seeing this, along with the responses to other bugs and the many that I see already listed makes me trust these developers and the products they produce mainly because they don't seem to hide away. They're willing to talk and open up about things that don't work and listen to my needs.

The same goes for the Android Scripting Environment hosted on Google code. This is a small example but it's been nice to see how quickly Damon Kohler, the developer, responds to issues and explains how things work. Again it's not rocket science. It's just about sharing the knowledge. I just find it's often the difference for me in whether I stick with a product or not. It's also often an underrated skill so when I see it I really like to notice it.

Friday 7 August 2009

Google gears vs HTML 5

I've been hoping that Google Gears implementation follows HTML 5 specification rather than competes with it. Did a quick search and found a guy who appears to be from google who says it will follow it.

I expect Google to follow standards as they're pretty good at focusing on them so this atleast allayed my fears.

Thursday 6 August 2009

Yahoo Query Language (YQL) searching the web like a database

I remember a short while ago listening to a Ted talk by Tim Berners Lee. The father of the internet as we know it. he was explaining that now we have mass adoption and the web has become part of our lives it's getting ready for its next stage of evolution. That being the web as data. Essentially we're all getting more and more used to all types of info being available on the web. This most obvious in that this is the first place most of us look for anything.

Well I was really surprised and excited to see that Yahoo have already taken a lead in this area with their YQL (Yahoo Query Language) project. I'm literally discovering it as I type so I can't say how good it is. I can just talk about the concept and wonder whether there are other solutions like this out there.

So what's it for?
From a quick play with the 'console' I can see that it's essentially a tool for ajax enabled web pages to get info easily and in a standard format. so it's very much about providing a database over the web with a language much like the standard 'SQL' database language.

What can you search?
That's where I'm not so clear. I was hoping I could just search the whole of yahoos catalogue of sites. A big ask but that's what I really want and expect. Surely it would just be another way of getting into their search results. Maybe I'm thinking about it wrong. Maybe you can already do this. I think what I was hoping for was to be able to search the web as though it were a massive database.

Now I feel a bit disappointed. I kept looking for this and found it's a little abstracted, if I interpret it right, but you've got to use open datatables to search stuff on other web sites. You create a data table definition for the site or data you care about. This effectively tells YQL or whatever how to interpret the page or objects you're interested in. Once you've done that you load this into YQL and tell it to 'use' it as a reference. That's the overview I took from it.

How would I use it?
From that basic overview I'm still really impressed. I'd really just love to use the data in yahoos search results but that doesn't seem possible. Probably a ton of good reasons but that's what I want. anywho the idea of having a structured way of getting data from web sites that I want to query without having to build a whole engine to do this for me. Just right a few translation files and query like a database. That sounds like a dream for me.

So there we have it. Don't know if there are other providers that do similar but this seems like a significant evolutionary leap in the web. I hope it lasts given Microsofts deal with Yahoo. But for now I'm suitably impressed and excited. Can't wait to get on and start using it.

Saturday 1 August 2009

Fat, nutrients and hibernation

I've covered this topic before but got a little inspiration so thought i'd write it down. Haven't read the original post so not sure if I'm repeating myself.

The essence of my thoughts is around the human need for fat's, particularly saturated fats. The media and health professionals like to bemoan fat intake but I'm not entirely convinced it's all been thought through completely.

I agree totally that having too much fat must cause problems because everything in life has its balance.
I wonder though that it may be possible to live healthily on a high fat, particularly saturated fat, diet as long as you accepted and dealt with the risks this imposes.

I can't prove anything, it's just theory, but I'm interested by those who claim that saturated fats would not be affected by natural oxidation because they are more stable compounds. I'd expect they'd let to a lower number of free radicals and lower need for anti oxidants.

I also understand most animals including humans store a lot of spare nutrients in fat cells ready for times of hunger. This helps through times such as hibernation when nutrients are scarce. Point being though that this requires an advanced ability to maintain nutrient frshness over time within the body. Plenty of animals that hibernate must have this ability.

I wonder whether we too have this abikity in our genes? It seems only fair to assume that evolution would have provided us with this ability given the hardships we have faced over millenia like all animals. It also seems fair to assume we repeatedly had a need to store vital nutrients and keep the fresh inside our bodies for long periods.

I don't expect any research has been done into this because it's not the way most people think and would be laughed at if suggested given the current focus. Essentially I'm saying I feel that humans must be more resilient than we're told and that i'd atleast like to know if there is research on how animals survive extremes such as hibernation on a nutritional level, I can guess how fat soluble vitamins are stored, so I want know about water soluble ones. How do bears and squirrels survive and keep these nutrients fresh?

Vitamin a for example has both water soluble (beta carotene) and fat soluble (retinol) forms. The former is the vegetable version, the latter the animal version. So it's possible this nutrient could be supplied in animal fat. The key being the animals fat. The muscle part, which we're most used to eating, contains certain nutrients but others are more common in other parts of an animal. Those who eat these parts will gain more balance and benefit in their diet.

That vitamin a has fat and water soluble equivalents with that fat soluble, animal based version being more accessible to humans makes me wonder if other nutrients have similar attributes. Vitamins are simply labelled as such because they were discovered before they could be properly chemically namedand their function truly determined.

The studies on vitamin b complex I have read  focus on asian cultures where high carb, rice diets, are common. So is it an surprise that the vitamin b deficiency was linked to rice and its refinement rather than to other factors.

Thinking a little further I've realised many problem with where this is going. You'd need to eat fat high in nutrients. This woukd probably mean animals that hibernate or have extended times with little or no food. Kind of like a paleo diet for animals. Doesn't seem like something farmers would adopt anytikme soon.

It also ignores veg with high fat content. Do they contain any vitamins infat soluble forms needed by humans. Anyway I'm just thinking too far ahead.

I've probably raised more questions than I've answered but that was the point. I'm just thinking around this because I wonder how we survived outside civilsation and whether this could help us today.