<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.wesnoth.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ryanc</id>
	<title>The Battle for Wesnoth Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.wesnoth.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ryanc"/>
	<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/Special:Contributions/Ryanc"/>
	<updated>2026-05-05T21:13:01Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.31.16</generator>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_Ryanc&amp;diff=29625</id>
		<title>SummerOfCodeProposal Ryanc</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_Ryanc&amp;diff=29625"/>
		<updated>2009-04-02T09:10:42Z</updated>

		<summary type="html">&lt;p&gt;Ryanc: /* About Me */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Optimize implementation of WML for memory usage=&lt;br /&gt;
&lt;br /&gt;
=About Me=&lt;br /&gt;
*'''Name:''' Ryan Chew&lt;br /&gt;
*'''Age:''' 24&lt;br /&gt;
*'''Email:''' ryan@chewablestudios.com&lt;br /&gt;
*'''Forum ID:''' chewryan&lt;br /&gt;
*'''IRC ID:''' KnightR&lt;br /&gt;
*'''Detailed Application:''' [[SummerOfCodeProposal_ryanc_app| Link Here ]]&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
Greetings and welcome to my humble wiki abode.&lt;br /&gt;
&lt;br /&gt;
My name is Ryan and I'm currently enrolled at DigiPen Institute of Technology - Singapore, earning a BSc in Real-Time Interactive Simulations course.&lt;br /&gt;
&lt;br /&gt;
=Project=&lt;br /&gt;
&lt;br /&gt;
'''''Estimated Timeline'''''&lt;br /&gt;
&lt;br /&gt;
'''May'''&lt;br /&gt;
* Get a better feel of how the Wesnoth developers work.&lt;br /&gt;
* Study WML's technical implementation (learn how documents are parsed).&lt;br /&gt;
* Profile WML's memory usage and identify areas which are taking up large amounts of memory.&lt;br /&gt;
* Research on various implementations to reduce memory usage.&lt;br /&gt;
* Run ideas through developers and community for optimal solutions and refine them.&lt;br /&gt;
&lt;br /&gt;
'''June'''&lt;br /&gt;
* Implement initial solutions and test, test, test.&lt;br /&gt;
* Research other possible areas of improvement.&lt;br /&gt;
&lt;br /&gt;
'''July'''&lt;br /&gt;
* Research stops and working time should all be spent on continued implementation of discussed and agreed-upon solutions (no more new stuff).&lt;br /&gt;
* Prepare for mid-term evaluation.&lt;br /&gt;
&lt;br /&gt;
'''August'''&lt;br /&gt;
* Testing and bug fixing&lt;br /&gt;
* Wrap up for final evaluation.&lt;br /&gt;
&lt;br /&gt;
'''''Technical Details'''''&lt;br /&gt;
&lt;br /&gt;
Currently, one of the major memory hogs is the use of std::map and the large amounts of strings stored by the config class.&lt;br /&gt;
&lt;br /&gt;
The idea would be to find an efficient implementation to replace the usage of a map, reduce string duplicates and, if needed, revert to simpler data structures.&lt;br /&gt;
Here are several ideas for implementation:&lt;br /&gt;
* Use a simple hash (with caching and fast reverse-hashing features) as the key instead of std::string.&lt;br /&gt;
* Store values in their integral forms instead of std::string.&lt;br /&gt;
* Find a viable replacement for std::map, like an ordered vector which indexes into values.&lt;br /&gt;
&lt;br /&gt;
Time would also have to be allocated to study WML's technical implementation and possibly detail it in a technical document as I understand the documentation is lacking at the moment.&lt;br /&gt;
There will probably be other areas for improvement as well, like lazy-loading, but those will have to wait until I fully understand the inner-workings of WML.&lt;br /&gt;
&lt;br /&gt;
=Expectations=&lt;br /&gt;
Working on an OSS project for the first time, I expect to gain valuable industry skills/knowledge and to learn from the experienced developers currently on the Wesnoth project.&lt;br /&gt;
This experience will also provide me a chance to work in a highly diversified team and learn to manage working with developers in different locations and timezones.&lt;br /&gt;
&lt;br /&gt;
Wesnoth is a fun little game that I can see myself dedicating time and energy to developing even after GSoC is concluded.&lt;br /&gt;
Plus, I wouldn't pass up on the chance to continue learning from the Wesnoth developers and expand my programming knowledge :)&lt;/div&gt;</summary>
		<author><name>Ryanc</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_Ryanc&amp;diff=29624</id>
		<title>SummerOfCodeProposal Ryanc</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_Ryanc&amp;diff=29624"/>
		<updated>2009-04-02T09:07:57Z</updated>

		<summary type="html">&lt;p&gt;Ryanc: /* Details */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Optimize implementation of WML for memory usage=&lt;br /&gt;
&lt;br /&gt;
=About Me=&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Ryan Chew&lt;br /&gt;
&lt;br /&gt;
'''Age:''' 24&lt;br /&gt;
&lt;br /&gt;
'''Email:''' ryan@chewablestudios.com&lt;br /&gt;
&lt;br /&gt;
'''Forum ID:''' chewryan&lt;br /&gt;
&lt;br /&gt;
'''IRC ID:''' KnightR&lt;br /&gt;
&lt;br /&gt;
'''Detailed Application:''' [[SummerOfCodeProposal_ryanc_app| Link Here ]]&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
Greetings and welcome to my humble wiki abode.&lt;br /&gt;
&lt;br /&gt;
My name is Ryan and I'm currently enrolled at DigiPen Institute of Technology - Singapore, earning a BSc in Real-Time Interactive Simulations course.&lt;br /&gt;
&lt;br /&gt;
=Project=&lt;br /&gt;
&lt;br /&gt;
'''''Estimated Timeline'''''&lt;br /&gt;
&lt;br /&gt;
'''May'''&lt;br /&gt;
* Get a better feel of how the Wesnoth developers work.&lt;br /&gt;
* Study WML's technical implementation (learn how documents are parsed).&lt;br /&gt;
* Profile WML's memory usage and identify areas which are taking up large amounts of memory.&lt;br /&gt;
* Research on various implementations to reduce memory usage.&lt;br /&gt;
* Run ideas through developers and community for optimal solutions and refine them.&lt;br /&gt;
&lt;br /&gt;
'''June'''&lt;br /&gt;
* Implement initial solutions and test, test, test.&lt;br /&gt;
* Research other possible areas of improvement.&lt;br /&gt;
&lt;br /&gt;
'''July'''&lt;br /&gt;
* Research stops and working time should all be spent on continued implementation of discussed and agreed-upon solutions (no more new stuff).&lt;br /&gt;
* Prepare for mid-term evaluation.&lt;br /&gt;
&lt;br /&gt;
'''August'''&lt;br /&gt;
* Testing and bug fixing&lt;br /&gt;
* Wrap up for final evaluation.&lt;br /&gt;
&lt;br /&gt;
'''''Technical Details'''''&lt;br /&gt;
&lt;br /&gt;
Currently, one of the major memory hogs is the use of std::map and the large amounts of strings stored by the config class.&lt;br /&gt;
&lt;br /&gt;
The idea would be to find an efficient implementation to replace the usage of a map, reduce string duplicates and, if needed, revert to simpler data structures.&lt;br /&gt;
Here are several ideas for implementation:&lt;br /&gt;
* Use a simple hash (with caching and fast reverse-hashing features) as the key instead of std::string.&lt;br /&gt;
* Store values in their integral forms instead of std::string.&lt;br /&gt;
* Find a viable replacement for std::map, like an ordered vector which indexes into values.&lt;br /&gt;
&lt;br /&gt;
Time would also have to be allocated to study WML's technical implementation and possibly detail it in a technical document as I understand the documentation is lacking at the moment.&lt;br /&gt;
There will probably be other areas for improvement as well, like lazy-loading, but those will have to wait until I fully understand the inner-workings of WML.&lt;br /&gt;
&lt;br /&gt;
=Expectations=&lt;br /&gt;
Working on an OSS project for the first time, I expect to gain valuable industry skills/knowledge and to learn from the experienced developers currently on the Wesnoth project.&lt;br /&gt;
This experience will also provide me a chance to work in a highly diversified team and learn to manage working with developers in different locations and timezones.&lt;br /&gt;
&lt;br /&gt;
Wesnoth is a fun little game that I can see myself dedicating time and energy to developing even after GSoC is concluded.&lt;br /&gt;
Plus, I wouldn't pass up on the chance to continue learning from the Wesnoth developers and expand my programming knowledge :)&lt;/div&gt;</summary>
		<author><name>Ryanc</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_Ryanc&amp;diff=29623</id>
		<title>SummerOfCodeProposal Ryanc</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_Ryanc&amp;diff=29623"/>
		<updated>2009-04-02T09:07:27Z</updated>

		<summary type="html">&lt;p&gt;Ryanc: /* Project */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Optimize implementation of WML for memory usage=&lt;br /&gt;
&lt;br /&gt;
=Details=&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Ryan Chew&lt;br /&gt;
&lt;br /&gt;
'''Age:''' 24&lt;br /&gt;
&lt;br /&gt;
'''Email:''' ryan@chewablestudios.com&lt;br /&gt;
&lt;br /&gt;
'''Forum ID:''' chewryan&lt;br /&gt;
&lt;br /&gt;
'''IRC ID:''' KnightR&lt;br /&gt;
&lt;br /&gt;
'''Detailed Application:''' [[SummerOfCodeProposal_ryanc_app| Link Here ]]&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
Greetings and welcome to my humble wiki abode.&lt;br /&gt;
&lt;br /&gt;
My name is Ryan and I'm currently enrolled at DigiPen Institute of Technology - Singapore, earning a BSc in Real-Time Interactive Simulations course.&lt;br /&gt;
&lt;br /&gt;
=Project=&lt;br /&gt;
&lt;br /&gt;
'''''Estimated Timeline'''''&lt;br /&gt;
&lt;br /&gt;
'''May'''&lt;br /&gt;
* Get a better feel of how the Wesnoth developers work.&lt;br /&gt;
* Study WML's technical implementation (learn how documents are parsed).&lt;br /&gt;
* Profile WML's memory usage and identify areas which are taking up large amounts of memory.&lt;br /&gt;
* Research on various implementations to reduce memory usage.&lt;br /&gt;
* Run ideas through developers and community for optimal solutions and refine them.&lt;br /&gt;
&lt;br /&gt;
'''June'''&lt;br /&gt;
* Implement initial solutions and test, test, test.&lt;br /&gt;
* Research other possible areas of improvement.&lt;br /&gt;
&lt;br /&gt;
'''July'''&lt;br /&gt;
* Research stops and working time should all be spent on continued implementation of discussed and agreed-upon solutions (no more new stuff).&lt;br /&gt;
* Prepare for mid-term evaluation.&lt;br /&gt;
&lt;br /&gt;
'''August'''&lt;br /&gt;
* Testing and bug fixing&lt;br /&gt;
* Wrap up for final evaluation.&lt;br /&gt;
&lt;br /&gt;
'''''Technical Details'''''&lt;br /&gt;
&lt;br /&gt;
Currently, one of the major memory hogs is the use of std::map and the large amounts of strings stored by the config class.&lt;br /&gt;
&lt;br /&gt;
The idea would be to find an efficient implementation to replace the usage of a map, reduce string duplicates and, if needed, revert to simpler data structures.&lt;br /&gt;
Here are several ideas for implementation:&lt;br /&gt;
* Use a simple hash (with caching and fast reverse-hashing features) as the key instead of std::string.&lt;br /&gt;
* Store values in their integral forms instead of std::string.&lt;br /&gt;
* Find a viable replacement for std::map, like an ordered vector which indexes into values.&lt;br /&gt;
&lt;br /&gt;
Time would also have to be allocated to study WML's technical implementation and possibly detail it in a technical document as I understand the documentation is lacking at the moment.&lt;br /&gt;
There will probably be other areas for improvement as well, like lazy-loading, but those will have to wait until I fully understand the inner-workings of WML.&lt;br /&gt;
&lt;br /&gt;
=Expectations=&lt;br /&gt;
Working on an OSS project for the first time, I expect to gain valuable industry skills/knowledge and to learn from the experienced developers currently on the Wesnoth project.&lt;br /&gt;
This experience will also provide me a chance to work in a highly diversified team and learn to manage working with developers in different locations and timezones.&lt;br /&gt;
&lt;br /&gt;
Wesnoth is a fun little game that I can see myself dedicating time and energy to developing even after GSoC is concluded.&lt;br /&gt;
Plus, I wouldn't pass up on the chance to continue learning from the Wesnoth developers and expand my programming knowledge :)&lt;/div&gt;</summary>
		<author><name>Ryanc</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_Ryanc&amp;diff=29622</id>
		<title>SummerOfCodeProposal Ryanc</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_Ryanc&amp;diff=29622"/>
		<updated>2009-04-02T09:07:05Z</updated>

		<summary type="html">&lt;p&gt;Ryanc: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Optimize implementation of WML for memory usage=&lt;br /&gt;
&lt;br /&gt;
=Details=&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Ryan Chew&lt;br /&gt;
&lt;br /&gt;
'''Age:''' 24&lt;br /&gt;
&lt;br /&gt;
'''Email:''' ryan@chewablestudios.com&lt;br /&gt;
&lt;br /&gt;
'''Forum ID:''' chewryan&lt;br /&gt;
&lt;br /&gt;
'''IRC ID:''' KnightR&lt;br /&gt;
&lt;br /&gt;
'''Detailed Application:''' [[SummerOfCodeProposal_ryanc_app| Link Here ]]&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
Greetings and welcome to my humble wiki abode.&lt;br /&gt;
&lt;br /&gt;
My name is Ryan and I'm currently enrolled at DigiPen Institute of Technology - Singapore, earning a BSc in Real-Time Interactive Simulations course.&lt;br /&gt;
&lt;br /&gt;
=Project=&lt;br /&gt;
&lt;br /&gt;
'''''Estimated Timeline'''''&lt;br /&gt;
&lt;br /&gt;
'''May'''&lt;br /&gt;
* Get a better feel of how the Wesnoth developers work.&lt;br /&gt;
* Study WML's technical implementation (learn how documents are parsed).&lt;br /&gt;
* Profile WML's memory usage and identify areas which are taking up large amounts of memory.&lt;br /&gt;
* Research on various implementations to reduce memory usage.&lt;br /&gt;
* Run ideas through developers and community for optimal solutions and refine them.&lt;br /&gt;
&lt;br /&gt;
'''June'''&lt;br /&gt;
* Implement initial solutions and test, test, test.&lt;br /&gt;
* Research other possible areas of improvement.&lt;br /&gt;
&lt;br /&gt;
'''July'''&lt;br /&gt;
* Research stops and working time should all be spent on continued implementation of discussed and agreed-upon solutions (no more new stuff).&lt;br /&gt;
* Prepare for mid-term evaluation.&lt;br /&gt;
&lt;br /&gt;
'''August'''&lt;br /&gt;
* Testing and bug fixing&lt;br /&gt;
* Wrap up for final evaluation.&lt;br /&gt;
&lt;br /&gt;
'''''Technical Details'''''&lt;br /&gt;
Currently, one of the major memory hogs is the use of std::map and the large amounts of strings stored by the config class.&lt;br /&gt;
The idea would be to find an efficient implementation to replace the usage of a map, reduce string duplicates and, if needed, revert to simpler data structures.&lt;br /&gt;
Here are several ideas for implementation:&lt;br /&gt;
* Use a simple hash (with caching and fast reverse-hashing features) as the key instead of std::string.&lt;br /&gt;
* Store values in their integral forms instead of std::string.&lt;br /&gt;
* Find a viable replacement for std::map, like an ordered vector which indexes into values.&lt;br /&gt;
&lt;br /&gt;
Time would also have to be allocated to study WML's technical implementation and possibly detail it in a technical document as I understand the documentation is lacking at the moment.&lt;br /&gt;
There will probably be other areas for improvement as well, like lazy-loading, but those will have to wait until I fully understand the inner-workings of WML.&lt;br /&gt;
&lt;br /&gt;
=Expectations=&lt;br /&gt;
Working on an OSS project for the first time, I expect to gain valuable industry skills/knowledge and to learn from the experienced developers currently on the Wesnoth project.&lt;br /&gt;
This experience will also provide me a chance to work in a highly diversified team and learn to manage working with developers in different locations and timezones.&lt;br /&gt;
&lt;br /&gt;
Wesnoth is a fun little game that I can see myself dedicating time and energy to developing even after GSoC is concluded.&lt;br /&gt;
Plus, I wouldn't pass up on the chance to continue learning from the Wesnoth developers and expand my programming knowledge :)&lt;/div&gt;</summary>
		<author><name>Ryanc</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_Ryanc&amp;diff=29621</id>
		<title>SummerOfCodeProposal Ryanc</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_Ryanc&amp;diff=29621"/>
		<updated>2009-04-02T09:06:52Z</updated>

		<summary type="html">&lt;p&gt;Ryanc: /* Project */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Optimize implementation of WML for memory usage=&lt;br /&gt;
&lt;br /&gt;
=Details=&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Ryan Chew&lt;br /&gt;
&lt;br /&gt;
'''Age:''' 24&lt;br /&gt;
&lt;br /&gt;
'''Email:''' ryan@chewablestudios.com&lt;br /&gt;
&lt;br /&gt;
'''Forum ID:''' chewryan&lt;br /&gt;
&lt;br /&gt;
'''IRC ID:''' KnightR&lt;br /&gt;
&lt;br /&gt;
'''Detailed Application:''' [[SummerOfCodeProposal_ryanc_app| Link Here ]]&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
Greetings and welcome to my humble wiki abode.&lt;br /&gt;
My name is Ryan and I'm currently enrolled at DigiPen Institute of Technology - Singapore, earning a BSc in Real-Time Interactive Simulations course.&lt;br /&gt;
&lt;br /&gt;
=Project=&lt;br /&gt;
&lt;br /&gt;
'''''Estimated Timeline'''''&lt;br /&gt;
&lt;br /&gt;
'''May'''&lt;br /&gt;
* Get a better feel of how the Wesnoth developers work.&lt;br /&gt;
* Study WML's technical implementation (learn how documents are parsed).&lt;br /&gt;
* Profile WML's memory usage and identify areas which are taking up large amounts of memory.&lt;br /&gt;
* Research on various implementations to reduce memory usage.&lt;br /&gt;
* Run ideas through developers and community for optimal solutions and refine them.&lt;br /&gt;
&lt;br /&gt;
'''June'''&lt;br /&gt;
* Implement initial solutions and test, test, test.&lt;br /&gt;
* Research other possible areas of improvement.&lt;br /&gt;
&lt;br /&gt;
'''July'''&lt;br /&gt;
* Research stops and working time should all be spent on continued implementation of discussed and agreed-upon solutions (no more new stuff).&lt;br /&gt;
* Prepare for mid-term evaluation.&lt;br /&gt;
&lt;br /&gt;
'''August'''&lt;br /&gt;
* Testing and bug fixing&lt;br /&gt;
* Wrap up for final evaluation.&lt;br /&gt;
&lt;br /&gt;
'''''Technical Details'''''&lt;br /&gt;
Currently, one of the major memory hogs is the use of std::map and the large amounts of strings stored by the config class.&lt;br /&gt;
The idea would be to find an efficient implementation to replace the usage of a map, reduce string duplicates and, if needed, revert to simpler data structures.&lt;br /&gt;
Here are several ideas for implementation:&lt;br /&gt;
* Use a simple hash (with caching and fast reverse-hashing features) as the key instead of std::string.&lt;br /&gt;
* Store values in their integral forms instead of std::string.&lt;br /&gt;
* Find a viable replacement for std::map, like an ordered vector which indexes into values.&lt;br /&gt;
&lt;br /&gt;
Time would also have to be allocated to study WML's technical implementation and possibly detail it in a technical document as I understand the documentation is lacking at the moment.&lt;br /&gt;
There will probably be other areas for improvement as well, like lazy-loading, but those will have to wait until I fully understand the inner-workings of WML.&lt;br /&gt;
&lt;br /&gt;
=Expectations=&lt;br /&gt;
Working on an OSS project for the first time, I expect to gain valuable industry skills/knowledge and to learn from the experienced developers currently on the Wesnoth project.&lt;br /&gt;
This experience will also provide me a chance to work in a highly diversified team and learn to manage working with developers in different locations and timezones.&lt;br /&gt;
&lt;br /&gt;
Wesnoth is a fun little game that I can see myself dedicating time and energy to developing even after GSoC is concluded.&lt;br /&gt;
Plus, I wouldn't pass up on the chance to continue learning from the Wesnoth developers and expand my programming knowledge :)&lt;/div&gt;</summary>
		<author><name>Ryanc</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_Ryanc&amp;diff=29620</id>
		<title>SummerOfCodeProposal Ryanc</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_Ryanc&amp;diff=29620"/>
		<updated>2009-04-02T09:06:11Z</updated>

		<summary type="html">&lt;p&gt;Ryanc: /* Project */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Optimize implementation of WML for memory usage=&lt;br /&gt;
&lt;br /&gt;
=Details=&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Ryan Chew&lt;br /&gt;
&lt;br /&gt;
'''Age:''' 24&lt;br /&gt;
&lt;br /&gt;
'''Email:''' ryan@chewablestudios.com&lt;br /&gt;
&lt;br /&gt;
'''Forum ID:''' chewryan&lt;br /&gt;
&lt;br /&gt;
'''IRC ID:''' KnightR&lt;br /&gt;
&lt;br /&gt;
'''Detailed Application:''' [[SummerOfCodeProposal_ryanc_app| Link Here ]]&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
Greetings and welcome to my humble wiki abode.&lt;br /&gt;
My name is Ryan and I'm currently enrolled at DigiPen Institute of Technology - Singapore, earning a BSc in Real-Time Interactive Simulations course.&lt;br /&gt;
&lt;br /&gt;
=Project=&lt;br /&gt;
&lt;br /&gt;
'''''Estimated Timeline'''''&lt;br /&gt;
&lt;br /&gt;
'''May'''&lt;br /&gt;
- Get a better feel of how the Wesnoth developers work.&lt;br /&gt;
- Study WML's technical implementation (learn how documents are parsed).&lt;br /&gt;
- Profile WML's memory usage and identify areas which are taking up large amounts of memory.&lt;br /&gt;
- Research on various implementations to reduce memory usage.&lt;br /&gt;
- Run ideas through developers and community for optimal solutions and refine them.&lt;br /&gt;
&lt;br /&gt;
'''June'''&lt;br /&gt;
- Implement initial solutions and test, test, test.&lt;br /&gt;
- Research other possible areas of improvement.&lt;br /&gt;
&lt;br /&gt;
'''July'''&lt;br /&gt;
- Research stops and working time should all be spent on continued implementation of discussed and agreed-upon solutions (no more new stuff).&lt;br /&gt;
- Prepare for mid-term evaluation.&lt;br /&gt;
&lt;br /&gt;
'''August'''&lt;br /&gt;
- Testing and bug fixing&lt;br /&gt;
- Wrap up for final evaluation.&lt;br /&gt;
&lt;br /&gt;
'''''Technical Details'''''&lt;br /&gt;
Currently, one of the major memory hogs is the use of std::map and the large amounts of strings stored by the config class.&lt;br /&gt;
The idea would be to find an efficient implementation to replace the usage of a map, reduce string duplicates and, if needed, revert to simpler data structures.&lt;br /&gt;
Here are several ideas for implementation:&lt;br /&gt;
 - Use a simple hash (with caching and fast reverse-hashing features) as the key instead of std::string.&lt;br /&gt;
 - Store values in their integral forms instead of std::string.&lt;br /&gt;
 - Find a viable replacement for std::map, like an ordered vector which indexes into values.&lt;br /&gt;
&lt;br /&gt;
Time would also have to be allocated to study WML's technical implementation and possibly detail it in a technical document as I understand the documentation is lacking at the moment.&lt;br /&gt;
There will probably be other areas for improvement as well, like lazy-loading, but those will have to wait until I fully understand the inner-workings of WML.&lt;br /&gt;
&lt;br /&gt;
=Expectations=&lt;br /&gt;
Working on an OSS project for the first time, I expect to gain valuable industry skills/knowledge and to learn from the experienced developers currently on the Wesnoth project.&lt;br /&gt;
This experience will also provide me a chance to work in a highly diversified team and learn to manage working with developers in different locations and timezones.&lt;br /&gt;
&lt;br /&gt;
Wesnoth is a fun little game that I can see myself dedicating time and energy to developing even after GSoC is concluded.&lt;br /&gt;
Plus, I wouldn't pass up on the chance to continue learning from the Wesnoth developers and expand my programming knowledge :)&lt;/div&gt;</summary>
		<author><name>Ryanc</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_ryanc_app&amp;diff=29619</id>
		<title>SummerOfCodeProposal ryanc app</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_ryanc_app&amp;diff=29619"/>
		<updated>2009-04-02T09:05:19Z</updated>

		<summary type="html">&lt;p&gt;Ryanc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Ryan's Application Page=&lt;br /&gt;
=Optimize implementation of WML for memory usage=&lt;br /&gt;
&lt;br /&gt;
=Basics=&lt;br /&gt;
#'''Write a small introduction to yourself.'''&lt;br /&gt;
#:My name is Ryan and I love games &amp;amp; games programming. :)&lt;br /&gt;
#:I started programming at the age of 13 and picked up C++ when I was 15.&lt;br /&gt;
#:I have since been actively learning and improving my programming skills over the years and have made a few small games in my free time.&lt;br /&gt;
#:I haven't gotten around to getting my lazy butt to start a blog and post my work/ideas yet but that's coming soon.&lt;br /&gt;
#'''State your preferred email address.'''&lt;br /&gt;
#:ryan@chewablestudios.com&lt;br /&gt;
#'''If you have chosen a nick for IRC and Wesnoth forums, what is it?'''&lt;br /&gt;
#:IRC: KnightR&lt;br /&gt;
#:Forum ID: chewryan&lt;br /&gt;
#'''Why do you want to participate in summer of code?'''&lt;br /&gt;
#:The Wesnoth project, in particular, struck my interest for GSoC 2009 as I am training to be a professional game developer. I felt this would be the perfect opportunity to gain valuable knowledge and skills, working alongside professionals and learning what it takes to work with a team and community.&lt;br /&gt;
#'''What are you studying, subject, level and school?'''&lt;br /&gt;
#:I am currently a first year student at DigiPen Institute of Technology - Singapore, earning a BSc in Real-Time Interactive Simulations.&lt;br /&gt;
#:It's a fancy name for game programming ;)&lt;br /&gt;
#'''If you have contributed any patches to Wesnoth, please list them below. You can also list patches that have been submitted but not committed yet and patches that have not been specifically written for Wesnoth. If you have gained commit access to our SVN (during the evaluation period or earlier) please state so.'''&lt;br /&gt;
#:I have not contributed any patches to Wesnoth yet but intend to do so over the next few days.&lt;br /&gt;
&lt;br /&gt;
=Experience=&lt;br /&gt;
#'''What programs/software have you worked on before?'''&lt;br /&gt;
#:Most of the programs I have developed were small utilities and several small game projects, personal and school-related.&lt;br /&gt;
#'''Have you developed software in a team environment before? (As opposed to hacking on something on your own)'''&lt;br /&gt;
#:I have spent two semesters working with two different student teams on game projects as part of my school curriculum.&lt;br /&gt;
#:Aside from that, I had also spent 2 months before I began my DigiPen course interning at a professional game development company.&lt;br /&gt;
#'''Have you participated to the Google Summer of Code before? As a mentor or a student? In what project? Were you successful? If not, why?'''&lt;br /&gt;
#:No I have not participated in GSoC before.&lt;br /&gt;
&lt;br /&gt;
=Open Source=&lt;br /&gt;
#'''Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.'''&lt;br /&gt;
#:I am not involved in any other open source projects.&lt;br /&gt;
&lt;br /&gt;
=Gaming Experience= &lt;br /&gt;
#'''Are you a gamer?'''&lt;br /&gt;
#:Most definitely :)&lt;br /&gt;
#'''What type of gamer are you?'''&lt;br /&gt;
#:I'm a hardcore gamer ;)&lt;br /&gt;
#'''What type of games?'''&lt;br /&gt;
#:I enjoy a wide variety of games from various genres, particularly RPGs, FPSes, platformers, RTSes and turn-based strategy games.&lt;br /&gt;
#:Wesnoth's gameplay reminds me of classic masterpieces such as Civilization 1/2 and Master of Orion.&lt;br /&gt;
#'''What type of opponents do you prefer?'''&lt;br /&gt;
#:I prefer mature opponents that match my skill level and provide me a challenge when playing against them.&lt;br /&gt;
#:I also enjoy playing against opponents that introduce interesting strategies and tactics that I might not have thought of.&lt;br /&gt;
#'''Are you more interested in story or gameplay?'''&lt;br /&gt;
#:I lean more towards enjoyable gameplay as I believe that not all games require good stories, or even a story for that matter.&lt;br /&gt;
#:It wouldn't be much of a game if it didn't have good gameplay :)&lt;br /&gt;
#'''Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.'''&lt;br /&gt;
#:Yes I have but I have not gone too much in-depth as I am busy with the school semester and the GSoC proposal.&lt;br /&gt;
#:I have yet to experience Wesnoth in a multiplayer setting so I shall reserve my opinion for when I have the time to explore the depths of Wesnoth's gameplay.&lt;br /&gt;
#:I am enjoying the game more as I play and my first impressions are that it feels like a commercial game to me :)&lt;br /&gt;
&lt;br /&gt;
=Communication skills=&lt;br /&gt;
#'''Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.'''&lt;br /&gt;
#:English is my first language and I am confident of my proficiency with the language.&lt;br /&gt;
#'''Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.'''&lt;br /&gt;
#:I am a very objective person and am able to maintain communications strictly on a professional level.&lt;br /&gt;
#'''3) Do you give constructive advice?'''&lt;br /&gt;
#:I believe I do but that is more for others to decide :)&lt;br /&gt;
#''' Do you receive advice well?'''&lt;br /&gt;
#:I receive advice well but will research on the subject matter if I do not agree to provide constructive counter-arguments.&lt;br /&gt;
&lt;br /&gt;
#'''Are you good at sorting useful criticisms from useless ones?'''&lt;br /&gt;
#:Yes I believe I am able to filter out useful criticisms.&lt;br /&gt;
&lt;br /&gt;
=Project=&lt;br /&gt;
#'''Did you select a project from our list? If that is the case, what project did you select? What do you want to especially concentrate on?'''&lt;br /&gt;
#:Yes, I have selected to work on the WML Memory Optimisation project.&lt;br /&gt;
#:I would like to focus on implementing an efficient solution for reducing the memory usage taken up by WML documents when loaded.&lt;br /&gt;
#If you have invented your own project, please describe the project and the scope.&lt;br /&gt;
#:N/A&lt;br /&gt;
#'''Why did you choose this project?'''&lt;br /&gt;
#:I chose this project as I believe it would provide a challenging experience.&lt;br /&gt;
#:I feel my current programming skill level is sufficient for the task at hand and I am confident that I can produce desirable results.&lt;br /&gt;
#Include an estimated timeline for your work on the project. Don't forget to mention special things like &amp;quot;I booked holidays between A and B&amp;quot; and &amp;quot;I got an exam at ABC and won't be doing much then&amp;quot;.&lt;br /&gt;
#:My school semester ends on the 29th of April and as such, I am unable to dedicate much time to the project before the aforementioned date.&lt;br /&gt;
#:'''May:''':&lt;br /&gt;
#:* Get a better feel of how the Wesnoth developers work.&lt;br /&gt;
#:* Study WML's technical implementation (learn how documents are parsed).&lt;br /&gt;
#:* Profile WML's memory usage and identify areas which are taking up large amounts of memory.&lt;br /&gt;
#:* Research on various implementations to reduce memory usage.&lt;br /&gt;
#:* Run ideas through developers and community for optimal solutions and refine them.&lt;br /&gt;
#:'''June:''':&lt;br /&gt;
#:* Implement initial solutions and test, test, test.&lt;br /&gt;
#:* Research other possible areas of improvement.&lt;br /&gt;
#:'''July''':&lt;br /&gt;
#:* Research stops and working time should all be spent on continued implementation of discussed and agreed-upon solutions (no more new stuff).&lt;br /&gt;
#:* Prepare for mid-term evaluation.&lt;br /&gt;
#:'''August:''':&lt;br /&gt;
#:* Testing and bug fixing.&lt;br /&gt;
#:* Wrap up for final evaluation.&lt;br /&gt;
#'''Include as much technical detail about your implementation as you can.'''&lt;br /&gt;
#:Currently, one of the major memory hogs is the use of std::map and the large amounts of strings stored by the config class.&lt;br /&gt;
#:The idea would be to find an efficient implementation to replace the usage of a map, reduce string duplicates and, if needed, revert to simpler data structures.&lt;br /&gt;
#:Here are several ideas for implementation:&lt;br /&gt;
#:* Use a simple hash (with caching and fast reverse-hashing features) as the key instead of std::string.&lt;br /&gt;
#:* Store values in their integral forms instead of std::string.&lt;br /&gt;
#:* Find a viable replacement for std::map, like an ordered vector which indexes into values.&lt;br /&gt;
#:Time would also have to be allocated to study WML's technical implementation and possibly detail it in a technical document as I understand the documentation is lacking at the moment.&lt;br /&gt;
#:There will probably be other areas for improvement as well, like lazy-loading, but those will have to wait until I fully understand the inner-workings of WML.&lt;br /&gt;
#'''What do you expect to gain from this project?'''&lt;br /&gt;
#:Working on an OSS project for the first time, I expect to gain valuable industry skills/knowledge and to learn from the experienced developers currently on the Wesnoth project.&lt;br /&gt;
#:This experience will also provide me a chance to work in a highly diversified team and learn to manage working with developers in different locations and timezones.&lt;br /&gt;
#'''What would make you stay in the Wesnoth community after the conclusion of SOC?'''&lt;br /&gt;
#:Wesnoth is a fun little game that I can see myself dedicated time and energy to developing even after GSoC.&lt;br /&gt;
#:Plus, I wouldn't pass up on the chance to continue learning from the Wesnoth developers and expand my programming.&lt;br /&gt;
&lt;br /&gt;
=Practical considerations=&lt;br /&gt;
#'''Are you familiar with any of the following tools or languages?'''&lt;br /&gt;
#:*SVN - Yes.&lt;br /&gt;
#:*C++ - Yes.&lt;br /&gt;
#:*Python - No.&lt;br /&gt;
#:*Build Environments - Basics but don't use it much.&lt;br /&gt;
#'''Which tools do you normally use for development? Why do you use them?'''&lt;br /&gt;
#:I use Visual Studio as my main IDE tool but am occassionally use g++ with Notepad++.&lt;br /&gt;
#:As an aspiring game developer, I am rather limited to working on Windows machines for developing games and my school's curriculum focuses mostly on Windows game development.&lt;br /&gt;
#:Apart from MSVC being a mandatory tool for me, the IDE's debugger is one of the best tools available for debugging.&lt;br /&gt;
#:I am also familiar with Linux development and favour the Ubuntu flavour :)&lt;br /&gt;
#'''What programming languages are you fluent in?'''&lt;br /&gt;
#:C++, C#&lt;br /&gt;
#'''What spoken languages are you fluent in?'''&lt;br /&gt;
#:I am fluent in English and Chinese.&lt;br /&gt;
#'''At what hours are you awake and when will you be able to be in IRC (please specify in UTC)'''&lt;br /&gt;
#:I am on the GMT +8 timezone and am usually awake from&lt;br /&gt;
#:4:00am UTC to 4:00pm UTC&lt;br /&gt;
#:and will probably be available in IRC during those times if I do not have any prior arrangements.&lt;br /&gt;
#'''Would you mind talking with your mentor on telephone / internet phone? We would like to have a backup way for communications for the case that somehow emails and IRC do fail.'''&lt;br /&gt;
#:Nope I don't mind at all. :)&lt;/div&gt;</summary>
		<author><name>Ryanc</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_ryanc_app&amp;diff=29617</id>
		<title>SummerOfCodeProposal ryanc app</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_ryanc_app&amp;diff=29617"/>
		<updated>2009-04-02T08:39:49Z</updated>

		<summary type="html">&lt;p&gt;Ryanc: New page: =Ryan's Application Page= =Optimize implementation of WML for memory usage=  =Basics=  ''1) Write a small introduction to yourself.''  My name is Ryan and I love games &amp;amp; games programming....&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Ryan's Application Page=&lt;br /&gt;
=Optimize implementation of WML for memory usage=&lt;br /&gt;
&lt;br /&gt;
=Basics=&lt;br /&gt;
&lt;br /&gt;
''1) Write a small introduction to yourself.''&lt;br /&gt;
&lt;br /&gt;
My name is Ryan and I love games &amp;amp; games programming. :)&lt;br /&gt;
I started programming at the age of 13 and picked up C++ when I was 15.&lt;br /&gt;
I have since been actively learning and improving my programming skills over the years and have made a few small games in my free time.&lt;br /&gt;
I haven't gotten around to getting my lazy butt to start a blog and post my work/ideas yet but that's coming soon.&lt;br /&gt;
&lt;br /&gt;
''2) State your preferred email address.''&lt;br /&gt;
&lt;br /&gt;
ryan@chewablestudios.com&lt;br /&gt;
&lt;br /&gt;
''3) If you have chosen a nick for IRC and Wesnoth forums, what is it?''&lt;br /&gt;
&lt;br /&gt;
IRC: KnightR&lt;br /&gt;
Forum ID: chewryan&lt;br /&gt;
&lt;br /&gt;
''4) Why do you want to participate in summer of code?''&lt;br /&gt;
&lt;br /&gt;
The Wesnoth project, in particular, struck my interest for GSoC 2009 as I am training to be a professional game developer. I felt this would be the perfect opportunity to gain valuable knowledge and skills, working alongside professionals and learning what it takes to work with a team and community.&lt;br /&gt;
&lt;br /&gt;
''5) What are you studying, subject, level and school?''&lt;br /&gt;
&lt;br /&gt;
I am currently a first year student at DigiPen Institute of Technology - Singapore, earning a BSc in Real-Time Interactive Simulations.&lt;br /&gt;
It's a fancy name for game programming ;)&lt;br /&gt;
&lt;br /&gt;
''6) If you have contributed any patches to Wesnoth, please list them below. You can also list patches that have been submitted but not committed yet and patches that have not been specifically written for Wesnoth. If you have gained commit access to our SVN (during the evaluation period or earlier) please state so.''&lt;br /&gt;
&lt;br /&gt;
I have not contributed any patches to Wesnoth yet but intend to do so over the next few days.&lt;br /&gt;
&lt;br /&gt;
=Experience=&lt;br /&gt;
''1) What programs/software have you worked on before?''&lt;br /&gt;
&lt;br /&gt;
Most of the programs I have developed were small utilities and several small game projects, personal and school-related.&lt;br /&gt;
&lt;br /&gt;
''2) Have you developed software in a team environment before? (As opposed to hacking on something on your own)''&lt;br /&gt;
&lt;br /&gt;
I have spent two semesters working with two different student teams on game projects as part of my school curriculum.&lt;br /&gt;
Aside from that, I had also spent 2 months before I began my DigiPen course interning at a professional game development company.&lt;br /&gt;
&lt;br /&gt;
''3) Have you participated to the Google Summer of Code before? As a mentor or a student? In what project? Were you successful? If not, why?''&lt;br /&gt;
&lt;br /&gt;
No I have not participated in GSoC before.&lt;br /&gt;
&lt;br /&gt;
=Open Source=&lt;br /&gt;
''1) Are you already involved with any open source development projects? If yes, please describe the project and the scope of your involvement.''&lt;br /&gt;
&lt;br /&gt;
I am not involved in any other open source projects.&lt;br /&gt;
&lt;br /&gt;
=Gaming Experience= &lt;br /&gt;
''1) Are you a gamer?''&lt;br /&gt;
&lt;br /&gt;
Most definitely :)&lt;br /&gt;
&lt;br /&gt;
''2) What type of gamer are you?''&lt;br /&gt;
&lt;br /&gt;
I'm a hardcore gamer ;)&lt;br /&gt;
&lt;br /&gt;
''3) What type of games?''&lt;br /&gt;
I enjoy a wide variety of games from various genres, particularly RPGs, FPSes, platformers, RTSes and turn-based strategy games.&lt;br /&gt;
Wesnoth's gameplay reminds me of classic masterpieces such as Civilization 1/2 and Master of Orion.&lt;br /&gt;
&lt;br /&gt;
''4) What type of opponents do you prefer?''&lt;br /&gt;
&lt;br /&gt;
I prefer mature opponents that match my skill level and provide me a challenge when playing against them.&lt;br /&gt;
I also enjoy playing against opponents that introduce interesting strategies and tactics that I might not have thought of.&lt;br /&gt;
&lt;br /&gt;
''4) Are you more interested in story or gameplay?''&lt;br /&gt;
&lt;br /&gt;
I lean more towards enjoyable gameplay as I believe that not all games require good stories, or even a story for that matter.&lt;br /&gt;
It wouldn't be much of a game if it didn't have good gameplay :)&lt;br /&gt;
&lt;br /&gt;
''5) Have you played Wesnoth? If so, tell us roughly for how long and whether you lean towards single player or multiplayer.''&lt;br /&gt;
&lt;br /&gt;
Yes I have but I have not gone too much in-depth as I am busy with the school semester and the GSoC proposal.&lt;br /&gt;
I have yet to experience Wesnoth in a multiplayer setting so I shall reserve my opinion for when I have the time to explore the depths of Wesnoth's gameplay.&lt;br /&gt;
I am enjoying the game more as I play and my first impressions are that it feels like a commercial game to me :)&lt;br /&gt;
&lt;br /&gt;
=Communication skills=&lt;br /&gt;
''1) Though most of our developers are not native English speakers, English is the project's working language. Describe your fluency level in written English.''&lt;br /&gt;
&lt;br /&gt;
English is my first language and I am confident of my proficiency with the language.&lt;br /&gt;
&lt;br /&gt;
''2) Are you good at interacting with other players? Our developer community is friendly, but the player community can be a bit rough.''&lt;br /&gt;
&lt;br /&gt;
I am a very objective person and am able to maintain communications strictly on a professional level.&lt;br /&gt;
&lt;br /&gt;
''3) Do you give constructive advice?''&lt;br /&gt;
&lt;br /&gt;
I believe I do but that is more for others to decide :)&lt;br /&gt;
&lt;br /&gt;
''4) Do you receive advice well?''&lt;br /&gt;
&lt;br /&gt;
I receive advice well but will research on the subject matter if I do not agree to provide constructive counter-arguments.&lt;br /&gt;
&lt;br /&gt;
''5) Are you good at sorting useful criticisms from useless ones?''&lt;br /&gt;
&lt;br /&gt;
Yes I believe I am able to filter out useful criticisms.&lt;br /&gt;
&lt;br /&gt;
=Project=&lt;br /&gt;
''1) Did you select a project from our list? If that is the case, what project did you select? What do you want to especially concentrate on?''&lt;br /&gt;
&lt;br /&gt;
Yes, I have selected to work on the WML Memory Optimisation project.&lt;br /&gt;
I would like to focus on implementing an efficient solution for reducing the memory usage taken up by WML documents when loaded.&lt;br /&gt;
&lt;br /&gt;
''2) If you have invented your own project, please describe the project and the scope.''&lt;br /&gt;
&lt;br /&gt;
N/A&lt;br /&gt;
&lt;br /&gt;
''3) Why did you choose this project?''&lt;br /&gt;
&lt;br /&gt;
I chose this project as I believe it would provide a challenging experience.&lt;br /&gt;
I feel my current programming skill level is sufficient for the task at hand and I am confident that I can produce desirable results.&lt;br /&gt;
&lt;br /&gt;
''4) Include an estimated timeline for your work on the project. Don't forget to mention special things like &amp;quot;I booked holidays between A and B&amp;quot; and &amp;quot;I got an exam at ABC and won't be doing much then&amp;quot;.''&lt;br /&gt;
&lt;br /&gt;
My school semester ends on the 29th of April and as such, I am unable to dedicate much time to the project before the aforementioned date.&lt;br /&gt;
&lt;br /&gt;
'''May'''&lt;br /&gt;
- Get a better feel of how the Wesnoth developers work.&lt;br /&gt;
- Study WML's technical implementation (learn how documents are parsed).&lt;br /&gt;
- Profile WML's memory usage and identify areas which are taking up large amounts of memory.&lt;br /&gt;
- Research on various implementations to reduce memory usage.&lt;br /&gt;
- Run ideas through developers and community for optimal solutions and refine them.&lt;br /&gt;
&lt;br /&gt;
'''June'''&lt;br /&gt;
- Implement initial solutions and test, test, test.&lt;br /&gt;
- Research other possible areas of improvement.&lt;br /&gt;
&lt;br /&gt;
'''July'''&lt;br /&gt;
- Research stops and working time should all be spent on continued implementation of discussed and agreed-upon solutions (no more new stuff).&lt;br /&gt;
- Prepare for mid-term evaluation.&lt;br /&gt;
&lt;br /&gt;
'''August'''&lt;br /&gt;
- Testing and bug fixing&lt;br /&gt;
- Wrap up for final evaluation.&lt;br /&gt;
&lt;br /&gt;
''5) Include as much technical detail about your implementation as you can.''&lt;br /&gt;
&lt;br /&gt;
Currently, one of the major memory hogs is the use of std::map and the large amounts of strings stored by the config class.&lt;br /&gt;
The idea would be to find an efficient implementation to replace the usage of a map, reduce string duplicates and, if needed, revert to simpler data structures.&lt;br /&gt;
Here are several ideas for implementation:&lt;br /&gt;
 - Use a simple hash (with caching and fast reverse-hashing features) as the key instead of std::string.&lt;br /&gt;
 - Store values in their integral forms instead of std::string.&lt;br /&gt;
 - Find a viable replacement for std::map, like an ordered vector which indexes into values.&lt;br /&gt;
&lt;br /&gt;
Time would also have to be allocated to study WML's technical implementation and possibly detail it in a technical document as I understand the documentation is lacking at the moment.&lt;br /&gt;
There will probably be other areas for improvement as well, like lazy-loading, but those will have to wait until I fully understand the inner-workings of WML.&lt;br /&gt;
&lt;br /&gt;
''6) What do you expect to gain from this project?''&lt;br /&gt;
&lt;br /&gt;
Working on an OSS project for the first time, I expect to gain valuable industry skills/knowledge and to learn from the experienced developers currently on the Wesnoth project.&lt;br /&gt;
This experience will also provide me a chance to work in a highly diversified team and learn to manage working with developers in different locations and timezones.&lt;br /&gt;
&lt;br /&gt;
''7) What would make you stay in the Wesnoth community after the conclusion of SOC?''&lt;br /&gt;
&lt;br /&gt;
Wesnoth is a fun little game that I can see myself dedicated time and energy to developing even after GSoC.&lt;br /&gt;
Plus, I wouldn't pass up on the chance to continue learning from the Wesnoth developers and expand my programming&lt;br /&gt;
&lt;br /&gt;
=Practical considerations=&lt;br /&gt;
''1) Are you familiar with any of the following tools or languages?''&lt;br /&gt;
&lt;br /&gt;
SVN - Yes.&lt;br /&gt;
C++ - Yes.&lt;br /&gt;
Python - No.&lt;br /&gt;
Build Environments - Basics but don't use it much.&lt;br /&gt;
&lt;br /&gt;
''2) Which tools do you normally use for development? Why do you use them?''&lt;br /&gt;
&lt;br /&gt;
I use Visual Studio as my main IDE tool but am occassionally use g++ with Notepad++.&lt;br /&gt;
As an aspiring game developer, I am rather limited to working on Windows machines for developing games and my school's curriculum focuses mostly on Windows game development.&lt;br /&gt;
Apart from MSVC being a mandatory tool for me, the IDE's debugger is one of the best tools available for debugging.&lt;br /&gt;
&lt;br /&gt;
I am also familiar with Linux development and favour the Ubuntu flavour :)&lt;br /&gt;
&lt;br /&gt;
''3) What programming languages are you fluent in?''&lt;br /&gt;
&lt;br /&gt;
C++, C#&lt;br /&gt;
&lt;br /&gt;
''4) What spoken languages are you fluent in?''&lt;br /&gt;
&lt;br /&gt;
I am fluent in English and Chinese.&lt;br /&gt;
&lt;br /&gt;
''5) At what hours are you awake and when will you be able to be in IRC (please specify in UTC)''&lt;br /&gt;
&lt;br /&gt;
I am on the GMT +8 timezone and am usually awake from&lt;br /&gt;
4:00am UTC to 4:00pm UTC&lt;br /&gt;
and will probably be available in IRC during those times if I do not have any prior arrangements.&lt;br /&gt;
&lt;br /&gt;
''6) Would you mind talking with your mentor on telephone / internet phone? We would like to have a backup way for communications for the case that somehow emails and IRC do fail.''&lt;br /&gt;
&lt;br /&gt;
Nope I don't mind at all. :)&lt;/div&gt;</summary>
		<author><name>Ryanc</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_Ryanc&amp;diff=29616</id>
		<title>SummerOfCodeProposal Ryanc</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=SummerOfCodeProposal_Ryanc&amp;diff=29616"/>
		<updated>2009-04-02T08:34:54Z</updated>

		<summary type="html">&lt;p&gt;Ryanc: New page: =Optimize implementation of WML for memory usage=  =Details=  '''Name:''' Ryan Chew  '''Age:''' 24  '''Email:''' ryan@chewablestudios.com  '''Forum ID:''' chewryan  '''IRC ID:''' KnightR  ...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Optimize implementation of WML for memory usage=&lt;br /&gt;
&lt;br /&gt;
=Details=&lt;br /&gt;
&lt;br /&gt;
'''Name:''' Ryan Chew&lt;br /&gt;
&lt;br /&gt;
'''Age:''' 24&lt;br /&gt;
&lt;br /&gt;
'''Email:''' ryan@chewablestudios.com&lt;br /&gt;
&lt;br /&gt;
'''Forum ID:''' chewryan&lt;br /&gt;
&lt;br /&gt;
'''IRC ID:''' KnightR&lt;br /&gt;
&lt;br /&gt;
'''Detailed Application:''' [[SummerOfCodeProposal_ryanc_app| Link Here ]]&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
Greetings and welcome to my humble wiki abode.&lt;br /&gt;
My name is Ryan and I'm currently enrolled at DigiPen Institute of Technology - Singapore, earning a BSc in Real-Time Interactive Simulations course.&lt;br /&gt;
&lt;br /&gt;
=Project=&lt;br /&gt;
&lt;br /&gt;
'''''Estimated Timeline'''''&lt;br /&gt;
'''May'''&lt;br /&gt;
- Get a better feel of how the Wesnoth developers work.&lt;br /&gt;
- Study WML's technical implementation (learn how documents are parsed).&lt;br /&gt;
- Profile WML's memory usage and identify areas which are taking up large amounts of memory.&lt;br /&gt;
- Research on various implementations to reduce memory usage.&lt;br /&gt;
- Run ideas through developers and community for optimal solutions and refine them.&lt;br /&gt;
&lt;br /&gt;
'''June'''&lt;br /&gt;
- Implement initial solutions and test, test, test.&lt;br /&gt;
- Research other possible areas of improvement.&lt;br /&gt;
&lt;br /&gt;
'''July'''&lt;br /&gt;
- Research stops and working time should all be spent on continued implementation of discussed and agreed-upon solutions (no more new stuff).&lt;br /&gt;
- Prepare for mid-term evaluation.&lt;br /&gt;
&lt;br /&gt;
'''August'''&lt;br /&gt;
- Testing and bug fixing&lt;br /&gt;
- Wrap up for final evaluation.&lt;br /&gt;
&lt;br /&gt;
'''''Technical Details'''''&lt;br /&gt;
Currently, one of the major memory hogs is the use of std::map and the large amounts of strings stored by the config class.&lt;br /&gt;
The idea would be to find an efficient implementation to replace the usage of a map, reduce string duplicates and, if needed, revert to simpler data structures.&lt;br /&gt;
Here are several ideas for implementation:&lt;br /&gt;
 - Use a simple hash (with caching and fast reverse-hashing features) as the key instead of std::string.&lt;br /&gt;
 - Store values in their integral forms instead of std::string.&lt;br /&gt;
 - Find a viable replacement for std::map, like an ordered vector which indexes into values.&lt;br /&gt;
&lt;br /&gt;
Time would also have to be allocated to study WML's technical implementation and possibly detail it in a technical document as I understand the documentation is lacking at the moment.&lt;br /&gt;
There will probably be other areas for improvement as well, like lazy-loading, but those will have to wait until I fully understand the inner-workings of WML.&lt;br /&gt;
&lt;br /&gt;
=Expectations=&lt;br /&gt;
Working on an OSS project for the first time, I expect to gain valuable industry skills/knowledge and to learn from the experienced developers currently on the Wesnoth project.&lt;br /&gt;
This experience will also provide me a chance to work in a highly diversified team and learn to manage working with developers in different locations and timezones.&lt;br /&gt;
&lt;br /&gt;
Wesnoth is a fun little game that I can see myself dedicating time and energy to developing even after GSoC is concluded.&lt;br /&gt;
Plus, I wouldn't pass up on the chance to continue learning from the Wesnoth developers and expand my programming knowledge :)&lt;/div&gt;</summary>
		<author><name>Ryanc</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.wesnoth.org/index.php?title=SummerOfCodeIdeas&amp;diff=29429</id>
		<title>SummerOfCodeIdeas</title>
		<link rel="alternate" type="text/html" href="https://wiki.wesnoth.org/index.php?title=SummerOfCodeIdeas&amp;diff=29429"/>
		<updated>2009-03-30T18:06:14Z</updated>

		<summary type="html">&lt;p&gt;Ryanc: /* Optimize implementation of WML for memory usage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a compilation of ideas from ML. Needs to be refined (more detailed description, deliverables, workload estimation?):&lt;br /&gt;
&lt;br /&gt;
== I want to be one of your Google Summer of Code students, what should I do... ==&lt;br /&gt;
&lt;br /&gt;
Here is a quick list of things to do to get you started&lt;br /&gt;
* Create an account on gna.org&lt;br /&gt;
* Create an account on the wesnoth forum, and tell an admin on the IRC channel to mark is as a GSoC Student account (Admins are boucman, Ivanovic, mordante, Shadow_Master, Sirp and Turuk)&lt;br /&gt;
* Join the irc channel (#wesnoth-dev on irc.freenode.net) and introduce yourself. We will not give formal interviews, but we will clearly favor people we have learned to know during the selection process (basically communication via IRC is mandatory for our project! it is the main way of &amp;quot;every day communication&amp;quot; for Wesnoth. For the same reason, it's also a good idea to regularly read the [http://wesnoth.debian.net/?C=M;O=A IRC logs].).&lt;br /&gt;
&lt;br /&gt;
* Start a wiki page about your idea, add a link on the bottom of this page and add this information on it:&lt;br /&gt;
** List your account names (gna, forum, irc nick) so that we can recognize you&lt;br /&gt;
** Fill the questionnaire on this page: [[SoC_Information_for_Google#Does_your_organization_have_an_application_template_you_would_like_to_see_students_use.3F_If_so.2C_please_provide_it_now.| List of questions to answer]]&lt;br /&gt;
** Detail your idea as much as possible, look at other students pages, and please give milestones and studies you've done&lt;br /&gt;
** Add a link to the page at the bottom of this page&lt;br /&gt;
&lt;br /&gt;
* Though not mandatory, it is highly advisable to go to the [[EasyCoding]] and [[NotSoEasyCoding]] pages and implement one of these ideas (or any idea of similar scope) so we have an idea how you work. Be sure to use your gna account when submitting these patches so we know who it is coming from. You can also implement some features from our feature request database at gna. When you implement something, also list it on your own page with a reference to the patch.&lt;br /&gt;
&lt;br /&gt;
* For working on Wesnoth you have to be able to compile trunk. To do so you should have a look at the [[WesnothSVN|page about svn]] and afterwards [[CompilingWesnoth|compile Wesnoth svn]].&lt;br /&gt;
&lt;br /&gt;
* Once you have everything done here and think your idea is okay, go to [http://groups.google.com/group/google-summer-of-code-announce/web/guide-to-the-gsoc-web-app-for-student-applicants page at google] to submit your application. You have to submit it before '''Date to be supplied later''' or you have no chance to get in!&lt;br /&gt;
&lt;br /&gt;
== List of Ideas for the Project (Suggestions from the wesnoth developers) ==&lt;br /&gt;
&lt;br /&gt;
Here is only a short description of possible Ideas we have, each has a page of its own with a more detailed version on it.&lt;br /&gt;
&lt;br /&gt;
=== Optimize implementation of WML for memory usage ===&lt;br /&gt;
&lt;br /&gt;
Based on this idea: [http://dave.wesnoth.org/?p=9] optimize WML to minimize its memory usage. High memory usage has been a problem for Wesnoth, and this project will aim to reduce it.&lt;br /&gt;
&lt;br /&gt;
=== Implement campaign statistics reports on stats.wesnoth.org ===&lt;br /&gt;
&lt;br /&gt;
Wesnoth has an infrastructure which records details of campaigns that players play into a centralized MySQL database. However, we only have rudimentary reports based on this MySQL database available at this time, at [http://stats.wesnoth.org].&lt;br /&gt;
&lt;br /&gt;
This project would involve writing a stats reporting web site which would take the data from the MySQL database and produce reports in chart and table form. Campaign designers would be able to use these reports to gather feedback on their campaigns and get ideas for improvements.&lt;br /&gt;
&lt;br /&gt;
A student could largely make their choice of infrastructure for creating the Website -- whether they prefer Python, Perl, Ruby, PHP, etc. This is a great opportunity for someone who doesn't want to dive into hardcore C++ to make a valuable contribution to Wesnoth.&lt;br /&gt;
&lt;br /&gt;
[[SoC Ideas Stats Server]] - Full Version of the idea, with detailed information&lt;br /&gt;
&lt;br /&gt;
=== Extending the Multiplayer server ===&lt;br /&gt;
&lt;br /&gt;
Our multiplayer community is generally strong and healthy, but we believe its growth is limited by some problems in the interface of the multiplayer lobby.&lt;br /&gt;
&lt;br /&gt;
[[SoC Ideas Multiplayer server]] - Full version of the idea, with detailed information&lt;br /&gt;
&lt;br /&gt;
=== Addon server ===&lt;br /&gt;
Wesnoth has an addon server which offers users to upload user &lt;br /&gt;
made content (UMC). This allows all other users of Wesnoth&lt;br /&gt;
to easily download and install this content. The server was &lt;br /&gt;
originally written for user-made campaigns but contains a lot&lt;br /&gt;
more types of addons nowadays. Both the server side and the &lt;br /&gt;
client side need to be improved.&lt;br /&gt;
&lt;br /&gt;
[[SoC Ideas Addon Server]] - Full version of the idea, with detailed information&lt;br /&gt;
&lt;br /&gt;
=== WML validation schemes ===&lt;br /&gt;
Wesnoth uses WML as basic data structure. Over the years&lt;br /&gt;
this language has evolved and got more complex. At the&lt;br /&gt;
moment the WML is validated at runtime and in case of a&lt;br /&gt;
problem the engine stops. With schemes these problems can&lt;br /&gt;
be validated when loading the WML, making it easier to find&lt;br /&gt;
problems before running into them.&lt;br /&gt;
&lt;br /&gt;
[[SoC Ideas Schemes]] - Full version of the idea, with detailed information&lt;br /&gt;
&lt;br /&gt;
=== Write a primitive library for Formula AI ===&lt;br /&gt;
&lt;br /&gt;
Wesnoth has always had a simple C++ based AI. David (our lead developer) has been working on a simple language to write AI in Wesnoth: [[FormulaAI]]&lt;br /&gt;
&lt;br /&gt;
The Wesnoth AI is used as an opponent in most campaigns, and as such is an important piece of code for the Wesnoth project. Unfortunately, because the skills required to understand and modify it are rather arcane, it is also one of the most neglected parts of the Wesnoth code. This is a place where a lot of research and useful work could be done. But keep in mind that [[WhyWritingAWesnothAIIsHard|writing an AI for Wesnoth is difficult]].&lt;br /&gt;
&lt;br /&gt;
Writing a whole AI is so complicated that we believe it can't be done in a single Summer of code. All proposals should keep that in mind and try to identify an interesting subset that would be workable in the limited time of a summer of code&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[SoC Ideas FormulaAI]] - Full version of the idea, with detailed information&lt;br /&gt;
&lt;br /&gt;
=== Savegame reorganization ===&lt;br /&gt;
The savegame formats of Wesnoth for single player campaigns&lt;br /&gt;
and multiplayer differ from each other. And they are processed&lt;br /&gt;
differently as well. Now there is an additional request coming&lt;br /&gt;
up: Multiplayer campaigns. The task will be to unify the savegames&lt;br /&gt;
for all types of scenarios in order to provide a maintainable code&lt;br /&gt;
again.&lt;br /&gt;
&lt;br /&gt;
[[SoC Ideas Savegame]] - Full version of the idea, with detailed information&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Other possible ideas to be fleshed out ===&lt;br /&gt;
A MapGenerator rewrite - better scalable for outdoor maps, plus the possibility to define areas (similar to the caverns in the cave generator) etc.&lt;br /&gt;
&lt;br /&gt;
=== Make your own ideas ===&lt;br /&gt;
If you have your own idea the best thing is to join IRC wesnoth-dev at irc.freenode.net and discuss the idea with the developers there. If the developers think your idea is interesting and like the feature you can start to turn it into a full proposal. Once done discuss it again on IRC so the developers can accept your idea.&lt;br /&gt;
&lt;br /&gt;
== Information about our Project ==&lt;br /&gt;
The information we provided google with about our project can be looked up at the site [[SoC Information for Google]].&lt;br /&gt;
&lt;br /&gt;
Also see the [[DeveloperResources]] link (from the [[Project]] page).&lt;br /&gt;
&lt;br /&gt;
== People to bug on IRC ==&lt;br /&gt;
We have prepared a list of people with their &amp;quot;area of competence&amp;quot;. This is to give you an idea on which areas those people can be of help for you. Of course you should always just ask in the IRC chan, but those are the most likely ones to answer questions in the respective area. And here is the list:&lt;br /&gt;
&lt;br /&gt;
[[SoC People to bug on IRC]]&lt;br /&gt;
&lt;br /&gt;
== GSoC Student pages ==&lt;br /&gt;
&lt;br /&gt;
Please add a link to your wiki page below&lt;br /&gt;
&lt;br /&gt;
==== AI ====&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_Velory| Velory - SoC Proposal]]&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_AI_Improvement_Crab| Crab - SoC Proposal - AI Improvement]]&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_Sparksteel | Sparksteel - Improving the AI engine design]]&lt;br /&gt;
&lt;br /&gt;
[[FormulaAISoC2009Dragonking | Dragonking - Improving the formula AI ]]&lt;br /&gt;
&lt;br /&gt;
==== Savegame reorganization ====&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_Euschn | Euschn - Savegame reorganization]]&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_lmg| lmg - Savegame reorganization]]&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_grantwu| grantwu - Savegame reorganization]]&lt;br /&gt;
&lt;br /&gt;
==== Extending the Multiplayer server ====&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_rubend | rubend - Extending the Multiplayer server]]&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_IneQuation | IneQuation - Extending the Multiplayer server]]&lt;br /&gt;
&lt;br /&gt;
[[MP Server Ilor | Ilor - Extending the Multiplayer server]]&lt;br /&gt;
&lt;br /&gt;
==== Addon server ====&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_Ryochan7| Ryochan7 - Addon server]]&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_iyonius| iyonius - Addon server]]&lt;br /&gt;
&lt;br /&gt;
==== Optimize implementation of WML for memory usage ====&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_res| res -  Optimize implementation of WML for memory usage ]]&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_jdmunro| jdmunro -  Optimize implementation of WML for memory usage ]]&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_Ryanc| ryanc -  Optimize implementation of WML for memory usage ]]&lt;br /&gt;
&lt;br /&gt;
==== WML validation schemes ====&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_orian| orian - WML validation schemes ]]&lt;br /&gt;
&lt;br /&gt;
==== Implement campaign statistics reports on stats.wesnoth.org ====&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_Elbin| Elbin - New campaign statistics page]]&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_Munk| Munk - New campaign stats page]]&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_carlestyle| carlestyle - New campaign stats page]]&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_nerwa| NeRwa - New campaign stats page]]&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_mrfinch| mrfinch - New Campaign Statistics Page]]&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_corn| corn - New Campaign Statistics Page]]&lt;br /&gt;
&lt;br /&gt;
[[SummerOfCodeProposal_csaunders | csaunders - SoC Proposal - Stats Server]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Summer of Code|*]]&lt;/div&gt;</summary>
		<author><name>Ryanc</name></author>
		
	</entry>
</feed>