<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Anna on Computing</title>
	<atom:link href="http://annasob.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://annasob.wordpress.com</link>
	<description>An Open Sourced way of life</description>
	<lastBuildDate>Thu, 20 Dec 2012 00:01:40 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='annasob.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Anna on Computing</title>
		<link>http://annasob.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://annasob.wordpress.com/osd.xml" title="Anna on Computing" />
	<atom:link rel='hub' href='http://annasob.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Getting around CORS with Node.js</title>
		<link>http://annasob.wordpress.com/2012/01/11/getting-around-cors-with-node-js/</link>
		<comments>http://annasob.wordpress.com/2012/01/11/getting-around-cors-with-node-js/#comments</comments>
		<pubDate>Wed, 11 Jan 2012 23:50:41 +0000</pubDate>
		<dc:creator>annasob</dc:creator>
				<category><![CDATA[Open Source ~ General]]></category>
		<category><![CDATA[cors]]></category>
		<category><![CDATA[glassfish]]></category>
		<category><![CDATA[node.js]]></category>

		<guid isPermaLink="false">http://annasob.wordpress.com/?p=575</guid>
		<description><![CDATA[I have recently wrote a JavaScript web application that depended on AJAX and a Java driven back end. The back end was a standard  RESTful Web service running an a Glassfish server. Before I started working on the application a designer was hired to make the HTML/CSS layout that was desired. As I got further into [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=annasob.wordpress.com&#038;blog=9537498&#038;post=575&#038;subd=annasob&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>I have recently wrote a JavaScript web application that depended on AJAX and a Java driven back end. The back end was a standard  RESTful Web service running an a <a href="http://glassfish.java.net/">Glassfish</a> server. Before I started working on the application a designer was hired to make the HTML/CSS layout that was desired. As I got further into the development process and the moving parts started to change the CSS also needed to change. This proposed a problem for us mainly because all of the data ( and the html elements needed to display it) that were needed to populate each page had to be requested from the Web service. Typically what I would do is log in to the web application running on the test server fired up firebug and use the HTML/CSS edit feature to get the CSS to where I needed it to be. Alternatively, I would save the website and open the HTML and CSS pages locally and edit from there. Any CSS changes would then get committed to the repo. However, this wasn&#8217;t a good enough way for the designer. The designer wanted to put the repo on their localhost and simply run the application on their local server. This of course caused a CORS error because an<a href="http://en.wikipedia.org/wiki/XMLHttpRequest"> XHR request </a>could not be made from localhost to a remote server.</p>
<p>To solve this problem the designer could have got a local copy of the back end working on his localhost as well. However that would involve mysql, eclipse and glassfish to be configured correctly. Not really ideal. So I went out in search for another solution. After talking to some people I decided to use <a href="http://nodejs.org/">node.js</a>. Havent yet worked with node I wasn&#8217;t quite sure of what I was going to do. Some people said i needed a Proxy some said i needed Middleware but at the end of it all I just needed a simple server and a client.</p>
<h3>The Structure</h3>
<p>The idea is for a server to listen to the requests coming in from your localhost on a particular port. This means that the URL of the XHR requests has to be changed to localhost:portnumber. Once the request is captured, a dummy client will make the same exact request but instead of the client being your localhost, it will be a node client whose domain is the same as the domain of the back end. Create a client using the domain of the back end. I never really found any documentation of what the createClient function accepted so let me show you what I used:</p>
<p><pre class="brush: plain;">
var aclient = http.createClient(80, 'backendurl.com');
</pre></p>
<p>The next step is to create a server that listens on a particular port. This is the same port i mentioned above. Ensure that this port is not being used by another application running on your computer otherwise you will get a weird port not available exception. Now, in the function that you pass in when you create the server you need to capture the request, get the needed data and make a similar request with a new url. You also need to figure out what the request method is. This is important because sometimes there will be an OPTIONS method sent which is basically a way of the browser testing if CORS is allowed.</p>
<p><pre class="brush: plain;">
if (req.method === 'OPTIONS') {
	// add needed headers
	var headers = {};
	headers[&quot;Access-Control-Allow-Origin&quot;] = &quot;*&quot;;
	headers[&quot;Access-Control-Allow-Methods&quot;] = &quot;POST, GET, PUT, DELETE, OPTIONS&quot;;
	headers[&quot;Access-Control-Allow-Credentials&quot;] = true;
	headers[&quot;Access-Control-Max-Age&quot;] = '86400'; // 24 hours
	headers[&quot;Access-Control-Allow-Headers&quot;] = &quot;X-Requested-With, Access-Control-Allow-Origin, X-HTTP-Method-Override, Content-Type, Authorization, Accept&quot;;
	// respond to the request
	res.writeHead(200, headers);
	res.end();
} else if (req.method === 'GET') { // no data is coming
	// use the client you created to make a request, this request will basically
	// need all of the information captured in this GET request  coming from your localhost:portnumber
	var clientrequest = aclient.request(req.method, '/api' + req.url, {
		'host': 'backendurl.com',
		'authorization': req.headers['authorization'],
		'content-type': 'application/json',
		'connection': 'keep-alive',
	});
	clientrequest.end();
	var msg = &quot;&quot;, clietheaders;
	// get the response from the back-end
	clientrequest.on('response', function (clientresponse) {
		clientheaders = clientresponse.headers;
			clientresponse.on('data', function (chunk) {
			msg += chunk;
		});
	});
	setTimeout(function () {
		// send the data you just received from the back end back to you
		// client application on localhost
		res.writeHead(200, clientheaders);
		res.write(msg);
		res.end();
	}, 500); // wait a bit just in case we don't have all of the chunks of data
}
</pre></p>
<div></div>
<div>This is a simple implementation and it works great. It might not be the perfect solution but it gets the job done. Feel free to contact me if you need to implement this type of solution. Also if you need to go ahead and join the node.js irc channel: #node.js on the irc.freenode.net server. The people there are really helpful and forgiving.</div>
<div></div>
<div><a href="http://annasob.wordpress.com/" target="_blank">View all of my blogs</a></div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/annasob.wordpress.com/575/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/annasob.wordpress.com/575/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=annasob.wordpress.com&#038;blog=9537498&#038;post=575&#038;subd=annasob&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://annasob.wordpress.com/2012/01/11/getting-around-cors-with-node-js/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d5c3b72b8f4ef8953749946657fd3380?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">annasob</media:title>
		</media:content>
	</item>
		<item>
		<title>Area Code Data Retrieval</title>
		<link>http://annasob.wordpress.com/2011/08/11/area-code-data-retrieval/</link>
		<comments>http://annasob.wordpress.com/2011/08/11/area-code-data-retrieval/#comments</comments>
		<pubDate>Thu, 11 Aug 2011 21:35:26 +0000</pubDate>
		<dc:creator>annasob</dc:creator>
				<category><![CDATA[automation]]></category>

		<guid isPermaLink="false">http://annasob.wordpress.com/?p=560</guid>
		<description><![CDATA[Last week I was tasked with populating a database with area codes/prefix combinations and the geographic location they map to. This was an interesting task that required me to retrieve data from a foreign API. For those of you that are not sure what I am talking about when I say area code/prefix let me [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=annasob.wordpress.com&#038;blog=9537498&#038;post=560&#038;subd=annasob&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Last week I was tasked with populating a database with area codes/prefix combinations and the geographic location they map to. This was an interesting task that required me to retrieve data from a foreign API. For those of you that are not sure what I am talking about when I say area code/prefix let me take a second to explain. A telephone number consists of 10 digits (not everywhere but for the most part) the first three digits are the area code and the next three digits are the prefix.  This of course does not take into account international country codes like 001 that get prepended to a telephone number. When you have a particular area code/ prefix combination you can use it to figure out which State/Province and City the owner of that combination resides in.  If you would like to research this further visit the <a href="http://www.nanpa.com/index.html">North American Numbering Plan (NANP) website</a>.</p>
<p>In order to populate my database I used two separate API&#8217;s: <a href="http://www.localcallingguide.com/">local calling guide&#8217;s XML query interface,</a> and <a href="http://tnid.us/">Telephone Number Identification</a> (tnID) search functionality.</p>
<p>To start, I downloaded a list of all of the area codes used and the countries they belonged to. I got this list from the <a href="http://www.nanpa.com/nas/public/npasInServiceByNumberReport.do?method=displayNpasInServiceByNumberReport">NANP </a>website but thinking back on it now I could have just went from numbers 200 &#8211; 999 and got that information from  the API&#8217;s. (This of course would have taken more time since not all of those area codes are in use.) I then wanted to use that list to get all of the available prefixes for each of the area codes and then finally the city they mapped onto.</p>
<p>The approach I took in getting the data was a bit flawed. I used local calling&#8217;s query interface to first get a list of rate centers per area code, then I used the rate center&#8217;s exch code to get all of the prefixes available for that area code. Finally I used their xmllocalprefix function to get the city information. You can imagine that this is a lot of data. You need to go through each area code, retrieve a list of rate centers and then retrieve the city information. I believe it took up to a minute to get all of the data for a single area code. This is definitely a long time however i was thinking I would create a script to do this automatically &#8211; press go once, wait some time and done. Boy was I wrong. Also I needed all of these steps because the local calling&#8217;s API did not provide a more direct way of getting all of the prefixes per area code.</p>
<h3>First Attempt</h3>
<p>My initial script consisted of an HTML form with a textarea and a submit button. The idea was that I would copy and paste the area code/ country information (&#8220;416 &#8211; Canada \n 905- Canada&#8230;&#8221;) from the NANP list I mentioned above and then press submit and let my <a href="http://en.wikipedia.org/wiki/PHP">PHP </a>script do the work. Essentially, a <a href="http://en.wikipedia.org/wiki/POST_request">POST </a><a href="http://en.wikipedia.org/wiki/POST_request">request</a> was sent with all of the area codes and then the PHP script would go through each area code and get the city information in the manner I described above. I learned quickly that if a POST request takes two long to process it times out! Leaving only 3 or so of the area codes processed.</p>
<h3>Second Attempt</h3>
<p>In order to get around the POST timeout I decided to do a <a href="http://php.net/manual/en/function.header.php">PHP Header redirect</a> after each area code has processed. Since the redirect lost the area code &#8211; country data that was in the textarea, I had to use a <a href="http://php.net/manual/en/features.sessions.php">SESSION </a>variable to store that information. I now had two separate files. The first file initialized the SESSION variable if it wasn&#8217;t already initialized, then it called the second file. The second file processed the next area code in the SESSION, removed it from the session, and then called the first file. This seemed like a good way to do things however it resulted in a &#8220;too many redirects&#8221; error <img src='http://s0.wp.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' />  On the upside sometimes I was able to process up to 15 area codes at a time which was a big improvement from the first script.</p>
<h3>Third and Final Attempt</h3>
<p>After my first attempt failed I took a step back and thought about what to do next. I figured out that I should use some JavaScript magic to make it appear like something else is happening. After all when you browse a website the server never complains about too many clicks. I edited the first file. I added a document <a href="http://en.wikipedia.org/wiki/DOM_events">onLoad </a>event. Now when the document loaded it would display some information on the screen before it loaded the second page. The first piece of information was what area code was just processed and the second piece was what area code will be processed next. This was brilliant since it actually let me know what was going on behind the scenes. Before this i was using <a href="http://en.wikipedia.org/wiki/SQL">SQL </a>select statement on the database to see what data actually got stored. This flow worked perfectly. No actual errors. However I still was not getting what I wanted. Apparently after a couple of redirects PHP&#8217;s SESSION variable gets whipped (most likely some PHP config variables needed editing). Which meant that after 15 or so go around  my area code SESSION variable would get re-initialized and the script would attempt to store the data for the very first area code.  This really sucked and since I have already taken way to long to complete my task I decided to split my area code data into smaller chunks which meant running the script a dozen times or so.</p>
<h3>tnID</h3>
<p><a href="http://tnid.us/">Telephone Number Identification</a> (tnID) search functionality would have probably been a better source for my data. I didn&#8217;t end up using it to store data into the database because I did not figure out how to use it until I was done my task. It wasn&#8217;t a total loss because I did end up comparing what I had in the database with what the search results returned.</p>
<h3>Data Cleanup</h3>
<p>After some investigations into the database I had I notices that some items did not make sense. For example I had a lot of &#8216;Washington Zone 1&#8242;. I needed to clean this up but I wasn&#8217;t about to spend a whole day on doing so. This time I has an advantage. I know both the area code and the prefix. After some googling I stumbled on<a href="http://peoplesearchaffiliates.com"> peoplesearchaffiliates.com</a> and their API. So I made a new script. I still had two files. The first file indicated which State needed to get updated as well as listed information on which prefixes were already checked. The second one, a PHP file got the results from the api (<a href="http://api.peoplesearchaffiliates.com/cgi-bin/rpd-api.cgi?phone=%5Bentirephonenumber%5D" rel="nofollow">http://api.peoplesearchaffiliates.com/cgi-bin/rpd-api.cgi?phone=%5Bentirephonenumber%5D</a>), updated the database and redirected to the first file with updated querysting parameters. The query string parameters indicated which prefix needed to be updated next. With this process, there were no time-outs or errors.</p>
<p>&nbsp;</p>
<p><strong><a href="http://annasob.wordpress.com/2009/12/07/" target="_blank">View all of my blogs</a></strong></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/annasob.wordpress.com/560/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/annasob.wordpress.com/560/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=annasob.wordpress.com&#038;blog=9537498&#038;post=560&#038;subd=annasob&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://annasob.wordpress.com/2011/08/11/area-code-data-retrieval/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d5c3b72b8f4ef8953749946657fd3380?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">annasob</media:title>
		</media:content>
	</item>
		<item>
		<title>Buttercamp &#8211; New York</title>
		<link>http://annasob.wordpress.com/2011/03/28/buttercamp-new-york/</link>
		<comments>http://annasob.wordpress.com/2011/03/28/buttercamp-new-york/#comments</comments>
		<pubDate>Mon, 28 Mar 2011 17:05:19 +0000</pubDate>
		<dc:creator>annasob</dc:creator>
				<category><![CDATA[Open Source ~ General]]></category>
		<category><![CDATA[popcorn js]]></category>

		<guid isPermaLink="false">http://annasob.wordpress.com/?p=539</guid>
		<description><![CDATA[I just got back from New York City and I am happy to announce that Buttercamp was a success! Buttercamp took place at the  ITP labs of New York&#8217;s Tisch School of the Arts. It was a hack session sponsored by the WebMadeMovies project. The idea behind the hack session was simple &#8211; Make cool HTML5 [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=annasob.wordpress.com&#038;blog=9537498&#038;post=539&#038;subd=annasob&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>I just got back from New York City and I am happy to announce that Buttercamp was a success! <a title="buttercamp" href="http://webmademovies.org/buttercamp/">Buttercamp </a> took place at the  ITP labs of New York&#8217;s <a href="http://itp.nyu.edu/itp/">Tisch School of the Arts</a>. It was a hack session sponsored by the <a href="http://webmademovies.org">WebMadeMovies</a> project. The idea behind the hack session was simple &#8211; Make cool HTML5 demos using <a href="popcornjs.org">popcorn.js </a>and <a href="http://butterapp.com/">butter.js</a> (Butterapp - The Popcorn.js Authoring Tool)  and any other tool you find. In preparation for the day<a href="http://brettgaylor.tumblr.com/"> Brett Gaylor</a> and <a href="http://www.benmoskowitz.com/">Ben Moskowitz</a> (who did an awesome job organizing btw) reached out to artists, filmmakers and designers. Ben also had some of his students attend. Anyone interested in participating simply had to fill out a form proposing their idea or project. The requirements were simple, you had to have an HTML5 video, a story to tell, and a developer who knew their way around the web. Each project group was assigned a popcorn.js and butter.js expert to help with the JavaScript part of the demo. The process was flawless. The filmmaker/artist explained their idea and their vision and started annotating their video. The team developer worked on the look and feel. The popcorn.js/butter.js expert started on the functionality. <a href="http://webmademovies.org/videoblog-buttercamp"><span style="color:#ff0000;">Watch the Video Blog</span></a><span style="color:#ff0000;">.</span></p>
<h3>The Groups</h3>
<p><span style="text-decoration:underline;">#18daysinegypt</span></p>
<p>You can read more about the project on their <a href="http://18daysinegypt.com">website</a>. The inspiration for their buttercamp demo came from the current conflict in Egypt. The idea was to produce a non linear timeline. The main video was positioned to take over the entire screen.  The video was of a protest happening on a bridge. As the video played information about the location appeared on the screen like Wikipedia articles, close-up photos of the protesters, and even videos of protesters being interviewed. The main challenge for this demo was getting content that was related. Who was on this bridge tweeting posting photos to Flickr etc. as the protest was happening. The main video showed one angle of the protest but the extra data formed a bigger however an incomplete picture. The question remains: how does one go about getting the whole story from every angle. <span style="color:#ff0000;">Demo links </span><a href="http://code.chirls.com/buttercamp/"><span style="color:#ff0000;">here</span></a><span style="color:#ff0000;">!</span></p>
<p><span style="text-decoration:underline;">through a lens darkly</span></p>
<p>You can read more about the project on their <a href="http://throughalensdarkly.tv">website</a>. The teams wanted to showcase the work of Sylvia Isabe using butter.js. Since this project has a lot of material, it is fair to say that they wanted to get a deeper understanding of how the tools work so that they can use their knowledge and apply it to future work. The team&#8217;s tinkering led to an improvement made to the butter.js tool. An import/export tool! The feature is still in review but the idea is to be able to import work previous done using the tool in order to make changes and add content. Demo links coming soon!</p>
<p><span style="text-decoration:underline;">everything is a remix</span></p>
<p>This project aims at revealing how a particular video came to be. Which resources were used in its making and how the content was &#8220;remixed&#8221;.  This was more of a proof of concept than an actual demo request. <a href="http://www.kirbyferguson.com/">Kirby Ferguson</a> and I worked on this. Kirby wanted to explore an interface that  jumped down rabbit holes for more stuff to watch/learn. Kind of like Jonathan&#8217;s <a href="http://www.rebelliouspixels.com/semanticremix/">Donald Duck</a> demo however instead of having information around the video provide the ability for the user to see the original clip in a clear way.  Kirby came up with a simple wire-frame:</p>
<p><a href="http://annasob.files.wordpress.com/2011/03/buttercampmock.png"><img class="aligncenter size-medium wp-image-540" title="Buttercamp mockup" src="http://annasob.files.wordpress.com/2011/03/buttercampmock.png?w=300&#038;h=187" alt="" width="300" height="187" /></a></p>
<p>When the main video came to a point where an original source video was available a button would appear. In this case we had two source videos. When the user clicked the button a new video would open up on top of the original with extra content (in this case an amazon link). As a result of this we realized that we need a video plugin in popcorn.js which i took some time at the beginning of the day to develop. It is currently making its way into the review process.  The main challenge of this demo was <a href="http://en.wikipedia.org/wiki/Cascading_Style_Sheets">CSS</a>. The position of the second video on top of the video proved to be oddly challenging and at the end just did not work. Temporarily you can view the demo <a href="http://scotland.proximity.on.ca/sdowne/Buttercamp/demos/buttercamp/">here</a>. The idea that Kirby wanted to explore is possible however it really need a designer to make it work.</p>
<p><span style="text-decoration:underline;">robots</span></p>
<p>The idea of the buttercamp demo was to provide a non-linear type of story telling. The user made their own experience by choosing a path to explore. <a href="http://www.cyberhive.ca/wordpress/members/secretrobotron/">Bobby</a>, a new member of the webmademovies/Mozilla team did an awesome job fine tuning the demo. View it <a href="http://robothaus.org/robots/">here</a> (Firefox only for now).</p>
<p><span style="text-decoration:underline;">Graffiti Markup Language (GML)</span></p>
<p>The GML project has been around for some time. You can read about it on their <a href="http://www.graffitimarkuplanguage.com/">website</a>. The video aimed at connecting graffiti with video. A GML popcorn.js plugin is already in the works. The demo can be viewed <a href="http://itp.jeffhoward.ca/work/openvideo/plugins/timeline/popcorn.timeline.html">here</a> (it is most likely getting tweaked as you read this) a similar but different demo can be viewed <a href="http://scotland.proximity.on.ca/sdowne/popcornGML/gml+popcorn/">here</a>.</p>
<p><span style="text-decoration:underline;">Tubeyloops</span></p>
<p>Tubeyloops&#8217; focus was actually remixing video. You can read the <a href="http://videoontheweb.org/?p=40">project proposal</a>.  <a href="http://www.sciencelifeny.com/">Greg Dorsainville</a> had a vision of having multiple videos and allowing the user to remix them on the fly in order to produce a finished product. What ended up happening here was AWESOME and hopefully in time I can link you to a blog explaining more. Data from <a href="http://patternsketch.com/">pattern sketch</a> was used to alter the video&#8217;s audio and to produce sequences of the final product. How it worked: There were four video clips each linked to a button on the keyboard (QWER). When one of the buttons were pressed the corresponding video played until another button was pressed. A real unique remix was formed each time the demo was used.</p>
<h3>Individuals</h3>
<p>There were a lot of people there, including Ben&#8217;s students, that wanted to learn more about HTML5 video and popcorn.js. We had about an hour dedicated to them in order to provide an overview of what HTML5 was and what you can do with it and just an overall tutorial on using popcorn.js and butter.js. As a result of this group using butter.js a number of bugs have been filled in order to improve the Butterapp - The Popcorn.js Authoring Tool</p>
<h3>Lessons Learned</h3>
<p>The day went great, participation was through the roof, and the demos were mind-blowing. However, as with most things in this world, Buttercamp can use some improvements.</p>
<ul>
<li>The day was way too long. We started at 9:30 am and finished at 10pm. I would say we started seeing people leaving around 4pm. A little less than half of the people stayed for the show and tell at the end.</li>
<li>More designers were needed. A lot of the demos were centered around the design. I already talked about CSS being the only thing blocking my demo from doing what it is supposed to do. On days like this design experts are needed to fine tune the demo once all of the content has been collected.</li>
<li>A server to host all of the demos. It would be nice to allow people to ftp their demos as they were working on them. It definitely would have made this blog better, but it would also eliminate the time it will now take to get all of the demos from each team.</li>
</ul>
<h3>Photos</h3>
<p><img class="alignnone" title="Buttercamp" src="http://farm6.static.flickr.com/5299/5562851450_b906889a7c_z.jpg" alt="" width="384" height="287" /><img class="alignnone" title="buttercamp2" src="http://farm6.static.flickr.com/5187/5561297498_884e4936e5.jpg" alt="" width="300" height="224" /></p>
<h3>Conclusion</h3>
<p>Buttercamp was fantastic. If you missed it maybe you can start a petition to get Buttercamp going in your town. The day went smoothly and encountered no real problems. Everyone had a great time collaborating and sharing ideas. <strong>If you attended buttercamp please share your stories, pictures, and results. </strong></p>
<p><strong><a href="http://annasob.wordpress.com/2009/12/07/category/popcorn-js/" target="_blank">View all of my blogs on popcorn-js</a><br />
<a href="http://annasob.wordpress.com/2009/12/07/" target="_blank">View all of my blogs</a><br />
</strong></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/annasob.wordpress.com/539/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/annasob.wordpress.com/539/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=annasob.wordpress.com&#038;blog=9537498&#038;post=539&#038;subd=annasob&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://annasob.wordpress.com/2011/03/28/buttercamp-new-york/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d5c3b72b8f4ef8953749946657fd3380?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">annasob</media:title>
		</media:content>

		<media:content url="http://annasob.files.wordpress.com/2011/03/buttercampmock.png?w=300" medium="image">
			<media:title type="html">Buttercamp mockup</media:title>
		</media:content>

		<media:content url="http://farm6.static.flickr.com/5299/5562851450_b906889a7c_z.jpg" medium="image">
			<media:title type="html">Buttercamp</media:title>
		</media:content>

		<media:content url="http://farm6.static.flickr.com/5187/5561297498_884e4936e5.jpg" medium="image">
			<media:title type="html">buttercamp2</media:title>
		</media:content>
	</item>
		<item>
		<title>Code Review, SR+ &#8230; but why?</title>
		<link>http://annasob.wordpress.com/2011/02/15/code-review-sr-but-why/</link>
		<comments>http://annasob.wordpress.com/2011/02/15/code-review-sr-but-why/#comments</comments>
		<pubDate>Tue, 15 Feb 2011 19:02:06 +0000</pubDate>
		<dc:creator>annasob</dc:creator>
				<category><![CDATA[Open Source ~ General]]></category>
		<category><![CDATA[popcorn js]]></category>
		<category><![CDATA[review]]></category>
		<category><![CDATA[SR+]]></category>

		<guid isPermaLink="false">http://annasob.wordpress.com/?p=536</guid>
		<description><![CDATA[I wanted to take some time and talk about code review. Let me start of by explaining what &#8220;code review&#8221; is, or rather what it is in reference to this blog. Code review is the act of looking at someone&#8217;s code in order to evaluate it.  Code that is in review is often referred to [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=annasob.wordpress.com&#038;blog=9537498&#038;post=536&#038;subd=annasob&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>I wanted to take some time and talk about code review. Let me start of by explaining what &#8220;code review&#8221; is, or rather what it is in reference to this blog. Code review is the act of looking at someone&#8217;s code in order to evaluate it.  Code that is in review is often referred to as a patch. The purpose of the code is to fix a bug, add functionality, or improve performance. Once the patch passes review it is then staged/added to the core of the project. The reason behind the review is simple. Does the code do what it says it is supposed to do? It is important to note that every project has review requirements.  For example, the <a href="http://popcornjs.org">popcorn-js</a> project I am working on has the following requirements:</p>
<ol>
<li>Ensure the code follows the style guide and is appropriate</li>
<li>Ensure the code passes lint</li>
<li>Ensure main tests pass on multiple browsers: test/index.html</li>
<li>Ensure new tests were added to test the new functionality and that they pass</li>
<li>Ensure that other tests such as parser or plugin tests that are affected by the new code also pass</li>
</ol>
<p>Looking at these requirements a patch for the popcorn-js project has to: fix/add the functionality it is meant to fix/add, it has to include tests, and it also has to follow a style guide. If the specific patch that you are looking at is missing any of these the review simply fails. However, what happens when it passes? Lately I have been seeing short and sweet review comments: &#8220;Super Review (SR) + &#8221; . But what does this mean exactly? Did you follow the review requirements? Do you even know they exist? When a code patch fails review the reviewer always states the reason for the failure. This is obvious since the problem has to be outlined before it can be fixed. Is it too much to expect the same type of courtesy for a passing review? After all, the way a patch was tested is significant. I am not saying that the person reviewing the patch is not to be trusted. I am however pointing out that there is merit behind doing reviews. However, if a review is not properly documented it will be unofficially re-reviewed by the person who is responsible for staging the patch. Why? Simply because the person staging/adding the new code wants to ensure that nothing broke in the process. I am aware that the person staging usually checks to ensure noting is broken but there is a major difference here. For example, looking back at  the popcorn-js project and it&#8217;s review process requirements you will notice that the project has core unit tests as well as other parser and plugin tests. Typically after something has been staged the core unit tests, including any main demos, would be run. The plugin and parser test however would not. From a release engineer&#8217;s perspective proper review documentation saves a lot of time. Let me provide an example of good review documentation based on popcorn-js&#8217; requirements:</p>
<p>SR+, code looks good</p>
<p>No lint errors</p>
<p>Unit tests passing on (Vista) Firefox, Chrome and Safari</p>
<p>This patch affects the googleMap plugin. I verified that all unit tests/demos using this plugin work as expected on the browsers mentioned above.</p>
<p>Notice that I am not writing a whole paragraph. Point form notes is all you really need to let the appropriate people know what you did and why the review had passed.  I hope you keep this in mind when doing a review.</p>
<p>&nbsp;</p>
<p><a href="http://annasob.wordpress.com/2009/12/07/category/popcorn-js/" target="_blank">View all of my blogs on popcorn-js</a><br />
<a href="http://annasob.wordpress.com/2009/12/07/" target="_blank">View all of my blogs</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/annasob.wordpress.com/536/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/annasob.wordpress.com/536/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=annasob.wordpress.com&#038;blog=9537498&#038;post=536&#038;subd=annasob&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://annasob.wordpress.com/2011/02/15/code-review-sr-but-why/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d5c3b72b8f4ef8953749946657fd3380?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">annasob</media:title>
		</media:content>
	</item>
		<item>
		<title>Popcorn-js 0.3v Release</title>
		<link>http://annasob.wordpress.com/2011/02/09/popcorn-js-0-3v-release/</link>
		<comments>http://annasob.wordpress.com/2011/02/09/popcorn-js-0-3v-release/#comments</comments>
		<pubDate>Wed, 09 Feb 2011 21:57:34 +0000</pubDate>
		<dc:creator>annasob</dc:creator>
				<category><![CDATA[popcorn js]]></category>

		<guid isPermaLink="false">http://annasob.wordpress.com/?p=531</guid>
		<description><![CDATA[Popcorn-js is already on version 0.3. If you haven&#8217;t been keeping up-to-date feel free to read my 0.2v release blog. The major addition in this release is subtitle support. As it stands popcorn-js can take TTXT, SRT, WebSRT, TTML, SSA, and  SBV files, parse them, and spit out subtitles positioned right on top of the video!!! [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=annasob.wordpress.com&#038;blog=9537498&#038;post=531&#038;subd=annasob&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>Popcorn-js is already on version 0.3. If you haven&#8217;t been keeping up-to-date feel free to read my <a href="http://annasob.wordpress.com/2011/01/12/popcorn-js-0-2v-release/">0.2v release blog</a>. The major addition in this release is subtitle support. As it stands popcorn-js can take TTXT, SRT, WebSRT, TTML, SSA, and  SBV files, parse them, and spit out subtitles positioned right on top of the video!!! If you want more information read <a href="http://sweerdenburg.wordpress.com/2011/02/06/more-subtitle-formats-for-popcorn/">Steven&#8217;s blog post</a>.  Of course we have made numerous other fixes and additions. For a complete list view the <a href="https://webmademovies.lighthouseapp.com/projects/63272/changelog">changelog</a>.</p>
<p><span style="font-size:15px;font-weight:bold;">Looking to get involved?</span></p>
<p>There is countless ways for people to get involved in the project including idea generation, video generation, bug filing, documentation, promotion, and of course writing code. If you want to get involved here is a list of links to get you started:</p>
<ul>
<li><a href="irc://irc.mozilla.org:6667/popcorn" target="_blank">#popcorn</a> irc channel</li>
<li>popcorn-js <a title="lighthouse - popcorn" href="https://webmademovies.lighthouseapp.com/projects/63272-popcorn-js/overview">lighthouse </a>account</li>
<li>popcorn-js <a href="http://github.com/annasob/popcorn-js" target="_blank">GitHub repo</a> you can fork from</li>
<li>to join an online discussion or see people&#8217;s comments visit the <a href="https://www.drumbeat.org/webmademovies/" target="_blank">project site</a></li>
<li>to view the most recent demo visit <a href="http://popcornjs.org/demos/" target="_blank">popcornjs.org</a></li>
</ul>
<p>If you want to use popcornjs and you are having problems feel free to contact us. You can comment on this blog, file a ticket on Lighthouse, send me an email, or come on IRC. WE WILL HELP YOU <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><span style="font-size:15px;"><strong>Popcorn-js in Use</strong></span></p>
<p><span style="font-size:15px;">If you have yet to realized popcornjs&#8217; potential, take a second to look at these two sites that use popcorn-js. The first one is the <a title="SOTU" href="http://www.pbs.org/newshour/sotu-video/">Annotation of the 2011 State of the Union</a> brought to you by PBS and the popcornjs team. The second one shows of <a href="http://www.rebelliouspixels.com/semanticremix/">Jonathan McIntosh&#8217;s Donald Duck remix</a> originally showcased at the <a href="http://www.openvideoconference.org/">Open Video Conferenc</a>e in NY city. Before the making of said page people can only look at the video. Whereas now, you can see all of the different components that had to be mixed together in order to make the video. </span></p>
<p><a href="http://annasob.wordpress.com/2009/12/07/category/popcorn-js/" target="_blank">View all of my blogs on popcorn-js</a><br />
<a href="http://annasob.wordpress.com/2009/12/07/" target="_blank">View all of my blogs</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/annasob.wordpress.com/531/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/annasob.wordpress.com/531/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=annasob.wordpress.com&#038;blog=9537498&#038;post=531&#038;subd=annasob&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://annasob.wordpress.com/2011/02/09/popcorn-js-0-3v-release/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d5c3b72b8f4ef8953749946657fd3380?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">annasob</media:title>
		</media:content>
	</item>
		<item>
		<title>Sync Server</title>
		<link>http://annasob.wordpress.com/2011/02/07/sync-server/</link>
		<comments>http://annasob.wordpress.com/2011/02/07/sync-server/#comments</comments>
		<pubDate>Mon, 07 Feb 2011 17:33:41 +0000</pubDate>
		<dc:creator>annasob</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://annasob.wordpress.com/?p=477</guid>
		<description><![CDATA[I recently set up my own sync server. It is one of the requirements for a projects I am currently working on. All of the information I needed was on two separate Mozilla wiki pages: sync setup and user setup.  After spending some time in the #sync IRC Channel. I finally got it working. In order to configure a server [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=annasob.wordpress.com&#038;blog=9537498&#038;post=477&#038;subd=annasob&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>I recently set up my own sync server. It is one of the requirements for a projects I am currently working on. All of the information I needed was on two separate Mozilla wiki pages: <a href="https://wiki.mozilla.org/Labs/Weave/Sync/1.0/Setup">sync setup</a> and <a href="https://wiki.mozilla.org/Labs/Weave/Sync/1.0/Setup">user setup</a>.  After spending some time in the #sync IRC Channel. I finally got it working. In order to configure a server on Fedora you will need PHP with the mbstring extension, mysql, apache, mercurial, and captcha.</p>
<h1>Setting up the sync server:</h1>
<p>- Get the latest server from Mozilla. You can save this directory anywhere on the hard-drive.</p>
<p><pre class="brush: plain;">
 hg clone http://hg.mozilla.org/services/sync-server/
</pre></p>
<p>- Edit the Apache config file found under etc/httpd/conf/httpd.conf</p>
<p>Append these two lines:</p>
<p><pre class="brush: plain;">
Alias /1.0 &lt;full path to the dir you just saved&gt;/sync-server/1.0/index.php
</pre></p>
<p>- Copy 1.0/default_constants.php.dist to 1.0/default_constants.php</p>
<p>Open this file and change the following parameters:</p>
<p><pre class="brush: plain;">
 define('WEAVE_AUTH_ENGINE', 'mysql');
 define('WEAVE_MYSQL_AUTH_HOST', '&lt;db host&gt;');
 define('WEAVE_MYSQL_AUTH_DB', '&lt;db name&gt;');
 define('WEAVE_MYSQL_AUTH_USER', '&lt;db username&gt;');
 define('WEAVE_MYSQL_AUTH_PASS', '&lt;db password&gt;');
</pre></p>
<p>Note that you have to create the database and the above user. If you have never set up mysql <a href="http://annasob.wordpress.com/2011/01/21/setting-up-mysql-on-fedora/">this blog</a> may help.</p>
<p>-Make a database name it the same as  above<br />
-Make a user  with  and give him privileges to the</p>
<p>- Create three tables: wbo and collections using the following script:</p>
<p><pre class="brush: plain;">
 CREATE TABLE `collections` (
 `userid` int(11) NOT NULL,
 `collectionid` smallint(6) NOT NULL,
 `name` varchar(32) NOT NULL,
 PRIMARY KEY  (`userid`,`collectionid`),
 KEY `nameindex` (`userid`,`name`)
 ) ENGINE=InnoDB;

CREATE TABLE `wbo` (
 `username` int(11) NOT NULL,
 `collection` smallint(6) NOT NULL default '0',
 `id` varbinary(64) NOT NULL default '',
 `parentid` varbinary(64) default NULL,
 `predecessorid` varbinary(64) default NULL,
 `sortindex` int(11) default NULL,
 `modified` bigint(20) default NULL,
 `payload` longtext,
 `payload_size` int(11) default NULL,
 `ttl` int(11) default '2100000000',
 PRIMARY KEY  (`username`,`collection`,`id`),
 KEY `parentindex` (`username`,`collection`,`parentid`),
 KEY `modified` (`username`,`collection`,`modified`),
 KEY `weightindex` (`username`,`collection`,`sortindex`),
 KEY `predecessorindex` (`username`,`collection`,`predecessorid`),
 KEY `size_index` (`username`,`payload_size`)
 ) ENGINE=InnoDB;

This table is used by the user server:
 CREATE TABLE `users` (
  id int(11) NOT NULL PRIMARY KEY auto_increment,
  username varbinary(32) NOT NULL,
  password_hash varbinary(128) default NULL,
  email varbinary(64) default NULL,
  status tinyint(4) default '1',
  alert text,
  reset varchar(32),
  reset_expiration datetime )
ENGINE=InnoDB;

insert into users (username, password_hash, status) values ('username', md5('password'), 1);
</pre></p>
<p>- Ensure that the following constants are listed in the 1.0/default_constants..php file:</p>
<p><pre class="brush: plain;">
 define('WEAVE_MYSQL_STORE_WRITE_HOST', WEAVE_MYSQL_STORE_READ_HOST);
 define('WEAVE_MYSQL_STORE_WRITE_DB', WEAVE_MYSQL_STORE_READ_DB);
 define('WEAVE_MYSQL_STORE_WRITE_USER', WEAVE_MYSQL_STORE_READ_USER);
 define('WEAVE_MYSQL_STORE_WRITE_PASS', WEAVE_MYSQL_STORE_READ_PASS);
 define('WEAVE_PAYLOAD_MAX_SIZE', '');
</pre></p>
<h1>Setting up the user server:</h1>
<p>- Get the latest server from Mozilla. You can save these anywhere on the hard-drive.</p>
<p><pre class="brush: plain;">
hg clone http://hg.mozilla.org/services/reg-server/
</pre></p>
<p>- Edit the Apache config file found under etc/httpd/conf/httpd.conf</p>
<p>Append these lines two lines:</p>
<p><pre class="brush: plain;">
Alias /user/1.0 &lt;full path to services/reg-server directory&gt;/reg-server/1.0/index.php
Alias /user/1 &lt;full path to services/reg-server directory&gt;/reg-server/1.0/index.php
</pre></p>
<p>- Copy 1.0/weave_user_constants.php.dist  of the new directory to 1.0/weave_user_constants.php</p>
<p>Open this file and change the following parameters:</p>
<p><pre class="brush: plain;">
define('WEAVE_AUTH_ENGINE', 'mysql');
define('WEAVE_MYSQL_AUTH_HOST', '&lt;db host&gt;');
define('WEAVE_MYSQL_AUTH_DB', '&lt;db name&gt;');
define('WEAVE_MYSQL_AUTH_USER', '&lt;db username&gt;');
define('WEAVE_MYSQL_AUTH_PASS', '&lt;db password&gt;');
</pre></p>
<p>- To set up captcha you will need to get yourself a public key and private key from <a rel="nofollow" href="http://recaptcha.net/">http://recaptcha.net/</a></p>
<p>-Add an alias to the 1.0/weave_user_constants.php</p>
<p><pre class="brush: plain;">
Alias /misc/1.0/captcha_html /reg-server/1.0/captcha.php
</pre></p>
<p>Once you completed this setup you need to set-up your sync profile. To do this go to the Tools=&gt;Sync menu in Firefox or download the <a href="https://addons.mozilla.org/de/firefox/addon/firefox-sync/">Sync add-on</a>.<br />
You will meed to set up sync to use your own serve. <a href="http://support.mozilla.com/en-US/kb/how-do-i-set-up-firefox-sync">This tutorial</a> will guide you through setup however it uses the Mozilla server.</p>
<p><a href="http://annasob.wordpress.com/" target="_blank">View all of my blogs</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/annasob.wordpress.com/477/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/annasob.wordpress.com/477/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=annasob.wordpress.com&#038;blog=9537498&#038;post=477&#038;subd=annasob&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://annasob.wordpress.com/2011/02/07/sync-server/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d5c3b72b8f4ef8953749946657fd3380?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">annasob</media:title>
		</media:content>
	</item>
		<item>
		<title>Setting up mysql on Fedora</title>
		<link>http://annasob.wordpress.com/2011/01/21/setting-up-mysql-on-fedora/</link>
		<comments>http://annasob.wordpress.com/2011/01/21/setting-up-mysql-on-fedora/#comments</comments>
		<pubDate>Fri, 21 Jan 2011 17:40:26 +0000</pubDate>
		<dc:creator>annasob</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[fedora]]></category>
		<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false">http://annasob.wordpress.com/?p=483</guid>
		<description><![CDATA[This is a quick how to on setting up mysql on Fedora. These commands are run on the terminal and may require root access. To change users use this command: su root Install mysql packages: Start the mysql server: If you want the mysql service to start everytime the machine starts do: Set up the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=annasob.wordpress.com&#038;blog=9537498&#038;post=483&#038;subd=annasob&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>This is a quick how to on setting up mysql on Fedora. These commands are run on the terminal and may require root access. To change users use this command: <b>su root</b><br />
Install mysql packages:<br />
<pre class="brush: plain;">
yum install mysql mysql-devel mysql-server
</pre><br />
Start the mysql server:</p>
<p><pre class="brush: plain;">
service mysqld start
</pre></p>
<p>If you want the mysql service to start everytime the machine starts do:<br />
<pre class="brush: plain;">
chkconfig mysqld on
</pre></p>
<p>Set up the root password for mysql:<br />
<pre class="brush: plain;">
mysqladmin -u root password &lt;strong&gt;&lt;em&gt;yourpassword&lt;/em&gt;&lt;/strong&gt;
</pre></p>
<p>To get into a mysql prompt do:<br />
<pre class="brush: plain;">
mysql -u root -p
</pre></p>
<p>The above will change your terminal prompt from something like &#8220;[annasob@ireland 1.0]$&#8221; to &#8220;mysql&gt;&#8221;</p>
<p>Create a User and set their privileges in a mysql prompt</p>
<p><pre class="brush: plain;">
CREATE USER 'monty'@'localhost' IDENTIFIED BY 'some_pass';
GRANT ALL PRIVILEGES ON *.* TO 'monty'@'localhost' WITH GRANT OPTION;
</pre></p>
<p>After this you can create databases and create tables.</p>
<p><a href="http://annasob.wordpress.com/" target="_blank">View all of my blogs</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/annasob.wordpress.com/483/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/annasob.wordpress.com/483/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=annasob.wordpress.com&#038;blog=9537498&#038;post=483&#038;subd=annasob&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://annasob.wordpress.com/2011/01/21/setting-up-mysql-on-fedora/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d5c3b72b8f4ef8953749946657fd3380?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">annasob</media:title>
		</media:content>
	</item>
		<item>
		<title>Building on Fedora 13</title>
		<link>http://annasob.wordpress.com/2011/01/19/building-on-fedora-13/</link>
		<comments>http://annasob.wordpress.com/2011/01/19/building-on-fedora-13/#comments</comments>
		<pubDate>Wed, 19 Jan 2011 15:34:47 +0000</pubDate>
		<dc:creator>annasob</dc:creator>
				<category><![CDATA[Build]]></category>
		<category><![CDATA[Open Source ~ General]]></category>

		<guid isPermaLink="false">http://annasob.wordpress.com/?p=463</guid>
		<description><![CDATA[Prerequisites: Run this command in terminal note that you need to do this as root. To switch to the root execute the command: su root There is going to be some dialog so pay attention and answer y to everything Building 1. Get the source code 2. Make a .mozconfig file and put it into [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=annasob.wordpress.com&#038;blog=9537498&#038;post=463&#038;subd=annasob&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<h3>Prerequisites:</h3>
<p>Run this command in terminal note that you need to do this as root. To switch to the root execute the command: su root</p>
<p>There is going to be some dialog so pay attention and answer y to everything</p>
<p><pre class="brush: jscript;">
sudo yum groupinstall 'Development Tools' 'Development Libraries' 'GNOME Software Development'
sudo yum install mercurial autoconf213 glibc-static libstdc++-static yasm wireless-tools-devel mesa-libGL-devel
</pre></p>
<h3>Building</h3>
<p>1. Get the source code</p>
<p><pre class="brush: jscript;">
hg clone http://hg.mozilla.org/mozilla-central/ src
cd src
</pre></p>
<p>2. Make a .mozconfig file and put it into the directory (src) you made above. The file should contain:</p>
<p><pre class="brush: jscript;">
. $topsrcdir/browser/config/mozconfig
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/objdir-ff-debug
mk_add_options MOZ_MAKE_FLAGS=&quot;-j2&quot;
ac_add_options --enable-debug
ac_add_options --disable-optimize
</pre></p>
<p>Note these options are for a debug-build</p>
<p>3. Run the make file</p>
<p><pre class="brush: plain;">make -f client.mk</pre></p>
<p>4. Run firefox by going into the src/objdir-ff-debug/dist/bin directory and either double clicking on the icon or via the command ./firefox</p>
<p>&nbsp;</p>
<p><a href="http://annasob.wordpress.com/" target="_blank">View all of my blogs</a></p>
<p><a href="http://annasob.wordpress.com/category/build/">View all of my blogs on Building</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/annasob.wordpress.com/463/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/annasob.wordpress.com/463/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=annasob.wordpress.com&#038;blog=9537498&#038;post=463&#038;subd=annasob&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://annasob.wordpress.com/2011/01/19/building-on-fedora-13/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d5c3b72b8f4ef8953749946657fd3380?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">annasob</media:title>
		</media:content>
	</item>
		<item>
		<title>Popcorn-js 0.2v Release</title>
		<link>http://annasob.wordpress.com/2011/01/12/popcorn-js-0-2v-release/</link>
		<comments>http://annasob.wordpress.com/2011/01/12/popcorn-js-0-2v-release/#comments</comments>
		<pubDate>Wed, 12 Jan 2011 19:12:34 +0000</pubDate>
		<dc:creator>annasob</dc:creator>
				<category><![CDATA[popcorn js]]></category>
		<category><![CDATA[butter]]></category>
		<category><![CDATA[butter.js]]></category>

		<guid isPermaLink="false">http://annasob.wordpress.com/?p=468</guid>
		<description><![CDATA[If you haven&#8217;t heard about popcorn-js you are seriously missing out. Some Torontonians refer to it as CP24 online but of course its much better &#8211;  it&#8217;s open-source and allows anyone to make a content driven site. [Read my last post to get a better overview]  It has been less than 6 months since the initial launch of popcorn-js and only [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=annasob.wordpress.com&#038;blog=9537498&#038;post=468&#038;subd=annasob&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p>If you haven&#8217;t heard about <a title="popcorn" href="popcornjs.org">popcorn-js</a> you are seriously missing out. Some <em><a href="http://www.urbandictionary.com/define.php?term=torontonian">Torontonians</a> </em>refer to it as <a title="cp24" href="http://www.cp24.com/">CP24 online</a> but of course its much better &#8211;  it&#8217;s open-source and allows anyone to make a content driven site. [<a title="popcorn 0.1" href="http://annasob.wordpress.com/2010/07/22/popcorn-js-0-1v-release/ ‎">Read my last post to get a better overview</a>]  It has been less than 6 months since the initial launch of popcorn-js and only 1 month since our decision to make it into a <a href="http://annasob.wordpress.com/2010/12/08/popcorn-js-gets-a-face-lift/">plug-in architecture</a>. Yes, we revamped the entire library in just one month.</p>
<h3>Whats Changed?</h3>
<p>In short everything; we re-wrote the entire thing. Using a plugin architecture enables people to easily add functionality to the library. Before, in order to get new features people would have to hack the actual popcorn.js file. Now they can make their own files (plugins, parsers) and simply use them. Another advantage of this is the fact that people will no longer need to write XML, although it is still supported.  Check-out the complete <a href="https://webmademovies.lighthouseapp.com/projects/63272/changelog">changelog</a>. Read <a href="http://weblog.bocoup.com/popcorn-js-0-2-released">bocoup&#8217;s blog</a> about the design.</p>
<p>Another exciting addition is butter. People who don&#8217;t want to code will need &#8220;butter for their popcorn&#8221;. <a href="http://popcornjs.org/butter/">Butter</a> 0.1v has just been released. It is an online tool that enables anyone to make a popcorn.js enriched webpage. You just give it a link to your video, choose your plugins, fill in the needed data and it generates a webpage for you!</p>
<h3>Looking to get involved?</h3>
<p>There is countless ways for people to get involved in the project including idea generation, video generation, bug filing, documentation, promotion, and of course writing code. If you want to get involved here is a list of links to get you started:</p>
<ul>
<li><a href="irc://irc.mozilla.org:6667/popcorn" target="_blank">#popcorn</a> irc channel</li>
<li>popcorn-js <a title="lighthouse - popcorn" href="https://webmademovies.lighthouseapp.com/projects/63272-popcorn-js/overview">lighthouse </a>account</li>
<li>popcorn-js <a href="http://github.com/annasob/popcorn-js" target="_blank">GitHub repo</a> you can fork from</li>
<li>to join an online discussion or see people&#8217;s comments visit the <a href="https://www.drumbeat.org/webmademovies/" target="_blank">project site</a></li>
<li>to view the most recent demo visit <a href="http://popcornjs.org/demos/" target="_blank">popcornjs.org</a></li>
</ul>
<p><a href="http://annasob.wordpress.com/2009/12/07/category/popcorn-js/" target="_blank">View all of my blogs on popcorn-js</a><br />
<a href="http://annasob.wordpress.com/2009/12/07/" target="_blank">View all of my blogs</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/annasob.wordpress.com/468/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/annasob.wordpress.com/468/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=annasob.wordpress.com&#038;blog=9537498&#038;post=468&#038;subd=annasob&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://annasob.wordpress.com/2011/01/12/popcorn-js-0-2v-release/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d5c3b72b8f4ef8953749946657fd3380?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">annasob</media:title>
		</media:content>
	</item>
		<item>
		<title>Seneca at polytechnicscanada.ca</title>
		<link>http://annasob.wordpress.com/2010/12/08/seneca-at-polytechnicscanada-ca/</link>
		<comments>http://annasob.wordpress.com/2010/12/08/seneca-at-polytechnicscanada-ca/#comments</comments>
		<pubDate>Wed, 08 Dec 2010 19:16:02 +0000</pubDate>
		<dc:creator>annasob</dc:creator>
				<category><![CDATA[Open Source ~ General]]></category>
		<category><![CDATA[popcorn js]]></category>
		<category><![CDATA[gary goodyear]]></category>
		<category><![CDATA[polutechnics canada]]></category>
		<category><![CDATA[popcornjs]]></category>
		<category><![CDATA[seneca]]></category>

		<guid isPermaLink="false">http://annasob.wordpress.com/?p=453</guid>
		<description><![CDATA[Polytechnics Canada is a national alliance made up of nine institutions dedicated to helping colleges and industry create high-quality jobs for the future. The members include Seneca College, Humber College, Sheridan College, OLDS College, George Brown College, Conestoga College , British Columbia Institute of Technology, Algonquin College, and SAIT Polytechnic. The idea here is to work closely with [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=annasob.wordpress.com&#038;blog=9537498&#038;post=453&#038;subd=annasob&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.polytechnicscanada.ca/" target="_blank">Polytechnics Canada</a> is a national alliance made up of nine institutions dedicated to helping colleges and industry create high-quality jobs for the future. The members include <a href="http://www.senecac.on.ca/" target="_blank">Seneca College</a>, <a href="http://www.humber.ca/" target="_blank">Humber College</a>, <a href="http://sheridancollege.ca/" target="_blank">Sheridan College</a>, <a href="http://www.oldscollege.ca/" target="_blank">OLDS College</a>, <a href="http://www.georgebrown.ca/" target="_blank">George Brown College</a>, <a href="http://www.conestogac.on.ca/" target="_blank">Conestoga College </a>, <a href="http://www.bcit.ca/" target="_blank">British Columbia Institute of Technology</a>, <a href="http://www.algonquincollege.com/" target="_blank">Algonquin College</a>, and <a href="http://sait.ca/" target="_blank">SAIT Polytechnic</a>. The idea here is to work closely with companies to promote innovation and practical applied research.  Being a graduate, and now working for Seneca College, I have the opportunity of working with industry partners. Seneca&#8217;s <a href="http://zenit.senecac.on.ca/wiki/index.php/Main_Page">Centre for Development of Open Technology</a> is currently working with <a href="http://www.mozilla.org/">Mozilla</a>, <a href="http://www.nexj.com/">NexJ</a>, <a href="http://www.arius3d.com/">Aerius 3D</a> and <a href="http://fedoraproject.org/">Fedora</a>. Out of all the research projects at Seneca, <a href="http://webmademovies.org">popcornjs </a>was chosen to be presented at the 2010 Polytechnics Canada meetup. Each member was to choose one project that would be presented by a student during a 5 min Power Point presentation. Yes Power Point. 5 min 5 slides. Not sure how that promotes innovation but I guess it allows for a controlled environment with flawless transition from one presentation to the next. Being part of the popcornjs team I volunteered to present. For those of you who do not know what popcornjs is you have to read my blogs more often. I joke. Popcorn.js is a JavaScript library aimed at allowing non-technical people to manipulate open video on the web. It provides a way for filmmakers to control the environment in which their video is viewed by integrating semantic content (wiki articles, google maps, google news, webpages, twitter, flickr) with HTML5 video. I created a demo specifically aimed at explaining what popcorn can do for this presentation. <a href="http://webmademovies.org/demos/popcorn/">View it here</a>.  Some of the other student presentations consisted of new concept wind mills, water oil filtration units, and high tech. lenses.</p>
<p>After the 5min presentation came the &#8220;elevator pitch&#8221; to the Minister of Stats for Science and Technology Gary Goodyear. We were suppose to pitch our projects. I was prepared, at least I thought I was.  I had it all figured out. I was going to start with &#8220;Imagine CP24 on the web&#8221; a simple statement that I thought would get his attention. After all I heard a lot of people refer to <a href="http://www.cp24.com/">CP24</a> while explaining popcorn it really is a close comparison. However, during dinner, i was sitting beside a member of <a href="http://www.nserc-crsng.gc.ca/">NSERC</a> and as soon as he realized that I was to do a pitch he said &#8220;pitch me&#8221;. So I went for it and got blown out of the water. Whats CP24? he asked. He continued to state that he and the Minister would be interested in knowing how popcornjs impacts Canada&#8217;s economic growth.  Well? How doest it? I mumbled something about revolutionizing the web and bringing Canadian developers to the top of Internet technology. But really popcornjs in an Open Source project that will not make or save a particular company millions of dollars. However, it has the potential of blowing up. I mean popcornjs was already featured in <a href="http://www.webmonkey.com/2010/08/mozillas-popcorn-project-adds-extra-flavor-to-web-video/">Wired&#8217;s webmonkey</a>, and <a href="http://www.chip.de/news/Mozilla-Popcorn-Interaktiver-Video-Spass-im-Browser_44422604.html">CHIP</a> an online magazine. But how does one put a price tag on something that is free to use? Anyone?  Please comment if you have any ideas as I am sure this question will appear again.</p>
<p>&nbsp;</p>
<p><a href="http://annasob.wordpress.com/2009/12/07/category/popcorn-js/" target="_blank">View all of my blogs on popcorn-js</a><br />
<a href="http://annasob.wordpress.com/2009/12/07/" target="_blank">View all of my blogs</a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/annasob.wordpress.com/453/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/annasob.wordpress.com/453/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=annasob.wordpress.com&#038;blog=9537498&#038;post=453&#038;subd=annasob&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://annasob.wordpress.com/2010/12/08/seneca-at-polytechnicscanada-ca/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/d5c3b72b8f4ef8953749946657fd3380?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">annasob</media:title>
		</media:content>
	</item>
	</channel>
</rss>
