Friday, 21 August 2009
Thursday, 20 August 2009
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.
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.
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.
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.
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
Wednesday, 19 August 2009
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.
Tuesday, 18 August 2009
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
Thursday, 6 August 2009
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
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.