<?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>The Awesome RonBravo &#187; programming</title>
	<atom:link href="http://www.ronbravo.com/weblog/tag/programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ronbravo.com/weblog</link>
	<description>Amazing and Astounding Tales of Adventure</description>
	<lastBuildDate>Mon, 14 Mar 2011 09:37:04 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
<image>
  <link>http://www.ronbravo.com/weblog</link>
  <url>http://www.ronbravo.com/files/my_avatar_2009_02_02.ico</url>
  <title>The Awesome RonBravo</title>
</image>
		<item>
		<title>OpenGL Vertex Buffer Object in Java with lwjgl</title>
		<link>http://www.ronbravo.com/weblog/2010_10_14/opengl-vertex-buffer-object-in-java-with-lwjgl/</link>
		<comments>http://www.ronbravo.com/weblog/2010_10_14/opengl-vertex-buffer-object-in-java-with-lwjgl/#comments</comments>
		<pubDate>Thu, 14 Oct 2010 22:48:36 +0000</pubDate>
		<dc:creator>ronbravo</dc:creator>
				<category><![CDATA[Computers and Freedom Software]]></category>
		<category><![CDATA[buffer]]></category>
		<category><![CDATA[display]]></category>
		<category><![CDATA[graphics]]></category>
		<category><![CDATA[lists]]></category>
		<category><![CDATA[lwjgl]]></category>
		<category><![CDATA[object]]></category>
		<category><![CDATA[opengl]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[vbo]]></category>
		<category><![CDATA[vertex]]></category>

		<guid isPermaLink="false">http://www.ronbravo.com/weblog/?p=918</guid>
		<description><![CDATA[Recently I&#8217;ve been working a lot with Java. In the past few months I&#8217;ve dabbled a bit with the Java OpenGL bindings, particularly JOGL. I&#8217;ve decided to begin working with lwjgl instead just because it has been around longer and &#8230; <a href="http://www.ronbravo.com/weblog/2010_10_14/opengl-vertex-buffer-object-in-java-with-lwjgl/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Recently I&#8217;ve been working a lot with Java. In the past few months I&#8217;ve dabbled a bit with the Java OpenGL bindings, particularly <a href="http://jogamp.org/jogl/www/">JOGL</a>. I&#8217;ve decided to begin working with <a href="http://lwjgl.org/">lwjgl</a> instead just because it has been around longer and has a more steady release cycle. So far it&#8217;s been pretty easy to make the switch. <span id="more-918"></span>I&#8217;ve worked with OpenGL back in 2007 while in college when I was trying to get some of my art assets to load into a NintendoDS emulator. At the time I was using C and it wasn&#8217;t all too difficult. Toying around on the DS got me familiar with OpenGL, OpenGL immediate mode, and OpenGL Display Lists. However, after reading a bunch of forums and tutorials online, the general recommendation has been to stop using Display Lists and start using Vertex Buffer Objects since Display Lists have been deprecated and are only included for compatibility reasons. That&#8217;s all fine and good, but there are not too many tutorials that explain a simple and straight forward way of using Vertex Buffer Objects. The few that I did focused on doing the coding in C/C++ and not in Java using lwjgl. So after some searching <a href="http://lwjgl.org/forum/index.php?topic=3314.0">I found a forum post with someone who had some simple code showing how to do this</a>. I used that as a reference and now I&#8217;m posting my changes in the hope that others can benefit from it as well. At the end of this post I&#8217;ve also listed other references I used in trying to understand an OpenGL Vertex Buffer Object.</p>
<p>Also note that this is a class called OpenGLStarter, that is loaded by a different class that has the main java entry loop. So in order to copy this code make sure you already have lwjgl running and working. If not check out <a href="http://gpwiki.org/index.php/OpenGL:Tutorials:Java:LWJGL:Introduction">this link</a> to get things started. Then just create a class called OpenGLStarter and copy the code from this example into it.</p>
<p><strong>Here is the code:</strong></p>
<p><a href="http://clippy.cz.cc/index.php?show=172">http://clippy.cz.cc/index.php?show=172</a></p>
<p>Note that I put most of the documentation of what is going on inside the code. Also there is no support on the code posted. It was done as a way for me to share vertex buffer objects as I understand them at the moment. I still need to read up more  on them. Also the code is very simple as there is way more stuff you could do with it but the simplicity is intended. I hope you enjoy and C ya.</p>
<p><strong>References:</strong></p>
<p style="text-align: left;">Wikipedia description: <a href="http://en.wikipedia.org/wiki/Vertex_Buffer_Object">http://en.wikipedia.org/wiki/Vertex_Buffer_Object</a></p>
<p style="text-align: left;">OpenGL Wiki description with example in C code: <a href="http://www.opengl.org/wiki/Vertex_Buffer_Object">http://www.opengl.org/wiki/Vertex_Buffer_Object</a></p>
<p style="text-align: left;">lwjgl Forum post with example code: <a href="http://lwjgl.org/forum/index.php?topic=3314.0">http://lwjgl.org/forum/index.php?topic=3314.0</a></p>
<p style="text-align: left;">Ozone3d description with example code in C ++: <a href="http://www.ozone3d.net/tutorials/opengl_vbo_p2.php">http://www.ozone3d.net/tutorials/opengl_vbo_p2.php</a></p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://www.ronbravo.com/weblog/2010_10_14/opengl-vertex-buffer-object-in-java-with-lwjgl/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What is the Best Language for Learning Programming? Blitz3D and Absolute Beginners</title>
		<link>http://www.ronbravo.com/weblog/2010_09_06/what-is-the-best-language-for-learning-programming-blitz3d-and-absolute-beginners/</link>
		<comments>http://www.ronbravo.com/weblog/2010_09_06/what-is-the-best-language-for-learning-programming-blitz3d-and-absolute-beginners/#comments</comments>
		<pubDate>Mon, 06 Sep 2010 15:22:06 +0000</pubDate>
		<dc:creator>ronbravo</dc:creator>
				<category><![CDATA[Computers and Freedom Software]]></category>
		<category><![CDATA[3D]]></category>
		<category><![CDATA[basic]]></category>
		<category><![CDATA[beginner]]></category>
		<category><![CDATA[blitz]]></category>
		<category><![CDATA[computer]]></category>
		<category><![CDATA[language]]></category>
		<category><![CDATA[learning]]></category>
		<category><![CDATA[program]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[teaching]]></category>
		<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://www.ronbravo.com/weblog/?p=889</guid>
		<description><![CDATA[Yesterday I was presented with the challenge of teaching a friend of mine how to program. This is all started with a discussion from a few days ago when I learned that he was attempting to teach himself how to &#8230; <a href="http://www.ronbravo.com/weblog/2010_09_06/what-is-the-best-language-for-learning-programming-blitz3d-and-absolute-beginners/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Yesterday I was presented with the challenge of teaching a friend of mine how to program. This is all started with a discussion from a few days ago when I learned that he was attempting to teach himself how to program in C++. Now if you now anything about programming and C++, you probably would agree that C++ is definitely not the best language to use for someone who has never programmed in there life. As the two of us began talking more about it, I was trying to think of what language would be best for him to use as a learning tool and introduction into program. I began going through the list of options in my head like javascript, ruby, python, java, smalltalk, and several others. At first I thought the best route to go would be Python. So we downloaded the program and began going over some basic concepts and writing some basic code. This went on for about two hours where towards the end I could tell by his look and comments that he was still confused, and that many of the concepts where not sticking to his brain. So, I kept trying to think what might be something to help him get over some of these programming conceptual hurdles? Then it came to me. Blitz Basic! Duh!</p>
<p><span id="more-889"></span></p>
<p>If you are not familiar with Blitz Basic I would recommend you check out their website:</p>
<p><a href="http://www.blitzbasic.com">Blitz Basic</a></p>
<p>Now the site doesn&#8217;t look all that impressive, however looks can be deceiving because Blitz Basic is a powerful little piece of software for those looking to learn programming and have never done so before. I first began using Blitz Basic, specifically Blitz3D, back in 2000 when I was developing a strong interest in game development. I had come across systems like Dark Basic, RapidQ, and several other developer kits that were supposed to make creating a game easy for beginners. In the end I stuck with Blitz3D. It&#8217;s language was intuitive and simple enough to just jump in and start coding, and it was easy to get results fast, which is extremely important! Most people I know who gave up on programming did so because of it&#8217;s complexities and perception that it took so much time and experience just to get something cool working. Blitz3D is completely the opposite and the friend I was tutoring was the proof of this. After stumbling around in python we began to use Blitz3D. One of the best parts about this tool is the documentation, specifically the language reference document. This document has to be the easiest and most straight forward get to the point, document I&#8217;ve used for a programming language. Again, my friend confirmed this for me as he began to read through the documentation and everything began to make sense to him. To illustrate this I can provide an example.</p>
<p>Programming languages have looping techniques for when you may want the computer to do something over and over again. For example if you wanted to loop through a set of instructions 10 times a common way to do it in most programming languages might be:</p>
<pre>i = 0
for (i=0; i &lt; 10;i++) {
    my instructions here...
}</pre>
<p>or</p>
<pre>i = 0
while (i &lt; 10) {
    my instructions here...
    i = i + 1;
}</pre>
<p>Now the implementation may vary slightly from language to language but the idea is the same. One of the problems my friend kept having with programming is that he would want to instruct the computer to do something and in his mind there was a more intuitive way to give an instruction. He kept running into the problem where popular languages, in his mind, seemed to be doing or declaring things in a counter intuitive way. In the above example of looping, he asked &#8220;Why can&#8217;t you just say repeat? Why is there not a repeat command?&#8221; . Luckily for him Blitz3D answered that request:</p>
<pre>i = 0</pre>
<pre>Repeat
    my instructions....
    i = i + 1
Until (i &gt; 10)</pre>
<p>Now, that&#8217;s not to say Blitz3D does not conform to the more common convention of &#8220;For Loops&#8221; and &#8220;While Loops&#8221;, but it does offer and additional alternative to standard. An alternative that my friend perceived to be much more intuitive and natural when providing instructions to a device like the computer. After reading through more and more of the documentation he seemed to be understanding the langauage and liking many of the commands associated with it. After about four hours he was able to create a window, display text, generate his own functions, and load images. Not bad for someone who just a few hours before new little to nothing about programming.</p>
<p>The other things I think that helped him in using Blitz3D is that the program comes with everything you need to begin. Just to name a few, It comes with:</p>
<ul>
<li> It&#8217;s own text editor that provides highlighting of command words(syntax highlighting) and a simple side pane that organizes user created functions, types, and labels. The interface for the text editor is also stripped down of complexity which is helpful for someone who is new to the programming world.</li>
<li>Many working examples and source code. This provides an excellent way for new users to begin looking at ways other people have gotten the computer to do things.</li>
<li>Support for graphics upfront. Blitz3D was intended for making 3D and 2D games. This means it comes built in with the ability to load graphics, manipulate graphics, display text, use network protocols, File Input/Output operations, and much more. One of the issues with some of the other languages we were using was the need to import or use 3rd party libraries to get some of the same functionality. While not a bad thing, it did make the tutoring session a little more complicate for the new user.</li>
<li>The ability to make games. This is important since learning to program can be difficult because one needs to understand not  just what to tell the computer, but also what steps to do it in. I&#8217;ve often found that using the paradigm of creating a video game often helps people transition to a programming centred mentality. This is because many of us have played games and are familiar with the process of a game, like game start up, the main game or main game loop, shutting down the game, bringing in new enemies, and various other things. The other benefit is that because of the appeal of games it helps to keep a student&#8217;s interest in actually trying to solve complicated problems or work though many of the concepts associated with programming.</li>
<li>The documentation. As I mentioned before the documentation is extremely easy to read and digest. It seems like it was written for a 5th grader level of reading comprehension. So understanding that means that the language is now open to more people in the general population.</li>
<li>The only draw back is that Blitz3D only runs on a Windows OS. Sorry, no Linux or Mac OS support. Perhaps <a title="Virtual Box" href="http://www.virtualbox.org/wiki/Screenshots">Virtual Box</a> can solve this issue?</li>
</ul>
<p>Looking back I thought perhaps this was just something that made sense to me and my friend. However, I&#8217;ve taught several people back in college and even gave a whole presentation/workshop using the language. Not one person ever came up to me with a face of confusion after using it. Granted in these contexts we were doing very simple things, however my friend and I were also doing very simple things when we started the day with python and he was still confused.</p>
<p>The other thing that came to my mind and that my friend often brought up is why do many of these languages do things the way they do? Often times the way it&#8217;s been and currently being done is counter intuitive to the way humans are used to interacting or providing instructions, which is essentially what you are doing. This started me off explaining to him a little of the history behind computers and how many of the conventions that are used in programming today are a product of a convention that has evolved through the last 40 years. Many of these conventions which are old and were created based on the limitations and constraints of their day, still exist simply because it is tradition and sort of a de-facto standard. Blitz3D puts itself in an interesting position where it attempts to support more commonly held programming conventions while also providing alternatives that many people, including my friend, seem to be much more natural and intuitive.</p>
<p>So in the end my final analysis is that Blitz3D is one of the best programs to use as a tool to teach how to program. Now that does not mean the student needs to remain with the language, since I for example have long since moved on to things like javascript, php, and java, but the language does provide a nice and smooth entry point into understanding many of the core concepts of programming. These concepts which are essential and transferable to any programming language they may like to move into in the future.</p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://www.ronbravo.com/weblog/2010_09_06/what-is-the-best-language-for-learning-programming-blitz3d-and-absolute-beginners/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Working with Scons</title>
		<link>http://www.ronbravo.com/weblog/2010_06_06/working-with-scons/</link>
		<comments>http://www.ronbravo.com/weblog/2010_06_06/working-with-scons/#comments</comments>
		<pubDate>Mon, 07 Jun 2010 01:04:26 +0000</pubDate>
		<dc:creator>ronbravo</dc:creator>
				<category><![CDATA[Computers and Freedom Software]]></category>
		<category><![CDATA[build]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[scons]]></category>

		<guid isPermaLink="false">http://www.ronbravo.com/weblog/?p=874</guid>
		<description><![CDATA[I&#8217;ve been working to create my own software for a while called myToolbox. It was origianlly created using PHP, Javascript, and MySQL, however, I&#8217;ve now decided to move to using Java. Doing so has been both enlightening and frustrating as &#8230; <a href="http://www.ronbravo.com/weblog/2010_06_06/working-with-scons/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been working to create my own software for a while called myToolbox. It was origianlly created using PHP, Javascript, and MySQL, however, I&#8217;ve now decided to move to using Java. Doing so has been both enlightening and frustrating as moving towards a new programming language is not always easy. Especially, when one is moving to a language that is as strict as Java. <span id="more-874"></span>That said, I&#8217;ve gotten past my initial Java woes and began do some coding. The challenge now face is find the tools to create an eco system that is both intuitive and friendly towards Java development. One of the tools I have been looking at is <a href="http://www.scons.org/">Scons</a>. This is a software build tool written in Python. There are a bunch of other tools specific for Java and various other programming language. I decided to go with Scons because it&#8217;s being used in Blender, which I&#8217;ve toyed with in the past, and it supports many languages including custom ones. That&#8217;s awesome if I ever start doing coding in something else besides Java. So in the brief time that I&#8217;ve used it, it&#8217;s turned out to be pretty good. About the only issue I had with it was forcing Scons to build and analyse the code in a certain order.</p>
<p>Essentially, Sons attempts to read the python build commands, analyse it and source code dependencies, and then build your project. This was a problem for me because I was wanting Scons to run a Java program after it had completed compiling my source code. This was done with the following Scons command:</p>
<pre>action = env.Action('java -jar  dist/mypackage.jar')
env.Execute(action)</pre>
<p>The problem with doing that is that Scons would execute the line of code  and run the program before it compiled and built the source code to classes. This means that the Java program I was running would run a previous version of the classes that I needed to compile. Again, this is due to the fact that Scons works by first reading and analysing the python build scripts and source code before building.</p>
<p>Now I did searching on several forums on how to circumvent this behaviour by building or injecting custom builders, however, it still was not what I wanted. In the end I came up with a simple solution. I decide to place my build code into a file called defaultBuild.py and then I placed the instructions to run Java in a separate file called Sconstruct, which is the default file Scons looks for when running the &#8216;scons&#8217; command in the command line. It looks something like this:</p>
<p>File: Sconstruct</p>
<div style="border: 1px dashed grey;padding: 10px;">
<pre># Import the needed Python modules
import os

print '-----------------------------------------'
print 'Building my project...'
print ''

env = Environment()

<strong># This is the command that invokes the python script that has instructions on how
# to build the project </strong>
action = env.Action('scons -f defaultBuild.py')
env.Execute(action)

print ''
print 'Done building my project.'
print '-----------------------------------------'
print ''

<strong># Now we run the Java program and the newly compiled class</strong>
action = env.Action('java -jar dist/mypackage.jar')
env.Execute(action)</pre>
</div>
<p>File: defaultBuild.py</p>
<div style="border: 1px dashed grey;padding: 10px;">
<pre># Create the build environment.
env = Environment()

# Compile the java source files
env.Java (target = '/bin', source = '/src')

# Package the java class files into a jar file
env.Jar(target = '/dist/mypackage.jar', source = '/bin')</pre>
</div>
<p>What the Sconstruct file does is tell Scons that in the command line run the scons command again but call the defaultBuild.py instead of the default Sconstruct. Scons of course obeys, which cause another instance of Scons to run which builds the needed code and returns with the results. Once it returns the rest of the code in the Sconstruct file is executed which in this case means that the Java Virtual Machine is launched and told to run the Jar file mypackage.jar. Not bad. A simple solution.</p>
<p>Now this is just one way this technique could be used. I figure if one had a bunch of things they needed Scons to do, like cleaning up files, running test suites, or compressing directories to zip files, then this is one way to do it. Break the building process into seperate files and then run each file according to the order the developer needs. Of course being new to Scons I do not know if this has any serious repercussions. So I recommend using this for very simple and basic type of flow control. Hope this technique is useful to others. C ya.</p>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 407px; width: 1px; height: 1px;"># Import the needed Python modules<br />
import os</p>
<p>print &#8216;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;&#8217;<br />
print &#8216;Building myToolbox&#8230;&#8217;<br />
print &#8221;</p>
<p>env = Environment()<br />
action = env.Action(&#8216;scons -f defaultBuild.py&#8217;)<br />
env.Execute(action)</p>
<p>print &#8221;<br />
print &#8216;Done building myToolbox.&#8217;<br />
print &#8216;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;&#8217;<br />
print &#8221;</p>
<p># Run the program<br />
package = os.path.join(os.curdir, &#8216;dist&#8217;)<br />
package = os.path.join(package, &#8216;myToolbox.jar&#8217;)<br />
action = env.Action(&#8216;java -jar &#8216; + package)</p></div>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://www.ronbravo.com/weblog/2010_06_06/working-with-scons/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>myToolBox Software Development: Update 00</title>
		<link>http://www.ronbravo.com/weblog/2009_04_02/mytoolbox-software-development-update-00/</link>
		<comments>http://www.ronbravo.com/weblog/2009_04_02/mytoolbox-software-development-update-00/#comments</comments>
		<pubDate>Fri, 03 Apr 2009 04:50:23 +0000</pubDate>
		<dc:creator>ronbravo</dc:creator>
				<category><![CDATA[Art, Community, and Gardening]]></category>
		<category><![CDATA[Computers and Freedom Software]]></category>
		<category><![CDATA[application]]></category>
		<category><![CDATA[community]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[learning]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[people]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[web 2.0]]></category>
		<category><![CDATA[webapp]]></category>

		<guid isPermaLink="false">http://www.ronbravo.com/weblog/?p=801</guid>
		<description><![CDATA[So this is the first post I am making on the development of the myToolBox web application. These are just a simple set of tools to use along side other web applications. I am developing them for Arizona Homegrown Solutions &#8230; <a href="http://www.ronbravo.com/weblog/2009_04_02/mytoolbox-software-development-update-00/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>So this is the first post I am making on the development of the myToolBox web application. These are just a simple set of tools to use along side other web applications. I am developing them for <a href="”http://www.azhomegrownsolutions.org”" target="”_blank”">Arizona Homegrown Solutions</a> to help solve some small little problems we are running into here and there. Right now it is not all that impressive since a lot of the development time has been spent learning javascript, php, and mysql. I knew them to some degree before due to my exposure making web applications in the Ruby on Rails platform, but not to the degree I know now.<span id="more-801"></span> To run one of the tools just go to the myToolBox location on my personal hosting:</p>
<p><a href="”http://www.ronbravo.com/mytoolbox/source”" target="”_blank”">http://www.ronbravo.com/mytoolbox/source</a></p>
<p><strong>IMPORTANT NOTE:</strong> I developed this software using the Mozilla Firefox Internet Browser because it complies with webstandards more than Internet Explorer and it has better development tools. This means some of the myToolBox features may not work in Internet Explorer. I am assuming that the tools should work fine in the Safari or Opera browsers as well, but since I have not tested this I cannot confirm it. I just know that Internet Explorer will probably not work. This does not mean Internet Explorer will never be supported it just means that it is currently a pain in the ass to work with and so I&#8217;m holding off doing anything with it.</p>
<p>Once you&#8217;re on the myToolbox site just click on one of the tool names and the tool should run. Below I give a little bit of a description about them.</p>
<p><strong>Tabula Terra</strong></p>
<p>This is a simple journal entry system to allow people to enter in different conditions for the day while they were in their garden. This is Jill&#8217;s idea so I will be working with her to try and flesh this out more. At the moment it is pretty much a clone of the functionality provided by the <a href="”http://www.seedsofchange.com/digging/gcp_login.aspx”">Seeds of Change Garden Planner</a>. Ours is a little more sterile than theirs but I imagine as development moves on Tabula Terra will start to look a lot nicer.</p>
<p>Currently anyone can enter in a journal and mess around with it. Once user accounts get up and running we will be able to allow the journals to be organized more by an individual&#8217;s account. I also plan on allowing for charts to be generated so that we can get a visual representation of a lot of the data users will be putting in. I know that Jen has begun tracking her harvest at the end of the month and those are the kinds of things I&#8217;m hoping can get entered into the database(<a href="”http://azhomegrownsolutions.ning.com/profiles/blogs/march-harvest-tally”" target="”_blank”">See Jen that&#8217;s the surprise I was talking to you about</a>).</p>
<p>Some of the ideas Jill has thrown around are things like getting a nice database going of information on what people are planting, what their weather is like, and anything else related to growing food in our region. Hopefully in a year or so we will have enough data to compile and print for people to use. So there is a lot we can do with this.</p>
<p><strong>Wiki Reader</strong></p>
<p>This is a wiki application. Even though there is a ton of wiki software out there, many of them are pretty complicated. Most do not have the techno junk stripped out so that normal people can just jump right in and start creating documents. The few that I did like for easy of use required a subscription. No way. We need a free solution, and since I could not find what I think would be best for the group I&#8217;m hoping to create something that will. Now I will admit I have no idea how hard or easy creating wiki software is, but I figure we have some time before having a wiki up for AZHS is essential. In the meantime I will try and throw something together and see what comes out. Mostly though I&#8217;m using this as an excuse to practice my software development skills and gain a little more experience. So that in the future if AZHS does need some specific tool that does not exists I may be able to provide an option.</p>
<p>So that&#8217;s the myToolBox package in a nutshell. It&#8217;s all been license under the free, as in freedom not beer, license known as the <a href="”http://www.fsf.org/licensing/licenses/agpl-3.0.html”">GNU AGPL version 3</a>. I&#8217;m also using several 3rd party souce code libraries to help take care of some of the heavy lifting in the development of this software. The big idea being that the source code stays open for any community to update, maintain, and modify how they see fit. Providing them with the freedom to do what they want with the software hence the phrase, free as freedom not beer. Of course the development community at the moment is only made up of one person, me, but I hope that will change in the future. So give it a spin and post back any feedback or suggestions you might have. As I said these tools are in very early stage so don&#8217;t expect much yet. Give it time and they will grow.</p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://www.ronbravo.com/weblog/2009_04_02/mytoolbox-software-development-update-00/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PPG Community Garden, My Hole in the Ground, and Software Development</title>
		<link>http://www.ronbravo.com/weblog/2009_03_20/ppg-community-garden-my-hole-in-the-ground-and-software-development/</link>
		<comments>http://www.ronbravo.com/weblog/2009_03_20/ppg-community-garden-my-hole-in-the-ground-and-software-development/#comments</comments>
		<pubDate>Fri, 20 Mar 2009 06:20:25 +0000</pubDate>
		<dc:creator>ronbravo</dc:creator>
				<category><![CDATA[Art, Community, and Gardening]]></category>
		<category><![CDATA[Computers and Freedom Software]]></category>
		<category><![CDATA[children]]></category>
		<category><![CDATA[city]]></category>
		<category><![CDATA[community]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[digging]]></category>
		<category><![CDATA[energy]]></category>
		<category><![CDATA[extjs]]></category>
		<category><![CDATA[food]]></category>
		<category><![CDATA[gardening]]></category>
		<category><![CDATA[holes]]></category>
		<category><![CDATA[home]]></category>
		<category><![CDATA[ideas]]></category>
		<category><![CDATA[parks]]></category>
		<category><![CDATA[people]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[school]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[widget]]></category>
		<category><![CDATA[widgets]]></category>

		<guid isPermaLink="false">http://www.ronbravo.com/weblog/?p=736</guid>
		<description><![CDATA[PPG Community Gardeners Meeting So yesterday the PPG had it&#8217;s monthly community garden meeting and it went pretty good. I arrived about 15 minutes late so by that time the participants had already broken into two groups. I joined a &#8230; <a href="http://www.ronbravo.com/weblog/2009_03_20/ppg-community-garden-my-hole-in-the-ground-and-software-development/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><strong>PPG Community Gardeners Meeting</strong><br />
So yesterday the PPG had it&#8217;s monthly community garden meeting and it went pretty good. I arrived about 15 minutes late so by that time the participants had already broken into two groups. I joined a group and met Lisa and Cheryl who both work in the nursing industry. Lisa is a billing specialist and Cheryl is an infant care nurse. Both of them have little to no experience gardening but were really wanting to join the effort in starting something here in the valley by volunteering their time. So the three of us sat down and brain stormed a few ideas. Not that any of these ideas can happen now, but we thought it would be good to still put them out there and add to the idea bucket.</p>
<p><span id="more-736"></span></p>
<ol>
<li>Check with mulching services at dump. Sometimes city dumps set aside organic materials like yard clipings and tree leaves.</li>
<li>See if any municipal leaders can help. Two names came up <a href="http://www.mariabaier.com/">Maria Baier</a> and <a href="http://www.mayorgordon.com/home/index.cfm">Phil Gordan.</a></li>
<li>Look into the New York City, Washingon DC area community gardens and see what they did to get up and running. Maybe contact them?</li>
<li>Locate and start tracking potential plots of land. Then find out things like who owns them, water source on plot, places to compost, what residents live in the area who would be interested, and so on&#8230;</li>
<li>Can community gardens be had at the Phoenix parks?</li>
<li>What more is needed to get schools involved?</li>
<li>Get schools to start growing their own food for kids&#8217; lunches.</li>
<li>Opening schools up in the evenings for things like community pot lucks, free urgent care facilities.</li>
<li>Getting schools, especially middle and elementary, to teach more culinary classes and agriculture classes.</li>
<li>Contact churches to see if they would be interested in starting compost piles or even community gardens.</li>
</ol>
<p>Phew. Yeah we had fun thinking of a lot of things. Again, this is based on a bunch of assumptions. We have no clue what is involved to get a lot of this done, but decided it was still important to think about. It&#8217;s energizing meeting people who have this authentic desire to help. Makes me want to leap tall buildings in a single bound. LOL!. Anyway, met some cool people and hope to keep this up. Now for the hard part, which is trying to get some of the stuff on this list done.</p>
<p><strong>My Hole in the Ground</strong><br />
After a few days I&#8217;ve managed to remove about 90% of the dirt in a plot from my backyard, as the photo below shows.</p>
<p><a href="http://azhomegrownsolutions.ning.com/photo/photo/show?id=2641034%3APhoto%3A4797">My Backyard Photo</a></p>
<p>The size is roughly 4ft wide by 37ft long by 2ft deep. I broke a few PVC pipes which was frustrating but I think I should be able to fix them tomorrow. I talked with Jen and we should be setting a site analysis for my home in the next couple of weeks or so. I know what you&#8217;re thinking, “But Ron, shouldn&#8217;t youhave done the site analysis before you decided to dig a grand canyon in your backyard?” To which I can only reply that you are correct. Oh well. In any case should be a good chance to get some PPG Design Course students out here to see what they think and to provide some advice. In the meantime I need to work on fixing the PVC, getting woodchips, getting a little more compost, getting some coffee grounds, and a few cardboard boxes. Then I can begin filling the hole and start planting. The good news is I a close friend named Debbi who is interested in starting her own garden as well. So the digging doesn&#8217;t stop here.</p>
<p><strong>Software Development</strong><br />
So after the decision to stick with Ning for a while, I decide to turn my attention to a few other things:</p>
<ol>
<li>Installing a wiki</li>
<li>Looking into making some widgets for the site.</li>
</ol>
<p>One of the things that came out of the AZHS&#8217;s class at Partners in Participation, was that we agreed to install a wiki or some kind of software to document stuff. This way member have a resource they can use to help them with gardening that is specific to our region. As with most software there is sooooo many to choose from. So I&#8217;m still looking.</p>
<p>In the mean time I&#8217;ve also been toying with some widget stuff. Check it out here:</p>
<p><a href="http://mojokoo.ning.com/page/test-app">My test widget!</a></p>
<p>So nothing to impressive, but it is a start. From there I hope to do some more stuff. I&#8217;m using a widget/user interface library I came across called <a href="http://www.extjs.com/">ExtJS</a>. It uses javascript and was orginally made for the Yahoo widget library. The best part is that <a href="http://www.extjs.com/products/license-faq.php">ExtJS is open source</a> and very mature.</p>
<p>Now some people wonder why I&#8217;m a huge advocate of free open source software. One of the biggest reasons is freedom. You are not tied down to the decicions and policies of the developer, as I found out in this <a href="http://developer.ning.com/forum/topic/show?id=1185512%3ATopic%3A63551">Ning Developer</a> post about widget laboratory. Essentially the story goes that due to issues Ning was having with a 3rd party over repeated violations of user information, Ning had to let the developer go. Some people were a bit angry as the decision was made without their concent. This was a set back for some as they had invested a lot of time and money in both Ning and the third party Widget Laboratory. In the end Ning recovered and now offers a bunch of cool little apps and a development platform through the OpenSocial API. However, I hope my point is clear that sometimes, not all the time, but sometimes opensource can give you that freedome to branch off and move on if the developer does something you don&#8217;t agree with.</p>
<p>Anyway, we&#8217;ll see how ExtJS holds up.</p>
<p>That&#8217;s all for today. Time for bed.</p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://www.ronbravo.com/weblog/2009_03_20/ppg-community-garden-my-hole-in-the-ground-and-software-development/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Is Ning the Best Networking Tool Out There?</title>
		<link>http://www.ronbravo.com/weblog/2009_03_04/is-ning-the-best-weve-got/</link>
		<comments>http://www.ronbravo.com/weblog/2009_03_04/is-ning-the-best-weve-got/#comments</comments>
		<pubDate>Wed, 04 Mar 2009 07:35:10 +0000</pubDate>
		<dc:creator>ronbravo</dc:creator>
				<category><![CDATA[Art, Community, and Gardening]]></category>
		<category><![CDATA[Computers and Freedom Software]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[community]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[free]]></category>
		<category><![CDATA[networks]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[platform]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[social network]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[web 2.0]]></category>
		<category><![CDATA[web app]]></category>

		<guid isPermaLink="false">http://www.ronbravo.com/weblog/?p=709</guid>
		<description><![CDATA[So yesterday I attended a Steering Committee meeting for Arizona Home Grown Solutions(AZHS) organization and a lot of things were shared and accomplished. At the end a very good meeting was had. One of the things that came up was &#8230; <a href="http://www.ronbravo.com/weblog/2009_03_04/is-ning-the-best-weve-got/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>So yesterday I attended a Steering Committee meeting for Arizona Home Grown Solutions(AZHS) organization and a lot of things were shared and accomplished. At the end a very good meeting was had. One of the things that came up was the possibility of trying to look at the technology that AZHS uses to organize and communicate with people.</p>
<p><span id="more-709"></span>Currently we are using the Ning social networking platform. It has been extremely useful in getting people organized. It&#8217;s biggest benefit has been it&#8217;s ease of use and simplicity. After some of my inquiries into other social networking platforms during the past two days, I have come to appreciate what Ning is doing and how they offload much of the site setup and maintenance difficulties. They make it so that the average computer user can start up a social network simply and easily. However, even with all that there are a few things still left desired from Ning. We called out a few of those things at the meeting and so I began looking around to see if there were an alternative technology that could do what Ning could and more.</p>
<p>So I started with a quick google search of “opensource social networking frameworks”. So after that I picked three sites to work off:</p>
<p><a href="http://www.vivalogo.com/vl-resources/open-source-social-networking-software.htm">Online Resource 1</a><br />
<a href="http://www.maxkiesler.com/index.php/weblog/comments/40_downloadable_open_source_social_software_applications">Online Resource 2</a><br />
<a href="http://en.wikipedia.org/wiki/Comparison_of_social_networking_software">Wikipedia Comparison<br />
</a></p>
<p>After some browsing I came down to three options I wanted to try:</p>
<p><a href="http://elgg.org/index.php ">Elgg</a><br />
<a href="http://www.phpizabi.net/ ">PHPizabi</a><br />
<a href="http://drupal.org/ ">Drupal</a><br />
<a href="http://grou.ps/take_tour.php">GROU.PS</a></p>
<p>So quickly I jotted down my opinions and quick experiences with these packages.</p>
<p><strong>Elgg</strong><br />
So I started by trying to install Elgg on my local. I ran into some problems due to me installing Elgg in a sub directory of the main site. I should have it installed it directly to a location like <em>&#8220;http://domainname.com&#8221;</em> but instead I chose <em>&#8220;http://domainname.com/elgg/&#8221;</em>. At the time I thought this was not a bad thing since it is a pretty common practice. After about an hour or two of trying to fix this issue and the reading of several posts on the problem, I was still getting errors. So I decided to stop for the night and try again the next evening.  Tonight I tried to install Elgg again but this time on my main webhost server online. I got further than I was able to get last night but still more problems. I think I managed to install Elgg but everytime I tried to login I was getting 404 errors about pages not being found. Again, this probably has something to do with the fact that I installed Elgg in a sub directory. I could have easily install it in the main root of my site but I figured, “Why should I do that? What I&#8217;m doing isn&#8217;t that crazy”. I&#8217;m surprised that I was not able to fix the problem. I read through a few blog posts on the net of how to solve this issue but after I tried some of their suggestions nothing worked. I never got a chance to use the site of my own installation. So after about 3 hours I moved on. Maybe I missed a step or missed a configuration file but I do not care. One of my requirements is that installation should be simple. I think Elgg will eventually solve this problem but until then I&#8217;m won&#8217;t be using it or recommending it.</p>
<p><strong>PHPizabi</strong><br />
So I moved on and began the installation process for PHPizabi. I stopped immediately as I began reading through the user license. It was a custom PHPizabi. I went back to the webpage and located some of their comments on the license and it seems like the PHPizabi custom license is open source, however they added some comments regarding the addons that I&#8217;m not too sure about. In either case when I look for projects that are open source I look for them to be license under the more common GPL, LGPL, MIT, or BSD license(<a href="http://www.opensource.org/">look them up here</a>). The reason why is those license have been around a lot longer, are more widely used, and has been scrutinized and tested a lot longer than a custom license for some specific software. Newer or less commonly use custom licenses I&#8217;m a bit weary about. It may work for others though, so I encourage anyone who&#8217;s not to picky with software licenses to give it a go. However, for me and projects I work on, I usually recommended to stick with software released under GPL or similar types of licenses.  So it&#8217;s a no go for PHPizabi.</p>
<p><strong>Drupal</strong><br />
I just needed to set a few file permissions to the folder where Drupal is kept. Other than that installation was about as easy as installing WordPress, so pretty easy. Now the jury is still out on Drupal. This is because out of the box it is not setup to be a social networking platform. Drupal is a content management system so this means in order to get it to do what I want, I will need to add several of the third party modules to Drupal. So based on this article <a href="http://programmingbulls.com/how-create-social-networking-site-orkut-myspace-using-open-source-drupal-or-elgg">here</a>, you would need about 17 to 20 different modules to get Drupal social networking ready. Even though the article is from 2007, I don&#8217;t think the situation of the amount of modules has changed much. So I still need to get that part done. The other thing I&#8217;ve been wondering about is how well is Drupal going to scale up and performance? Base on a few articles I&#8217;ve read:</p>
<p><a href="http://twtitw.firebus.com/node/10">http://twtitw.firebus.com/node/10</a><br />
<a href="http://20bits.com/articles/4-problems-with-drupal/">http://20bits.com/articles/4-problems-with-drupal/</a></p>
<p>Drupal comes with it&#8217;s own issues with speed and scalability but you&#8217;ll be mostly fine as long as you are not using too many modules. That is not a good sign for a Drupal based social networking site. As I said I may need anywher from 17 &#8211; 20 modules. Modules can be problematic because are usually written by third parties, might not be optimized, properly maintained, or might not be compatible with the current version of Drupal. Even with all that Drupal should still be capable of social networking as there are a lot of sites using Drupal to do just that, but I will admit those sites probably have dedicated programmer and designers working to keep things going smoothly. At this point I am a bit tired and it&#8217;s getting late so I think I will save the modulating of Drupal for another day or week. I want to give it a chance though, just because I&#8217;ve heard several good things about it and it does have a lot of nice modules that would be very useful to AZHS. So my final conclusion for Drupal will have to wait.</p>
<p><strong>GROU.PS</strong><br />
I actually came across this site this afternoon from a blog post that can be found <a href="http://www.jarche.com/2008/09/selecting-social-network-platforms/#comment-186895">here</a>. Essentially, the guy had been using Ning and likes it but was browsing for alternatives as well. He stumbled upon GROU.PS and said it had some potiential, so I signed up for an account today and I am liking what I see so far. It&#8217;s almost like Ning++, meaning that it can do many of the things Ning does while giving you a bit more control over the network. They also have a pretty simple and intuitive interface for both admins and users. On the front page they talk about the hosting service and how they provide free hosting with unlimited traffic, unlimited space restrictions, no ads, free domain pointing, works with mobile devices like an iPhone and a bunch of other stuff. I was just like “Wow. Awesome. Seems too good to be true” and we shall soon find out. The jury is still out on this package as well as it&#8217;s in beta, but for being in beta it seems to be working pretty well. One other thing is that GROU.PS is not open source yet, but they are working towards releasing the whole platform as open source. Parts of it have already been released as open source so that is a good sign. I plan on playing with it a bit more before I say yea or nea, but I am optimistic.</p>
<p>Phew&#8230;man I&#8217;m tired. I need to get to bed. I hope this was as informative for you as it was for me. I like Ning a lot and appreciate how it has allowed many more people the access and ability to create their own specific networks. Ning is a technology that has been out for a while and as with most popular technology, you eventually get people imitating it and improving upon that initial idea. So I will continue to search to see what&#8217;s out there.</p>
<p>Goodnight and C ya.</p>
<!-- PHP 5.x -->]]></content:encoded>
			<wfw:commentRss>http://www.ronbravo.com/weblog/2009_03_04/is-ning-the-best-weve-got/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

