<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Ramble On &#187; Google Summer of Code</title>
	<atom:link href="http://blog.bobkuo.com/category/google-summer-of-code/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.bobkuo.com</link>
	<description>Let the reader understand</description>
	<lastBuildDate>Mon, 21 Jan 2013 01:00:26 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5</generator>
		<item>
		<title>Parrot on RTEMS: Out of directory building, part 2</title>
		<link>http://blog.bobkuo.com/2010/08/parrot-on-rtems-out-of-directory-building-part-2/</link>
		<comments>http://blog.bobkuo.com/2010/08/parrot-on-rtems-out-of-directory-building-part-2/#comments</comments>
		<pubDate>Thu, 12 Aug 2010 05:05:50 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Google Summer of Code]]></category>

		<guid isPermaLink="false">http://blog.bobkuo.com/?p=185</guid>
		<description><![CDATA[Well, the bad news is that the &#8220;hard&#8221; deadline is coming up next Monday. The good news is that I&#8217;m making progress. I will not make my original goal of having a cross-compiled Parrot testing on RTEMS. What I do have currently is the &#8220;secret sauce&#8221; that allows the Parrot configuration to do a minimal [...]]]></description>
				<content:encoded><![CDATA[<p>Well, the bad news is that the &#8220;hard&#8221; deadline is coming up next Monday.  The good news is that I&#8217;m making progress.  I will not make my original goal of having a cross-compiled Parrot testing on RTEMS.  What I do have currently is the &#8220;secret sauce&#8221; that allows the Parrot configuration to do a minimal cross-compilation.  I&#8217;m currently working on getting 1) Parrot to build out of directory and 2) Parrot to target multiple platforms.  If you haven&#8217;t been following, my patches allow Parrot&#8217;s configure script to run from a separate directory, run all tests outside the source directory, and generate all configure time files outside the source directory.  I am currently working on fixing the Makefile so we can actually build i.e. run `make`. This is a pretty monumental problem as there are multiple problems &#8211; paths in the Makefile, perl scripts that run from the Makefile to generate more files, separate included Makefiles, and all Makefiles are actually templates that are created at configure time.  My latest push allows us to run a few steps in the Makefile but there are still miles to go.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.bobkuo.com/2010/08/parrot-on-rtems-out-of-directory-building-part-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Parrot on RTEMS: Out of directory building</title>
		<link>http://blog.bobkuo.com/2010/07/parrot-on-rtems-out-of-directory-building/</link>
		<comments>http://blog.bobkuo.com/2010/07/parrot-on-rtems-out-of-directory-building/#comments</comments>
		<pubDate>Wed, 28 Jul 2010 03:17:40 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Google Summer of Code]]></category>

		<guid isPermaLink="false">http://blog.bobkuo.com/?p=183</guid>
		<description><![CDATA[Sorry it&#8217;s been such a long time since I&#8217;ve given an update. After a long discussion with one of my mentors we&#8217;ve decided to switch focuses and knock out a few minor Parrot features that would help us immensely. Currently I&#8217;m working on getting Parrot to build out of directory. Currently Parrot assumes that we [...]]]></description>
				<content:encoded><![CDATA[<p>Sorry it&#8217;s been such a long time since I&#8217;ve given an update.  After a long discussion with one of my mentors we&#8217;ve decided to switch focuses and knock out a few minor Parrot features that would help us immensely.  Currently I&#8217;m working on getting Parrot to build out of directory.  Currently Parrot assumes that we are building in the same directory our source is in which, while it works, means we get our executables (and compiled objects) intermingled with our source and other files.  Also if we wanted to have two versions of Parrot from a single source (say with different Configuration options) it seems nigh impossible unless we have two copies of the source.  Our of directory building will allow us to do something like:<br />
<code><br />
mkdir build<br />
cd build<br />
perl ../Configure.pl<br />
make<br />
</code><br />
And we&#8217;d have our build separate from our source code.</p>
<p>Those first three steps are now possible with a <a href="http://github.com/bubaflub/gsoc-rtems-parrot-hints-maker/blob/master/parrot_out_of_directory_build.diff">set of patches</a> to the Parrot configuration code.  Now all that remains is to copy the source code to the build directory so we can just run `make`.  I&#8217;ve tested configuring out of directory and building in directory and you get exactly the same Makefile and build and it passes all coding tests.  The patch right now is a bit ugly and should be refactored into a separate module.</p>
<p>After this is done, I&#8217;ll work on getting a mechanism to copy over all the source so we can do a full build out of directory.  Hopefully this will be committed to the source, and I can begin working on getting Parrot to cross-compile.  Since I&#8217;ve already got Parrot compiling with the RTEMS tool-chain, after all this is done I&#8217;ll create a bootstrapping Perl script that&#8217;ll help install the source, get you a system copy of Parrot, a RTEMS cross-compiled copy and build libparrot for linking.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.bobkuo.com/2010/07/parrot-on-rtems-out-of-directory-building/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Parrot on RTEMS: Parrot Configuration is Clean</title>
		<link>http://blog.bobkuo.com/2010/06/parrot-on-rtems-parrot-configuration-is-clean/</link>
		<comments>http://blog.bobkuo.com/2010/06/parrot-on-rtems-parrot-configuration-is-clean/#comments</comments>
		<pubDate>Wed, 09 Jun 2010 04:21:49 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Google Summer of Code]]></category>

		<guid isPermaLink="false">http://blog.bobkuo.com/?p=177</guid>
		<description><![CDATA[This week for the Google Summer of Code, I finished work on getting Parrot to configure cleanly. The latest commit can configure Parrot without any errors. The long and the short of it is that the configure steps and hints file is completed although several of the hints are currently hard-coded in. Next week I [...]]]></description>
				<content:encoded><![CDATA[<p>This week for the Google Summer of Code, I finished work on getting Parrot to configure cleanly.  The <a href="http://github.com/bubaflub/gsoc-rtems-parrot-hints-maker">latest commit</a> can configure Parrot without any errors.  The long and the short of it is that the configure steps and hints file is completed although several of the hints are currently hard-coded in.  Next week I will focus on getting the build to complete without errors.  A quick refresher:</p>
<p>Parrot does not come with a Makefile but comes with a Perl script called Configure.pl that runs a number configuration of steps.  One steps determines what CPU and architecture we are running, one checks for the sizes of native types like &#8216;int&#8217; and &#8216;float&#8217; and &#8216;double&#8217;.  Some steps wrangle templates to generate Makefiles and source code while others compile programs to check how a system compiler actually handles certain pieces of code. Essentially these steps capture all the information necessary to configure Parrot to compile correctly on whatever system we are running.</p>
<p>The problem is that with RTEMS our development system will not necessary be the same architecture as the target platform.  For example, I&#8217;m running Fedora Core 12 on x86 but my code and compilers target sparc.  So these automated tests won&#8217;t run.  We need some secret sauce to get Parrot to compile on different hardware architectures for RTEMS.</p>
<p>The first part of the secret sauce was overriding the default compiler, linker, and other parts of the tool chain.  This was simple because Configure.pl can accept the overrides not only through the command line, but we can also specify an external file to hold our entire configuration recipe.  This helps keep things organized, makes it easier to generate, and avoids the problem of a max command line argument length.</p>
<p>The second step was to disable as many of the auto configuration steps as possible.  Again, this was simple because the external file can also specify which steps we want to skip.  Last week I disabled every step which generated a lot of errors from the configuration script.  Reading these errors showed me exactly what information was necessary and from there I could either provide the information in a hints file (in lieu of running the step) or I could re-enable the step (if it didn&#8217;t run hardware dependent code).</p>
<p>This week I finished the hints file and removed the last remaining configuration bugs.  That means Parrot can now run the Configure.pl script with RTEMS variables and Configure.pl will generate a Makefile and not throw any errors.  It&#8217;s not time to celebrate quite yet &#8211; many of the values are hard-coded into the hints file rather than probed from the RTEMS.  And the build still hangs on a few wrong values in the hints file.</p>
<p>To alleviate the first problem would require a re-write of the secret sauce with either autoconf or with perl.  Autoconf would be nice because RTEMS already uses it and there are probably many examples of how to get exactly the information I want.  Perl would be nice because I already know the language unlike autoconf / m4.</p>
<p>A rewrite is definitely in the future, but for now I will work on getting the build clean and a &#8216;Hello World&#8217; example in PIR running before that.  Once I&#8217;ve worked out all of the problems there I will begin to work on getting the Parrot test suite running, rewriting the secret sauce, testing multiple hardware configurations, and then even playing with High Level Languages (HLLs) that run on top of Parrot like Rakudo (Perl 6 on Parrot) or Cardinal (Ruby on Parrot).  Finally, I&#8217;d like to round things out with a series of tutorials (or even screencasts) showing how to install RTEMS, Parrot, and some HLLs on a blank target environment.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.bobkuo.com/2010/06/parrot-on-rtems-parrot-configuration-is-clean/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Parrot on RTEMS: Hint Hint!</title>
		<link>http://blog.bobkuo.com/2010/06/parrot-on-rtems-hint-hint/</link>
		<comments>http://blog.bobkuo.com/2010/06/parrot-on-rtems-hint-hint/#comments</comments>
		<pubDate>Wed, 02 Jun 2010 02:39:40 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Google Summer of Code]]></category>

		<guid isPermaLink="false">http://blog.bobkuo.com/?p=174</guid>
		<description><![CDATA[I am continuing work to port Parrot to run on RTEMS. The &#8220;secret sauce&#8221; is in configuring Parrot to use the correct compilers, linkers, etc. Because we are doing cross-platform development, that means our host system will most likely not have the same architecture as the target system. For example, I am currently working on [...]]]></description>
				<content:encoded><![CDATA[<p>I am continuing work to port Parrot to run on RTEMS.  The &#8220;secret sauce&#8221; is in configuring Parrot to use the correct compilers, linkers, etc.  Because we are doing cross-platform development, that means our host system will most likely not have the same architecture as the target system.  For example, I am currently working on an x86 system but, in targeting an embedded sparc system, have sparc variants of gcc, ld, and so forth.  We must tell parrot to compile with those variants rather than the system default.</p>
<p>The good news is that this step is mostly complete.  The configure script now recognizes which compilers we must use, and, best of all, this information is generated based on the RTEMS installation that you have (rather than a static recipe).</p>
<p>Parrot&#8217;s configuration, however, is more than just to determine which compiler to run but also includes automatic probes for architecture specific information, such as byte order or the size of an int.  Since our target architecture is not our host architecture, we can compile these automatic probes but we cannot run them.  So the hints file will contain all of the information that we need to compile Parrot but can&#8217;t figure out on our own.</p>
<p>Work on the hints file has begun by first overloading the standard libraries that are linked to.  Again, this is because the host architecture (with which the libraries are built against) is not the same as the target architecture and we need a few RTEMS specific libraries as well.</p>
<p>Right now the configuration script runs but errors on a few of the steps.  I hope that by next week the entire configuration script can run and we can begin trying to build Parrot on RTEMS.</p>
<p>As always, you can track progress at <a href="http://github.com/bubaflub/gsoc-rtems-parrot-hints-maker">my github repository</a> for the project or pinging me on IRC&#8230; look for bubaflub hanging out on #RTEMS on freenode or #Parrot irc.perl.org.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.bobkuo.com/2010/06/parrot-on-rtems-hint-hint/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Beginning Parrot on RTEMS</title>
		<link>http://blog.bobkuo.com/2010/05/beginning-parrot-on-rtems/</link>
		<comments>http://blog.bobkuo.com/2010/05/beginning-parrot-on-rtems/#comments</comments>
		<pubDate>Wed, 26 May 2010 02:11:31 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Google Summer of Code]]></category>

		<guid isPermaLink="false">http://blog.bobkuo.com/?p=170</guid>
		<description><![CDATA[My proposal for porting Parrot to RTEMS was accepted for the Google Summer of Code! Though it&#8217;s a little late, this post will introduce and explain what I&#8217;ll be doing. Parrot Parrot is a virtual machine designed with dynamic languages in mind. Historically, Parrot started out as the virtual machine for Perl 6 Rakudo, but [...]]]></description>
				<content:encoded><![CDATA[<p>My <a href="http://blog.bobkuo.com/2010/04/google-summer-of-code-2010-proposal-parrot-on-rtems/">proposal</a> for porting <a href="http://parrot.org">Parrot</a> to <a href="http://rtems.org">RTEMS</a> was accepted for the Google Summer of Code!  Though it&#8217;s a little late, this post will introduce and explain what I&#8217;ll be doing.</p>
<h3>Parrot</h3>
<p>Parrot is a virtual machine designed with dynamic languages in mind.  Historically, Parrot started out as the virtual machine for <span style="text-decoration: line-through;">Perl 6</span> <a href="http://rakudo.org">Rakudo</a>, but now it has many <a href="http://parrot.org/languages">languages</a> (or &#8220;High Level Languages&#8221; or &#8220;HLLs&#8221;) being actively developed to run on top of the virtual machine.  Parrot comes with a number of tools to make implementing new languages easier &#8211; the <a href="http://docs.parrot.org/parrot/latest/html/docs/book/pct/ch03_compiler_tools.pod.html">Parrot Compiler Tools</a>. Like other VMs, Parrot can compile down to platform independent bytecode (called PBC). Parrot was designed with &#8220;HLL Interop&#8221; in mind &#8211; to quote the <a href="http://docs.parrot.org/parrot/latest/html/docs/intro.pod.html#Design_goals">docs</a>,</p>
<blockquote><p>
Parrot is also designed to provide interoperability between languages that compile to it. In theory, you will be able to write a class in Perl, subclass it in Python and then instantiate and use that subclass in a Tcl program.
</p></blockquote>
<p>How cool is that?  That means progress for one HLL is progress for all.  Any optimization to the underlying architecture is an optimization for every HLL.  Any low-level bindings will automatically work for all HLLs.</p>
<h3>RTEMS</h3>
<p>RTEMS stands for Real-Time Executive for Multiprocessor Systems.  It is a real time operating system designed for embedded systems. RTEMS is free and open source and POSIX (1003.1b API) compliant.  RTEMS comes with a full ANSI C, ANSI C++ (with STL), and ADA support.  RTEMS has a full TCP/IP stack as well as other networking features like HTTP servers and support for RPC. Finally, RTEMS has full debugging support through GDB.</p>
<p>RTEMS is cross-compiled &#8211; that means the programmer might be on an x86 architecture but compile programs to run on Sparc.  RTEMS currently supports 116 hardware configurations (&#8220;Broad Support Packages&#8221; or &#8220;BSPs&#8221;) on a number of chip architectures (x86, ARM, Sparc) which can all co-exist on the same development machine and run with the same development code.</p>
<h3>Potential</h3>
<p>I think the potential here is staggering &#8211; not only does RTEMS get new languages to target the hardware, Parrot gets new platforms to test and run on.  Someone could write something in Rakudo Perl using classes from other languages like Python or Ruby or Tcl, compile to bytecode and then be run on a hundred or so different hardware configurations.</p>
<h3>Current Work</h3>
<p>Of course it&#8217;s not all puppy dogs and ice cream &#8211; there&#8217;s work to do!  Things don&#8217;t quite work yet, but by the end of the summer I hope to have Parrot&#8217;s bleeding edge building on RTEMS and running the test suite on the BSPs.  I&#8217;ll update this blog once a week with my progress after my Tuesday meeting with my mentors at the Parrot Foundation and RTEMS.  The first work that needs to get knocked out:</p>
<ol>
<li>Hints Makefile &#8211; This Makefile will extract all the BSP information necessary for compiling Parrot and then generate a hints file that will be used by Parrot at compile time.</li>
<li>Cross compilation support for Configure.PL &#8211; We need to be able to specify which platform we want to target at compile time for Parrot.  Currently Configure.PL figures this out automatically by checking the system that we are running, but with cross-compilation the system we are running is not the system we are targeting.</li>
<li><span style="text-decoration: line-through;">Write blog post detailing plan of attack</span></li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://blog.bobkuo.com/2010/05/beginning-parrot-on-rtems/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Summer of Code 2010 Proposal: Patch Crypt::Primes and Crypt::Random to use Math::GMPz and Math::Primality [UPDATED]</title>
		<link>http://blog.bobkuo.com/2010/04/google-summer-of-code-2010-proposal-patch-cryptprimes-and-cryptrandom-to-use-mathgmpz-and-mathprimality/</link>
		<comments>http://blog.bobkuo.com/2010/04/google-summer-of-code-2010-proposal-patch-cryptprimes-and-cryptrandom-to-use-mathgmpz-and-mathprimality/#comments</comments>
		<pubDate>Wed, 07 Apr 2010 07:02:05 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Google Summer of Code]]></category>

		<guid isPermaLink="false">http://blog.bobkuo.com/?p=157</guid>
		<description><![CDATA[Abstract Currently Crypt::Primes and Crypt::Random use Math::Pari for their mathematical processing. Bindings to Pari (through Math::Pari) are fragile and can slow Perl 5 development when new versions are released as bugs must be hunted. This project will move these two core modules to use Math::GMPz and Math::Primality (accessing the GMP library) which will provide identical [...]]]></description>
				<content:encoded><![CDATA[<p><strong>Abstract</strong></p>
<p>Currently Crypt::Primes and Crypt::Random use Math::Pari for their mathematical processing.  Bindings to Pari (through Math::Pari) are fragile and can slow Perl 5 development when new versions are released as bugs must be hunted.  This project will move these two core modules to use Math::GMPz and Math::Primality (accessing the GMP library) which will provide identical functionality with less headaches.  Since I do not own either of these modules I will provide a set of patches that the authors may choose to incorporate for this functionality.</p>
<p><strong>Deliverables</strong></p>
<ul>
<li>Crypt::Primes patches, documentation, and tests</li>
<li>Crypt::Random patches, documentation, and tests</li>
<li>The same for any other libraries that may depend upon them</li>
</ul>
<p><strong>Project Details</strong></p>
<p>This project will attempt to remove Perl 5&#8242;s dependence upon Pari and the fragile Math::Pari bindings.  Last year through Google&#8217;s Summer of Code I developed Math::Primality to provide this type of functionality and now this project will integrate it into core modules.  The main idea is to remove the dependencies without having any noticeable affect to the end-user.  If there is insufficient tests or documentation, I will add them to ensure correct functioning and clarity. If time permits, I will profile the modules and attempt to optimize the performance of these core cryptographic libraries.</p>
<p><strong>Project Schedule</strong></p>
<p>April 26th &#8211; May 24th: Install and test Crypt::Primes and Crypt::Random as is.  Contact module author(s) to introduce myself and explain what is happening.  Determine if any other core modules need to be updated. I will also finish polishing Math::Primality (Issues #1 &#8211; #4 at <a href="http://github.com/bubaflub/math--primality/issues">http://github.com/bubaflub/math&#8211;primality/issues</a> &#8211; Convert README to POD, use Dist::Zila, test with 5.12, and clarify documentation).</p>
<p>May 24th &#8211; July 12th: Work on patching Crypt::Primes.  Fill out any missing documentation and enhance test suite.</p>
<p>By July 12th: Have Crypt::Primes converted to use Math::GMPz and Math::Primality.</p>
<p>July 12th &#8211; August 9th: Work on patching Crypt::Random.  Fill out any missing documentation and enhance test suite.</p>
<p>By August 16th: Merge patches if possible.  Polish code and fill out test suite and documentation.</p>
<p>If I finish early or am ahead of schedule I will move on to other Crypt::* modules that are commonly used and depend upon Math::Pari, providing the same documentation and tests as above.</p>
<p><strong>References and Likely Mentors</strong></p>
<p>I&#8217;ve worked with Jonathan Leto on last year&#8217;s Google Summer of Code and work with him on Parrot currently.</p>
<p><strong>License</strong></p>
<p>Same terms as Perl itself.</p>
<p><strong>Bio</strong></p>
<p>My name is Bob Kuo and I am a 24 year old graduate student living in Champaign-Urbana, IL.  My undergraduate degree was in Math and Computer Science with classwork focusing on Number and Coding Theory, Numerical Analysis, and Algorithms.  I participated in last year&#8217;s Google Summer of Code with The Perl Foundation writing Math::Primality and finished ahead of schedule.  I have been involved with Parrot since the end of last year&#8217;s Google Summer of Code and am an active committer.  I currently work part-time as a web developer where I support a legacy PHP system and develop in Ruby/Rails.  I have been using Perl in web development and system administration for 4+ years.  I&#8217;ve contributed bug fixes to the CPAN modules CGI and Math::GMPz. You can see my open source code at <a href="http://www.github.com/bubaflub">github.com/bubaflub</a>.</p>
<p><strong>Eligibility</strong></p>
<p>I am currently a full time student in graduate school at an accredited institution living in the United States.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.bobkuo.com/2010/04/google-summer-of-code-2010-proposal-patch-cryptprimes-and-cryptrandom-to-use-mathgmpz-and-mathprimality/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Summer of Code 2010 Proposal: GMP Bindings for Parrot</title>
		<link>http://blog.bobkuo.com/2010/04/google-summer-of-code-2010-proposal-gmp-bindings-for-parrot/</link>
		<comments>http://blog.bobkuo.com/2010/04/google-summer-of-code-2010-proposal-gmp-bindings-for-parrot/#comments</comments>
		<pubDate>Wed, 07 Apr 2010 06:31:50 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Google Summer of Code]]></category>

		<guid isPermaLink="false">http://blog.bobkuo.com/?p=153</guid>
		<description><![CDATA[Abstract Parrot currently has two PMCs that wrap functionality in GMP: BigInt and BigNum. This project will move these PMCs out of the main parrot repository and replace them with bindings to the GMP library. The project will focus on getting main integer and floating point functions over from GMP, replicating in part Math::GMPz and [...]]]></description>
				<content:encoded><![CDATA[<p><strong>Abstract</strong></p>
<p>Parrot currently has two PMCs that wrap functionality in GMP: BigInt and BigNum.   This project will move these PMCs out of the main parrot repository and replace them with bindings to the GMP library.  The project will focus on getting main integer and floating point functions over from GMP, replicating in part Math::GMPz and Math::GMPf.</p>
<p><span style="font-weight: bold;">Benefits to the Perl/Open Source Community</span></p>
<p>Some members of the parrot community have expressed their disgust with the current BigNum implementation.  Not only would this project provide a more elegant and efficient implementation, but GMP bindings would be available to any language implemented on top of Parrot &#8211; hence Rakudo would gain &#8220;free&#8221; bindings to GMP.  GMP bindings are also foundational for any future cryptographic libraries that may need to be written.</p>
<p><strong>Deliverables</strong></p>
<ul>
<li>BigInt and BigNum PMCs based upon new GMP bindings that do not break current</li>
<li>Access to crucial GMP integer and floating point functions through NCI</li>
<li>Tests for every accessed function</li>
<li>Documentation for every function</li>
<li>Example code</li>
</ul>
<p><span style="font-weight: bold;">Project Details</span></p>
<p>This project will provide access to the GMP library through the NCI (native call interface).  The focus will be to replace the existing BigInt and BigNum functionality by refactoring the PMCs to use the GMP NCI. The design will allow future work to bind to more functions or be easily modified if the GMP API changes in the future (though this is unlikely &#8211; GMP is fairly stable).  Though the bare-minimum amount of functionality required for BigInt and BigNum is proposed here, depending on time and speed of development I will essentially bind as many functions as I can.</p>
<p><strong>Project Schedule</strong></p>
<p>April 26th &#8211; May 24th: Begin and (hopefully) finalize design of new PMCs and GMP interface.  Start branch to move BigInt and BigNum out of main parrot repository.</p>
<p>May 24th &#8211; July 12th: Begin binding to necessary integer and float functions in GMP.  Write tests and documentation.</p>
<p>By July 12th: Have at least one of the PMCs functionally equivalent with it&#8217;s previous incarnation.  Have tests to prove this and documentation to explain it.</p>
<p>July 12th &#8211; August 9th: Finish second PMC and necessary NCI bindings.</p>
<p>By August 16th: Merge branch if it hasn&#8217;t already been merged into trunk.  Polish tests and documentation.</p>
<p>If I finish early or am ahead of schedule I will provide bindings, tests, and documentation to some of the other integer and float functions.  If I&#8217;m speeding through this, I will also provide the same for the GMP rational functions.</p>
<p><span style="font-weight: bold;">References and Likely Mentors</span></p>
<p>I&#8217;ve worked with Jonathan Leto on last year&#8217;s Google Summer of Code and work with him on Parrot currently.  Andrew Whitworth would also be a good mentor for this project as he works with parrot-linear-algebra and the HLL matrixy.</p>
<p><span style="font-weight: bold;">License</span></p>
<p>Artistic license 2.0 (same as Parrot)</p>
<p><strong>Bio</strong></p>
<p>My name is Bob Kuo and I am a 24 year old graduate student living in Champaign-Urbana, IL.  My undergraduate degree was in Math and Computer Science with classwork focusing on Number and Coding Theory, Numerical Analysis, and Algorithms.  I participated in last year&#8217;s Google Summer of Code with The Perl Foundation writing Math::Primality and finished ahead of schedule.  I have been involved with Parrot since the end of last year&#8217;s Google Summer of Code and am an active committer.  I currently work part-time as a web developer where I support a legacy PHP system and develop in Ruby/Rails.  I have been using Perl in web development and system administration for 4+ years.  I&#8217;ve contributed bug fixes to the CPAN modules CGI and Math::GMPz. You can see my open source code at <a href="http://www.github.com/bubaflub">github.com/bubaflub</a>.</p>
<p><strong>Eligibility</strong></p>
<p>I am currently a full time student in graduate school at an accredited institution living in the United States.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.bobkuo.com/2010/04/google-summer-of-code-2010-proposal-gmp-bindings-for-parrot/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Summer of Code 2010 Proposal: Parrot on RTEMS [UPDATED]</title>
		<link>http://blog.bobkuo.com/2010/04/google-summer-of-code-2010-proposal-parrot-on-rtems/</link>
		<comments>http://blog.bobkuo.com/2010/04/google-summer-of-code-2010-proposal-parrot-on-rtems/#comments</comments>
		<pubDate>Wed, 07 Apr 2010 05:04:20 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Google Summer of Code]]></category>

		<guid isPermaLink="false">http://blog.bobkuo.com/?p=146</guid>
		<description><![CDATA[Parrot on RTEMS Google Summer of Code Program 2010 Project Proposal Name: Bob Kuo Email: (removed here but in my official proposal through Google) University: Urbana Theological Seminary, Urbana, IL, USA Project Abstract This project seeks to enable code written in parrot to run on the RTEMS platform. Project Description Parrot is a multi-language, multi-platform [...]]]></description>
				<content:encoded><![CDATA[<h3>Parrot on RTEMS</h3>
<p>Google Summer of Code Program 2010 Project Proposal</p>
<p><strong>Name</strong>: Bob Kuo<br />
<strong>Email</strong>: (removed here but in my official proposal through Google)<br />
<strong>University</strong>: Urbana Theological Seminary, Urbana, IL, USA</p>
<h3>Project Abstract</h3>
<p>This project seeks to enable code written in parrot to run on the RTEMS platform.</p>
<h3>Project Description</h3>
<p><a href="http://www.parrot.org">Parrot</a> is a multi-language, multi-platform virtual machine.  The goal of this project is to enable parrot to configure and build for a variety of RTEMS BSPs.  Currently, parrot cannot build out of directory nor can it cross-compile.  This project would provide the necessary improvements to the parrot build system to enable parrot code to target RTEMS.</p>
<h3>Project Deliverables</h3>
<ol>
<li>May 23 (coding begins) &#8211; I already have a development environment setup with RTEMS successfully building and compiling on sparc-sis. I will be focusing on an x86 target and I will also attempt to get Chris&#8217; previous work on Parrot + RTEMS up and running.</li>
<li>June 15th &#8211; Work will begin on a testing framework to ensure that parrot is behaving correctly within RTEMS.</li>
<li>July 12th (Midterm Evaluation) &#8211; Chris&#8217; work will be brought up to date so that Parrot + RTEMS can build of trunk with a small set of patches against the Makefile.</li>
<li>August 9th (Final Evaluation) &#8211; Testing framework is in full swing and bugs are being fixed in both parrot and RTEMS.  Cross-compilation support is merged into the parrot trunk.</li>
<li>August 23rd (Final Results Announced) &#8211; Code is polished, documented, and tested.</li>
</ol>
<h3>Proposed Schedule</h3>
<p><strong>April 26 &#8211; May 23 2010 (study and prep)</strong></p>
<p>I am less familiar with RTEMS and CVS (I have only used svn or git) so I will be studying the RTEMS system. I will work primarily with the x86 architecture and the i386/pc386 BSP as Parrot already runs very well on this architecture. I also at this point would like to get Chris&#8217; previous work running on my test environment.</p>
<p><strong>May 24 &#8211; June 15 2010 (testing)</strong></p>
<p>Assuming I can get Chris&#8217; previous work to build, I will be devising a way to get the parrot test suite to run on RTEMS.  Most likely this will be limited to the &#8220;core&#8221; tests at first.</p>
<p><strong>June 16 &#8211; July 12 2010 (trunk)</strong></p>
<p>Once Chris&#8217; work and a testing framework is in place, I will be attempting to get the latest parrot to build on RTEMS.  Parrot 2.3.0 will be a longer-term supported release and work will be based off that release.</p>
<p><strong>July 13 &#8211; August 9 2010 (patches)</strong></p>
<p>Documentation and tests for both Parrot and RTEMS will be provided throughout the entire period.  I hope to have a cross-compilation branch merged into Parrot trunk so that a set of patches against a Makefile are no longer necessary.</p>
<p><strong>August 10 &#8211; August 23 2010 (cleanup)</strong></p>
<p>Clean up code, improve documentation, and package any patches or extra files for delivery.</p>
<p><strong>In the even that I&#8217;m ahead of schedule:</strong></p>
<p>If I am ahead of schedule during and Parrot is running cleanly on x86 I will begin to extend support to other BSPs. This will involve someone at RTEMS who already has a large number of BSPs built on their system and using the development build farm. While Parrot 2.3.0 will be a longer supported release, it would be ideal if RTEMS+Parrot could track Parrot&#8217;s ongoing development.  Programs will be developed that will allow regular automated testing of RTEMS+Parrot.</p>
<h3>Continued Involvement</h3>
<p>Assuming that the project is a success, I can continue to maintain and support and improve Parrot on RTEMS.  Since my work will most likely take me into the guts of RTEMS, I will be contributing to RTEMS for some time to come.</p>
<h3>Future Improvements</h3>
<ol>
<li>Remove compiler and linker warnings</li>
<li>Fix broken tests</li>
<li>Support more BSPs</li>
</ol>
<h3>Major Challenges foreseen</h3>
<p>My understanding of Makefiles is a bit shallow and cross-compilation is very new to me.  I&#8217;ll need some expert help in determining how to best modify both Parrot and RTEMS build chains.</p>
<h3>Possible Mentors</h3>
<p>As Chris Johns has previous work on RTEMS+Parrot, he would be most helpful in mentoring me.  Dr. Joel Sherrill has been extremely helpful on IRC. Jonathan Leto (with Parrot) has worked on the Parrot side of this equation and would be helpful as well.</p>
<h3>References</h3>
<p>Chris&#8217; previous work: <a href="http://www.rtems.org/ftp/pub/rtems/people/chrisj/parrot/">http://www.rtems.org/ftp/pub/rtems/people/chrisj/parrot/</a><br />
Parrot ticket for cross-compilation: <a href="http://trac.parrot.org/parrot/ticket/1516">http://trac.parrot.org/parrot/ticket/1516</a><br />
Branch on parrot for cross-compilatoin: <a href="http://trac.parrot.org/parrot/browser/branches/tt1516_builddir_option">http://trac.parrot.org/parrot/browser/branches/tt1516_builddir_option</a></p>
<h3>Relevant Background Experience</h3>
<p>I have been a Parrot developer since the end of last Google&#8217;s Summer of Code and have commit access.  Last year I worked with the Perl Foundation to develop Math::Primality and my work can be seen at <a href="http://github.com/bubaflub/math--primality">http://github.com/bubaflub/math&#8211;primality</a>.</p>
<h3>Personal</h3>
<p>I am a 24 year old grad student living in Champaign-Urbana, IL.  My undergraduate degree was in Math and Computer Science with course work focusing on Number and Coding Theory, Numerical Analysis, and Algorithms.  I work part-time as a web developer.</p>
<p><strong>How did you learn about RTEMS?</strong></p>
<p>From parrot people.</p>
<p><strong>Anything else that makes you special:</strong></p>
<p>I have a strange light-blue birthmark towards the top of my forehead.</p>
<h3>Experience</h3>
<p><strong>Free Software Experience/Contributions:</strong><br />
I am a committer to parrot, have a module on CPAN (Math::Primality from last year&#8217;s Google Summer of Code), and have committed bug fixes to various open source projects (e.g. CGI.pm and Math::GMPz).</p>
<p><strong>Language Skill Set</strong><br />
My part-time job focuses on PHP and Ruby.  My open source work takes me mostly towards Perl, and have been working with Perl in either web development or system administration for 4+ years.  Previously I worked in C/C++ and Java.</p>
<p><strong>Related Research and Work Experience (if any):</strong><br />
Besides some parrot hacking and playing around with <a href="http://www.antlr.org/">ANTLR</a> for parser generation, nothing significant.</p>
<p><strong>Reference Links and Web URLs (optional):</strong></p>
<p><a href="http://blog.bobkuo.com">blog.bobkuo.com</a><br />
IRC handle: bubaflub<br />
<a href="http://github.com/bubaflub">github.com/bubaflub</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.bobkuo.com/2010/04/google-summer-of-code-2010-proposal-parrot-on-rtems/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Summer of Code 2010 Proposal: IPv4, IPv6, MACADDR Native Column Types</title>
		<link>http://blog.bobkuo.com/2010/04/google-summer-of-code-2010-proposal-ipv4-ipv6-macaddr-native-column-types/</link>
		<comments>http://blog.bobkuo.com/2010/04/google-summer-of-code-2010-proposal-ipv4-ipv6-macaddr-native-column-types/#comments</comments>
		<pubDate>Wed, 07 Apr 2010 04:27:54 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Google Summer of Code]]></category>

		<guid isPermaLink="false">http://blog.bobkuo.com/?p=142</guid>
		<description><![CDATA[Title: IPv4, IPv6, MACADDR Native Column Types Student: Robert Kuo Abstract: Removing the UNSIGNED column type from Drizzle forced IP addresses to be stored as BIGINTs which is inefficient. This project will implement the IPv4, IPv6, and MACADDR native column types for Drizzle and the functions INET_NTOA() and INET_ATON(). This project will include inline documentation, [...]]]></description>
				<content:encoded><![CDATA[<h3>Title:</h3>
<p>IPv4, IPv6, MACADDR Native Column Types</p>
<h3>Student:</h3>
<p>Robert Kuo</p>
<h3>Abstract:</h3>
<p>Removing the UNSIGNED column type from Drizzle forced IP addresses to be stored as BIGINTs which is inefficient. This project will implement the IPv4, IPv6, and MACADDR native column types for Drizzle and the functions INET_NTOA() and INET_ATON(). This project will include inline documentation, patches to the official documentation, and test cases that verify correct operation and error handling.</p>
<h3>Content:</h3>
<p><strong>Project Title</strong><br />
IPv4, IPv6, MACADDR Native Column Types</p>
<p><strong>Name:</strong></p>
<p>Bob Kuo</p>
<p><strong>Email:</strong></p>
<p>(removed from here but in my official proposal sent to Google)</p>
<p><strong>IRC:</strong><br />
 bubaflub</p>
<h3>Synopsis</h3>
<p>This project will implement the IPv4, IPv6, and MACADDR native column types as well as the functions INET_NTOA() and INET_ATON() as well as the documentation and test cases to support this new functionality.</p>
<p>Benefits to the Drizzle Community</p>
<p>According to <a href="https://lists.launchpad.net/drizzle-discuss/msg06283.html">a message on the mailing list</a> this feature has already been requested by the community.  As well as a felt need, this would bring Drizzle closer to MySQL functionality and compatibility.</p>
<p>I&#8217;ve worked with MySQL for more than 4 years and would love to get involved with Drizzle but haven&#8217;t had the time or resources to do so.  I love the idea of a MySQL that is lean, community-driven, and cruft-free and Drizzle seems to fit the bill.</p>
<h3>Deliverables</h3>
<ul>
<li>The INET_NTOA() and INET_ATON() functions that convert between dotted-quad and an integer network address.</li>
<li>The IPv4, IPv6, and MACADDR native column types so that one could type: <code>CREATE TABLE sessions ( id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY , ip_address IPv4 NOT NULL );</code></li>
<li>Test cases that prove correct operation and error handling of the functions</li>
<li>Documentation in whatever format is suitable</li>
</ul>
<h3>Project Details</h3>
<p>This project will focus on the functions and then use them internally to convert IP addresses to a space-efficient binary format &#8211; e.g., binary(4) for IPv4 and binary(16) for IPv6.</p>
<h3>Project Schedule</h3>
<p>Before the start date (April 20th &#8211; May 23rd)</p>
<ul>
<li>Meet Drizzle community</li>
<li>Familiarize myself with Drizzle internals and build process</li>
<li>Familiarize myself with bzr (I usually use git)</li>
</ul>
<p>First half (May 23rd &#8211; July 13th)</p>
<ul>
<li>Spec out functionality with documentation and write failing tests</li>
<li>Write INET_NTOA() and INET_ATON()</li>
<li>Implement the IPv4 native column type</li>
</ul>
<p>Second half (July 13th &#8211; August 10th)</p>
<ul>
<li>Finish documentation and test cases</li>
<li>Implement the IPv6 native column type</li>
<li>Implement the MACADDR native column type</li>
</ul>
<p>In the event that I finish early:</p>
<ul>
<li>More documentation and tests</li>
<li>Any optimizations that profiling or benchmarking reveals</li>
<li>Any other utility functions related to these column types</li>
<li>Work on the testing framework</li>
</ul>
<h3>Bio/Experience</h3>
<p>My name is Bob Kuo and I am a 24 year old currently pursuing my masters and living in Champaign-Urbana, IL.  My undergrad was in Math and Computer Science at the University of Illinois at Chicago with my classwork focusing on algorithms, coding and number theory, and numerical analysis.  I have used MySQL for more than 4 years in both a developer and DBA role.  I participated in last year&#8217;s Google Summer of Code working for The Perl Foundation and successfully finished the project ahead of schedule.  My project code is available on the CPAN and at <a href="http://github.com/bubaflub/math--primality">http://github.com/bubaflub/math&#8211;primality</a>. I currently work part-time as a web developer for a local company and work in PHP and Ruby and Rails and can work in Perl, PHP, Ruby, C/C++ and with both MySQL and PostgreSQL.</p>
<p>All comments, critiques, or feedback are most welcome.</p>
<p>Thanks,</p>
<p>Bob Kuo</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.bobkuo.com/2010/04/google-summer-of-code-2010-proposal-ipv4-ipv6-macaddr-native-column-types/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Summer of Code 2010 Proposal: Implementation of algorithm to infer gene duplications in BioRuby</title>
		<link>http://blog.bobkuo.com/2010/04/google-summer-of-code-2010-proposal-implementation-of-algorithm-to-infer-gene-duplications-in-bioruby/</link>
		<comments>http://blog.bobkuo.com/2010/04/google-summer-of-code-2010-proposal-implementation-of-algorithm-to-infer-gene-duplications-in-bioruby/#comments</comments>
		<pubDate>Wed, 07 Apr 2010 04:21:38 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Google Summer of Code]]></category>

		<guid isPermaLink="false">http://blog.bobkuo.com/?p=138</guid>
		<description><![CDATA[Title: Implementation of algorithm to infer gene duplications in BioRuby Student: Robert Kuo Abstract: This project will implement an algorithm to detect gene duplications in BioRuby described in Zmasek and Eddy, 2001, &#8220;A simple algorithm to infer gene duplication and speciation events on a gene tree&#8221;, Bioinformatics, 17, 821-828. The project will include full documentation, [...]]]></description>
				<content:encoded><![CDATA[<h3>Title:</h3>
<p>Implementation of algorithm to infer gene duplications in BioRuby</p>
<h3>Student:</h3>
<p>Robert Kuo</p>
<h3>Abstract:</h3>
<p>This project will implement an algorithm to detect gene duplications in BioRuby described in Zmasek and Eddy, 2001, &#8220;A simple algorithm to infer gene duplication and speciation events on a gene tree&#8221;, Bioinformatics, 17, 821-828. The project will include full documentation, tests, and examples.</p>
<h3>Content:</h3>
<p><strong>Name: </strong>Bob Kuo<br />
(the following have been removed from here but they are in my official proposal to Google)<br />
<strong>Address: </strong><br />
<strong>Email Address: </strong><br />
<strong>Mobile Phone:</strong><br />
<strong>IRC Handle: </strong>bubaflub</p>
<p>I am 24 and currently pursuing my masters and living in Champaign-Urbana, IL.  My undergraduate degree was in Math and Computer Science from the University of Chicago at Illinois, with my coursework focusing on number and coding theory, numerical analysis, and algorithms.  I am currently employed part-time as a web developer working in PHP and Ruby on Rails.  I participated in last years&#8217; Google Summer of Code by working with the Perl Foundation (<a href="http://socghop.appspot.com/gsoc/student_project/show/google/gsoc2009/dukeleto/t124022226790">http://socghop.appspot.com/gsoc/student_project/show/google/gsoc2009/dukeleto/t124022226790</a>) which was successfully completed ahead of schedule.</p>
<p>I am interested in BioRuby because I have always had an interest in combining the sciences with programming and am interested in learning more about evolutionary biology.  I believe I am well-suited for this project not because I am the best Ruby programmer in the world, but because I am willing to learn and work through algorithms step-by-step.  There is a reference specification written in Java from which I can test my Ruby project.  My work as a web developer has required me to be multi-lingual and am comfortable reading and writing Java, Perl, PHP, and Ruby.</p>
<p>You can see my open source work at <a href="http://github.com/bubaflub">http://github.com/bubaflub</a>, and would recommend looking through <a href="http://github.com/bubaflub/math--primality">http://github.com/bubaflub/math&#8211;primality</a>, my work from last years&#8217; Google Summer of Code with The Perl Foundation which has significant in-line documentation and many tests.</p>
<p>All code developed for this project would be released on GitHub and available under the same terms as BioRuby itself.</p>
<p><strong>Plan:</strong><br />
Before the start date (April 20th):</p>
<ol>
<li>Meet the BioRuby and Open Bioinformatics community</li>
<li>Familiarize myself with the BioRuby package and the phyloXML format</li>
<li>Read necessary papers (such as http://bioinformatics.oxfordjournals.org/cgi/content/abstract/17/9/821)</li>
<li>Familiarize myself with the Java implementation of the algorithm (<a href="http://www.phylosoft.org/forester/applications/sdi/">http://www.phylosoft.org/forester/applications/sdi/</a>)</li>
<li>Discuss and set expectations of code &#8211; dependencies, code style, tests, documentation, etc.</li>
</ol>
<p>First half (May 23rd to July 13th):</p>
<ol>
<li>Decide on which libraries</li>
<li>Spec out all necessary components with documentation and failing unit tests</li>
<li>Write integration tests that cover the entire algorithm (i.e. if I input &#8220;A&#8221; I should get &#8220;B&#8221;)</li>
<li>Begin implementing the algorithm</li>
</ol>
<p>Second half (July 13th to August 10th):</p>
<ol>
<li>Finish implementing the algorithm</li>
<li>Finish documentation and tests</li>
</ol>
<p>In the even that I finish early:</p>
<ol>
<li>Profiling and speeding up existing code</li>
<li>Extra documentation and tests</li>
<li>More examples</li>
<li>Extend the algorithm to use non-binary species and gene trees.</li>
</ol>
<p><strong>Obligations</strong><br />
I will continue to work part-time during the summer and may take summer classes.  Last year these obligations were not problematic and did not affect my performance.  During the day though I will be at work I will be available via email, IM, and IRC.<br />
I welcome any feedback, comments, and critiques to this proposal.</p>
<p>Thanks,<br />
Bob Kuo</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.bobkuo.com/2010/04/google-summer-of-code-2010-proposal-implementation-of-algorithm-to-infer-gene-duplications-in-bioruby/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
