<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1616403636265318023</id><updated>2012-02-16T03:23:18.734-08:00</updated><category term='firefox'/><category term='build'/><category term='minefield'/><title type='text'>Dan's Programming Blog</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://dsventura.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1616403636265318023/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://dsventura.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Dan Ventura</name><uri>http://www.blogger.com/profile/01369940126395381187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_Kre27kd0tMs/S2Cati5n8OI/AAAAAAAAAAM/dMKHy97aTrs/S220/eeeeeehhh.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>12</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1616403636265318023.post-4080401394667056222</id><published>2011-04-11T19:36:00.000-07:00</published><updated>2011-04-11T20:02:53.316-07:00</updated><title type='text'>Popcorn.js - LinkedIn Plugin</title><content type='html'>Make a LinkedIn plugin... sounds easy, no? I figured if I made a Facebook plugin, this will be a walk in the part. Well Facebook developers can sleep easier knowing that I have greater respect for them.&lt;br /&gt;&lt;br /&gt;What's are some of the most terrible things you can do to a user? Have meaningless error messages coupled with poor/scattered documentation. Most of the time spent making this plugin was spent on searching their website and asking myself "WHY?".&lt;br /&gt;&lt;br /&gt;My error, as I found out after days of searching, was cause by an application id variable that was never set. This is why, if you look at my html code &lt;br /&gt;( https://github.com/DanVentura/popcorn-js/commit/7443a2960ca27cbd09bd283c850a0cf27049acbe ) I have to set the app_id variable before calling popcorn.linkedin.js. Simple, right? Try figuring that out when you only have THIS to go on:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;U.match(M) is null&lt;br /&gt;&lt;br /&gt;}function f(U){return U.match(M)[1] &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;"function f(U)"... Gee, they just come right out and say it don't they? LOL&lt;br /&gt;&lt;br /&gt;Fortunately, for those who wish to use my plugin, I've included a helpful error message with a link to the page where you can get an api_key. The one included in the html code from my demo on matrix is valid for all of the matrix domain, so go nuts.&lt;br /&gt;&lt;br /&gt;Anyways, here's how you can put a LinkedIn share button with your popcorn video:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;var p = Popcorn('#video')&lt;br /&gt;.linkedin({&lt;br /&gt;  type    : 'share',&lt;br /&gt;  url     : "http://www.google.ca",&lt;br /&gt;  counter : "right",&lt;br /&gt;  target  : 'sharediv'&lt;br /&gt;} );&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1616403636265318023-4080401394667056222?l=dsventura.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dsventura.blogspot.com/feeds/4080401394667056222/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dsventura.blogspot.com/2011/04/popcornjs-linkedin-plugin.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1616403636265318023/posts/default/4080401394667056222'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1616403636265318023/posts/default/4080401394667056222'/><link rel='alternate' type='text/html' href='http://dsventura.blogspot.com/2011/04/popcornjs-linkedin-plugin.html' title='Popcorn.js - LinkedIn Plugin'/><author><name>Dan Ventura</name><uri>http://www.blogger.com/profile/01369940126395381187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_Kre27kd0tMs/S2Cati5n8OI/AAAAAAAAAAM/dMKHy97aTrs/S220/eeeeeehhh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1616403636265318023.post-9052145517052572225</id><published>2011-04-04T09:43:00.000-07:00</published><updated>2011-04-04T09:59:31.057-07:00</updated><title type='text'>Modifying Firefox Source Code - Tabs</title><content type='html'>Made a few modifications to Minefield as requested from OSD600. The first modification was to make new tabs appear next to your current tab rather than at the end of list. This was easy, considering we did this in class. Here's my diff:&lt;br /&gt;&lt;pre&gt;diff -r 4e4c7457e8f7 browser/base/content/tabbrowser.xml&lt;br /&gt;--- a/browser/base/content/tabbrowser.xml    Sat Apr 02 11:48:22 2011 -0400&lt;br /&gt;+++ b/browser/base/content/tabbrowser.xml    Sun Apr 03 23:42:38 2011 -0400&lt;br /&gt;@@ -1327,27 +1327,25 @@&lt;br /&gt;            // activeness in the tab switcher.&lt;br /&gt;            b.docShell.isActive = false;&lt;br /&gt;&lt;br /&gt;            // Check if we're opening a tab related to the current tab and&lt;br /&gt;            // move it to after the current tab.&lt;br /&gt;            // aReferrerURI is null or undefined if the tab is opened from&lt;br /&gt;            // an external application or bookmark, i.e. somewhere other&lt;br /&gt;            // than the current tab.&lt;br /&gt;-            if ((aRelatedToCurrent == null ? aReferrerURI : aRelatedToCurrent) &amp;amp;&amp;amp;&lt;br /&gt;-                Services.prefs.getBoolPref("browser.tabs.insertRelatedAfterCurrent")) {&lt;br /&gt;+&lt;br /&gt;              let newTabPos = (this._lastRelatedTab ||&lt;br /&gt;                               this.selectedTab)._tPos + 1;&lt;br /&gt;              if (this._lastRelatedTab)&lt;br /&gt;                this._lastRelatedTab.owner = null;&lt;br /&gt;              else&lt;br /&gt;                t.owner = this.selectedTab;&lt;br /&gt;              this.moveTabTo(t, newTabPos);&lt;br /&gt;              this._lastRelatedTab = t;&lt;br /&gt;-            }&lt;br /&gt;&lt;br /&gt;            return t;&lt;br /&gt;          ]]&amp;gt;&lt;br /&gt;       &lt;br /&gt;     &lt;br /&gt;&lt;br /&gt;      &lt;method name="warnAboutClosingTabs"&gt;&lt;br /&gt;      &lt;parameter name="aAll"&gt;&lt;br /&gt;&lt;/parameter&gt;&lt;/method&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Sure I could have just commented those lines out, but what are the odds I'm going to change it back?&lt;br /&gt;The next mod was to change the controls for changing tabs by number. The original controls is to use Ctrl + #; I changed it to Alt + #. This isn't an efficient patch however, this is what Dave would call "repairing with a hammer" haha:&lt;br /&gt;&lt;pre&gt;diff -r 4e4c7457e8f7 browser/base/content/browser-sets.inc&lt;br /&gt;--- a/browser/base/content/browser-sets.inc    Sat Apr 02 11:48:22 2011 -0400&lt;br /&gt;+++ b/browser/base/content/browser-sets.inc    Sun Apr 03 23:42:38 2011 -0400&lt;br /&gt;@@ -354,21 +354,17 @@&lt;br /&gt;#endif&lt;br /&gt;#ifdef XP_UNIX&lt;br /&gt;    &lt;key id="key_quitApplication" key="&amp;amp;quitApplicationCmdMac.key;" command="cmd_quitApplication" modifiers="accel"&gt;&lt;br /&gt;#endif&lt;br /&gt;&lt;br /&gt;    &lt;key id="key_undoCloseTab" command="History:UndoCloseTab" key="&amp;amp;tabCmd.commandkey;" modifiers="accel,shift"&gt;&lt;br /&gt;    &lt;key id="key_undoCloseWindow" command="History:UndoCloseWindow" key="&amp;amp;newNavigatorCmd.key;" modifiers="accel,shift"&gt;&lt;br /&gt;&lt;br /&gt;-#ifdef XP_GNOME&lt;br /&gt;#define NUM_SELECT_TAB_MODIFIER alt&lt;br /&gt;-#else&lt;br /&gt;-#define NUM_SELECT_TAB_MODIFIER accel&lt;br /&gt;-#endif&lt;br /&gt;&lt;br /&gt;#expand&lt;br /&gt;...&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;That's not the full diff, some of the tags didn't render as text. But the part I changed remains: change NUM_SELECT_TAB_MODIFIER from accel to alt.&lt;br /&gt;I learned a few shortcuts while reading the source as well. For example, Ctrl+k will put focus on the Google search bar at the top right, and Alt+Home will redirect you  to your home page.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1616403636265318023-9052145517052572225?l=dsventura.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dsventura.blogspot.com/feeds/9052145517052572225/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dsventura.blogspot.com/2011/04/modifying-firefox-source-code-tabs.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1616403636265318023/posts/default/9052145517052572225'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1616403636265318023/posts/default/9052145517052572225'/><link rel='alternate' type='text/html' href='http://dsventura.blogspot.com/2011/04/modifying-firefox-source-code-tabs.html' title='Modifying Firefox Source Code - Tabs'/><author><name>Dan Ventura</name><uri>http://www.blogger.com/profile/01369940126395381187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_Kre27kd0tMs/S2Cati5n8OI/AAAAAAAAAAM/dMKHy97aTrs/S220/eeeeeehhh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1616403636265318023.post-5849380944445828425</id><published>2011-03-24T05:59:00.000-07:00</published><updated>2011-03-24T06:19:05.437-07:00</updated><title type='text'>Popcorn.js - Facebook plugin</title><content type='html'>I've been meaning to make this blog post for weeks now but kept putting it off. I made a facebook plugin :). This was pretty easy considering facebook provides a page full of plugins ( http://developers.facebook.com/docs/plugins/ ). In fact, it's so easy I'll do it right now&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;iframe src="http://www.facebook.com/plugins/like.php?href&amp;amp;layout=standard&amp;amp;show_faces=true&amp;amp;width=450&amp;amp;action=like&amp;amp;font&amp;amp;colorscheme=light&amp;amp;height=80" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:450px; height:80px;" allowtransparency="true"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Now I know where all those blasted "like" buttons keep coming from...&lt;br /&gt;&lt;br /&gt;Now we can put like buttons and all sorts of stuff around the Popcorn video player. But why hard code a plugin tag?&lt;br /&gt;Why make an iframe with 10 attributes when I can do this?:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;var p = Popcorn('#video')&lt;br /&gt;      .volume(0)&lt;br /&gt;      .play()&lt;br /&gt;      .facebook({&lt;br /&gt;        id: "fb-like",&lt;br /&gt;        type: "LIKE",&lt;br /&gt;        target: 'likediv'&lt;br /&gt;      } );&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;That is the code for a like button. I can add as many or as little options as I want. By default, the extra style options are set to false. I chose to do this because (unlike a certain piece of software I can mention) I think if the user wants extras, they should request extras. I think it's unfair for a user to be bombarded with useless crap they don't need (I love you too, Windows Messenger 2011 :P).&lt;br /&gt;&lt;br /&gt;Anyway, as of now the plugin supports 4 social plugins: like button, like box, activity feed and facepile. The other ones require registration of some kind and I have yet to develop a workaround for that.&lt;br /&gt;&lt;br /&gt;So yeah, take a look: https://github.com/DanVentura/popcorn-js/tree/t331/plugins/facebook&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1616403636265318023-5849380944445828425?l=dsventura.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dsventura.blogspot.com/feeds/5849380944445828425/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dsventura.blogspot.com/2011/03/popcornjs-facebook-plugin.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1616403636265318023/posts/default/5849380944445828425'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1616403636265318023/posts/default/5849380944445828425'/><link rel='alternate' type='text/html' href='http://dsventura.blogspot.com/2011/03/popcornjs-facebook-plugin.html' title='Popcorn.js - Facebook plugin'/><author><name>Dan Ventura</name><uri>http://www.blogger.com/profile/01369940126395381187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_Kre27kd0tMs/S2Cati5n8OI/AAAAAAAAAAM/dMKHy97aTrs/S220/eeeeeehhh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1616403636265318023.post-6001167048586696030</id><published>2011-03-06T19:57:00.000-08:00</published><updated>2011-03-06T20:42:33.889-08:00</updated><title type='text'>Popcorn.js - Automated Plugin Unit Tests</title><content type='html'>I took the liberty of developing a unit test page for plugins. Originally, I just made a series of links that load the selected unit test into an iframe and called it a day. I &lt;span style="font-weight: bold;"&gt;knew &lt;/span&gt;it was too easy. Why not make them automated?&lt;br /&gt;&lt;br /&gt;This was all made possible by this function: window.setTimeout(). Something I didn't know about setTimeout is that it runs "asynchronously", kind of like a thread in Java. I found this out when I put it in a for loop.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;for (var i = 0; i &lt; numOfTests; i++){&lt;br /&gt;  setTimeout(function(){output.src = testUrl[i];}, 5000);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;This produced some very odd results because setTimeout didn't find it necessary to care about the nice for loop I put it in. Either i would always equal the same number, or it would equal all sorts of random numbers (negative ones included). Fortunately I found a fix on the web using closures:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;for ( var i = 0, delay = 0; i &lt; 10; delay += testDur[i], i++ ) {&lt;br /&gt;  (function ( j ) {&lt;br /&gt;   setTimeout(function() {&lt;br /&gt;      setTest( j );&lt;br /&gt;    }, delay);&lt;br /&gt;  })( i );&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;By doing this, the value of i (at the time it is called in the for loop) is saved within the closure. So now you can call setTimeout and be confident your iterator is working for you. I learned a lot today :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1616403636265318023-6001167048586696030?l=dsventura.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dsventura.blogspot.com/feeds/6001167048586696030/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dsventura.blogspot.com/2011/03/popcornjs-automated-plugin-unit-tests.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1616403636265318023/posts/default/6001167048586696030'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1616403636265318023/posts/default/6001167048586696030'/><link rel='alternate' type='text/html' href='http://dsventura.blogspot.com/2011/03/popcornjs-automated-plugin-unit-tests.html' title='Popcorn.js - Automated Plugin Unit Tests'/><author><name>Dan Ventura</name><uri>http://www.blogger.com/profile/01369940126395381187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_Kre27kd0tMs/S2Cati5n8OI/AAAAAAAAAAM/dMKHy97aTrs/S220/eeeeeehhh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1616403636265318023.post-9138556182067292667</id><published>2011-03-04T11:27:00.000-08:00</published><updated>2011-03-04T11:41:16.757-08:00</updated><title type='text'>Popcorn.js - There's a first for everything</title><content type='html'>Well, my reading week has been rather productive. Most of my work was for another class, but I managed to squeeze in some javascript. I made an xml parser in c++ that imports collada models into directx. Fun, lol. After that, I made some unit tests for the popcorn subtitle plugin for the first time. The tests only check that the subtitles say what they're supposed to say at the right time.&lt;br /&gt;&lt;br /&gt;After the tests were passed, I stumbled across a bug! When the testing is finished, the results are outputted above the video, which causes the video to move further down the page (naturally). I noticed the subtitles didn't move with the video. This means that if the subtitles are aligned to the bottom of the video before testing, then when the testing is finished the subtitles end up in the middle of the video. This makes sense considering the subtitles are inside of a div with an absolute position.&lt;br /&gt;&lt;br /&gt;So I got to file my first bug :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1616403636265318023-9138556182067292667?l=dsventura.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dsventura.blogspot.com/feeds/9138556182067292667/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dsventura.blogspot.com/2011/03/popcornjs-theres-first-for-everything.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1616403636265318023/posts/default/9138556182067292667'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1616403636265318023/posts/default/9138556182067292667'/><link rel='alternate' type='text/html' href='http://dsventura.blogspot.com/2011/03/popcornjs-theres-first-for-everything.html' title='Popcorn.js - There&apos;s a first for everything'/><author><name>Dan Ventura</name><uri>http://www.blogger.com/profile/01369940126395381187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_Kre27kd0tMs/S2Cati5n8OI/AAAAAAAAAAM/dMKHy97aTrs/S220/eeeeeehhh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1616403636265318023.post-7988729928588377130</id><published>2011-02-24T11:23:00.000-08:00</published><updated>2011-02-24T11:45:17.105-08:00</updated><title type='text'>Popcornjs - bug #127... again</title><content type='html'>Remember how I said I finished my bug? Well... I lied, lol. Upon receiving a "review-needs-work" status, and gaining a better understanding of javascript from class, I looked over my code and found that I needed to do it again.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;My Example&lt;/span&gt;&lt;br /&gt;Let's say you've got two subtitles: one starts at 3 seconds and has no end specified, the other starts at 10 and ends at 15. Now, if you set the first subtitle's end to the end of the video, the second subtitle will never disappear. I had to somehow arrange that an endless subtitle has it's end set to the end of the video ONLY if there isn't another subtitle coming up. Seeing as I don't have access to the next subtitle while I'm creating them (naturally), I had to do a little bit of backwards work.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Solution&lt;br /&gt;&lt;/span&gt;(from popcorn.js)&lt;span style="font-weight: bold;"&gt;:&lt;br /&gt;&lt;/span&gt;&lt;pre&gt;&lt;br /&gt;if ( currentSubtitle ) {&lt;br /&gt;  previousSubtitle = currentSubtitle;&lt;br /&gt;}&lt;br /&gt;currentSubtitle = options;&lt;br /&gt;&lt;br /&gt;if ( previousSubtitle &amp;amp;&amp;amp; previousSubtitle.noEnd ) {&lt;br /&gt;  previousSubtitle.noEnd = false;&lt;br /&gt;  previousSubtitle.end = currentSubtitle.start;&lt;br /&gt;  Popcorn.removeTrackEvent( this, Popcorn.getLastTrackEventId( this ) );&lt;br /&gt;  Popcorn.addTrackEvent( this, previousSubtitle );&lt;br /&gt;}&lt;br /&gt;setup._setup.call( this, currentSubtitle );&lt;br /&gt;Popcorn.addTrackEvent( this, currentSubtitle );&lt;br /&gt;&lt;/pre&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;Confused?&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;&lt;/span&gt;Here's what's happening:&lt;br /&gt;This chunk of code is run once for each subtitle. Earlier, if it doesn't find an end options.noEnd is set which allows the end to be the end of the video (in popcorn.subtitle.js). So the first time through, (creating the endless one) the subtitle will be continuous and added to the list of track events.&lt;br /&gt;&lt;br /&gt;...Follow me so far? Good.&lt;br /&gt;&lt;br /&gt;The second time it runs through, it will see that there is a previous subtitle with noEnd set. It will remove the previous subtitle from the track list, change it's end to the start time of the current subtitle, and re-add it to the track list. Then business continues as usual for the current subtitle.&lt;br /&gt;&lt;br /&gt;Wanna see my genious for yourself?&lt;br /&gt;&lt;a href="https://github.com/DanVentura/popcorn-js/tree/bug127/plugins/subtitle"&gt;https://github.com/DanVentura/popcorn-js/tree/bug127/plugins/subtitle&lt;/a&gt;&lt;br /&gt;Have fun ;)&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1616403636265318023-7988729928588377130?l=dsventura.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dsventura.blogspot.com/feeds/7988729928588377130/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dsventura.blogspot.com/2011/02/popcornjs-bug-127-again.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1616403636265318023/posts/default/7988729928588377130'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1616403636265318023/posts/default/7988729928588377130'/><link rel='alternate' type='text/html' href='http://dsventura.blogspot.com/2011/02/popcornjs-bug-127-again.html' title='Popcornjs - bug #127... again'/><author><name>Dan Ventura</name><uri>http://www.blogger.com/profile/01369940126395381187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_Kre27kd0tMs/S2Cati5n8OI/AAAAAAAAAAM/dMKHy97aTrs/S220/eeeeeehhh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1616403636265318023.post-5085611275324255694</id><published>2011-02-10T17:57:00.000-08:00</published><updated>2011-02-10T18:25:17.642-08:00</updated><title type='text'>Popcorn.js - bug # 127</title><content type='html'>I finally finished my first bug for popcorn.js. The bug I was assigned was to make it easier to specify subtitles, found here: https://webmademovies.lighthouseapp.com/projects/63272-popcorn-js/tickets/bins/261878&lt;br /&gt;&lt;br /&gt;Basically, when making subtitles you have to specify an 'in' and an 'out' so it knows what time in the video to show up and disappear. They wanted to be able to make a subtitle continuous by not specifying an 'out'. For example, if a subtitle immediately follows another subtitle, it would be redundant to specify the 'out' as the next subtitle's 'in'.&lt;br /&gt;&lt;br /&gt;Now, this seems easy... just get the 'in' from the next subtitle, right? HA! Too bad I didn't find a way to access the next subtitle within the first subtitle. Fortunately I found a workaround: if you set the 'out' to a greater value than the next subtitle's 'out' (even if you set it to 1000000), it should seamlessly go into the next subtitle without any problems.&lt;br /&gt;&lt;br /&gt;As I mentioned before, I don't have access to the next subtitle (cause it doesn't exist when you're creating the first). I figured that the fix would be to set the missing 'out' element to the maximum value available... the video duration.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;options.out = this.video.duration&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Yet another problem... fantastic. For some odd reason, if you call this statement for the very first subtitle in the video, this.video.duration is 0. This is because this.video.readyState is not 4. In other words, the video isn't ready yet. I have discovered the folly of Javascript, it's too fast for itself LOL.&lt;br /&gt;&lt;br /&gt;Fortunately I found a "start:" function, which is called when the subtitle is put into the video. By the time this function is called, the readyState is 4 and video.duration returns as expected. There was also some other problems but if you're interested check out my branch.&lt;br /&gt;&lt;br /&gt;I liked this bug. It taught me a lot about Popcorn.js and JavaScript :D&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1616403636265318023-5085611275324255694?l=dsventura.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dsventura.blogspot.com/feeds/5085611275324255694/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dsventura.blogspot.com/2011/02/popcornjs-bug-127.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1616403636265318023/posts/default/5085611275324255694'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1616403636265318023/posts/default/5085611275324255694'/><link rel='alternate' type='text/html' href='http://dsventura.blogspot.com/2011/02/popcornjs-bug-127.html' title='Popcorn.js - bug # 127'/><author><name>Dan Ventura</name><uri>http://www.blogger.com/profile/01369940126395381187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_Kre27kd0tMs/S2Cati5n8OI/AAAAAAAAAAM/dMKHy97aTrs/S220/eeeeeehhh.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1616403636265318023.post-1705009753704247054</id><published>2011-02-06T13:48:00.001-08:00</published><updated>2011-02-06T13:59:29.702-08:00</updated><title type='text'>Processing.js - Bug# 946</title><content type='html'>This had to have been the easiest bug to fix. Yay. You can find it here: https://processing-js.lighthouseapp.com/projects/41284/tickets/946-unexpected-result-when-converting-char-to-str&lt;br /&gt;&lt;br /&gt;Basically there's a function that takes data and outputs it as a string. The problem was that when you passed it a char, it returned the ASCII value. After going on IRC and learning how to get started, the "bazaar" discovered that one of the tests for this function had been commented out by the person who worked on it last (no wonder it passed).&lt;br /&gt;&lt;br /&gt;So basically what I did was uncomment that, add another test that looks exactly the same as the one in the sketchpad link above, and my fix. my fix was exactly this:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;--arr.push(val[i] + "");&lt;br /&gt;++arr.push(val[i].toString() + "");&lt;br /&gt;##return arr;&lt;br /&gt;##}&lt;br /&gt;##}&lt;br /&gt;##else&lt;br /&gt;##{&lt;br /&gt;--return (val + "");&lt;br /&gt;++return (val.toString() + "");&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;... pretty much. It's up for review. If you're reading this, feel free to review it. I put the link to my branch in the comments for the lighthouse link provided (not sure if thats what i was supposed to do).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1616403636265318023-1705009753704247054?l=dsventura.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dsventura.blogspot.com/feeds/1705009753704247054/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dsventura.blogspot.com/2011/02/processingjs-bug-946.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1616403636265318023/posts/default/1705009753704247054'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1616403636265318023/posts/default/1705009753704247054'/><link rel='alternate' type='text/html' href='http://dsventura.blogspot.com/2011/02/processingjs-bug-946.html' title='Processing.js - Bug# 946'/><author><name>Dan Ventura</name><uri>http://www.blogger.com/profile/01369940126395381187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_Kre27kd0tMs/S2Cati5n8OI/AAAAAAAAAAM/dMKHy97aTrs/S220/eeeeeehhh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1616403636265318023.post-6508239452488238554</id><published>2011-01-21T13:06:00.000-08:00</published><updated>2011-01-21T16:07:37.326-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='minefield'/><category scheme='http://www.blogger.com/atom/ns#' term='firefox'/><category scheme='http://www.blogger.com/atom/ns#' term='build'/><title type='text'>OSD600 - Building Firefox 4 (Minefield)</title><content type='html'>Okay, I got this to work but I'm not sure if it works correctly. I mean, it runs but it runs weird. Let me explain: (*Note: If you use this as a guide to try this yourself, don't follow it step by step. In fact, follow this &lt;a href="http://easleyk.wordpress.com/2010/02/04/simple-firefox-build/"&gt;blog&lt;/a&gt; or the official &lt;a href="https://developer.mozilla.org/En/Simple_Firefox_build"&gt;Simple ff build&lt;/a&gt;. Also, I am running Windows 7 x86*)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;What You Will Need&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I followed someone else's blog through most of this (). Basically you will need the &lt;a href="http://ftp.mozilla.org/pub/mozilla.org/mozilla/libraries/win32/MozillaBuildSetup-Latest.exe"&gt;Mozilla Build tools&lt;/a&gt; and &lt;a href="http://mercurial.selenic.com/downloads/"&gt;TortoiseHg&lt;/a&gt; (the one that suits your OS).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Let's Get Started&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Allow the build tools to install to it's default directory: C:/mozilla-build. Next, make a directory in your C:/ directory for the source code (mine is C:/OSD600. &lt;span style="font-style: italic;"&gt;It is important to not include spaces in this path name!&lt;/span&gt;). For this directory, we will use TortoiseHg to clone the source code from this url: &lt;code style="font-size: 1.1em;"&gt;http://hg.mozilla.org/mozilla-central/. &lt;/code&gt;This takes a while...&lt;br /&gt;&lt;br /&gt;Now we must make a mozconfig file. Seeing as Windows 7 won't allow you to make files without an extension, open the command line and execute these commands (this  is what's in my mozconfig. &lt;a href="https://developer.mozilla.org/en/Configuring_Build_Options"&gt;Here&lt;/a&gt; is Mozilla's help page for mozconfig files):&lt;br /&gt;&lt;br /&gt;&lt;code style="font-size: 1.1em;"&gt;echo ". $topsrcdir/browser/config/mozconfig" &gt; mozconfig&lt;br /&gt;echo "mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/objdir-ff-debug" &gt;&gt; mozconfig&lt;br /&gt;echo "ac_add_options --enable-debug" &lt;/code&gt;&lt;code style="font-size: 1.1em;"&gt; &gt;&gt; mozconfig&lt;/code&gt;&lt;br /&gt;&lt;code style="font-size: 1.1em;"&gt;echo "ac_add_options --disable-optimize&lt;/code&gt;" &lt;code style="font-size: 1.1em;"&gt; &gt;&gt; mozconfig&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;You'll also want to open it in notepad and remove the quotes. Better yet, just do  &lt;span style="font-style: italic;"&gt;echo "d" &gt; mozconfig&lt;/span&gt; to make the file and do the rest in notepad. When you're done, this file should be placed in the root folder (in my case, C:/OSD600).&lt;br /&gt;&lt;br /&gt;Now for the fun part (this is the part where the problems arise, naturally). Go to C:/mozilla-build and run one of the &lt;span style="font-style: italic;"&gt;start-msvc&lt;/span&gt;.bat files. If you has Visual Studio 2010, run start-msvc10.bat. And yes, I am assuming you have Visual Studio and the required Microsoft SDKs. This .bat file should open a command window.&lt;br /&gt;&lt;br /&gt;Now execute these commands:&lt;br /&gt;&lt;span style="font-style: italic;"&gt;cd /c/osd600&lt;/span&gt; &lt;span style="font-style: italic;"&gt;make -f clien&lt;/span&gt;&lt;span style="font-style: italic;"&gt;t.mk build&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If it works, it will build for about an hour.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Kre27kd0tMs/TToVd77C_hI/AAAAAAAAAA8/MKbmhv9JyzM/s1600/compiled.png"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 320px; height: 163px;" src="http://2.bp.blogspot.com/_Kre27kd0tMs/TToVd77C_hI/AAAAAAAAAA8/MKbmhv9JyzM/s320/compiled.png" alt="" id="BLOGGER_PHOTO_ID_5564783893615410706" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;When it finishes building the executable can be found in the following directory:&lt;br /&gt;Depending on what directory you put in your mozconfig (at this line : &lt;code style="font-size: 1.1em;"&gt;mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/&lt;span style="font-weight: bold;"&gt;objdir-ff-debug&lt;/span&gt;&lt;/code&gt;) it can be found at C:/OSD600/objdir-ff-debug/dist/bin/firefox.exe.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_Kre27kd0tMs/TToVeFShaQI/AAAAAAAAABE/mtzASnZQjy0/s1600/aboutMinefield.png"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 320px; height: 200px;" src="http://2.bp.blogspot.com/_Kre27kd0tMs/TToVeFShaQI/AAAAAAAAABE/mtzASnZQjy0/s320/aboutMinefield.png" alt="" id="BLOGGER_PHOTO_ID_5564783896129792258" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;P&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;roblems&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;What, you think it's THAT easy? HA! This took me days!&lt;br /&gt;&lt;br /&gt;The first error I got was this one:&lt;br /&gt;&lt;code style="font-size: 1.1em;"&gt;--enable-application=APP was not specified&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;I looked online for a fix to this error but now I'm thinking that the fix was unnecessary. I think if I specified an additional option in the mozconfig, I would have fixed this error. Anyways, the fix I found was to do this:&lt;br /&gt;-Make a new directory&lt;br /&gt;- Go to that directory&lt;br /&gt;- execute these commands:&lt;br /&gt;../configure --enable-application=browser&lt;br /&gt;make -f ../client.mk&lt;br /&gt;&lt;br /&gt;This however caused more problems. So the next day I went to the original directory (OSD600) and ran the regular command: "make -f client.mk build" and for some reason it worked! ... Or so I thought. It works but I get this error message.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Kre27kd0tMs/TToVefqOnrI/AAAAAAAAABM/in4skOW2vgk/s1600/didItWork.png"&gt;&lt;img style="float: left; margin: 0pt 10px 10px 0pt; cursor: pointer; width: 320px; height: 200px;" src="http://4.bp.blogspot.com/_Kre27kd0tMs/TToVefqOnrI/AAAAAAAAABM/in4skOW2vgk/s320/didItWork.png" alt="" id="BLOGGER_PHOTO_ID_5564783903208545970" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;When I run the firefox.exe, a command line window pops up, it write a bunch of warnings, and this error window appears. If you choose "Abort" and try again or "Ignore", the error message doesn't pop up. It's just odd.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1616403636265318023-6508239452488238554?l=dsventura.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dsventura.blogspot.com/feeds/6508239452488238554/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dsventura.blogspot.com/2011/01/osd600-building-firefox-4-minefield.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1616403636265318023/posts/default/6508239452488238554'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1616403636265318023/posts/default/6508239452488238554'/><link rel='alternate' type='text/html' href='http://dsventura.blogspot.com/2011/01/osd600-building-firefox-4-minefield.html' title='OSD600 - Building Firefox 4 (Minefield)'/><author><name>Dan Ventura</name><uri>http://www.blogger.com/profile/01369940126395381187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_Kre27kd0tMs/S2Cati5n8OI/AAAAAAAAAAM/dMKHy97aTrs/S220/eeeeeehhh.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_Kre27kd0tMs/TToVd77C_hI/AAAAAAAAAA8/MKbmhv9JyzM/s72-c/compiled.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1616403636265318023.post-1428922271216752456</id><published>2010-03-22T18:30:00.000-07:00</published><updated>2010-03-22T18:39:41.291-07:00</updated><title type='text'>OOP344 - who needs default constructors anyway?</title><content type='html'>i always had a feeling that default constructors were pointless. I don't know, something about making a function that sets everything to null seems... meaningless? Fortunately, I've learned an alternative! Let's say we have a class called, for instance, Poop (lol). Inside Poop, we want to keep color (char*) and size (int). If we were to use a default constructor AND an argument constructor, our prototypes would look like this:&lt;br /&gt;&lt;br /&gt;Poop();&lt;br /&gt;Poop(char* color, int size);&lt;br /&gt;&lt;br /&gt;This method would leave us having to write the same constructor twice, except the argument constructor would assign values other than 0.&lt;br /&gt;In order to avoid the redundancy, we can write 1 arguement constructor with this little tweek:&lt;br /&gt;&lt;br /&gt;Poop(char* color = 0, int size = 0);&lt;br /&gt;&lt;br /&gt;If Poop() is called without arguments, the constructor will automatically use the default values provided in the declaration! Genius, I know!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1616403636265318023-1428922271216752456?l=dsventura.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dsventura.blogspot.com/feeds/1428922271216752456/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dsventura.blogspot.com/2010/03/oop344-who-needs-default-constructors.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1616403636265318023/posts/default/1428922271216752456'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1616403636265318023/posts/default/1428922271216752456'/><link rel='alternate' type='text/html' href='http://dsventura.blogspot.com/2010/03/oop344-who-needs-default-constructors.html' title='OOP344 - who needs default constructors anyway?'/><author><name>Dan Ventura</name><uri>http://www.blogger.com/profile/01369940126395381187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_Kre27kd0tMs/S2Cati5n8OI/AAAAAAAAAAM/dMKHy97aTrs/S220/eeeeeehhh.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1616403636265318023.post-8213715787283278734</id><published>2010-02-08T09:26:00.000-08:00</published><updated>2010-02-08T17:03:30.096-08:00</updated><title type='text'>OOP344 - fardad, i accept your putint() challenge!</title><content type='html'>this function was harder than i expected. In order to convert a number to a character, all you have to do is add 48 (this is because 0 on the ascii table is 48, 1 is 49, etc.). So as long as you are sending the putint function a 1 digit number, this will work. However, for the keys that are 4 digits long (i.e: RIGHT_KEY = 1077), it gets a little more complicated.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This took me a  while to figure out and i must say, it's genius :). First what you have to do is: seperate the digits. This is where being good with numbers really helps.&lt;/div&gt;&lt;div&gt;(i'm not going to write code, instead I'll give you a mathematical view point)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;if you divide a number by 10, the decimal moves one point to the left:&lt;/div&gt;&lt;div&gt;1077 / 10 = 107.7&lt;/div&gt;&lt;div&gt;In order to get the decimal point i used a float, however that caused problems because float are never exact. So, i made two temporary int variables and did this:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;1.&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;temp = 1077 &lt;- this is the integer being sent to the function&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;temp / 10 = 107 &lt;- integers truncate decimal points&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;temp * 10 = 1070&lt;/div&gt;&lt;div&gt;2.&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;temp2 = 1077 - temp&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;     = 7&lt;/div&gt;&lt;div&gt;Hooray, i got the first digit separated. Now, just do char = temp2 + 48; and your first digit is successfully converted. Repeat this process for x amount of times and your string contains a 4 digit number. BUT WAIT, how do i determine x? dividing by 10 again.&lt;/div&gt;&lt;div&gt;make a while loop where you divide temp by 10 while temp &gt; 0 and do an i++ to get how many digits are in the number. you can now use  i for a for loop.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;There you have it, a putint function that converts an integer into a string without using extra libraries (there is no atoi() or sprintf()).&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1616403636265318023-8213715787283278734?l=dsventura.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dsventura.blogspot.com/feeds/8213715787283278734/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dsventura.blogspot.com/2010/02/fardad-i-accept-your-putint-challenge.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1616403636265318023/posts/default/8213715787283278734'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1616403636265318023/posts/default/8213715787283278734'/><link rel='alternate' type='text/html' href='http://dsventura.blogspot.com/2010/02/fardad-i-accept-your-putint-challenge.html' title='OOP344 - fardad, i accept your putint() challenge!'/><author><name>Dan Ventura</name><uri>http://www.blogger.com/profile/01369940126395381187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_Kre27kd0tMs/S2Cati5n8OI/AAAAAAAAAAM/dMKHy97aTrs/S220/eeeeeehhh.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1616403636265318023.post-5796455431201642765</id><published>2010-01-11T09:27:00.000-08:00</published><updated>2011-01-20T13:11:00.528-08:00</updated><title type='text'>Welcome!</title><content type='html'>Welcome to Dan's Programming blog!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1616403636265318023-5796455431201642765?l=dsventura.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dsventura.blogspot.com/feeds/5796455431201642765/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://dsventura.blogspot.com/2010/01/welcome.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1616403636265318023/posts/default/5796455431201642765'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1616403636265318023/posts/default/5796455431201642765'/><link rel='alternate' type='text/html' href='http://dsventura.blogspot.com/2010/01/welcome.html' title='Welcome!'/><author><name>Dan Ventura</name><uri>http://www.blogger.com/profile/01369940126395381187</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_Kre27kd0tMs/S2Cati5n8OI/AAAAAAAAAAM/dMKHy97aTrs/S220/eeeeeehhh.jpg'/></author><thr:total>0</thr:total></entry></feed>
