January 24, 2010

I had the opportunity to present a 4.5 hr lecture on Building Rich Internet Applications at ACM’s Compute 2010 today. We started out by defining what an RIA is and exploring the various RIA platforms available, we then further explored the Flash Platform in more detail, wrote some experimental code to understand the internals of Flash Player, looked at Flex 4 and its various new features and also spent some time understanding the Flex Component Lifecycle

Here’s the slide deck from beginning of the lecture which tries to define what an RIA is and explores the architecture a typical RIA platform …

 

December 3, 2009

Along with the Custom Components in Flex 4 presentation I shared yesterday, I also gave a 15 minute lightening talk at Adobe DevSummit on Keyboard Productivity in Flash Builder, this was just a quick show and tell where I walked people through various ways of what Jeff Atwood calls Going Commandoread more

December 1, 2009

I gave a presentation on Custom Components in Flex 4 at Adobe Devsummit last week in Chennai and today in Hyderabad, here’s the slidedeck where we create an Imperial StormTrooper component

November 28, 2009

I’ve been learning Erlang for the past few weeks and loving the simplicity and beauty of the language. As part of a discussion at SAP TechEd, last week, I ended up creating a simple, rather rudimentary prototype of a realtime messaging server that enables collaborative user interfaces where multiple users can simultaneously work with the same interface …

Here’s a video of the code in action …

As you watch the above video, note as I drag a rectangle in any one Flash application, its sends AMF encoded binary messages to the server and the server multicasts these messages to other connected clients and those clients update in almost realtime. While in the example above all the application instances are running on the same system, they could just as easily be running on different systems and still communicate via the server.

Here the code for the Erlang server …

0001 -module(server).
0002 -export([start/1,stop/0]).
0003 
0004 -define(TCP_OPTIONS,[binary,
0005                      {packet, 0},
0006                      {active, false},
0007                      {reuseaddr, true}]).
0008 
0009 start(Port) ->
0010 	 Pid = spawn(fun() -> manage([]) end),
0011     register(client_manager, Pid),
0012 	 {ok, Socket} = gen_tcp:listen(Port, ?TCP_OPTIONS),
0013     accept(Socket).
0014 
0015 stop() -> todo.
0016 
0017 accept(Socket) ->
0018   	 {ok, NewSocket} = gen_tcp:accept(Socket),
0019     spawn(fun() -> recieve(NewSocket) end),
0020     client_manager ! {connected, NewSocket},
0021     accept(Socket).
0022 
0023 recieve(Socket) ->
0024     case gen_tcp:recv(Socket, 0) of
0025         {ok, Data} ->
0026             client_manager ! {multicast,Socket,Data},
0027             recieve(Socket);
0028         {error, closed} ->
0029  		 client_manager ! {disconnect, Socket}
0030     end.
0031 
0032 manage(Sockets) ->
0033     receive
0034         {connected, Socket} ->
0035             NewSockets = [Socket | Sockets];
0036         {disconnected, Socket} ->
0037             NewSockets = lists:delete(Socket, Sockets);
0038         {multicast,Socket, Data} ->
0039             multicast(Socket, Sockets, Data),
0040             NewSockets = Sockets
0041     end,
0042     manage(NewSockets).
0043 
0044 multicast(FromSocket, ToSockets, Data) ->
0045     SendData = fun(Socket) -> gen_tcp:send(Socket, Data) end,
0046     Sockets = [ S || S <- ToSockets, S /= FromSocket],
0047     lists:foreach(SendData, Sockets).
September 8, 2009

James Governor of RedMonk yesterday kicked off an interesting discussion about the state of Enterprise User Interfaces, more specifically Enterprise Portals and points out …

“… That’s right- less painful for users. Products like IBM WebSphere Portal and SAP Netweaver Portal were supposed to bring much improved user interaction models to enterprise IT, but unfortunately traditional systems-focused IT departments, rather than user interaction specialists and their web brethren, did the work …”

James eludes to the crux of the problem in the above quote and Thomas Otter highlights it further in a comment saying …

I sense that most of the problems/challenges with enterprise UI are not just a tool challenge. It is a design thinking problem. Until design thinking permeates enterprise application development, UI will be a sore point.

Thomas is right, it is a design thinking problem, more precisely, the problem is that there are no design thinkers in most teams that build or customize enterprise software…. read more