A question for you

Inspirational 3 Comments »

What do you think, can this really happen in India?

Why doesn’t he deserve education?

Education 5 Comments »

Look at the confidence. Even if this boy has memorised all these, it’s not easy at all. Especially considering he picked those languages from tourists. Yes, why does’t this boy deserve education? (I don’t know what is the latest status of this kid though.)

What if: Computers were more than binary

What If No Comments »


Image Source: http://www.holorom.com

I know that many people have already thought if computers can work on more than a binary system. I had this question long time back in my mind, just remembered about it recently so thought to post it here. Only technology ( don’t know if it’s still theory ) that I know of and is related to this is Holographic Memory. It’s not exactly the answer but it’s the same idea, memory with more dimension than binary. I think many people believe that binary is quite efficient, but could there be more efficiency possible? I understand that there will be overwhelming changes involved in it, but think about the possibilities. Also we will have to rely on physical limits of analog devices to represent such signal which is more than just on/off switch.

The best part about binary system is that it is simple in its concept. So it will be easier to build complex system based on simple building blocks.

Anyway, with this post I would like to introduce a new section called “What If”. As it implies you can post any crazy, weird ideas in this section. Come on guys stretch your imagination.

Check this out

Animation, Art & Design No Comments »

http://hornetinc.com/viewmedia.php?id=2944&project=412

What do you think?

Programming Approach for Flash

Programming, Technology 2 Comments »

After working on two big applications in flash I have realized that with normal modular approach it’s not easy to manage thousands of lines of code. This is a nightmare if there are multiple programmers working on the same application. When I was working for a big project called Thunder, we had a really really tough time integrating the code from different programmers (Keep in mind that the flash application had more than 50K lines of code). At that time though Flash was not that grown up, I believe that we could have worked more on architecture design to make it more manageable. But the problem was as usual the crazy rush of finishing the product that made us take quick decisions which were not healthy enough for the application to make it easily manageable.

Here I want to talk about extendability and manageabiltiy in an interactive application that contains rich animated UI elements and also server side interactions (either streaming media or database access).

To me the main challenge is to make application highly flexible such that when I want to change a particular part of the application I can create another file and just plug it to the main application. I am following MVC pattern for my current project (because it was coded that way earlier), but I have come to realize that I need more than MVC for interactive applications, especially if you want highly customizable architecture. Though I should confess here that I am not at all expert in MVC pattern, but I do get the motive behind it. Here is how I think an application can be broken down. (just the rough ideas)

1. Visual Unit: This Module will basically represent the data. Similar to “View” Module in MVC. But this is broken down more into two parts.

  • UI : Just the graphics (loaded from external source)
  • Interactive: Code implementation of interaction with a UI element ( UI element is passed to this module )

2. Logical Unit : This module gets the visual data from View and processes it or gets data from server side and tells Visual module to update itself with given data.

3. Backend Unit : As it says, this will interact with any kind of backend, e.g. streaming server or a database.

This looks pretty much like MVC, but there more things that I want to add. Any application should be customizable by any developers without changing the core of the application. So any flash application has to have some level of customizablity. And when I say customizability I mean a developer should be able to plug different modules, either new or replacing the old ones without actually touching the main code. Here is an example,

-> Suppose I have a video player that has a volume bar that acts in a certain way. Now, a volume bar itself can be made flexible so it can have different orientation or different graphics. But what if I want to add different kinds of volume controls.

So there has to be a flexible architecture within application to be able to do it.So the idea to do that is load the whole component externally including necessary code and any other required data. It’s pretty much like Dynamic Link Library (dll) concept. But since flash does not have dll concept we have to rely on external movie clip loading to do this. So in a way we can create something similar where we can load code from external source and use it.

Here are few questions that came to my mind before continuing with the dll idea in flash.

  • How will a component talk to the main application
  • How will a component resize and fit into the layout
  • Does that component need external config file

To do this we will need to add new modules to the above architecure. Just to be modular I will post details of this implementation that I am working on in the next post. So stay tuned.

Another main issue to be addressed in rich interacrive application is synchronizing the events. There are cases where a particular function should be executed at the end of animation and not while the animation is going on. Or the UI should be updated only at the end of animation. So you have to synchronize UI with the data in two way data communication.

I am still discovering new things as I am learning new problems. I am not sure if I am reinventing the wheel, but for my ideas about extendability and manageability of code I think i need to work on this more.

Pixar - A Human Story of Computer Animation

Inspirational No Comments »

People behind one of the greatest animation studios. What I love the most is how technical and creative forces come together to tell good stories. This lecture is a talk about time before pixar was created and some early time of pixar animation studios.

Intel & Microsoft on Parallel Programming

News, Programming 3 Comments »

LINK

Dr. Randy Pausch — Acheving your childhood dreams

Inspirational 3 Comments »

The talk by the great man would definitely change your perception about life.

Very inspirational talk - The Last Lecture - by Carnegie Mellon Professor Randy Pausch

Creativity & Education

Education No Comments »

This is a great talk on creativity and education system. A must watch. Here are some of the notes of what he says and what I think.

In this video, Sir Ken Robinson talks about why we need to rethink our traditional education system. He says that there are some common issues in every education system. According to him industrialization is one of the core reasons for structural changes in public education systems. And I think that is why our education system is driven by what is more important for the industry than what is for children and future of mankind. Hence subjects like mathematics/science are at the top and arts and humanity at the bottom. Certainly not every field in education earns the same amount of income. But that does not mean that education should leave less earning but creative subjects out. Mathematics and science are very important, but I think arts and humanity is important as well. If it’s just all the brain we focus on what will happen to human values?

Sir Ken Robinson talks about how children are not afraid to make mistakes and as they grow they lose this ability. It is also a part of education system that creates this fear, snatching away the opportunities to foster creativity. He says that we should be prepared to be wrong and that’s the only way we can come up with original ideas.

We all know that every child is special and hence we should let children explore their own abilities and and let them do what they enjoy the most (of course not anything bad). Then there are trends in societies that parents think their children should be diverse so they send their children to learn music or painting even if they might not be as interested in them as in playing games. So what is important for parents and the education system is to provide a platform for children where they can not just learn subjects but explore them through creativity and find what they enjoy the most. And one thing is for sure that if you can do what you enjoy the most you will become really good at it.

Another good point he makes is that because of the way education systems work many talented, brilliant and creative people think they are not. And I think that is really sad.

understanding Design

Uncategorized 8 Comments »

DESIGN

Design to most of us is the beautification of objects/elements in the system around us.

Though this forms only a small part of whole definition the perception about design needs to change. It’s become so much a lingo in our everyday life that we unknowingly use this word.

“Arey ye chair ka design sahi hai !!!”

“Is web page ke design me color thik nahi”

“Is rangoli ka design (?) maine kiya hai”

Above are some of the common phrases you might have overhear/heard sometime in your life. Now read my comments on them.

“Chair ka design sahi hai but are you able to sit on it properly or is it poking your butt ???”

“Web page ka design ? are you able to find the required information even with that color ???”

“Rangoli is an art not design”

Well you must have inferred something from my comments. If not let me first put before you the definition of Design in my own language.

“Design is a process in which you try to make/modify something to which is aesthetically good, functions to ease the life of it’s users/non users and helps them to get their work done in effective/productive way.” You may find different definitions on web. It’s because there is no unanimous definition of it. You may find all of them relevant in their context, though different. Well this may sound similar to the software development life-cycle or product life-cycle, it varies majorly on the medium and effectiveness. Designers mostly follow a visual medium so that it’s easier for human brain to understand the intricacies better and produce effective solutions.

When I say design is a process, it follows a proper step by step methodology to arrive at the final solution, which we many a times consider as one shot result.

Research

Design starts with research and understanding the system and context of the solution/problem. It may also be called “data collection” stage. Many a times it happens that you don’t have a problem at hand, but you are given a system/domain which you need to study and figure out the location of breakdown. You need to study about that system first and then draw mind maps and bubble diagrams (peculiar to a designer, though engineers also like it they seldom use it). Several such mindmaps of the system are created and put side by side. Visual representation of the system helps human brain to understand it in a better way and it’s possible to make interconnections between different parts of it. These interconnections may not be visible otherwise. An example of mindmap is show below. The mind map is a result of brainstorming on activities and objects surrounding TV.

Apart from studying system you also study parallel products/market/business of it. Well this part may be quite optional it assumes an important role when working on large projects. You study how things happen in current scenario and may depict major breakdowns by a brief story board by scribbles. Keeping this aside for later reference helps a lot to align final design with goals.

Analysis

Once you have cracked down the system comes phase of ananlysis. With whatever data you have collected you try to see where the problem lies or if you already have problem at hand you see what parameters are causing the problem and analyze the reason for it. As a designer this is mostly done using sketches and doodles and whiteboard scraps (though this is not their legacy). All the analysis is presented in form of “Visual Representation“. Infographics/Information aesthetics is one of the commonly used term with us wherein we present data in a way that is simple and quick to understand and looks good too. Information aesthetics is a site that has huge collection of wonderful representations of data. Some quick examples can also be found at Smashing Magazine.

See how beautifully is the data represented. Had this been in figures it would have taken years to analyze and you would be scratching your head, unless you have a Beautiful Mind .

Design Intent

After analysis it may happen that you want to rephrase your focus/problem statement/domain. This is the time when you do so. And with this you also set some goals for your final product. The goals may be in terms of usability, aesthetics, market value, consumer base capture etc. At the end of any project (small/big) you crosscheck whether your final product meets these goals or not.

Concept Generation

The designer phase. With all those stages toured our minds would be filled with all the data of the system. Now comes the time when you feel free and jot down ideas pertaining the problem. Withough hindering the imagination with technology, economic feasibility and constraints you sketch down the concepts. However the problem and its system and relevance of the concept should always be kept in mind. The end result of this stage may be doodles and story board of how the concept is going to handle the situation at hand.

Design Evaluation

Rough paper prototypes of the concepts are prepared and taken to the actual users.  Paper prototype help reduce the cost and time that might go in wrong concept. This is an easy method in which you draw low fidelity screens (with minimal details) of your product, number them as if you have drawn each box in the flow diagram of you concept system on a big paper. If it’s a physical product say something like cellphone/keyboard you make a physical model of the concept with some details to it and again paper prototype to show the response of the system at different point of use.

You closely watch users using these protoypes and make notes of where they are finding it difficult. You may use your goals (set in Design Intent) to monitor their actions. This phase is not about asking users whether they like the product or not. The answer would be yes in most of the case. As a designer we should be able to tell what suits them best by examining their actions and expressions while using the product/system. At the end of this stage you may create a matrix listing all the parameters that you have judged your concept for and differnt concepts. The resulting figure will give you an idea as to which concept should be taken further and detailed. Some of the parameters that I use are User liking, Personal favorite, Ease of User, Speed of learning, technology feasibility, amount change in current system etc.

Detailing

Once the concept is finalized the concept is detailed. Now this stage itself comprises of several sub stages like information organization (s/w engg. call it object modelling), navigation model (state diagram/flow chart), interface detail (button placement etc.). Hmmm this seems to be pretty close to what we have learnt in Software Engineering. Remember UML? Yeah, it’s almost the same except that all this is done keeping user in mind and not the system. Hence there is clear distinction between software engineer who cares about the software/product and a designer who cares for user first and then the software. This is an iterative process wherein at each stage of proto completion you go to the users take feedback, evaluate and come back. The duration actually depends on you and project timeline.

Though there doesn’t seem to be any end stage of the product except it’s final delivery for a designer it still continues wherein he/she studies the behavioural pattern of the usage of system and suggest necessary changes. This may also result in writing guidelines for such projects.

So here I finish looooooooong first informative post about Design. I have tried to keep is as short and simple and in the course may have missed many parts of it. The details will be taken care in posts later.

Till then happy designing.