Java Task pentru stagiul TWIP

Posted May 24, 2009 by Bogdan
Categories: Uncategorized

Pentru cei interesati de un stagiu in cadrul proiectului nostru: mai jos gasiti task-ul in Java vrem ca voi sa-l rezolvati cat mai repede. Trimite-ti solutia voastra arhivata pe mail la

ninthprime [at] gmail [dot] com

Ar fi OK sa ne trimiteti solutiile pana maine (luni), seara, la bine-cunoscuta ora 23.55.


What?

Ideea Ninth Prime de colaborare fara efort uzeaza de componente Swing sensibile la update-uri atat din partea utilizatorului, cat si din partea colaboratorilor. 

Astfel, se doreste crearea unui client miniTWIP.

Client reprezinta o simpla aplicatie SWING, ce afiseaza o forma geometrica (la alegere) si ii modifica pozitia pe ecran in functie de anumite update-uri.

Interfata grafica dispune de un whiteboard (unde se afiseaza desenul) si de un controlboard (o componenta care accepta text, ex: JTextField , JTextArea).

Why 

Utilizatorul doreste urmatoarele update-uri: 

1.
 La introducerea in controlBoard a unor noi coordonate pentru forma geometrica, sa se faca update pe whiteboard (respectiv afisarea componentei la noile coordonate introduse)

2. Clientul se conecteaza la serverul miniTWIP  (sursa pentru server o gasiti aici) si ii trimite (o singura data) dimensiunea ferestrei (sub forma unui obiect java.awt.Dimension).
    Serverul va trimite, timp de 20 secunde, alte noi coordonate (sub forma java.awt.Dimension). Se doreste un update pe whiteBoard, la fiecare noi coordonate primite de la server.

Aceste 2 update-uri se vor face in paralel.

How?
 
java network tutorial
how to Swing
how to not crash

What for?

Dorim sa va facem o introducere in procesarea componentelor grafice Swing, fiind unul din task-urile primare in cadrul proiectului TWIP.

Other

- fereastra nu isi poate schimba dimensiunile (non-resizable)
- serverul miniTWIP accepta o singura conexiune pe portul 12345. Dupa expirarea celor 20 secunde, serverul inchide conexiunea.
- modalitatea de introducere a coordonatelor in controlBoard este la alegerea fiecaruia

Către potenţiali colaboratori …

Posted May 22, 2009 by Bogdan
Categories: Uncategorized

Aşteptăm să ne trimiteţi ideile voastre de aplicaţii colaborative până duminică, 24 mai, ora 23:55

Salut !

Eu sunt Bogdan şi împreună cu colegul meu, Cristian, am început să ne gândim cât de vaste ar deveni posibilităţile de colaborare dacă aplicaţiile cu care suntem obişnuiţi ar fi distribuite, iar conţinutul editat de ele ar fi sincronizat aproape în timp real. Aşa a luat naştere proiectul TWIP (Team Work Interactive Platform) şi Ninth Prime Technologies.  Am conceput un protocol de sincronizare (TWIP Framework) bazat pe evenimente cu ordine strictă, care ar permite mai multor utilizatori să lucreze concomitent pe acelaşi conţinutul.

Pentru experienţa end-user-ului însă detaliile tehnice nu contează prea mult. Pentru el contează aplicaţiile: cât de utile şi interesante sunt. Şi aici avem nevoie de ajutorul vostru.

Vrem să vă angajăm să lucraţi la aplicaţiile concepute de voi. Vrem să vă plătim ca să realizaţi ideile voastre de aplicaţie pe Framework-ul colaborativ al TWIP. Aşa că două lucruri sunt foarte importante:

 

  • Cât de familiarizaţi sunteţi cu Java şi SWING ?
  • Ce aplicaţie aţi vrea voi să construiţi cu aceste unelte ?

 

Nu vă gândiţi la lucruri complicate. Rezumaţi-vă la ce aţi putea realiza voi în 2-3 luni, pe timpul verii. Şi ţineţi cont că utilitarele pe care le veţi concepe vor beneficia de paradigma colaborativă.

Aşa că aşteptăm ideile voastre de aplicaţii cât de curând. Conceptul e cel mai important, dar simţiţi-vă liberi să intraţi în detalii tehnice. Dacă nu aveţi idei pentru aplicaţia la care aţi vrea să lucraţi, dar vă atrage proiectul nostru – nu e nicio problemă: scrieţi-ne şi vă vom împărtăşi noi ideile noastre.  Ne gândim doar că aţi lucra cu mai multă plăcere, entuziasm şi uşurinţă la ceva ce alegeţi chiar voi.

Duminică, 24 mai, ora 23:55, vă vom trimite şi un mic task în Java, pe baza căruia vom putea stabili şi nivelul vostru de experienţă cu Java şi SWING.

Ne gasiti pe mail la ninthprime [at] gmail [dot] com

Ţinem legătura !

 

Toate cele bune,

Echipa Ninth Prime.

Stagii si job-uri la Ninth Prime

Posted May 17, 2009 by Bogdan
Categories: Uncategorized

Daca sunt interesati de un stagiu / job la start-up nostru, spuneti-ne ce aplicatie colaborativa ati vrea voi sa dezvoltati in Java + SWING, folosind Framework-ul TWIP. Apreciem foarte mult creativitatea si suntem convinsi ca ati lucra mai cu mai multa usurinta si placere la ceva ales chiar de voi.

Pe de alta parte, daca nu va trece nicio idee de aplicatie colaborativa prin minte acum, dar va atrage proiectul nostru, scrieti-ne oricum si va dam noi idei.

Ne gasiti la…

ninthprime [at] gmail [dot] com

Ulterior, va vom contacta noi pentru a vedea cat de bine stati cu Java si SWING.

Asteptam ideile voastre :D

This summer – we’re hiring

Posted May 9, 2009 by Bogdan
Categories: Uncategorized

It’s been a while since we’ve updated you on TWIP – cause there was a lot going on here, behind the scenes. But here’s the thing: this summer, our start-up company is hiring developers. We want enthusiatic people who are keen on developing their own apps in Java, using the TWIP collaborative Framework.

So you’re tired of employers giving you absolutely no space for creativity in software development ? Well then, come over to our side – cause we do appreciate creativity.

You do need solid knowledge of Java SE. And you must be keen to really make a change.

We would really appreciate if you:

- know your way around SWING

- have some knowledge of threads, sockets and/or NIO

- have a good command of English

- know what application you’d like to work on

Here’s how this works: you come up with a cool, viabile idea for an application which could be drafted in 3-4 months. You prove you have the knowledge and the determination to do it.

You get: working with a young team on a new, bold project. You get to learn interesting stuff in the process. Your ideas and feedback will be appreciated. You get paid (let’s not forget that). If you do a good job and you like it, our team gets a new member on the long run.

Sign up here. Interviews will begin soon.

… and one more thing we promise: the interview won’t be any of that boring stuff regarding where do you see yourself in 5 years.

The battle for the Client-side

Posted March 10, 2009 by Bogdan
Categories: Concepts, Tech

Tags: , , , , , , ,

[ A bit of TWIP's technical side, behind the scene ]

TWIP is going to be more than just a bunch of collaborative apps. It will also be the protocol behind those apps, that we plan to make available to other developers as well. So we started thinking about how we could make this protocol compatible with as many technologies as possible.

Java is what we’re working on right now. Dot Net is not too far. But then we thought: let’s make the TWIP protocol available for JavaScript and GWT. The GWT/JS trend is taking over the client-sided Internet one day at the time, so why not make a TWIP API for it? And it can be done…

… but there is a catch.

JavaScript can’t work with sockets. It can only work with (XML) requests.  JS can’t keep a connection open and wait for the server to send incoming messages from other users. Rather, the client must periodically send requests for updates and wait for the server to provide them. Although this isn’t a major drawback, it is a inconvenience, since any protocol working exclusively with request isn’t exactly real-time. And this is one of the reasons Google Docs and other collaborative platforms out there have trouble with guaranteeing true synchronization.

So here’s the deal… First, the TWIP API will be Java – that’s for sure. Next we’ll consider writing a Dot Net API. And last, but must definitely not least – GWT and JavaScript – with the XMLRequest-oriented protocol. What we aim for is making these APIs interoperable with the TWIP server, so third-party developers can easily develop their collaborative apps in whatever fashion they see fit. We’ll leave it up to them to decide if on the client-side they go for the robust connection-oriented approach (in Java, JavaFX or Dot Net) or for the light-weight, flexible XML request based approach (in JavaScript and GWT).

So what do you think ?

TWIP in the news :)

Posted January 24, 2009 by Bogdan
Categories: Events

Tags: ,

The Team

Posted January 22, 2009 by Cristian
Categories: Pure Business, Uncategorized

We are Ninth Prime Technologies: Bogdan Bocse & Cristian Andreica

Cristi & Bogdan @ netcamp 2008

 [ poza realizata de Alex Brie la NetCamp]

Ok. Cristi here. Adventure started a few weeks before NetCamp. We met strangly at a bus station(knowing each other faces from some physics class in university), and started talking about different software projects. Simple as easy, Bogdan told me about TWIP, and how we can make users collaborate entirely, with no restrictions imposed whatsoever , inside one framework.

After a while, we skimmed a few basic ideas, focusing entirely on collaboration. As we are both tech guys, tons of ideas immediately  showed up, and we both shaked hands friendly…TWIP must become reality.

This is the team!

Green or Blue ?

Posted January 22, 2009 by Bogdan
Categories: Brain DUMP, Concepts

We need your opinion for the color of our logo.

Should it be green ?

 

 

9th Prime [Green]

9th Prime [Green

…or blue ?

 

 

 

9th Prime [Blue]

9th Prime [Blue

We’d really appreciate your suggestions.

TWIP has Twitter

Posted January 22, 2009 by Bogdan
Categories: Events

Tags: , , , ,

Now you can follow TWIP and Ninth Prime Technologies on Twitter

http://twitter.com/9thprime

Do so tomorrow afternoon, after 3 PM ;)

The TWIP Concept

Posted December 26, 2008 by Bogdan
Categories: Concepts, Tech

Tags: , , , , , , , , , ,

The most essential part of TWIP is the real time collaboration. Everybody should see what everybody else is doing in a a split second. In order for that ho happen, you need a server. A central authority. A point with which all users synchronise.

Most of all, you need that to preserve coherence. Another big word, right ? Coherence means that all users do the operations in exactly the same order. Let’s say user A draws a red line and sends a message to user B (so B can have it drawn as well). User B, less than a second after, draws a green line on top of the red line. Now, without preserving coherence, user A will see the green line underneath the red line and user B will see the green line above the red line. This would happen because each user would get the message from the other user with a certain delay. And we wouldn’t fix that, the whole collaboration thing would suck, as we’d have no way of knowing that the same data is available on all computers. Fortunately, we have a way to fix that and this is done by a server, a  central authority. Think of it as a commander who keeps the privates in attack formation. The thing for you to remember right know is coherence, as being essential.

Next there is the question of extensibility, scalability. Let’s say we fix this whole coherent method of synchronisation. A text editor. Or a picture editor. Or for a piece of software for editing programming code or 3D models. We’ll put a lot of work into the sync engine and into the application itself, but what about all the other apps ? So we thought it’d be waaaay cooler to have this synchronisation engine avaialable onto which we could build. Or anyone else for that matter. There would be no point in our trying to develop all these collaborative apps, when there are a of really intricate, exciting pieces of software available. All they need is the collaboration scheme.

So this is how we thought about the Framework. Basically, this would be the synchronisation engine onto which to build. Think of it like a programming interface or an API. Regardless (almost regardless) of application a few simple rules should be respected and the collaboration would come right in !

Then, we thought we’d do everything in Java, so it would be portable on any OS, both on the client side and on the server side. This even opens the perspective of making a mobile version of TWIP, but let’s no get ahead of ourselves.

Java opens more doors for our project. Like the transparent application distribution. This means that all the apps are stored on the server-side, and when a users wants a new app, it automatically downloads and plugs in together with all the TWIP resources on the client system.

As far as the server is concerned, it has four major roles:

  1. Handling the real-time synchronisation (keeping the client apps in line, as previously discussed)
  2. Storing an online version of the data (so users can have access to only one resource, instead of keeping individual copies on their computer)
  3. Managing users and users rights.
  4. Managing the apps stored online and making them available to users.

Look at the diagram below to get a better picture of the whole relationship between the clients and the server:

TWIP Client-Server Overview

TWIP Client-Server Overview

On the server-side, synchronisation also means the server must keep an updated version of all the data. So the server must constantly read the messages received from clients and change the stored data accordingly.

Right now, I and my team-mate, Cristi, are working on the Framework and on the synchronsation schemes.

What would be really useful to us would be having your feedback. Tell us how collaboration would work for you. Tell us what you need and what you’d think is cool as far as team work is concerned.

Give us the top three applications you would use in a collaborative fashion, with your friends. Ask your friends. Leave a comment or two :)