Also, physical location doesn't matter that much. See if you can hold code reviews, look at other people's code, talk to other respected developers in your team. That will help.
HN user
madhan
I think the fact that you are motivated to learn by yourself counts a bit. If you have passion, you can make up for other stuff.
The other way is maybe to get into open source dev. You will interact with a lot of folks.
I used to work where I would get skewered for misplacing the ; or about the formatting of my comments. After surviving that, I think I can survive anywhere.
In addition I would say, work where your code actually gets code reviewed. (is that a dying practice?) You will write better code.
I agree with you. Usually when you work with great programmers, you will be exposed to great code as well.
But sometimes, I have also seen that even when exposed to great code, it might not be evident to someone that it is truly great, without the accompanying commentary by a programmer on why it is great.
We are readying the SDK now for public release in a couple of months. But if you are interested, we can work to get you a private build. Please let us know.
Actually, we don't base the synchronization system on the fileystem. It is based on concept of records in a virtual store. A record is a 'syncable' entity. For example, a task in a Workspace is a record, a file can be a record and so on.
There is no single authority for a record. It depends upon what the sync settings are. Say you have a record that two people simultaneously modified, when the sync happens, the conflict gets resolved based on the setting, which for instance can the last change wins or the originator wins etc.
Think of Workspace more similar to how Groove works rather than a shared filesystem.
The Tonido Domain Server (TDS) basically implements a distributed login and authority system. As you said, it basically stores a pretty name->Crypto key that can validate a particular peer and help verify the identity in case another peer is interested.
The identity server's job is to provide Dynamic DNS function so URLs are resolved as well as to handshake connections between peers. The TDS is distributed in a sense that you can run your own TDS with your identity domain(say mindslight.com) if you want to. Your Tonido ID will be then me@mindslight.com. There is no central system. As long as they all talk the same simple protocol everything can interoperate.
What we are really hoping to get to is to the point where more TDS exist and people simply choose which one they want to create an ID on, like email addresses.
We need to write some more on this in our blog, but these days 24 hours doesn't seem to be enough. :-)
Here's an introduction to the Tonido Platform: http://www.tonido.com/what_tonido_platform.html
Here's a more in-depth look http://www.codelathe.com/blog/index.php/2009/02/05/tonido-pl...
Thanks for your input. It is early days and we are trying to make sense of the direction of how and where we want to take it.
One distributed P2P problem we solved is the synchronization of data. Imagine N peers operating on data, adding, modifying, deleting... offline or online and then they synchronize this with each other. This all works seamlessly in the Tonido Platform. We have API that can be used by any applications to use this in their apps.
Tonido Workspace uses this stuff to make it work. It is one giant workspace that people each have their own copy and work on when they want. And everything gets synced. Tasks, Calendars, Chat, Discussion Forums, Contacts, Files. You are finally free from servers to babysit interactions.
Similarly, Tonido Photos uses the sync API in a simpler way to synchronize photo comments, ratings, tags among Tonido Group members.
C++ is in itself just a tool. Some of the choices in programming involve using the right tools for the right job. If all you are need is a quick and dirty app to do something quickly, using C++, or even Java, it is like pulling out the bazooka to swat a fly.
Not many apps these days need C++. You can do many things without it. But C++ is needed for certain situations and there is no getting around it..it could be requirements on speed, size, performance and sometimes even portability.
Cloud computing is not the panacea for all problems and that is why we built Tonido that bridges the Web and the Desktop. Tonido allows you run Personal Web applications on your desktop, but at the same allowing you access from anywhere. [http://www.tonido.com]