Thursday, May 24, 2012

Organizations, social networks and quantum physics

Quantum physics came about not through a sense of logic, but because physicists were having results that they couldn't explain with Newtonian physics, but it was a struggle for them to try to understand what they were seeing.

For example, in an experiment where there are two slats and one photon (particle for light) goes through.  If both slats are open it will appear to be a wave, as it goes through both, but if only one slat is open it appears to be a particle.  If they have both slats open until just before the photon gets there, and they close one, it seems to know that and becomes a particle.

There is also the idea of what happens when two particles interact, and there is an idea what will happen, but based on the amount of energy present a different particle will come out, and a probability can be used to get an idea which one it may be.

This didn't make sense, but physicists have had decades to struggle with this, and to come to understanding about the fact that how we observe or measure will affect the results.

In organizations there is an idea that there is a rigid hierarchy, and the roles are well-defined, but, if we take some lessons from quantum physics then if we look at relationships between people, we can see that a person can have different roles based on the situation.  So, a person may be the leader of a project if she is the best person for that task, and later her role may change.  

But, just as observations and measurements affects the reality of quantum particles, how we see or what we measure in an organization can change how people act, or how we see that person.  So, if someone is seen as being someone that is a high-flyer any ideas they have may be seen in a better light, and someone that may actually be more competent may have ideas that are excellent, but because of the fact that he has long hair, he is seen differently and so the ideas are not taken seriously.

So, in an organization where people can change roles based on the situation it is important to be certain to not control from the top, but to have more of a participative form of management, where people are free to discuss their ideas.  A good chart on dialogue vs debate is: http://ncdd.org/rc/item/5394.

We come down to social networks now, which is really about trying to help people relate to each other, and much as an organization may want to look at relationships between people as more important, and allow the energy of dialogue to help with creative solutions, social networks seem to follow in the idea that there is a rigid sense of how to relate, where everyone in that social network should relate just to others in that network.  So, we have multiple networks, and there are concepts, such as OpenSocial (http://en.wikipedia.org/wiki/OpenSocial) that try to help bridge this, but, basically there is a great deal of lost opportunity where social networking groups don't try to find some way to allow these people to interact.

So, just as organizations may need to move to a more participative, social networks should look at trying to help people to find new ways to interact with each other, and stop looking at just trying to keep people just within that particular website.

Thursday, May 17, 2012

Developing an overall vision before requirements or use cases

The big-picture, or vision of where a program is going is vital if the desire is to build something that is going to have much complexity.

By working on a vision it helps to direct a company to see if they may want to adapt due to a developing vision.

So, for example, I am working on a learning management system framework that I have been mulling over for several years.  One requirement is that it should be accessible over a webpage, and be highly interactive, and accessible from native applications on mobile phones.

Now, these may be common requirements, but this is a basic sketch, and if you stop here and implement it later it will be realized that there is an architectural problem due to a lack of vision.

I am also working on an issues program that would be helpful with agile development, and fit well with the notion of Kanban, so developers can select features to implement based on time allotted and interests.  This will have the same basic requirements as the LMS.

So, I could write each of these, make them available, and they would be competing with many other programs.

But, what if I want to add a feature to the LMS where the program could suggest training or certifications that may be beneficial to the learner.  Now, out of the universe of available courses, how could this program know what to suggest.

A simple solution is to be able to tell it where you want to go to, and advisors or managers could also put in guidance as to where they may be going.  

So, if you are working in Human Resources, it may be that you want to go into recruiting, but management may see that you should be on the management track, so, it may be that both are entered as goals, and the system may show only the path the learner selected, but it would also look at the goal put in by management.

This would be helpful if there was defined milestones to go from one position to another, so it may be necessary to give some functionality where this could be designed.

Now, this extends the LMS, but there is also the issues program, and this could be useful for management to  allow self-organization.

A staffing company decides to provide software development services to, using their connections to independent developers, for the mobile market.

If the companies can describe the project, and put a dollar amount, then developers and designers could look at the wishlists, then pick which one they want to work on, and it could be that people could put their name on the task as being interested, and teams can come together to do this project.  So, it may be that two programmers, a UI expert and a technical writer may form a team, and they will create their own private issues setup where they can list the features so the team members can pick which parts they want to work on.

Now, where would this team come together to collaborate?  Why not use the LMS?

It has discussion boards and whiteboards, as well as a place to store documents, so, this virtual team could inhabit a virtual classroom to do their designs and show mockups.

There are many features available that can be explored, and the strengths of using mobile apps hasn't even been explored, but, by working on a vision it could be seen that this simple LMS may grow to not only be just a part, but a business may either evolve from this development, or, if a company is able to adapt they may spread themselves into new areas.

So, before starting on any project, ask what the vision is first, and see where this program may want to go.

Wednesday, May 9, 2012

An authentication system for mobile devices.

I was re-reading "Designing an Authentication Systems" (http://web.mit.edu/kerberos/dialogue.html), written in 1988, and though it was a great paper, and has influenced me heavily, there is another paper that had a deeper impact on my thoughts, "Programming Satan's Computer" (http://www.cl.cam.ac.uk/~rja14/Papers/satan.pdf), and, in this age of mobile devices, better authentication systems becomes more important, due to the increase in the number of smartphones.

So, I will be designing out my solution, using ideas from both of these papers, hopefully to show a system that is flexible enough for real use, secure enough for paranoid companies, and yet useful for the end-user.

So, my first thought is that I don't really want a central repository to know my password, so a secure one-way hash of my password is acceptable in this system, but, as we go on even this may become more secure, and it may involve a zero-knowledge password authentication system (http://ojs.pythonpapers.org/index.php/tppm/article/view/155/142), so we can convince a system that we have the password, without actually sharing the password.

So, the situation is that we have a smartphone, and we want to connect with various systems, and each system may have separate security requirements that the device is not aware of, but, the companies that manage the network decided that Eastern European hackers are great sysadmins, and North Korea is where some of the servers are located, so, this could be considered a hostile environment, but in spite of these issues we want our credit card information and passwords protected, and the companies we are using the services of, on the inside of their firewalls, want to ensure that only those that should be authorized can use the services.

I will deal with the problems of doing online voting using smartphones in a separate series of posts, as there are additional requirements and risks that need to be addressed.