Tuesday, 5 February 2013

Introducing UNIWEBGO

UNIWEBGO (uniwebgo.com) is a blogging platform designed for Go enthusiasts. It allows you uploading, editing, managing and replaying games, or more interestingly, sharing them by embedding them into a post. UNIWEBGO has following features:

  1. No software installation required. It only needs a web browser. 
  2. An unique system that makes it easy to navigate within a game. Variations displayed as hyper links. 
  3. An unique mechanism that displays comments intuitively. Comments keep synchronized with actual game progress that is being displayed on the board. 
  4. Group-based access control. Bloggers control which part of contents (text and games included) can be read/viewed, or a published game can be downloaded or only viewed on-line based on granted groups. 
  5. A Game can be embed into third-party web pages or blogs(See example:My previous post http://supportmobilego.blogspot.com/2011/07/test.html). 
  6. Multilingual blogs supported. Bloggers can easily publish their posts in different languages, readers can easily read in their desire language. Localized administrator’s dashboards are also provided. 
  7. There are more. Just try it out and you will be surprised and spoiled.

Friday, 15 July 2011

Demo

Here is a demo that actually links to my Go blogging server uniwebgo.com

吴清源《人生十八局》之17 岩本·吴十番棋

Friday, 15 April 2011

Conceptual UI for A Web Go Player

  1. HTML-enabled comment view:
  2. On-fly-placement:
  3. Long-tail variation list and comment:
  4. Variations shown side-by-side in different windows:

Tuesday, 1 March 2011

Study of Navigation in Reviewing A Go Game

Use case 1

Id: UC01
Name: Level 0
Scenario: There is no variation at all. There are only comments, marks and labels.
Scope: Original or light commentary games
Commands required:
Basic navigation commands

  • Next move - NM
  • Previous move - PM
  • End of game - EG
  • Beginning of game - BG
  • Fast forward - FF
  • Fast rewind - FW
  • Go to arbitrary move - GM

Use case 2

Id: UC02
Name: Level 1
Scenario: There are variations on main path. There is no variation on variations.
Scope: Most commentary games
Commands required: Basic navigation commands plus following commands (Variation Commands):

  • Next variation - NV
  • Previous variation - PV
  • Back to nearest fork of variations- BF
  • Go to arbitrary variation - GV

Notes on command: Suppose the game tree looks like
A – B – C – D
––B’– C’– D’
––B”– C”–D”

  • NV can be applied from node {A, B, C, D} to node B’, or it can be applied from node {B’, C’, D’} to node B”;
  • PV can be applied from node {B”, C”, D”} to node B’, or it can be applied from node {B’, C’, D’} to node B;
  • BF can be applied from node {B, C, D, B’, C’, D’, B”, C”, D”} to node A

Use case 3

Id: UC03
Name: Level 2
Scenario: There are variations on variation.
Scope: Joseki(定式), death and live
Commands required: Basic navigation commands, Variation commands

Use case 4
Id
: UC04
Name: Level +
Scenario: There are comments that reference an arbitrary node in either main path or variations
Scope: Joseki or heavily commentary games
Commands required: Basic navigation commands, Variation commands and following Node referencing command

  • Go to arbitrary node – GN
  • Previous node – PN: It goes back to the node where a “Go to …” command executed.
  • Next node – NN: It is the opposite command of PN from the history of navigation point of view. It goes forward through navigation history.

Explain: Suppose the navigation history looks like
A – B – C, from oldest to newest

  • If we are currently at node B, NN takes us to node C and PN takes us to node A;
  • If we are current at node C, NN does nothing and PN takes us to node B;
  • If we are current at node A, NN takes us to node B and PN does nothing.

Friday, 14 January 2011

Mobile Go Revived

Mobile Go revived since New Year 2011. I've found a partner to work on this project with me. However, this time it will be focusing on building a system that provides the best user experience of sharing fun of Go.

Enthusiasts' voices should never be ignored. Stay tuned.

Wednesday, 9 December 2009

Stop Working On Mobile Go

It's time to say good bye to my Mobile Go users. I'm not going to work on this project because I am tired of so many smartphone OS. I have decided not spending time on working for any of them. I simply just want to enjoy my life. Hope all Mobile Go users still enjoy playing Go.
Bye.

Tuesday, 9 June 2009

About Game Protocol

I called the game protocol Evolutionary Generic Game Protocol (EGGP). I like the name EGG because egg is my son's favourite food. I just use EGGP as the protocol's name for now. EGGP is heavily relied on XML, so an XML parser and XML editor is necessary to my development environment.

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

I have actually finished drafting the game protocol since two weeks ago. However, I was busy on setting up virtual machine and migrating my web server to the virtual machine. I have to do so because my web server is so old (It was build with Intel P3 1n 2001). I'm worry that I have to rebuild the whole system if hardware fails because I don't think it's easy to find an identical hardware now. I tried restoring from backup with various hardware configurations that I have right now, but none of them worked. Eventually I gave up restoring. It is easier to rebuild whole system. Due to the fact that my web server can only run on older Linux distribution (actually on Python2.1), I have to stick with RedHat8.0. This is why I have to host my server on a virtual machine.

Tuesday, 19 May 2009

Working On Protocol

I'm working on the core go protocol. I'm inspired by Go Text Protocol (GTP) version 2 even though GTP is mainly used for computer to computer comunication. There are few issues need to address:
  • Character set - Unicode
  • Encoding - in UTF8
  • Transportation format - in XML, particularly in DOM

Friday, 15 May 2009

Let's Coding

Finally, it comes to the most exciting phase - coding. I'm going to implement the basic services (Game and Message) on PCs with J2SE, the management services (Account, Billing, Feedback, Rating and Ranking, etc.) on servers with J2EE or JSP, and eventually the basic services on mobile phones with J2ME. The primary programing language will be Java, which I have never ever written an application with. I believe it will be a very very interesting experience.

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

  1. server's operating cost potentially will be very high, and
  2. 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:

  1. Is P2P applicable to my system?
  2. If it is, what complexity will be added to my system?
  3. What will be the impacts of using P2P model in my system from business perspective?
  4. 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

I kept reading on Craig's Apply UML and Patterns and came to Chapter 17 - GRASP: Designing Objects with Responsibilities. This is a very important chapter. I'm lucky that I was caught by it in the right time, just before I was otherwise going too far. I thought I should start working on System Architecture design. I now know I have to carefully assign responsibilities to objects in the first place before I move on. It's worth to pause the development progress for a little while, hopefully for a better result.

Wednesday, 29 April 2009

It's Fun Part

OK. It comes to fun part now. I've finished Sequence Diagram and Design Class Diagram using UMLet. I have to use UMLet instead of Modeler because there is not a Sequence Diagram tool in my current version of Modeler, and I don't want to spent too much time on seeking and configuring newer version. UMLet works just fine as a UML drawing tool. So be it.

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

After coming back from vacation, I finished the first domain model using class diagrams today. I basically followed the guidelines that combine both book of Applying UML and Patterns and UML 2.0 in a Nutshell.

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"

Done. I finally complete reading the book Writing Effective Use Cases (draft). This is a excellent book indeed. I started writing and modifying my use cases following the guideline described by Alistair Cockburn, the author of this book. I feel like a student following the teacher's instructions to achieve the learning goal step by step. How wonderful the learning experiences are!

Now, it is time to move into design.

Tuesday, 7 April 2009

Is Palm Going To Win Programmers Back with WebOS

Palm announced an early access program for developers to test-drive and provide feedback on the their Mojo SDK prior to its public release last week. According to what Mitch Allen described in his new book Palm webOS (O'Reilly, 2009), it seems like WebOS is a very interesting mobile platform. It provides multi-task (background application) capability that iPhone lacks, flexible notification system (Popup and Banner vs. iPhone's Popup only), and rich services (native on-device services and cloud services). I think supporting cloud services makes a lot sense. Because it not only widens the application rang that a mobile device can be used for, but also makes the mobile development far more easier. However, how all of these promises are going to work in reality? Is Palm able to deliver what they have promised? Is Palm going to win programmers back? Let's see.

Tuesday, 31 March 2009

Prioritize Project

After a week of writing use cases, I had much more clear picture of my project. I decided to prioritize project as following:
  1. Review Game
  2. Teach Game
  3. Play & Observe Game
  4. Manage Dispute and Arbitration, Manage Rating, Ranking and Reputation
  5. Manage Message, Manage Account
I plan two (maybe more) weeks on designing first feature and then move on to the others. In the mean while, I probably need to investigate how peer-to-peer technology is going to benefit my project.

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

Before reading Mike's comment on my previous post, I was playing around with UMLet, an open source Java application that also has Eclipse plug-in. I thought UMLet was an execllent tiny tool that can help me. It's simple, very easy to use. I can even export diagrams as PDF, GIF or PNG format. However, it is just TOO SIMPLE too fit my need. For example, it does not provides all the notations out of box, though you can add those notions by creating by yourself. This just seems extra work for me.

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.