Mobile Go is a client software running on mobile devices for board game Go碁 (Weiqi圍棋,围棋, Baduk바둑) servers including popular IGS, LGS, CWS and WING. You can observe or play game with it as long as your mobile device can access Internet. Mobile Go was designed to support most IGS and NNGS commands. Play Go on the go with Mobile Go.
Wednesday, 9 December 2009
Stop Working On Mobile Go
Bye.
Tuesday, 9 June 2009
About Game Protocol
Since EGGP is based on Go Text Protocol (GTP) version 2 draft 2, which is GNU open source, I will release EGGP under GNU later as well.
Rebuilding Server
Tuesday, 19 May 2009
Working On Protocol
- Character set - Unicode
- Encoding - in UTF8
- Transportation format - in XML, particularly in DOM
Friday, 15 May 2009
Let's Coding
My next steps will be:
- To implement a set of core classes that will be used for testing my design
- To develop application protocols that will be used for communication among different components. Game Protocol should be the first one due to the nature of my project.
- To build an environment that will allow me creating and testing my system.
I didn't realize that I was running an very old version of Red Hat Linux on two aged machines as my home servers until recently. It seems like I have to update my servers as well. There are enough work to do for now. Don't stop, just keep going. :)
Monday, 11 May 2009
Next Stop: JXTA - An Open Platform for P2P
While I was researching on different P2P technologies, JXTA came to my attention. "JXTA (Juxtapose) is an open source peer-to-peer protocol specification begun by Sun Microsystems in 2001. Sun remains actively involved in the development and promotion of JXTA. The JXTA protocols are defined as a set of XML messages which allow any device connected to a network to exchange messages and collaborate independently of the underlying network topology. JXTA is the most mature[citation needed] general purpose P2P framework currently available and was designed to allow a wide range of devices - PCs, mainframes, cell phones, PDAs - to communicate in a decentralized manner." (Quoted from Wikipedia http://en.wikipedia.org/wiki/JXTA)
JXTA is indeed language-independent. There are C/C++, J2SE and J2ME implementation available for now. JXTA is also platform-independent. It can be implemented on different OS platforms. Simply speaking, it is an open technology just like TCP/IP. It sounds perfect, doesn't it? I think it fits into my project because:
- It is an open and generic purpose P2P technology - It defines a set of protocols that developers can use to build almost any P2P application. At the same time, these protocols are flexible enough to be easily adapted to application-specific requirements.
- It is platform-independent - This is one of my project's goal.
- It is open sourced - Sweet and smile.
However, some concerns and uncertainties still exist.
- Is JXTA going to be improved over a long time?
- Is JXTA going to be surviving given that Sun will be purchased by Oracle?
I've checked JXTA's developers list and list of projects which are using JXTA. I didn't find one significant enough to attract public attention. Is it still too early to adopt an new technology as JXTA? I don't know. I'm not worry about Java, but I'm worry about those guys who are contributing to JXTA project. Without the major supporter Sun, is JXTA able to grow?
Any ways, I know what I'm going to do now. I was inspired by P2P technology. I have decided that my system should be easily integrated with P2P, or should not be tied to a single architecture, e.g. client/server technology, at least when it comes to design phase. A new design class diagram is done. An abstract network/message layer, which will be implemented according to actual underline network, was added. Hopefully this design is flexible enough to be implemented in the future.
Wednesday, 6 May 2009
P2P or C/S? It Is Not Just A Technical Consideration
I have been always thinking the architecture of new system should ideally not be pure Client/Server because of the concern that
- server's operating cost potentially will be very high, and
- it will be very hard to maintain servers with high volume of transactions
I have experienced the difficulties of accessing TOM servers when there were major events hosted on their servers. From what I observed, the maximum number of concurrent users in each server is about 2500 - 3000. I can not even connect to any of their four servers some times because they are all full load. I don't have similar experience with KGS or IGS, but from what KGS shows on their server's statistics page, I can tell the maximum number of concurrent users never exceeds 3000, besides the data traffic is huge (total data for the day of May-06-2009 is about 128GB). See the screen shot at the bottom for reference. I don't think it is easy to run such a system in the early stage before I can get financial support from outside source.
My colleague James introduced me to book P2P - Networking and Applications, 2009 by Elsevier Inc, ISBN: 978-0-12-374214-8. I have to say it is an excellent book. It not only answered me so many questions (theoretical and practical), but also directed me to a much brighter future. I feel it is even more fun to work on this project.
Sure my application is quite different from most popular P2P applications, which are mainly for file sharing or multimedia streaming. But from content delivery point of view, it does the very same thing that is delivering contents to as many receivers as possible by means of high efficiency and low cost. So it is interesting to find out:
- Is P2P applicable to my system?
- If it is, what complexity will be added to my system?
- What will be the impacts of using P2P model in my system from business perspective?
- Should I build it from scratch or based on third party platform if there is such a platform?
All above questions have to be clearly answered before I move on to next phase of project, which is Architecture Design.
Thursday, 30 April 2009
Meet GRASP. It Is Still Not Too Late
Wednesday, 29 April 2009
It's Fun Part
To be honest, I had to change my design many times while I was drawing SD and DCD because what I'm developing is not just a IGS client. There are many things that could be done in my project. I have to well plan for them. This project is actually a totally new system, not only from functional perspective but from technology point of view as well.
It's time to consider the system architecture now.
Tuesday, 14 April 2009
Finish First Domain Model
By the way, I went to Seattle and Portland with family for fourdays. It was a wonderful trip.
Wednesday, 8 April 2009
Complete Reading "Writting Effective Use Cases"
Now, it is time to move into design.
Tuesday, 7 April 2009
Is Palm Going To Win Programmers Back with WebOS
Tuesday, 31 March 2009
Prioritize Project
- Review Game
- Teach Game
- Play & Observe Game
- Manage Dispute and Arbitration, Manage Rating, Ranking and Reputation
- Manage Message, Manage Account
Friday, 27 March 2009
A New Home for Go and Myself
While I was working on the new version of Mobile Go, I ran into a situation that I feel I should do much more than just writing a Go client. I eventually ended up with a goal, which is to build a totally different Go Sever (or more accurate Go System). That's why I have a new blog here. It will witness not only the new project, but the daily thoughts and experiences that I have regarding Go and software development as well.
I have to learn many things that I had never learned before as a programmer. I started learning Unified Process (UP), Object Oriented Design (OOD). I borrowed books from library and read them day and night. Here are what I have read or am reading so far:
- Applying UML and Patterns - An Introduction to Object-Oriented Analysis and Design and Iterative Development (3rd)(2004), By Craig Larman, Addison Wesley, ISBN: 0-13-148906-2
- Writing Effective Use Cases (Book Draft) ,By Alistair Cockburn, in preparation for Addison-Wesley Longman, Q3 2000
- The Unified Modeling Language Reference Manual, Second Edition, By Jame Rumaugh, Ivar Jacobson and Grady Booch, Addison-Wesley, 2005, ISBN: 0-321-24562-8
They are excellent books. I wish I had three heads and six eyes to read them all soon.
In the mean while, I started working on the new project, which I don't have a firmed name for yet. Here are the artifacts I made so far.
- Vision
- User Story
- Glossary
- FURPS+
- Use Cases
I'm refining couple major use cases and investigating some fundamental technologies right now.
Friday, 6 March 2009
Work On Development Tools - Part Two: UMLet or Modeler
Mike Milinkovich pointed me to the Eclipse Modeler, which is part of an open source project called Amalgamation. This package is not small. It is about 78M. However, according to the project's web site, it is "A lightweight set of modeling technologies delivered as an Eclipse product that focuses on the needs of a modeling Practitioner; that is, it provides UML and BPMN diagramming capabilities."
The download and installation were both straightforward. Within a few minutes, I was able to create my own diagrams. The package comes with plenty of examples covering classes, components, activities, state machines, composite structures, deployments and use cases. Thank God for helping me to make decision of sticking with Eclipse. It couldn't be easier than using it's Eclipse plug-in. Thank you Mike. You save my time.
Let's go back to work.
Wednesday, 4 March 2009
Work On Development Tools - Part One: Eclipse or NetBeans
First of all, I need a UML tool to model my software. I used Visual Paradigm for UML (Community Edition/evaluation copy) to design Mobile Go for Palm. I want a integrated tool to do my work this time. So I searched Eclipse's plug-ins. OMG, there are so many plug-ins. Which one should I choose? What I need is a tool that allows me doing diagrams. I don't really need auto code generation, reverse engine or CVS. I want it be easy to use, don't need to take days to install, configure and learn.
So, where is my baby?
Thursday, 26 February 2009
Redesign Mobile Go Using New Design Pattern
Three years after Mobile Go was born, I now have a bigger picture for it. It will be running on much more diversified devices. It will be offering more features. Ultimately It will probably be offering services other than just playing and observing games, such as pushed news, IM, problem solving champion, etc.
Can Mobile Go achieve these goals? I don't know. But I know it won't be there if I'm not going to do something for it now. That's why I have to redesign Mobile Go. I have to do it from scratch. In order to make Mobile Go platform independent and functionality expandable, a new design pattern is needed. Yes, that is MVC (Model-View-Controller) design pattern.
Monday, 16 February 2009
J2ME - Mobile Go's Next Platform
Later, there came iPhone. I initially thought it might be a perfect platform for Mobile Go. Large screen, hight resolution, touch screen, multi task and 3G all make senses. However, I was wrong again. There is touch screen but no stylus support, fingers only. Don't forget we have to squeeze a 19 x 19 board in to the 3.5 inch wide screen. How can you place a stone on such a "LARGE" screen with your finger? Though I have figured out how to solve this issue, I was still not convinced to write a program for iPhone. Because the worse thing is that iPhone DOES NOT allow a third party application running on the background. It means if there is an incoming call while you are playing a game using Mobile Go for iPhone, the connection with Go server will be dropped and Mobile Go has to be terminated. Definitely, you are going to loose the game .
Another year passed. I was still looking for the right platform for Mobile Go until my wife got her BlackBerry Bold and I got my Sony Ericsson W910i recently. I didn't know Java platform can be powerful enough to drive BlackBerry to success. I learned most feature phones and a large number of smart phones support J2ME. BlackBery, Nokia's S40 & S60, Sony Ericsson's Java Platform all support J2Me. I believe many phones from other makers like Samsung, LG, Motolora and Lenovo, you name it, do support J2ME somewhat.
Why not give Java a try? I said to myself. So I began to setup a development environment last week. I downloaded and installed Eclipse, EclipseMe, BlackBerry's JDE for Eclipse plug-in, SonyEricsson's J2ME SDK, Nokia's S40 and S60 Java SDK. About a week later, I'm now able to build and run my first Java MIDlet "Hello World" on Sony Ericsson's both emulator and real device, and Nokia's S40/S60 emulators as well. Good start. I'll keep working on BlackBerry and build up my J2ME programming skills. There are a lot of things to learn, but it will be fun and I will make it.