Favourite blogs for Dare Park - L's Learning Log

My favourites » All entries

October 09, 2013

An alumni's view of MBE

I post this reflection on his time in MBE with permission from the author. If you have any comments or questions that arise after reading this piece, please ask them here and I will respond.

Hello everyone,

My name is Jan from Germany and I am a former student of the WMG at the University of Warwick in 2010/2011.

I am writing this reflection more than one and a half years after I finished my studies in Management for Business Excellence (MBE). I am still in contact with several people of WMG, especially Paul Roberts (Course Leader) and one of his doctoral students. My reason for keeping the contact is that I am convinced that WMG and especially Paul are doing a great job and staying in contact with academics always gives you new input.

This continuing contact actually gave me the motivation to write this blog. I think, and Paul agrees, that it is important to know what you can do with this degree—what is the benefit of MBE. After my studies I got in contact with some people and they asked what was the biggest benefit, what kind of job did I get afterwards, etc. Indeed these are very important questions and so I decided to write a few lines with the aim to share my experiences and thoughts regarding this topic.

I am aiming to support this course and its underlying philosophy, so that finally people have more motivation to decide on this course and to give them more belief in what they are doing during this one year of studying MBE.

Just to summarize it in advance—it was the most mind-opening year that I’ve ever had and it was worth every minute. In my opinion, every job on this world would benefit from these experiences and the conveyed message. So let's have a look at it in more detail:

First of all I should mention that directly after my studies I got employed by a big German company. For 20 months now, I have been working as a project engineer. Even though it is a technically-oriented job and on the first sight it doesn’t have that much to do with MBE, it is a challenging position and MBE steps in every day.

One thing that should be born in mind is, that most of the times you won’t enter a company and be the boss. There are competencies and experiences that must be gained. It is hard to manage and lead if you have no idea how a company works, how people behave and how the work is carried out. Besides getting the respect you need when you come directly from university, respect is easier to get if people see that you have a clue what you are talking about.

However, let me tell you a bit about my business life: I am responsible for a production site that produces a component for automobile paint. It is a chemical process that I didn't know much about. But actually that was not important for me because I do the engineering for this site, and this goes in the direction of what I knew from my previous studies. But being honest, I must admit that my technical knowledge is very basic and I had no clue about the technical component of my job at the beginning. In addition, and mostly forgotten: you work in a company, there are procedures, rules, responsibilities, actually it is real life and not comparable with the university life, even though university tries quite successfully to come close to it.

So at the beginning I had to deal with two main totally new areas. This is why I was also happy about not getting a management position right from the beginning. Even though I see myself capable of doing such a job (this applies to everyone from MBE), I would have been overloaded. Having responsibility for others right from scratch would have been a third main area, probably too much to make for me to be good at my job from the start. Besides without work experience I think it is hard to get the acceptance of your colleagues. It may work out but it would be tough.

But why is this course so beneficial for professional life afterwards?

On the one hand you have the concept of the course and on the other hand the content of the modules and the masters’ thesis.

With regard to the mentioned two main new knowledge areas I would like to kick off with the first one:

The concept, the idea behind MBE and its organization already forms one major benefit. It is about learning how to learn. And this, as simple as it is, is a great and future-building competence, which will help you in every situation. Previously, I studied in Germany, sitting in a class with hundreds of other students and listening to one professor, making notes and I finally proved in a final test that I am capable of learning something by heart. But the real world is different. You do not sit in an office in the basement; alone, no colleagues around you, no computer and you have to write from memory something on paper that you have learned quite a while ago. You do have experienced colleagues; you do have Internet, books, documentation, etc. Finally, your task is to take this basic knowledge and apply it to a new situation, task, project, whatsoever. Otherwise you would need ages for a little task. And this is what the course work but even more the PMAs are about. Like in real life, identify your aim and solve your task with existing knowledge that is available in various sources, while enriching it with your own thoughts and thus developing the solution. Getting used to this and seeing it as normal way to obtain knowledge, becoming confident to work in unfamiliar areas, is of great benefit.

I am quite certain that during your masters’ you will find yourself concerned about time at some point or even frequently. The pressure is high, you have PMAs, you have the dissertation, modules and the time will come when you want to apply for jobs. So it might seem that there is no time for fun and the workload is not manageable. But it is, thousands of people have proven it and it brings its own benefits. At the end of my year, indeed all concentration was on the thesis and the last PMAs, the weekly and daily workload was massive. To be honest, most of the stress was made by myself: how often did I postpone something or wasn't really working when my timetable actually said: Study. But from time to time you learn to cope with it. And this pays back in professional life. In my job it is normal to have about 15-20 projects at the same time. Some are smaller and actually no big deal, but some are quite comprehensive and you have due dates. So it is about keeping every ball in the air. Actually like during the masters’ and specifically when there are the mini projects, if I got it right in mind it was about 5. Having gone through these lessons the job that I am in now was nothing new. It was different, and it was serious, but I had my patterns from the studies at Warwick that I adapted. Of course a university won't be able to mirror professional life for a 100% but WMG has done a great job. Compared to other colleagues who started working at the same time as me, I saw myself more comfortable with the given new situation and all the side effects. It was just like a new module. Besides, all that I have written in this paragraph is also true for diverse Assessment Centers. I have gone through three and the hardest part was nothing other than course work.

So what about content of these studies? Well it also depends on how you understand them and how you apply them to your professional life. Let's take the Six Sigma modules. I wouldn't expect to go into a company and start implementing Six Sigma and optimize processes and products. Nonetheless, you have the idea of DMAIC in mind and this already is worth a lot. You know something different than others do and thus can push, e.g. a project group in the direction to try it. Thinking this further leads you to other modules like Leadership. How do I lead people towards a new initiative, how can I influence? You might not be the boss but you can lead and show the aim, the vision. Ok, that might happen in a smaller circle of influence than when you have learnt it, but it is a beginning and it is a great opportunity to try out several approaches. And this is what I meant about your own understanding and usage of the content. If you keep it in mind you can work with it and try out what works for you. Apart from leadership, change management is vital to implement something new in a sustainable way. Understand why people do not want to change and indeed cope with it. I don’t know if you are surprised to hear that, but I see that as the biggest challenge in a business and there are only a few people out there that are good at it. I am not saying that you are an expert in each of these fields, modules, and this is not the aim, but you definitely have a basic toolbox you can work with. The rest comes from experience and further education.

Let me give you a real life example: I started together with 6 other people in the same department; it was decided to form a newcomer group that was supposed to work on an undefined project. So it was up to us to define it. With everyone having a different background and position we ended up working on something that was concerned with the entrance of new employees. How do they get known to the company, where can they find answers to explicit questions and how could they gain technical knowledge and expertise? After a while the question came up on how knowledge in general was transferred. Therefore, I suggested calling the project knowledge management. That enabled me to contribute the knowledge I gained during MBE, and finally I ended up as the elected leader for a group of 12 people. Following the basic knowledge about change management proved to be absolutely valuable in order to persuade the older colleagues that our project is a positive thing and everyone could benefit from it. Although my experience was mostly theoretical, the knowledge about leadership allowed me to try out several things and finally find my way to lead the team to a successful project completion. In the end the project benefited from 3 WMG modules and my thesis, which I think is a good result.

The Masters’ thesis is a good opportunity to get deeper into a topic. There you really start becoming an expert in this field of knowledge and this is why you can apply it even better to your future job. So choose it wisely ;)

What more is to say? I know Deming is a big topic in MBE and this is a must. When you start working you quickly see Deming with his deadly diseases and 14 points of management everywhere. It is incredible to see that it looks like nothing has really changed for nearly 30 years now. During the studies I always thought: This is common sense, of course you are not doing it like this, you are doing it the other way; you are a nice guy and act like a human being. Who the hell behaves like that described by the seven deadly diseases? Therefore, I was shocked entering the business world and I can feel that it is of great importance to keep the words of this wise man in mind! It hopefully prevents you becoming and a****. In business it works differently, it is not a safe environment and it is vital to get grounded and remember what you have learnt.

In my eyes business ethics is a vital component of professional life and MBE provides the right direction. Paul once said that for him it was important to have his own values, set up his own mindset and stick to them. Although I am not in a leading position, this proved to be great advice and good support for decision-making. It doesn’t let you doubt. An example: should I go to my boss and tell him what I think? Sure, no excuse! I promised myself to always be open and honest as well as having my say. So I went there and in the end it was the right decision.

I am convinced that I actually could write some more pages, but I think this gives you a first insight on how you can benefit from the MBE course. But again it really depends on how you approach the course and use the given input for your benefit. It is not just about taking; it is also about developing it continuously.

If you have got any questions regarding MBE, etc. just drop me an email:

Jan.ruecker@ymail.com

Finally I want to wish you all good luck with your studies but never forget:

Have fun and enjoy your life.

Jan


October 08, 2012

Welcome to MBE 2012

A warm welcome to everyone in the new Management for Business Excellence (MBE) intake--32 students of 14 nationalities. Today saw the start of the Creating Business Excellence module, the first of six MBE-specific modules. Everyone was engaged and lots of questions were asked in the introductory sessions. So, a good start for what promises to be a challenging year. I look forward to working with you.

October 22, 2010

Angry and ashamed

On Wednesday 20 October a student on the Management for Business Excellence masters was attacked by thugs on his return to his accommodation in Coventry after a day studying on campus. He was severely injured and had to go to hospital.

Words cannot adequately express the anger that I feel about a situation in which a supposedly civilised country spawns mindless thugs who prey on young people motivated to extend their education. An unprovoked attack by cowardly bullies against a foreign national fills me with shame. I have travelled throughout Europe, South-East Asia, North America, Africa, Australia and have always been met with courtesy, hospitality and friendship. Not once have I felt a threat to me personally, and yet here in Coventry, two weeks after his arrival in Britain our colleague is savaged by two of the poorest examples of humanity.

I take it upon myself on behalf of all the decent people in this country to offer you and your family my sincere apologies for what has happened to you. I hope that you get better soon and I trust that you will return to your studies with the enthusiasm and motivation that brought you to the University of Warwick in the first place.


October 17, 2010

The start of a new academic year

A new academic year has started and there are 45 students on the Management for Business Excellence (MBE) masters programme. There were 47 originally, but two left, one after the first 90 minutes of MBE induction and the second after a couple of days. Although I was sorry to see them go, they decided that the style of learning on MBE was not for them and they chose to move to another course. I wish them well in their studies this year.

21 nationalities are represented on MBE - wonderful - so many opportunities to learn from others who have different experiences and perceptions. However, this is not without its problems. Given the learning style in CBE which is largely team-based problem solving, one student wondered how they were ever going to come to an agreement on anything because of the diversity of views.

I think that the answer at least in part, will come from consideration of one of Stephen Covey's 7 habits of highly effective people: Seek to understand before seeking to be understood. In a group with diverse views there is the temptation to makes one's own views heard and be accepted by the group. What Covey proposes is to spend time listening empathetically to truly understand the views of others. If each team member does this there is a far greater chance that they will be able to understand their common ground. And it is on this common ground that they can build their responses to the projects that they are working on, always working towards win-win outcomes. This process of sharing views, analysing and discussing them will inevitably lead to better understanding of others, help everyone to express themselves more clearly and bond the team in the process of working on the mini-projects, learning through practice the true meaning of collaborative working.

I am sure that Vineet Nayar would be happy to employ every graduate of MBE next year:-)


March 18, 2009

Obsession with targets

Writing about web page http://news.bbc.co.uk/1/hi/health/7948162.stm

When will organizations and (especially) governments learn that the use of arbitrary targets is a fundamentally flawed practice? There is much condemnation at present of the tragic loss of life at Stafford Hospital and no doubt someone will be found to blame and appropriate action taken. Job done. Problem solved. Or is it? I suggest that a scapegoat or scapegoats will be deemed to be the cause of a badly run organization and the underlying root cause will continue to remain unexamined, far less eliminated.

The outcome at Stafford Hospital is an extreme case of what happens when organizations or individuals foist arbitrary targets on other organizations or individuals. When failure to meet these targets is likely to be career limiting or have other undesirable effects on one's employability, they become the focus of daily life rather than the purpose of the organization.

An organization is a system and a system should have an aim. To achieve that aim processes are developed. Processes have an inherent capability arising from their design. Their actual capability is dependent on the quality of materials, equipment and people that are used to create and run the process. All of these processes should work together to achieve the aim of the system. If the system is not achieving its aim it is necessary to understand the root causes of under performance and take corrective action that improves its capability. The changes implemented should be monitored for efficacy and further improvement action taken as required until the system is achieving its aim.

Now let us imagine an organization that is not achieving the required level of performance, or is costing too much to run. Let us apply targets to focus the people in the organization and get them to perform better! How to reduce the cost of running the organization? Well, let's not recruit to replace staff who have left; cut back on training; don't replace aging equipment; reduce maintenance effort; outsource to a lowest cost bidder. I am sure that with a little imagination we could find myriad ways of reducing the cost of running an organization. And don't forget that these cost savings are not usually done in one fell swoop. No, this is death by 1000 cuts. No single action to delay recruitment, purchase equipment and so on causes catastrophe, but collectively over time the capability of the organization degrades until it is operating so far from its design capability that it fails to meet its primary aims.

So, instead of introducing arbitrary targets, institute leadership. Put in place leaders who understand the nature of a system; who understand that the output of all processes is subject to variation; who understand that working hard without knowledge can never lead to improved performance; who understand that to get the most out of a process, the people in the process have to feel valued and enabled to contribute to the improved performance of their process.

To setters of arbitrary targets I recommend that you get out of the library or preferably purchase copies of a couple of books which, if you spend sufficient time to understand, will help you to realize that setting arbitrary targets is a poor substitute for leadership. When you understand that you will start to know what is really required to help organizations and individuals to improve their performance.



October 10, 2008

When have you researched enough?

Writing about When do you know you have researched enough? from Lila's blog

Lila raises some interesting points about when have you done enough research. My thoughts on this for the Management for Business Excellence students follows.

For the team study phase of the Creating Business Excellence module you have a number of projects to complete. Each of those projects could be studied for many hours, let’s say several hundred hours for a reasonably in-depth literature review. Each team member only has 30 hours to spend on pre-module work and this has to be split between the projects appropriately. If you refer to the learning objectives for the module, by now you will hopefully feel that these objectives will be achieved by working for a total of 100 hours. Your question indicates to me that you are in the process of making your own learning decisions, a key element of critical autonomy in which you go beyond the learning objectives set and start reflecting on your progress.

What all this leads to is study to the depth and breadth that time allows, recognizing that you will not be able to cover everything, and make objective choices on what to place emphasis.

Please do not be tempted to spend longer than the total time allocated for each phase of your study. As wonderful as it is to enjoy researching a topic of interest, your degree comprises many elements and focusing on a few to the exclusion of the others is a recipe for disaster from a qualification viewpoint.


October 08, 2008

What is leadership?

The Management for Business Excellence course started last week with registration and induction and the intake of 24 started the first module, Creating Business Excellence on Monday. Organized into 4 teams, the module starts with 30 hours team study on 6 mini-projects.

I suggested that there was an opportunity for everyone to lead a project; everyone could take a turn in monitoring the use of time, managing the paperwork etc. No instruction was given on how any of this could best be achieved and it appears from recent blog posts that there are different ideas about leadership and there exists in some teams frustration and perhaps a little tension. So perhaps the question that arises is “What is leadership?”

Bernard Bass, a respected scholar on leadership, has written that there are as many definitions of leadership as there have been attempts to define it, and so it is perhaps to be expected that ideas about leadership differ when people join a course from different parts of the world and are placed in a team that ensures the widest cultural mix.

I have analyzed 20 definitions of leadership that have been published in journals over the last 50 years and conclude that my definition of non-coercive leadership captures the essence of all of these definitions. Leadership is the process of influencing the thoughts and activities of followers toward achievement of shared goals. This definition implies that the leadership is non-coercive, otherwise the goals would not be shared. They may be agreed due to the use of power or fear, but not necessarily agreed and I think that this is most relevant to the team situation in the Management for Business Excellence course.

There is a great difference between personal power and positional power. If someone assumes leadership of one of the Creating Business Excellence projects, the other team members may go along with that person. But he or she has not been granted positional power by the group, and I think that is unlikely to ever happen in this scenario in which teams are made up of future leaders in whatever career they choose.

Thus, unable to rely on positional power to coerce team members to follow, the leader in this situation has to use personal power to influence and this must surely start with identification of goals for the task that all share. That’s all very well, but have we got time for this? Wouldn’t it be simpler to give the leader the positional authority and let him/her get on with the task? We could do that but this would not be leadership (in my opinion), it would be headship. Headship, through positional power, can influence the activities of followers, but will their thoughts be influenced in the ‘right’ direction? Will the goals be shared? Without hearts and minds working towards achievement of shared goals, how can headship compete with effective leadership?

If as I do, you find it useful to look at extremes, take a look at any one of a number of 20th century dictators and compare their accomplishments to a thought leader such as Gandhi. I know whom I would prefer to follow.


October 05, 2008

Good wet weather gear

I went walking today in the pouring rain, taking my two dogs on a forest track. After about two hours I returned home and apart from spots of rain on my glasses, I was completely dry. So I thought that I’d share what I was wearing in case anyone would like some recommendations on good gear that works in wet weather.

Firstly, I start with my walking boots. I’ve recently returned from a holiday in the Lake District where they were first put to the test. I have to say that these are the most comfortable boots that I’ve ever worn. They are like putting on a pair of slippers. Check out the website at http://www.ecco.com/gb/en/collection/men/outdoor/68074/51052/detail.do. Made of Yak leather, with a great inner lining that cushions and protects, giving great support but being very light and completely waterproof.

I bought a pair of Sprayway all day rainpants at the start of my holiday in Cumbria because the weather this summer had been so ppor, I was convinced that we’d be walking in the rain in the hills. Webpage http://www.sprayway.com/view/mens_pants-and-shorts_waterproof/product/all%20day%20rainpant refers. As luck would have it, we had the best two weeks that Cumbria had experienced since May and the rainpants stayed in the cupboard. So it was this morning that I wore them for the first time, and they kept me completely dry without feeling like waterproof trousers. Although it rained really hard at times it felt that I was wearing a normal pair of trousers without getting soggy.

A year ago I bought a Montane Velocity DT jacket, http://www.montane.co.uk/productdetails.php, because I need a highly breathable waterproof shell when I am walking in wet weather otherwise I just turn the inside of the jacket into a sauna. This jacket kept me completely dry this morning and did a pretty good job of breathing too, especially as I was completely zipped up with cuffs closed tightly and the hood drawn quite tightly around my face.

My outdoor clothing was finished off with a pair of SealSkinz waterproof activity gloves http://www.sealskinz.com/cgi-bin/psProdDet.cgi/KJ461||@c@b|0|user|1,0,0,1|26|. These are truly great because there is nothing worse in my book than keeping dry and warm in wet, windy weather except for your hands. With the Montane jacket cuffs close securely over the wrist of the gloves, my hands stayed dry and warm throughout.

I thoroughly enjoyed my walk today despite the weather thanks to some excellent gear. I’m not so sure that my dogs were impressed with the walk, but they enjoyed being rubbed down, having a meal and a sleep by the gas fire.


MBE class of 2008

This week saw the start of a new postgrad academic year with enrollment on Monday and induction starting on Tuesday. So far there are 24 students enrolled on Management for Business Excellence (MBE) and there may be three more joining the course on Monday. It is a pity that these three will miss the induction sessions, but I am sure that their colleagues will help them get up to speed quickly. Why do I think this? Well, although it is early days, it looks as though this group is already working well as a team. There have been lots of good questions and discussions and the team working shown on Friday’s Teambuild exercise was excellent. I am sure that the newcomers will be welcomed and will integrate quickly.

This is the first year that the course is called MBE and it is also the first year that the numbers on the course have exceeded 10. This in turn means that a greater number of nationalities and hence cultures are represented and if the group continues to go from its excellent start, this year promises to be very exciting because of the high levels of motivation that will lead to a very rich learning environment.

Welcome to MBE. I look forward to working with you all.


September 26, 2008

AIR: Rendering native system icons, Pt.1

I was asked how I got AIR to display native file icons in a component – it’s pretty easy to do, although my method is a little convoluted to explain without posting reams of code, partly because it’s buried in a sequence of Cairngorm events/commands but also because there a couple of important issues to watch for and handle (see bottom of this entry for those). Here’s an overview:

AIR has support for retrieving the native system icons in whatever supported sizes exist. The icons are stored as a property of each File object as BitmapData, in an array, File.icon.bitmaps. Each element in the array is the same icon at different sizes, e.g. 32×32, 16×16 etc.

In order to get at an icon at a given size, you can’t rely on what sizes are available at a given element position, so you need to create a new (empty) BitmapData object at your target dimension, then iterate through File.icon.bitmaps until you hit the matching-sized BitmapData object. Once you have a match, you can put the matching data into your own BitmapData object. Here’s a brief example:


public function get32Icon():BitmapData {
            var myFile:File = new File("C:/foo.txt");
            var bmpData:BitmapData = new BitmapData(32, 32);
            for (var i:uint = 0; i < myFile.icon.bitmaps.length; i++) {
                if (myFile.icon.bitmaps[i].height == bmpData.height) {
                       bmpData = myFile.icon.bitmaps[i];
                   }
               }
               return bmpData;
         }

Obviously you need more than the code above to handle situations where the 32×32 icon isn’t available, but that’s a basic way to grab the icon as BitmapData. At this point you could create a new Bitmap object and give it the captured data, but for my application I set the icon data back onto an Object that represents the File object (I actually used an ObjectProxy because I wanted to bind this data to an ItemRenderer later) – again this becomes important later on.

Okay, so now I have my icon data, in an object that also contains other information about the file, like its name etc. To display it in a TileList, or other component, I just use a custom ItemRenderer. I set up an image tag for the icon within the renderer:

<mx:Image width="32" height="32" source="{getIcon(data)}" />

...and then create a method in the renderer to return the icon data to the image component:


private function getIcon(data:Object):Bitmap {
        var bmpData:BitmapData = new BitmapData(32, 32);
        bmpData = data.icon;
        var iconBmp:Bitmap = new Bitmap(bmpData);
        return iconBmp;
        }

Now each time the ItemRenderer has to render an item, it gets the relevant icon, the filename etc. and displays them within the TileList – easy! Here’s the result, showing the app running in XP and OSX:
Files part screen grab

But there are caveats; AIR does not behave consistently on all platforms with icon data. Here are couple of the problems I encountered:

  • Performance. There seem to be some differences in execution time for file system queries in AIR. Originally I had an ArrayCollection of File objects as the DataProvider for the TileList, retrieving icon data for each one in the ItemRenderer as required. On Windows this seemed fine, but on Mac OSX it proved to be very slow, to the point where my app was unusable. I overcame this by using the Flex Profiler to see what was causing the problem, finding that the underlying get icon() execution time was very long on OSX. By grabbing the icon data once, then caching it and other key File properties into an ObjectProxy, I was able to get OSX performance almost on a par with Windows, and this also sped things up elsewhere because I was calling get icon() once, rather than per-item in the renderer. It also improves scrolling performance of the TileList because that component renders items dynamically as they are displayed. In fact you could go one step further than I did and extend UIComponent to improve render performance even more.
  • Missing icons. AIR on Windows won’t retrieve some icons, in particular for .EXE, .TMP and .INI files. These are stored in shell32.dll on XP, but for some reason AIR can’t get to them. I also found one or two similar issues in OSX. AIR on Linux using the most recent AIR beta just returns a null value for File.icon.bitmaps, so rendering native icons is currently impossible. You need to add some way of checking for a missing icon in these cases, and swop it out for an embedded one if you can; I created a temporary workaround where I parse the BitmapData for null pixel values.

The next part of this article will deal with how I got native icons to render for remote files, but I bet you can already guess how that’s done…


September 25, 2008

AIR: Creating a custom status bar

It’s easy to create your own customised status bar for AIR applications. For my example, I wanted to be able to display a network status icon that indicates whether the application is connected – this is bound to a state set by AIR’s network service monitor, via Cairngorm.

First of all, in your application MXML file, make sure showStatusBar is set to true, add the statusBarFactory parameter and point it to your custom component:

<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" 
    layout="absolute" 
    showStatusBar="true" 
    statusBarFactory="{new ClassFactory(CustomStatusBar)}">

Then just make a new MXML component called CustomStatusBar and add any elements you want to display in your new status bar. There are a couple of things AIR will be expecting from a StatusBar, most importantly the status setter and getter methods required to display status text:

<?xml version="1.0" encoding="utf-8"?>
<mx:HBox width="100%" 
    xmlns:mx="http://www.adobe.com/2006/mxml" 
    backgroundColor="#E3E1E1" 
    >
    <mx:Script>
        <![CDATA[
            import mx.events.FlexEvent;
            import uk.ac.warwick.filesclient.model.AppModel;
            [Bindable] private var modelLocator:AppModel = AppModel.getInstance();

            [Bindable] public function get status():String
            {
                return this.statusText.text;
            }

            public function set status(value:String):void
            {
                this.statusText.text = value;
            }

            private function showNetworkStatusIcon():void
            {
                var path:String = "";
                if(modelLocator.isNetworked)
                {
                    statusIcon.source = "greenlight.png";
                } else {
                    statusIcon.source = "greylight.png";
                }
            }
        ]]>
    </mx:Script>
    <mx:Label id="statusText" paddingLeft="7" fontAntiAliasType="advanced"/>
    <mx:Image id="statusIcon" 
    toolTip="Network status"  
    horizontalAlign="right" 
    width="100%" 
    height="10" 
    verticalAlign="middle" 
    render="showNetworkStatusIcon()"/>
</mx:HBox>
You can add almost anything you like in there with this technique; animations, custom text etc. Here’s a quick screen grab of my basic custom status bar with its status light on green after a bit more tweaking of the layout and styling – nothing amazing, but its useful to be able to add your own elements when required (click to enlarge);

Status bar

September 18, 2008

Flex unit testing and continuous integration with FlexUnit, Ant and Selenium

Here’s a couple of really useful guides to setting up a continuous Flex testing and integration framework using FlexUnit, Ant and Selenium, written by my friend and ex-colleague Kieran at Black Pepper, and his colleague Julia. The articles cover setting up FlexUnit and Ant and then creating acceptance tests using FlashSelenium:


September 10, 2008

Flex IoC frameworks: which?

I need some Flex framework advice; I’m about to start a couple of new AIR projects, and decided that instead of using Cairngorm again it would be a good idea to try a different framework. There’s no particular reason to move away from Cairngorm – I’ve become reasonably comfortable with how it works and what it does, and I like it, but I’d also like to explore other approaches to Flex development. Last time I looked around there were a few alternatives, but in the few months since I posted that entry a number of new frameworks have appeared, and the amount of choice has increased considerably.

At first I thought I’d go for PureMVC – it seems like a popular framework in general, but around here our Java development is based on Spring, and I’d quite like to explore the dependency injection/IoC concepts at the core of Spring in a Flex app, to learn for myself how to apply such patterns in a context I’m familar with.

As far as I can tell, there are three IoC frameworks – Prana is a lightweight IoC container for PureMVC, Mate, which looks really well-thought out, with good documentation, and finally Swiz, which also looks interesting. I’m just not sure which will help me get into IoC as quickly as possible, coming from Cairngorm. I suspect I’ll go for PureMVC with Prana, but if anyone has any advice/insight it would be useful!


September 09, 2008

Silverlight to support H.264, AAC

Follow-up to <video> and Flash from [Ux]

Microsoft has announced that Silverlight will be supporting AAC audio and H.264 video. With regard to my previous entry about the video tag, this will make it even harder for Theora and can only consolidate H.264 as the current codec of choice. The announcement comes as no surprise to industry experts, but this move proves that MS is aggressively going after online video in a big way, but I’m not sure anyone really wins – based on browser/OS install base Silverlight may become more of a threat than the video tag would have been.

I’ve also been thinking a little more about Chrome – given that YouTube is part of Google it’s likely that when Chrome supports the video tag, the embedded codec(s) Google chooses could have a huge impact. Considering that H.264 is already being used on YouTube, perhaps that would be the default choice?


September 08, 2008

<video> and Flash

The availability of a Firefox 3.1 alpha (and Safari 3.1) with video tag support has prompted a few people to proclaim that Flash will soon be replaced as the primary medium for playing video on the web. I think predictions of Flash’s demise are both premature and inaccurate, and also think there’s a possibility that the introduction of the new tag could cause more problems than it was intended to solve. Why? – codecs…

Firefox (and Opera) will support one embedded codec in the first instance, Theora. Theora is completely open-source but based on an older-generation codec, On2 VP3. Flash currently uses VP6 and H.264, Quicktime Player supports H.264 and Silverlight adds support for VC-1, one of the newest kids on the video block. All are newer, higher-quality formats than Theora (typical comparison here). That’s not to say Theora is a bad codec, far from it, but in the world of video codecs it is at least a generation old, maybe more, and as such doesn’t represent the current best of breed in terms of video quality/performance.

Secondly, in order to take over from Flash, Theora needs to be on all or enough browsers to work as a standard. The HTML5 specification doesn’t advocate or recommend any codecs, and as the specification notes, this is problematic:

It would be helpful for interoperability if all browsers could support the same codecs. However, there are no known codecs that satisfy all the current players: we need a codec that is known to not require per-unit or per-distributor licensing, that is compatible with the open source development model, that is of sufficient quality as to be usable, and that is not an additional submarine patent risk for large companies. This is an ongoing issue and this section will be updated once more information is available.

So, if one browser advocates Theora, will every other browser follow? After all it’s a fairly trivial (and zero-licencing cost) thing to include support for it. Firefox and Opera combined currently have around 25-30% share of the browser market; while 30% (and growing) is an excellent starting point to build from, IE’s and Flash’s dominance in terms of installed base will make it difficult forTheora to overtake the current popular formats unless they support it too.

We’re not starting with a blank sheet of paper here either; many video services and sites that use video have spent a considerable amount of time and investment in encoding to a specific platform, one that is currently supported by enough browsers/platforms to make it worthwhile. At best a move to Theora would have to be transitional, and likely to take several years, as people migrate content over to the new format. IE is the most common browser by a considerable margin, and Microsoft has its own favoured formats; WMV via Windows Media Player and/or VC-1 via Silverlight, plus the formats supported by Flash Player. It’s hard to see these not being with us for a while yet, unless IE starts supporting Theora at the expense of Windows Media formats (unlikely); if Theora isn’t included in IE, it simply isn’t going to get traction as quickly as it needs to to become the standard. Similarly unless Webkit (as the core engine of Chrome and Safari) or YouTube also add native support for it (AFAIU latest Safari builds that support the video tag currently support Quicktime’s supported formats, which doesn’t include Theora as standard), it’s hard to see it taking over. While users will be able to add new codecs manually, assuming they will do so in order to view a new video format could be risky. Then there’s streaming support via RTSP/RTMP, etc.

My point is we are going to have to live with multiple formats whether we like it or not, and that Theora is a technically a backward step; it will only take one browser vendor to ignore Theora and it will become void as a standard, yet HTML5 isn’t forcing or even recommending a standard to follow. At this point video on the web will be in danger of becoming a mess as people find they don’t have the required codec and have to install support for it. I wouldn’t go as far as to suggest the video tag is going to create chaos where relative calm currently exists, but it might. I can’t see a good technical reason why the current model of using Flash as a wrapper for video and codec support is broken, or why it needs to be replaced with what may become a mess of format support where we move from two or three dominant formats to five, six or maybe more competing ones, plus multiple downloads for users. In my experience proprietary formats tend to be better, that’s why they cost, and neither do I buy into the ‘everything has to be open-source’ argument, especially considering that the dominant audio format is MP3, which isn’t an open-source format at all (even AAC codecs require patent licence).

Most importantly though, while all this takes place a solution already exists; Flash Player. It supports H.264, VP6 and Sorenson, most people already have it and it works on all the browsers mentioned above, across Windows, Linux and Mac. “But Flash is a terrible resource hog!” I hear you say, but when you consider that Flash is decoding and rendering video, in software, it’s worth noting that this takes CPU cycles and is a processor/memory intensive task. Even if you could run fully-hardware accelerated video (which Flash is moving towards), video is still relatively intensive work for the average desktop/laptop. In the first instance, Theora decoding in Firefox is going to run in software, just like Flash, and presumably consume CPU cycles in a similar way.

With all this in mind it would seem to me that the only reason for wanting to take Flash off its video pedestal is that it is owned by a commercial entity, ignoring the fact that Flash Player has been a key enabler and driver of the dramatic increase in use of video on the web, without any of the ‘payback’ people seem to fear. Without advocacy from W3C, the reality is that browsers are going to be free to implement their own choice of favoured codecs, but those choices are likely to be driven by different criteria, not necessarily whether they are open-source. It could be about to get messy.

Alternatively, we could all start using Mike Chambers’ workaround for getting Flash to display video wherever the video tag is used, and everyone could just carry on. ;-)


August 28, 2008

David Tucker's 10 common mistakes when building AIR applications

David Tucker recently posted an article on the Adobe Developer Centre citing 10 common mistakes with developing AIR applications and how to avoid them. I thought I’d quickly compare David’s points against my current AIR project, a remote file-system/transfer manager:

1. Making an application platform specific

David primarily refers here to the UI/UX differences between platforms, but I also found it essential because I encountered significant performance differences with some file system operations (icon getters, mostly), which were fixed with the help of the Flex Profiler. At the moment we can’t test it on the Linux Alpha, but hopefully we’ll be able to try that soon.

2. Not including update capability in an application

We included this as soon as the framework became available and it works very well – whenever the application starts it can check for a newer version of itself, and the user has control over whether to update or not.

3. Changing the application ID after an app has been released

Oops – I ran into this early on; changing the application ID means the update framework will break, amongst other things. Changing the name of your application halfway through the project also risks confusion.

4. Not planning for offline support

Our application relies on a live connection to work, but it does use AIR’s network monitoring APIs to check for a valid connection at startup and then continually monitor connection status, and warns the user if connectivity is lost.

5. Not thinking in AIR

I didn’t find this too difficult – some things were relevant and others weren’t. There have often been moments where I’ve discovered a capability and thought “I didn’t know it could do that”; we do use the application storage directory and the user’s temp directory for file transfers though, and the File , FileStream and FileReference classes were the key to making it work.

6. Using custom chrome to create confusing interfaces

We used the standard chrome, but most of the AIR applications I’ve seen that use custom chrome have done so pretty effectively. One of the most powerful aspects of AIR is that you have very fine control over the UI. As a counter to this though, in addition to the native window chrome there are valid use-cases for having access to native system controls, like toolbars, buttons etc. – platform UI differences can make this even more acute, so I’d like the ability to use standard UI elements where appropriate.

7. Not using the seamless install badge

We implemented this early on – having an install badge makes installation a snap for most people and like the update framework it works well – installation of the AIR runtime can be managed automatically and so far the whole thing has worked fine, except when I broke it myself by not updating the right fields in the updater XML file.

8. Not encrypting sensitive data

Not relevant for this application (yet) – we don’t store any information other than the last file-space used, using a standard SharedObject. AIR has an EncryptedLocalStore for this kind of thing though.

9. Not preserving native interaction

As yet we haven’t got a complete set of keyboard interactions in place (e.g. cut, copy and paste) but some are there. The core interaction type is dragging and dropping, and Flex/AIR gives you control over the process by splitting this action into discreet event-driven stages, so providing visual feedback about whether a drag/drop is allowed can be controlled via your own logic. Something I’ve not yet overcome is how to work with internal and external drag handling at the same time – I may be wrong here but so far it looks like the external drag management only knows about drag in/out operations at the application level, not at the component level, so I need to work on how to use the external drag management to allow items to be dragged into components with the same level of control as the internal drag manager.

A more difficult problem is when a standard component doesn’t quite mimic the operation of a native system control – take the Tree for instance, which will close when its DP is refreshed – in situations like these its nearly always possible to closely replicate the native behaviour by extending or over-riding the component default, but there can be some work involved when finding out what to do. At this point I’ll thank Peter Ent and the excellent Flex Examples Blog for their invaluable resources; they saved me a lot of time.

10. Assuming performance doesn’t matter outside of the browser

In this case, the performance issues highlighted when checking across platforms also highlighted the importance of using the Flex Profiler, the net result being a five-fold increase in speed on OSX and smaller but useful increases on Windows, plus reduced memory usage. The original performance on OSX was bad enough to almost make the application unusable, but after identifying and fixing/working around the problems, the application performs similarly in Windows and OSX.

Thanks to David for writing about what to avoid – fortunately most of them we’d already come across and fixed, so that’s good!


August 19, 2008

FlexCamp London, Aug 28th

Writing about web page http://www.flexcamp.co.uk/

I really want to go to Flex Camp London but I can’t, so I’ll plug it instead because the programme looks great, the event is free and maybe someone will send me a free t-shirt :-)


July 18, 2008

On Dialogue Boxes…

I’m currently writing a few dialogue and interaction menus for my current AIR project, and the thought had occurred to me that having established a reasonable methodology for handling and displaying modal dialogues within my Cairngorm-based app, I was perhaps using them almost by default, without thinking too carefully about whether a modal dialogue was the most appropriate means of interaction. By modal in this context we mean “A state of a dialogue that requires the user to interact with the dialogue before interacting with other parts of the application or with other applications”.

At the same time, Chris and I have been talking about metadata recently (another entry to come, but the premise was that persuading users to input metadata about assets is hard to incentivise). Related to that, Chris sent me this great link to an entry by Jeff Attwood that in turns talks about an entry by Eric Lippert on how dialogue boxes are perceived by users:

* Dialog boxes are modal. But users do not think of them as “modal”, they think of them as “preventing me from getting any work done until I get rid of them.”

  • Dialog boxes almost always go away when you click the leftmost or rightmost button.
  • Dialog boxes usually say “If you want to tech the tech, you need to tech the tech with the teching tech tech. Tech the tech? Yes / No”
  • If you press one of those buttons, something happens. If you press the other one, nothing happens. Very few users want nothing to happen—in the majority of cases, whatever happens is what the user wanted to happen. Only in rare cases does something bad happen.

In short, from a user perspective, dialog boxes are impediments to productivity which provide no information. It’s like giving shocks or food pellets to monkeys when they press buttons—primates very quickly learn what gives them the good stuff and avoids the bad.

I liked that, especially the bit about “Teching the tech” – while it’s quite funny it’s also a pretty accurate reflection of my experience as a user.

This is also related closely to what Chris and I were discussing about metadata; expecting the user to fill in information that has no obvious purpose and slows down the primary task of upload/publish or whatever it is that they are trying to do, is likely to be ignored. If those fields/dialogues are modal or conditional, it’s worth thinking carefully about whether there are alternative ways to complete the operation or gather the infomation. That’s harder to do of course, and there are cases where modal dialogues should be considered appropriate, e.g. where the application is about to do something destructive like deleting or overwriting a file, but there are alternatives, like how IE and Firefox avoid breaking the flow of interaction when blocking certain actions.


July 01, 2008

Flash SEO, Adobe manoeuvres

Kudos to Adobe, Google and Yahoo for creating the mechanism for Flash content to be indexed on search engines. With one or two reservations (like how to distinguish between application content and a site) I think this is another significant move towards maintaining the ubiquity of Flash. It seems as though Adobe is steadily, but impressively quickly, removing piece by piece the most-cited drawbacks of Flash. Some of the most significant announcements (in no particular order):

  • H.264 video support
  • Open-sourced Flex SDK, BlazeDS
  • Opened access to Flash Player APIs
  • 3D support (thanks to Papervision, Away3D etc.)

Obviously it doesn’t take a genius to work out that, in part, Adobe has had to make some of these moves – HTML5, advances in Javascript and browser technologies promise or already offer many features that up until now Flash had to itself; the canvas and video tags in HTML5, DHTML effects, processing.js, SproutCore, the list goes on – it was inevitable that some of Flash’s functionality would be adopted and integrated into other technologies, but I think that those people who still maintain that they ‘hate Flash’ should still agree that it has been a primary driver of change on the web. This is particularly true in three areas; animation, user experience and video. Flash may responsible in their eyes for evil banner ads and inaccessible sites/UIs, but those things are created by people, and a technology that provides a degree of creative freedom is open to abuse – there are plenty of bad DHTML sites around and more than a fair share of annoying DIV-based floating ads out there already, but there is also a great number of fantastic and successful experiments in user interface design, animation and application experience. Flash has enabled developers to do things on the web they could not have easily done by other means, and those people that attribute bad practice to Flash are both ignorant and in for shock if they believe the same things won’t happen when other technologies catch up. Up until now it’s been far too easy to blame Flash, when Flash isn’t the problem. Use it where it works, not where it doesn’t (like whole sites).

In addition to the technology itself, Adobe has provided the means to develop and deploy it effectively, with the Flex SDK and FlexBuilder. Personally I have no objection to proprietary technologies when they a) work, b) don’t break anything and c) positively drive change and allow people to do things that standards-based technologies often take much longer to enable (and often not quite as well). Flash and Flex won’t be the standard, they will peacefully co-exist with other technologies (along with man, and fish); a single unified standard just isn’t possible in a competitive world, nor is it always desirable. Someone has to innovate, and attacking Flash (or Apple come to to think of it) for being proprietary is like attacking Ferrari for making a better sportscar (and charging for it). If it enables you to go faster, better, and (similar to Java and JS) is on 90-something% of desktops, who can blame Adobe for adding features and functionality that will maintain or increase edge and adoption? And at the same time if it is making key components of its platforms open, regardless of motivation, it’s A Good Thing*. So long as the standards do catch up, it’s fine.

There is I think, one thing left to do at the moment, the final hurdle as I see it – accessibility. It’s kind of in there, but if Adobe could make Flash and Flex as accessible as a typical web page, or at least as easy to make accessible as a web page, it would remove the one last stick with which it gets beaten. In fact and to bring this full circle, the same mechanism by which search indexing now works may also prove the key to unlocking accessibility, so maybe that’s already possible?

*None of these arguments apply to Microsoft, especially the Ferrari analogy. Silverlight is neither better or faster.


June 02, 2008

Yahoo BrowserPlus and AIR

Writing about web page http://browserplus.yahoo.com/

Yahoo has entered the RIA domain with BrowserPlus, a technology that allows you to create functionality that bridges desktop and browser. Some reports I’ve seen say that BrowserPlus is a direct rival to AIR, but from what I’ve read on the Yahoo site I’d say it sits closer to the browser than the desktop, like Gears; applications are still browser-hosted, whereas AIR sits more evenly between the two (albeit with much stronger emphasis on applications being system-based), but I’m wondering how many more niches there are left to fill in the RIA paradigm. BrowserPlus does offer some genuinely useful capabilities that are similar to those offered by AIR, like file drag/drop and system tray capabilities so comparisons are inevitable and in some ways justified, but these are currently a limited subset. An area which I think does justify close comparison to AIR is the development ‘gateway’, simply because both technologies allow HTML/JS developers to create RIAs with their existing skill-set.

If it’s easy to detect the existence of the BrowserPlus runtime within a page, it could get some traction; on our own web applications I can see it being useful to provide users who have it installed some extra functionality, like dragging and dropping files to the browser, or page update notifications, but it would be important not to rely on it being there for core functionality, partly I think because it would be harder to persuade users to install something that isn’t so ‘tangible’ as an AIR or Webstart application. Security may also be a concern – AIR and Java applications need to be digitally signed whereas it’s not clear yet what Yahoo will do here. I guess though it will depend on how useful and ubiquitous applications built on BrowserPlus become, and Yahoo has some fairly prominent applications for it within its own portfolio (e.g. Flickr). AIR is fast approaching that stage I think – Ebay Desktop, Google Analytics AIR, Twhirl, Adobe Media Player and Snackr are now core applications for many people I know, and the new and rather lovely Acrobat.com suite (and not forgetting Aviary) will be a major driver for further adoption, especially if the the AIR version can be extended to include desktop versions of the applications. I’m sure Yahoo will have the detection aspect covered – in addition they have done something similar to JavaFX with an extensible runtime that can be added to without re-installation, so it’s really only a case of getting that important first-install.

One final thought – it seems to me that if you could combine BrowserPlus with Prism you would have something closer in concept to AIR, if not execution; a browser-based application that looks like a desktop application, with a desktop integration runtime on top.


May 15, 2008

Flash Player 10 ('Astro') pre–release on Adobe Labs

Writing about web page http://labs.adobe.com/technologies/flashplayer10/

A pre-release of Flash Player 10 is now out on Adobe Labs. Astro has a number of new features; P2P support, Speex voice codec (no more having to use ASAO!), dynamic streaming support and RTMFP, 3D, improved hardware acceleration and more sophisticated text control being the ones I’m most looking forward to.

The full feature list can be found here


May 01, 2008

Adobe Open Screen Project

Writing about web page http://www.adobe.com/openscreenproject/faq/index.html

Adobe announced the Open Screen Project today. The project will allow access to key Flash specifications (AMF, SWF, FLV etc.) and remove licencing restrictions on Flash and AIR for devices. The stated aims are:

-Removing restrictions on use of the SWF and FLV/F4V specifications
- Publishing the device porting layer APIs for Adobe Flash Player
- Publishing the Adobe Flash® Cast™ protocol and the AMF protocol for robust data services
- Removing licensing fees – making next major releases of Adobe Flash Player and Adobe AIR for devices free

Fantastic news – actually something that may have been lost in the noise here is that it seems like AIR is definitely coming to devices. Allowing access to the SWF specifications is a major step for Adobe. Kevin Lynch of Adobe describes the rationale behind OSP in this video.


April 21, 2008

Flash 9 webcam support in Linux

This is a bit annoying – we’d planned to use a number of EEE PCs with our Flash-based media streaming applications for a new kiosk-based project, and after some spectacularly unsuccessful tests today with an EEE PC and a range of webcams (including the built-in one) it seems that the problem is with Flash itself – it only supports VideoForLinux (V4L) and not the current V4L Level 2. V4L was removed from the Linux kernel way back in 2006 so I was surprised to find that V4L L2 isn’t there in Flash Player 9.

Apart from the EEE PC, this also discounts an number of other potential devices like the N800/810 and we’ll have to look at Windows UMPCs instead (which is likely to severely impact the budget), or alternatively install Windows on the EEEs (which is a hassle).

I agree with Aral – there’s an explosion of ultra-mobile, Linux-based devices out there now with webcams that could be used to enable video and audio-based communications and blogging, but at the moment we can’t lever them in Flash, and that’s a shame.


April 15, 2008

Cairngen

Writing about web page http://code.google.com/p/cairngen/

I wish I’d come across Cairngen a bit sooner, having recently just set up two Cairngorm-based AIR projects via cutting and pasting a skeleton Cairngorm project structure from Rob’s earlier examples.

Cairngen will set up a Cairngorm project structure for you (using Ant), and much more besides. For example it’s capable of auto-generating what are termed ‘sequences’, which are sets of event-command-delegate templates (plus other alternative combinations) that create the FrontController, ModelLocator and VOs required, plus all the relevant mappings and basic classes. The core templates can also be modified so that classes contain whatever boilerplate text you need. A little downtime now learning how to use Cairngen should save me work in future, and if I set up a basic project script anyone else using Flex/AIR here can should be able to get projects up and running more quickly.


April 09, 2008

AIRTour London liveblog

Writing about web page http://onair.adobe.com/schedule/cities/london.php

Just some live notes from the AIRTour London event today…

Andrew Shorten
Adobe – ‘disruptive technologies’
RIA platforms – AMP, Buzzword Connect, all built on Flex/AIR
Why AIR? – occasionally-connected opportunities, efficient development, richer interfaces.
Branding on desktop – clever clothing store that can match clothes to an image dragged

Kevin Hoyt – Building AIR apps with Javascript
Showing mapping app using Yahoo Maps API
Export map view as PNG by dragging – encodes PNG on the fly, drag map straight to desktop
Using notepad app to write an AIR app
Starts with bare HTML page
Point to XML application descriptor file – template comes with SDK
changed to point to HTML file
Running AIR from Terminal to test app – runs directly
Dreamweaver demo – extension for AIR available
Writing tags like input id=”foo” type=”button” value=”save”
then writes JS script that handles event, using DOM to grab object, then runs as AIR app
AIRIntrospector – similar to Firebug
Maps AIR namespace to JS, allows AIR APIs to be called: var stream = new air.FileStream(); direct in HTML.
Now showing Aptana as IDE fr AIR/JS dev – Aptana now supports AIR
Sandboxed environment to prevent scripting hacks, adds some limitations

Mike Downey – Lighthouse programme – looking for key apps to extend reach of AIR (e.g. EBay desktop) *
Kevin Hoyt – Integrating HTML, JS and AS*
Mixing SWFs using SWFObject – then drags an image from Webkit into his Flash app window, makes a table from the BMP that contains each px colour value(!)
Uses FileStream to re-render px values as image in other application window
Basically levering the WebKit engine in AIR to mix HTML, JS and Flash in the same desktop window and all can communicate with each other.

Serge Jespers
Deploying and updating AIR applications
Self-signed applications report identity as ‘unknown’ on AIR installer, when known ico turns green
Uses any signing mechanism, Thawte etc.
Export Release Build, import certificate
Install badge on Labs
CheckForUpdate() script, parses application descriptor file for current version, compares, prompts user to upgrade

Daniel Dura – AIR APIs
Network detection, File I/0, Window chrome
Multi-window, z-ordering, utility windows (no taskbar entry), Native menus, Drag/Drop from various sources, clipboard, System Tray, notifications, Signing, Icons
..and much more!
Windowing control is very rich
File Sync/Async APIs
SQLLite included
Lots of code on Daniel’s site
Can drag a URL into browser, browser opens
Network/Socket Monitor API – URLMonitor(URLRequest);
Dock notifications

Bah, Macbook batteries don’t last long…

Jeremy Baines – from concept to TechCrunch in 5 days
Developed Alert Thingy – AIR-based social network aggregator with alerts etc, in-application commenting on peoples blogs, actually some very useful features and a good example of using AIR.

Developing Secure AIR Applications (Oliver Goldman)
Imported/loaded content executes with the Loader sandbox – does not run with application privileges by default
Sandbox bridges – opt-in on both sides, arguments are pass-by-value, allow communications between loaded content and application
Can expose function calls, but can’t pass objects
Document.write(), eval() are prohibited to protect sandbox
Suggests only loading signed content – XMLSignatureValidator API available
Implementing update functionality makes urgent updates easy should you find a bug – make updating work first

Gah, batteries really gone now…that’s all for today – excellent day, ice-cold Coke, beer, games, short sessions, direct contact with Engineering team.