Tuesday 29 September 2009

Using google Web toolkit (GWT)

I'm inspired right now to try out Google Web Toolkit (GWT) cos it's the latest and greatest tool to develop the hottest web apps, apparently.

I've found some great quotes that you can apply to software development. thought I'd add them hear because it gives context to why I'm look at GWT.

It is not the strongest of the species that survive, nor the most intelligent, but the one most responsive to change - Charles Darwin
A good software design minimizes the time required to create, modify and maintain the software while achieving acceptable run-time performance - Jim Shore

I view software development as an evolution. Including the things I develop on and for. Thus I prefer to move to best of breed tools asap and develop approaches that can work in any environment. Degrading and upgrading gracefully as I go. the technology for today is old hat for tomorrow. But the concepts never die. I just care whether GWT uses good concepts and thus makes it easy to port my existing approaches to it and then move to the next set of tools when they arrive.

During the process of writing this article I've made some personal discoveries about how this work  fits into my wider goals which gives context to the article. I've realised that I'm basically learning to be a teacher (I'm guessing it takes atleast 10 years to do a reasonable job) and how to develop teaching tools (takes another 10 years). So now that I'm at a uni I'm really on the best path. I've also been programming for 7 or so years so my ability to develop software tools is developing well. I've started teaching tennis here and there and have plans to build some simple teaching tools but this is all taking time because there is so much to learn.

I don't want to rush the learning. that's not my style. I'd rather enjoy the process of learning and teaching and develop and publish tools that help me first. Then see if other people like them. I'm happy with GWT because the process from R&D to deployment and use is super quick and cheap(free) and there are so few barriers to getting something useful up.

It's also easy(relatively) to create tools centred around the user whichever device they use the tool on. By that I mean web based. I love the new mobile devices but I don't see the economics and scalability of writing a tool for each device. The web is the only way I can envisage using the same tool across multiple devices and scenarios. Making use of the capabilities of each device is what I'd prefer to focus on. Hence my interest in GWT. The promise is an environment built on best practises for current and future web tool development. I want to see if it's as good as its hype. So far I'm really impressed. But can I deliver the tools I want and gain the productivity I want and achieve my goals. that's the ultimate test.

so essentially I'm still on the R&D path of using these tools and looking for a longer term tool and skillset. So I'm constantly evaluating whether this is the best tool for now and also the future.

To start I thought I'd go ahead and install it, develop a few things and write about what I find.

First off I had to install it. Followed the getting started guide.

I use Eclipse so the first thing is to install the Google plugin.  The quick start guide sounded easy. Just 3.5 install the tools from http://dl.google.com/eclipse/plugin/3.5. I got problems at the first hurdle. I got a whole load of errors saying 'no repository found'. Yet it wasn't looking at com.google but org.eclipse. I tried downloading the zip files and installing manually. Restarting eclipse and reinstalling. All the usual. There was a helpful FAQ page

I started thinking outside the box and found a tip for "no repository found" errors in Eclipse. From this advice I disabled all the eclipse update sites in preference > install/updates > available software sites. Then tried installing the plugin. It worked like a charm. I added the app engine and GWT and then I was able to create a web application project for the first time. 

Next step. Hello world. Or for this tutorial it's the stockwatcher application

Step 3: Building the user interface
Here I find there is a Widget gallery, part of the Reference Guide, that you can peruse the widgets GWT has to offer as UI components for your interface.

Internationalising a GWT project
So I've just finished the initial stock watcher application. Just took a couple of sittings. I'm really impressed just how much I was able to get working in such a short space of time. Anyway now I can move on to the slightly more advanced tutorials. This one is about how to make and application that works for different countries, regions and markets.

Done. Took about one hour. Didn't rush through. Just went through a simple demo of static string internationalisation. Basically awapping each hard coded sentence into a variable which can be filled with a string for the specific language. You just have to write the translation for variable in each language.

Client Server Communication
Just working through the RPC tutorial. Got to 4. Handling Exceptions. All works fine so far. Just took half an hour.

Unit Tests
Finished the RPC tutorial. Ended up being relatively simple. Moved on to unit testing. Having a bit more trouble. I created the initial test files fine. When I try to run the tests I keep getting the error "com.google.gwt.sample.stockwatcher.client.StockWatcherTest cannot be found". I think it might be because I don't have the GWT command line tools on my path. Turns out I already have so it can't be that. What an antequated thing the class path seems though. I can't believe it's still in use.

What can it be? It all looks fine. The test class is there. A bit of head scratching and some googling later and I found a post about running GWT Junit on eclipse which saved the day. Firstly I added Junit3 to the class path. For some reason the junitcreator script creates the correct "test" folder but it isn't recognised as a package. Not sure if it's a problem with junitcreator or my setup but the simple fix was to save the StockWatcherTest class by dragging it to the root folder. Delete the "test" folder then create a new "source" folder and create the package inside that. Then drag the class back inside. Everything worked fine after that.

Deploy to app engine
This is the part I've been looking forward to throughout this tutorial. How easy is it to deploy all this work to the web. Will it be quick, free and will it work on both the desktop and mobile (my g1 phone).

Well I've completed up to task 2. Just got it up to the server. I had to verify my account through sms, choose an application id, tell it to eclipse and publish. It was just plain easy. The application works exactly the same on my mobile phone as my desktop and it's available to the work without any hassle.

I've also got a bunch of tools to help me manage the service. I'm impressed by the quotas they've made available given this is a free account. For example in a 24 hour period I can have in going and outgoing bandwidth of 1gb each. Ok, if I start doing mashups with video or audio then I might reach this limit but not if I embed the content and stream it from its original source. These are the kinds of things I want to look into. I especially want to see if Google Gears really does work well on the gphone. I want to build dashboards that I can use seamlessly whether a net connection exists or not. I want synchronisation to occur in the background and I want to spend more time delivering the app than worrying about these nitty gritty bits.

Atleast now I have an application and hosting service on which I can test these next steps.

Carried on and created sign functionality using the users api and started saving the stocks on a per user basis. It was a bunch more code than previous steps but it worked a treat. I got up to the 'error handling' section

Finished the tutorials today. I uploaded to http://calichambers.appspot.com/ and all is working fine. I'm all excited now. I can start looking at the apis and implementing some of the features I want to build.

Visualisation API
I think I need to start using the GWT skills I've learnt to create a few dashboards and have a product. So I'll drop the gears work for now and come back later. Instead I think I'll try and get some visualisations sorted because the visualisation api sounds extremely easy to use and I have some files I want to use as data sources.

Gears API
Next on my todo list is to learn about Google gears and how to program for it in GWT. I really want to see if gears works on my G1 cos I want a web app that I can use on the go.

First I'm told I should be a little familiar with the Gears developer site so I'll pop on over there and check it out.

Ok, had a quick browse over the gears background docs. Downloaded the api code and copied to my gwt install folder. Next I'll be going through the tutorial Using the Gears Database Module in a GWT project 

Boo. Hit a hurdle straight away. The basic gears tutorial doesn't follow on neatly from the GWT 1.7 tutorial. It doesn't include the gwt-gears.jar as an external jar through eclipse. It uses command line tools projectCreator and applicationCreator which I haven't used before. I thought I'd just add the external jar to the project. Eclipse didin't throw any errors and happily identified the packages and classes when I copied the lines recommended then run the application.

No joy. Got the error
Property 'gears.installed' not found
When running. This I assume is from the gwt.xml file and implies the ant or other path needs to be adjusted. A quick analysis shows me that the tutorial was compiled against GWT 1.5 but I'm on 1.7.  I also don't have the command line tools listed in my GWT source. So I might just go and get these and create the project files from this. I could also figure out why the gears libraries aren't picked up by the compiler. I could look into the bootstrap sequence for GWT 1.5 or 1.7. Probably worth learning how this stuff puts it all together. I think I'm basically there. Just a few tweaks needed. I also get the decided impression that this is all relatively young and so these are teething issues.

Shame a google for the error returned nothing. Got a bit of luck searching on GWT 1.7 eclipse gears.

Yey, fixed the first error with a simple tip. Now got a new one.

HTTP ERROR: 404

NOT_FOUND
RequestURI=/GearsDatabaseTutorial.html

At first glance this looks easier to fix but that's a problem for next time.

As part of the search I found help on an issue I may encounter when programming the offline part of gears in GWT 1.7

Web tools
As an aside It's worth building a list of separate tools to check the results. I just found SunSpider, a javascript benchmark tool, that shows FF3 latest js (TraceMonkey) is faster than Google chromes V8 version. Thus it may be useful if I can use this or another test on the GWT code that's created.

The Google stack
It's also interesting that Google are now getting close to having a complete web stack from operating system to browser to web front and back ends. It's worth asking the question. Is this google stack the equivalent of Microsofts for the 90's?

Well I just got curious about what the canvas tag can do. Found a Tetris like game called Torus that seems to work with no flash or java at all. Just html, javascript and css. The canvas element appears to make this possible. If it's really this usable then boy it's gonna get exciting.

Google Group
Found the developers group and a post 'announcing the GWT 2.0 milestone 1'. Revealing some really useful and important improvements that are coming up.

I also found the google-web-toolkit-incubator. A google code project hosting GWT widgets and libraries before they're incorporated into the GWT core. Just FYI I found it through curiosity. I liked the tree style navigation used in the Getting started with Gears API library reference for GWT. I wanted to find out more so inspected the element in chrome, found the class 'gwt-FastTree' searched for it and found this resource. 

Good to know that Google use their own solutions early to iron out things before signing them fit for the public. Also good that I've already found a tool that I'd really like to use with GWT. I've just completed a short project at work that could do with a tool just like this given that keyboard shortcuts were implemented which is such a usability and accessibility boon.  

Supporting multiple interfaces
Within two to three years it will be possible for users to consume a service or application through their TV, mobile phone, games console and many other devices not just plain old desktop. A key reason for investigating GWT is to get back to focusing on the scratch I want to itch. Making the web faster is a key principle and applies not just to supporting mobile devices but all those that are coming. Getting to the data and making it useful is what people want.

I consider all the layers that we have to support as heavy lifting. Checking javascript, css, html, screen size, operating systems on a million different setups and browsers is not my game. I want to solve problems. So the essence her is that GWT and the tools it includes does as much of this for me as possible. I expect widgets and classes to automatically deal with 80%-90% of the common problems leaving me a smaller more manageable list of things to worry about. This means I focus more on the solution than the bugs and get a more robust and polished solution.

Speed
Google have posted a document 'Make the web faster' providing a bunch of useful tools and resources to help us all get things make the web faster and get things done faster. I'm particularly interested in the tools because finding the best web tools is something I find particularly hard.

Other Frameworks
I'm also interested in how GWT compares to other frameworks such as Apaches Geronimo, Mozillas bespin

Plugins
The modular design should make it easy to use plugins from other vendors within GWT like the extjs GWT extension along with other notable plugins

I just came across a the Closure javascript library and api reference. Already a bit early to be thinking about another javscript code library but apparently it's been developed through gmail, godcs etc so like so much from google it seems worth a try.

Closure is part of the google code labs which lead me to the chart api calendar gadgetsblogger api and tons more. I can see so many exciting opportunities with these tools. Just logging here so I don't forget about them.
Part of the calendar apis is the Calendar Event gadgets API. There's also an embedhelper so I could build my own calendar page with tools around it.

Amalgamating data is such an important aspect since data can be found anywhere these days but you don't want to write lots of different ways of handling it. You just want one way of searching and organising it. Google Fusion Tables could be a useful answer as Tony Hirst explains. Just check out http://tables.googlelabs.com/Home to see the tables currently available.

Gadgets
In terms of how I want to present some of these apps I write I like the idea of creating a google gadget that I can load in iGoogle and other places. In terms of MVC I see the gadget as the view, the GWT layer as the controller and probably the data. in time I'd like to get the data from other sources and use GWt to put it all together.

Apps and frameworks
It's taking a while to get any programming done. Life gets in the way doesn't it. So I started looking around for GWT based applications and frameworks to build on top of and get something usable sooner.

I found


Monday 28 September 2009

Jeet kune do in tennis

I watched all the bruce lee films over the weekend. I just love his approach. I really relate to his approach. I didn't realise but I've been putting a lot of the concepts into my tennis game recxently.

I was inspired to do even more. I really focused today on using my whole body. I started generating my swing from my stomach and legs. Wow what a difference. I'm so much more accurate and it feels so much easier. Yet I get so much power. I'm struggling to hit without power.

Amazing

Getting all wavey

I'm totally fascinated and excited with the upcoming Google Wave product. I've been hearing a lot about it since I'm now listening to the TWIG podcasts. So I had a quick google and found out a bunch. Thougth I'd start a post I can update as I go along.

From the home page there's now a youtube video. Amazing.


Then found out there's a waveprotocol that underpins it all. that's key as far as I can tell because if it becomes a protocol then much like mail works at the moment then wave can work even when some of your servers go down. It becomes fault tolerant. Or at least that's how I'm understanding it.

It's also based on Google Web toolkit (GWT) which is something I want to tru out. Every day I  seem to find another reason to use it and something it can do. So i want to see if it can deliver on its promises.

Combing micro with macro blogging

Twitter is micro blogging qnd blogger is macro. Often I don't want to post just to blogger but my comment is longer than 140 characters. Why can't something just post the first 140 or so to twitter. Then full post to blogger and put a link on the twitter post for the rest. Then I don't have to duplicate and I can just write.

edit 20100306
And along came buzz. Is it a surprise that it's google that answered my question?

Mint does great html

I love well designed sites. Just tried mint, froma  suggestion in TWIG. The login page had a beautiful approach to forms. Boring I know but was a dream to work with. Recoridng for reference.

Saturday 26 September 2009

Listening to this week in google it struck me how the newpaper industry may be sewing the seeds of their own destruction over their reaction to developments such as google news.

It also struck me that google really does own the ability to shape our consciousness in that if content doesn't show up in google you could consider that it doesn't exist.

That gives google huge power to shape current events and how they are covered.

It's great though that services like twitter offer alternatives so that google doesn't have complete control. I don't really think google try to sway their search results in anyway. If they did it would get out and this would destroy their main strength. Their focus on truth.

Either way it's fascinating to see this tale develop. Will google eventually let its power go to its head. Particlarly if they ever lose their dominance and revenue stream.

But then they've been such a synergist for equality and open standards. I feel that this will ensure their strength for a long time by creating partnerships.

Just a thought

Getting Jamie Oliver to help you in the kitchen?

A set of tools I see as useful are ones for cooking. I want a cooking thesaurus and dictionary. Some thing to help me replace items in recipes I don't have in stock with things I do. Like I'm running out of rice. I have couscous in stock. I have tapioca at work. Should I use those and bring the tapioca home.

Whatever I use it has different cooking rules than rice. I need help adjusting the times and amounts to use. A tool to do the maths for me would be so useful. at a basic level adjusted cooking times, measures to use and a basic list of actionss to cook it e.g. are there different steps like coating in oil or steaming I need to do?

The same goes for herbs and spices. I only haqve so much in stovck and I can easily run out. So if I don't have the time, money or inclination to get the suggested ingrediensts I need advice on a replacement and weights, measures and processes to include it. E.g I need oregano for a pizza. don't. Have it but do have basil, thyme, 5 spice and parsley. What could I use? If the recipe says fresh but I have dried and even ground then how much do I use. I need a conversion tool.
Of course these changes will change the flavours and textures of the dish. We'll minimise that as much as we can but then we can use it to stand out and be different. Imagine a curry with pilau couscous or a pizza with basil.
I'd also take it further in time by making tools that can interact with the recipe. Scanning A simple 3d barcode on the page would load in the recipe and instructions. Then scanning the barcodes of all ingredients in my kitchen it would already know what's available.
It recalcuates the recipe for me or finds a recipe I could do given my current mood, desires and ingredients. I then bring the necesary ingredients around, check I've actually got enough, make any adjustments then begin.
I could use the built in alarms to automatically time all aspects. I could use it like a sat nav to help me navigate the recipe by reading aloud the dirwections and say what I should be doing at each point. I'd now have a personal tutor that is therre with me every step of the way. I'd even be able to adjust my plans, pop next door for something, answer the phone or something and it would just recalculate for me and carry on.
Tools lke this would allow me to spend more time cooking, less shooping, calculating and doing admin and less mistakes because they'd take a lot of the burden off. It would be like having a professional chef as your personal tutor. Like having gordon ramsey or jamie oliver as a helping hand.
It's not about taking the fun out. It's about putting it right back in there. The tool adjusts to your skillset and helps you deliver more often. You learn so many ways how to negotiate all the things that go wrong yet you're never nervous scared or overwhelmed because you're never alone.

Going through my old posts I found that I blogged about a similar approach before

Friday 25 September 2009

Where is lifelong learning?

I've come to the conclusion recently that we're in the perfect age to implement lifelong learning yet it's unlikely to happen for many years if it happens at all.

The reason?

Mainly it's because we all, or most of us, have to work. In my professional experience I've found that learning. R&D and personal development are completely ignored in terms of getting the job doing. They are viewed as costs to the company providing few if any benefits.

That's how managers seem to see things. Yet managers are rarely doers. They rarely have to get the job done and deliver the goods on time, on spec and all that. Thy normally get someone else to do it.

I'm a doer. The one who actually has to deliver something to the customer given a spec, timescale and budget generally agreed by someone else. Yep. As funny as it is it's rarely the person doing the work who get's to determine its cost. The result is often, not enoguh time to deliver the product. Mainly because too many aspects and features that you've never delivered before. Or at least never delivered with the current toolset.

When you already know the answers it's easier to figure out the cost. When you don't you can't and you're likely to take longer than expected and deliver products with little usability.

My experience, given this situation, is that everything that I develop comes first from my self directed study. That time where I just follow my passions and intreigue. Search out the experts, learn from their work and apply it to personal projects and better myself. It's the application of this knowledge in my own works that teaches me the most. It's where I get my experience. It's where I get my answers for work based problems. Very rarely is the other way around.

So in essence I can deliver against crazy deadlines and keep customers happy all because ii do a lot of development in my personal time. Or atleast I did. I don't anymore. Don't get me wrong. I'm still learning a lot but I'm not programming. When I go home I want. Areal separation from work so I do other things now.

So how does this relate to lifelong learning?

Well the point is that I learn most of my useful skills and experience through self directed study and projects. Where I set my own targets, and deadlines and figure out my own resources. Yet my company benefits a great deal from this. It's how we maintain our competitive advantage.

I think there's already plenty of evidence of the benefit of this typwe of learning to companies. It'll never get anything more than lipservice though because there are virtually no examples of it in place in real companies. Thus managers etc have no practical idea of how to implement it. That's where those involved in education should be addressing things.

I don't mean big campaigns forcing facts down peoples throats, or sets of guidelines or best practice. That's all well and good but useless with practical examples. What the system needs to do is implement lifelong learning in its workforce. Experiment with it and develop various options to suit the varying needs and situations that arise.

Do this at first as individual institutions and then as a coordinated drive. Show clearly how this greater access to and uptake of learning and R&D drives greater innovation and leads competitive advantage within the organisation. make employees in the private sector push for lifelong learning because they keep hearing about people achieving their goals through it.

Make companies determined to provide and support it because they're convinced they'll have more motivated, skilled and loyal workers because they invest in them.

The education sector needs to lead fromk the front on this. Right now I work for a university. So I get access to market leading courses. Fantastic. The problem is that I have to do the studying in my own time. I can only pick from the courses they provide and only study during the dates the course is provided. Thus I have to schedule my learning around very rigid points. I can't fit it aroiund me at all.

So I'm lucky to have access to these courses but in truth i'd rather direct my own development so I just use the web as my classroom.

So what do I do with this self directed study?
I'm a developer of web applications who has a personal passion for human performance. I have spent 20 years learning how best to develop myself and others. I've learnt so much theory and practice. What's missing for me a virtual simulations of these very concepts. Educators and sports scientists aren't typically technies and so they express themselves throguh lectures, research papers and theories. I want to turn this into games, simulations and digital learning objects.

A quick example. Being that glut 4 is a sugar treansport chain across a cell wall. I think it has a fundamental role in helping with diseases such as obesity and type II diabetes. I don't have time to find or develop proof of this because my day job takes my time and energy. What would help is for someone to build a virtual cell wall among other things, built according to our current knowledge, which I could experiment with to demonstrate what I believe.

If thee cell wall is built and tested accordsing to what we know through experiement and experience and my experiments then show the effects glu4 has on key factors in diabetes and obesity then I will have a repeatable, testsable example of my beliefs. It doesn't prove I'm right but demonstrates I have something worth investigating.

If I could use these tools like this i'd want other people to. I'd want them to learn like I do throguh experience, simultion and real time feedback. I'd want them to learn through experimentation and then implementation and 'd want them to hav all the tools they need to do it.

That's what I want to build, or be built. Something that helps me learn and gain experience faster and with better quality. I've got plans to build better learning tools because I have a huge passion for human performance. I only find sporadic opportunities toreally progress this. What would really help is time at work to do some of it. It's possible because there is a symbiosis between my dreams and my job. Not everyone has that.

What i'd recommend is a small experiment where I agree with my manager a set of deliverables interms of learning goals and software to deliver. Something general like investigating one of the new development approaches that's gaining ground and seeing what it can deliver.

My plan is to use googles new development suite to deliver applications faster because so much of the plumbing and thought has already been done. It makes a lot of claims, if just a few are true then it will revolutionise what we can deliver, but I need to confirm these claims are true and that it's actually the tool for the job. That's the first step. There are many more.

I'm already looking into this so I just need a little more time to allocate. That's part of the experiment. How much to allow 4 hours, a day?, when at the end of the week, when I choose? Frequency? Get priorities done first then do it or do it weekly. How much support do I get? And what type? Can I redefine my goals and deadlines if I need to?

All these aspects need to be figurted out but that's the point of an initial small trial. You figure out something that works on a tiny scale and then just grow it organically. You don't need a perfect example before taking it market. Early adopting companies could implement it just as we do. On a tiny basis at first. Building slowly on successs.

What my employer gains is understanding within the team od other tools and approaches and working examples made with these tools. The cost to my employer was a few hours of company time. The real cost was many hours, possibly a bit of equipment but I happily pay for that myself anway. So it's a win win. My employer gets quality relevant information and deliverables and I get to follow my dreams. Each week I'm a step closer to a goal.

Done regularly this, to me, is lifelong learning. It's something I can do regularly my whole working life and guarantees that I've devloped myself throughtout. In the process I've delivered for my employer too. -lve learnt wider aspects related to my role and been able to lend a hand more often than not because I've got greater experience.

Why do it?
Currently most learning and self development happens outside work. In school or uni before you go out to work. Outside work as distance and further education. Outside work as training. Think of it. How often have you learnt at your desk during a normal working day. Self development is always marked as time away fronm 'doing your real job' and that's the perception and approach that must change.

Where I work there are lots of jobs to be done and lots of people actually want to learn how to do these jobs better. I would just match up the people to the tasks and encourage them to learn whilst they earn. Deliver the goods whilst gaining the knowledge. I can think of many people in my team who want to learn more about the things they're doing. As a learner and a customer I know that they'd deliver much better applications as a team if they could pursue these dreams.

So by using this approach the education sector could almost triple the size of the market simply increasing the 10-15 years we typically spend in formal education and adding some or all of the 40 or so years we spend working. That's a potential 55 years and a huge market. That's why I think the whole education sector should be doing this. With a coordinated effort to pool best practice.

Right now though I only have 1 example, but it is a very good one. Google have a well known 20% program where employees get to spend 20% of their time on personal projects. The goals and support are agreed with google and used to develop and motivate employees. The benefit to all is huge. Many of these initially small projects are now flagship products for google such as wave, voice, docs and more. Each is innovative and as a collection is set to ensure googles continued dominance in all sectors it participates for years to come.

It's abig shame I don't have more examples. But that's the point. The focus on short term goals predominates. Meaning lifelong development, attracting the top talent throguh a reputation for nurturing skills and experience is possible but most are too focused on profit and money to worry about this kind of investment.

I feel it's like growing vegetables in your garden. With poor soil you can give all the rain and sun you like but only meagre plants will grow. Quality will be low. You can force growth by fertilisers and chemicals much like you can throw money into overtime and fashionable tools. All you get are bigger low quality plants. When growth is rushed properly cell structures aren't created and quality is lacking.

Get the soil right and the veg will grow even with less rain and sun. You'l have trouble stopping it. At work this means nurturing the seeds of motivation and skills. Develop the people. They're the foundation of your organisation and the soil from which all produce grows. Find out what they need and what they want to do and let them do it through working for you.

It's a dream but the idea of being able to work towards my fdreams whilst helping people achieve theirs is very satisfying. It's all I really want to do. Getting paid for it is also a bonus.

Tuesday 15 September 2009

Regular Expression help

Just heard about a useful regular expression tool http://regexpal.com/. You can debug the expression in a web browser. How useful. Just logging here for reference.

20091201
I also found help at regular-expressions.info and the examples provided. Regexbuddy sounds like a useful tool

Monday 14 September 2009

Human powered gym

Listening to an npr podcast about the human power movement I had the vision of a gym room where the lighting, audio and video are powered by harvesting the energy generting from the exercisers themselves.
Just thought it would be cool if the bikes, treadmills and other machines actually fed generators which provide the rooms power.
Just thought it would be a cool way of a group showing just how well they're doing, working as a team and getting feedback aqbout their progress. All the while the get to help the environment and give back.

Tuesday 8 September 2009

What's google philosophy?

Ok,

I'm not gonna profess to know their exact philosophy. I am interested though in how they want to grow and mature. They're such a big organisation and weild such considerable power that they're certainly going to shape the future. Since googles main influence is through the products and services it produces and lets us all use I think their approach to licensing can be viewed as a key part of their philosophy. After all it's ultimately how Microsoft have gained such a strangle hold on the consumer pc market and how apple control their vast empire.

I am just reading a fascinating article titled 'Google: Open source lets us control our destiny'. I haven't finished it yet but already I'm fascinated. Mainly because they so openly commit to freedom of the user. I keep hearing that Google want to open up markets and give power to the people. They're actually doing it in their licensing and approach. It's good to see.

I just think it's a fascinating time. I still remember my parents and their generation commenting on this or that organisation who've turned their back on previous commitments, often similar in principle to Googles pledges here, only to become more restrictive and controlling as they begin to lose their dominance in the market . We all know Google are way out in front now, but what will they do when their lead is reduced or even lost as we all know is an inevitable consequence of time?

My hope is that we're now in an era of openness and constant backup. Such that if in 10 or 20 years we see Google change their stance, we'll actually have the records to prove it. Of course, being cynical, if they still have some dominance in search, and don't forget searching is how many of us find out what's happening, they'll still be able to present the picture they want us to see. Much like microsoft had a strangle hold on the web through their terrible internet explorer browser. They managed to hold back the web for many years. Finally I can see their dominance being completely eroded but it took awhile.

What am I mumbling on about you ask? if I'm not completely clear it's because I'm just putting my thoughts directly out there. I like and support Google because I feel their philosophy is from the current age, of openness, not the previous locked era. I think that in their hearts they get the concept that open highly competitive markets are actually better for organisations because, done properly, there's plenty of cash and customers to go round. Each company can do its little bit of innovation and the whole market benefits. Costs of production also inherently fall and each company can take advantage of this so everyone gets to survive as long as they keep up. I think Google enjoy keeping up rather than resting on their laurels.

My faith in this comes from myself. I'd get so bored if I didn't have anything to do. I think google employees can genuinely make a difference and this spurs them on. The difference they make helps secure their future not bring about their demise simply because they are open.

Again I don't think it's perfect and I'm really relying on faith here. I don't know how much into the core of google I've ever seen and I don't know how far their reach goes. Still I do often find that there statements are true, for example they are releasing the source to their work, that is a fact. I feel their strength at this time relies on this. So if it changes. Even if it's over time then whilst it will strengthen their position in the short term. It will bring their downfall in the long term.

Cool, I feel like I'm on a sandbox. any way in essence. Time will tell but for now I think the outlook is good. At least while Google have no real competitors.








edit 20090922
A big part of this debate is about who to put your faith in when choosing applications. For years most of us, like myself, have put the faith Microsoft mainly because there was no real viable alternative. I find it useful to get a lot of my tools and apps from one supplier simply because they're designed to integrate better so the whole is better than the individual parts. I know that only some of Googles products are market leading but as a an integrated virtual suite that's in the cloud and free, it's way ahead.

In the desktop arena I've gotten used to Microsofts approach. What I have found is that they make great software but they charge first i.e. consider themselves, and then consider me and my needs. They don't put me first. Apple do the same. They have a great reputation but from my angle they just charge even more than Microsoft. They also lock their products down too much. That's how they deliver so well. If you want to do something a little different or in a way the product isn't designed. You can't. Unless apple has thought of it and made it possible then you can't do it. It's what I don't like about iPods. Apples products don't adapt to me I have to adapt to them and use them in exactly the situations they were designed for.

So Apple create tools that just work but  are expensive and inflexible. Microsoft is cheaper and more flexible but more buggy. Both companies also approach product development as though we're still in the 80's where they're the company and we users only have a choice of which of their products to use and thus no where else to go. Things have moved on . Google on the other hand use their strong market position to put me first and my needs and then figure out how to make a business model from it in time. Sure that's a pain in the neck for companies trying to compete. But as a user and customer I love it. Bringing paid ads to software. I love it with google because in Gmail the ads fit around me. The software and the way I use it doesn't fit around the ads. the product design methodology fits my methodology. do what you need to do and find a way to make it pay.

Ads within software just follows the tv model and we're all used to it. It could get very annoying but it hasn't so far. If it does then I'll switch tools like everyone else will. Google and the current generation of developers are smarter. Ads in the background become useful when delivered in context. Thus they have a higher return and actually help the user. I remember that google were the first to target their ads so highly and even now I actually find the ads they deliver useful simply because they listen to what I have to say and so know what ads to show. As some one who's used their adsense program I also feel they care more about their advertisers.

There's lots more I want to say but I better finish for now. I keep asking why I stick with Google and stay away from others. It's mainly because Google match  my philosophy and so I trust them. What inspired this edit is they're advice on secure passwords. I've read lots of advice before but this is the most detailed and informative I can remember and it's a typical example of how they deliver. Every thing I find out about them fits my world view. They're designing for this new open age and figuring out a business model to fit. They need to make a living but enjoy doing it by facilitating not blocking. That's what I see with Google but not what I see with Apple or Microsoft.


edit 20091205
Another piece to this puzzle is how the two operating systems Android and Chrome OS evolve under Google. Sergey Brin has stated that the two operating systems are likely to converge in time but for now they support different markets. How and when this occurs will really tell us most about googles real philosophy. What I do like is the inherent competition between google products this produces. It's not the first of its kind within Google and I think it's important. In any company there are always different views of how to solve a problem. I think good companies find ways to let employees put their efforts where their thoughts are and put something out. They also look to take the best ideas from each solution and evolve both into one more complete solution with the people behind it all happy because they got to express their ideas and values and have been part of making the end solution. That's the theory I have anyway.


update 20091214
When google runs your life is a fascinating insight into where Google is going and recaps how they were formed and their approach to getting things done. It struck me how simple their philosophy is


Google aims for products that can be used by a billion or more people, getting there via incremental software and features that it can improve as it watches and learns from how consumers take to new tools.


We offer cheaper cost of ownership and zero cost of install, but if you don't take on the philosophy of the tools you don't get the full benefit. Bradley Horowitz, oversees product management for Google Apps. 

Wednesday 2 September 2009

Audio blogging including speech to text!!

I've just been impressed again. I heard about ipadio this morning and installed to my phone. Just checked it out at http://www.ipadio.com found someones phlog (phone log) http://www.ipadio.com/phlogs/MarkSmith3/2009/09/01/Fish and saw the transcript of their aduio blog. Couldn't believe it just had the text right there.

I'm definitely excited to try this. Apparently the speech to text part is delivered by spinvox (https://www.spinvox.com/signup_step_1.html?pt=6).

really excited because I've been waiting for this kind of functionality for years. if it's now consumer grade then I can't wait to see what other stuff is coming along soon.

If the quality is good enough then not only have we just moved to touch screens but we might quickly make them obsolete with just out voice!!!
edit 20090911
Ok, I've now tried the service, at a basic level, and I'm truly impressed. I recorded a 25 second message on my phone. Uploaded it to ipadio and about 20 minutes later I had the phlog and transcript all available. In truth every was there almost instantly, it just took a while for spinvox to process the transcript. I'm happy with that since it's free, I assume the paid up members get priority, and I expect there's a lot of demand at the mo.
I didn't check the exact wording of the transcript to ensure it matched what I said perfectly. I'm just happy that it's 95% correct cos that's 95% of my text I don't have to type. It was much easier to read through a first draft that came direct from the horses mouth.
What has really impressed me is that I haven't had to train spinvox or ipadio to learn my voice or anything and that I just record an mp3 on my phone. It is all so quick and simple. I can really see this taking on and changing the way we work with technology and just go about our day.

edit 20090915

So here's an example of a post using ipadio. Not perfect. shows I need to practise with it. Not sure if I didn't speak clearly, wen too fast etc. Shame. It had all worked first time so far.

Tuesday 1 September 2009

Teaching naked

Ok, now I've got your attention I want to introduce you to an interesting approach advocated by Jose Bowen, a dean as Southern Methodist University in Dallas. He's advocating a different use of technology in learning and teaching by taking the technology out of the classroom and using it to help students prepare for lessons. Lessons themselves are then places of interaction where the human element of teaching can be maximised.

I found out about Jose listening to an npr podcast over the weekend. The concept speaks to my heart because I feel people should always be at the heart of technology. The question should always be what does the student/teacher need, then technology can be used to provide or facilitate the answer. So a constant innovation in ideas is what's needed. Instead all that's happened with new tech is electronic versions of old approaches such as powerpoint slides to replace overhead projectors, electronic whiteboards to replace chalk and blackboards.

Jose focuses on getting students to engage and participate in their learning. Providing games and podcasts to encourage them to interact and explore concepts. The line in the podcast that got me convinced was when Jose talked about the Jazz games he uses. Students are able to layer melodies from different Jazz legends and explore the results for themselves. The point is not to make perfect music but to understand the different styles in greater depth by comparison and contrast. By getting involved yourself you notice subtleties and gain understanding that you can't just from listening to a lecture.

Fascinating stuff. I hope this idea gains ground. It's benefits are obvious to me. It's about making lesson time more valuable as a chance to interactive with others in a way only humans can. Use tech outside to get up to speed quickly in a way that suits you. Find out easily what's happening, updates etc via instant messaging, chat, email and forums. Explore the subject in video(youtube etc), audio(podcast), text (rss) or anything else you can find. Then get together in a room with other people and discuss what you've all found.

Sounds like a great way to learn.