Tuesday, December 9, 2003
Interview with Valentin Iliescu
Posted by Andy Sjostrom in "DEVELOPER" @ 02:40 AM
Do you remember the days when "number of third party applications" was a key argument in the Pocket PC vs Palm battle? I don’t see that being tossed around as much anymore since both sides now come accompanied with a substantial number of applications. There is at least one developer behind each application and each developer has his/her own story to tell. Meet Valentin Iliescu, an independent developer, who has delivered some interesting Pocket PC products and games based on .NET Compact Framework, C# and XML Web Services. One of his applications is a Pocket PC chess game of which Microsoft Developer Network published a case study.
Read more about Valentin and his views on programming, mathematics, chess, J2ME and .NET Compact Framework!
1. Can you tell us a little about your background?
"I started programming at the age of 16, when I got my first personal computer - a Sinclair Spectrum clone. After graduating the university with a B.SC. in Mathematics I considered a career in programming. Even though I'm not using math that much anymore (except when the tax season comes), it helped me a lot in programming. I did my first steps in real-life projects in my former country, Romania, developing technical programs using Java language. Now I am a Sun Certified Programmer for Java 2 Platform. I currently live in Toronto, Canada where I work as an independent developer in mobile, desktop and enterprise projects - mainly in C# and Java."
2. When did you start to play chess? Your current ELO?
"I must say that I'm a beginner, I haven't evaluated my ELO, although I think it improved after designing this game, because I had to test it a lot. I must say that I'm enjoying it now, I hope that one day I'll be able to beat my own program :)."
3. Is it a mere coincidence that many developers also like to play chess or is it something else?
"The game of chess resembles much with programming. During a project, from time to time I arrive to a point where I have to make a decision. By analyzing the situation, I usually have several options and rely on intuition to choose the best of them. After that, the developing is pretty much just routine, until I get to the next decision point. And sometimes chess can help me in programming. During a project, I might get stuck - no matter how hard I try, the solution doesn't come up. In these moments, I take a break and try to do something else: playing a chess game or other logical game - something that relaxes me but keeps my mind active. When I get back to work, usually the solution is obvious."
4. How did your first Chess project in C# begin? What initiated it?
"While I was browsing a website with publicly available web services, I discovered a Chess Web Service. The idea of a SOAP interface to a fully featured, high performance chess engine sounded so interesting to me that I thought: "Why not make a Pocket PC client for it?" It was perfect: first, the chess engine is moved from the rather limited in resources PocketPC to a much more powerful server and keep only the user interface on the Pocket PC. Secondly, at that time I didn't have experience in chess engine programming, so the fact that I didn’t have to worry about the details of the chess engine implementation was very helpful to me. Because of the Web Services support and the easiness of programming the Visual Studio .NET was the natural choice as IDE."
5. When did you start using and developing for Pocket PCs and Smartphones?
"I was working at my first J2ME project and even if it's a popular technology, from my point of view as a developer it's very frustrating: very limited libraries for UI, graphics, networking etc. and a different programming model than the Java for desktop. I must mention at that time I didn't have any experience with .NET Framework, C# or Visual Studio .NET - in fact with any of the Microsoft technologies. This is when I have my first contact with .NET Compact Framework, from the beginning I was impressed by the richness of libraries and Web Services support. To learn C# was easy - just one week, without using any books. Because the .NET Compact Framework is a subset of the full .NET Framework I was able to use the same source code from the PocketPC version into the desktop version with some minor changes. And it took me just a week to port the game to the Smartphone - and that because of the missing UI elements from the Smartphone platform, otherwise I could've finished it earlier."
6. Have you been involved in writing chess engines before the C# chess project?
"No, this was my first experience regarding chess engine programming. In the first step, I used the Chess Web Service as a chess engine, however I wanted to develop a game that can be played even when the internet connectivity is not available. There is plenty of information on the internet regarding chess programming, so it was relatively easy to develop an engine. The first version of the game included a C# engine, however even the speed on desktop was good, on PocketPC was disappointing. Because of that, for the second version I chose to port the engine to C. Fortunately, I wrote it so it could be fully portable, so the desktop, PocketPC and Smartphone engines share the same C source code."
7. What is your favorite PC based chess program?
"My program :). Now seriously, I want to improve my program so everytime I have the chance, I play on my desktop computer if I am at the office or on my PocketPC if I am on the road. Unfortunately, I cannot test the Smartphone version - I don’t have a Windows Smartphone :(.
I consider the desktop version a great chess program, which complements the PocketPC version - same user interface, same features – so it’s great when you are in front of the computer and you want a bigger screen, a stronger AI opponent or a more reliable internet connection."
8. Can you tell us a little about your future plans for your chess development projects?
"I am very interested in networking programming and web services technology, so I want to improve the existent multiplayer support in areas like authentication, messaging etc. and to add some extra features, like the possibility of playing with other players from the chess server, not only with your messenger buddies, to develop a rating system and maybe to organize tournaments."
Read more about Valentin and his views on programming, mathematics, chess, J2ME and .NET Compact Framework!
1. Can you tell us a little about your background?
"I started programming at the age of 16, when I got my first personal computer - a Sinclair Spectrum clone. After graduating the university with a B.SC. in Mathematics I considered a career in programming. Even though I'm not using math that much anymore (except when the tax season comes), it helped me a lot in programming. I did my first steps in real-life projects in my former country, Romania, developing technical programs using Java language. Now I am a Sun Certified Programmer for Java 2 Platform. I currently live in Toronto, Canada where I work as an independent developer in mobile, desktop and enterprise projects - mainly in C# and Java."
2. When did you start to play chess? Your current ELO?
"I must say that I'm a beginner, I haven't evaluated my ELO, although I think it improved after designing this game, because I had to test it a lot. I must say that I'm enjoying it now, I hope that one day I'll be able to beat my own program :)."
3. Is it a mere coincidence that many developers also like to play chess or is it something else?
"The game of chess resembles much with programming. During a project, from time to time I arrive to a point where I have to make a decision. By analyzing the situation, I usually have several options and rely on intuition to choose the best of them. After that, the developing is pretty much just routine, until I get to the next decision point. And sometimes chess can help me in programming. During a project, I might get stuck - no matter how hard I try, the solution doesn't come up. In these moments, I take a break and try to do something else: playing a chess game or other logical game - something that relaxes me but keeps my mind active. When I get back to work, usually the solution is obvious."
4. How did your first Chess project in C# begin? What initiated it?
"While I was browsing a website with publicly available web services, I discovered a Chess Web Service. The idea of a SOAP interface to a fully featured, high performance chess engine sounded so interesting to me that I thought: "Why not make a Pocket PC client for it?" It was perfect: first, the chess engine is moved from the rather limited in resources PocketPC to a much more powerful server and keep only the user interface on the Pocket PC. Secondly, at that time I didn't have experience in chess engine programming, so the fact that I didn’t have to worry about the details of the chess engine implementation was very helpful to me. Because of the Web Services support and the easiness of programming the Visual Studio .NET was the natural choice as IDE."
5. When did you start using and developing for Pocket PCs and Smartphones?
"I was working at my first J2ME project and even if it's a popular technology, from my point of view as a developer it's very frustrating: very limited libraries for UI, graphics, networking etc. and a different programming model than the Java for desktop. I must mention at that time I didn't have any experience with .NET Framework, C# or Visual Studio .NET - in fact with any of the Microsoft technologies. This is when I have my first contact with .NET Compact Framework, from the beginning I was impressed by the richness of libraries and Web Services support. To learn C# was easy - just one week, without using any books. Because the .NET Compact Framework is a subset of the full .NET Framework I was able to use the same source code from the PocketPC version into the desktop version with some minor changes. And it took me just a week to port the game to the Smartphone - and that because of the missing UI elements from the Smartphone platform, otherwise I could've finished it earlier."
6. Have you been involved in writing chess engines before the C# chess project?
"No, this was my first experience regarding chess engine programming. In the first step, I used the Chess Web Service as a chess engine, however I wanted to develop a game that can be played even when the internet connectivity is not available. There is plenty of information on the internet regarding chess programming, so it was relatively easy to develop an engine. The first version of the game included a C# engine, however even the speed on desktop was good, on PocketPC was disappointing. Because of that, for the second version I chose to port the engine to C. Fortunately, I wrote it so it could be fully portable, so the desktop, PocketPC and Smartphone engines share the same C source code."
7. What is your favorite PC based chess program?
"My program :). Now seriously, I want to improve my program so everytime I have the chance, I play on my desktop computer if I am at the office or on my PocketPC if I am on the road. Unfortunately, I cannot test the Smartphone version - I don’t have a Windows Smartphone :(.
I consider the desktop version a great chess program, which complements the PocketPC version - same user interface, same features – so it’s great when you are in front of the computer and you want a bigger screen, a stronger AI opponent or a more reliable internet connection."
8. Can you tell us a little about your future plans for your chess development projects?
"I am very interested in networking programming and web services technology, so I want to improve the existent multiplayer support in areas like authentication, messaging etc. and to add some extra features, like the possibility of playing with other players from the chess server, not only with your messenger buddies, to develop a rating system and maybe to organize tournaments."