<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">

    <channel>
    
    <title>Summer of Camino 2</title>
    <link>http://summerofcamino.com/</link>
    <description />
    <dc:language>en</dc:language>
    <dc:creator>Jeff.Dlouhy@gmail.com</dc:creator>
    <dc:rights>Copyright 2007</dc:rights>
    <dc:date>2007-10-11T16:20:00-05:00</dc:date>
    <admin:generatorAgent rdf:resource="http://www.pmachine.com/" />
    

    <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/SummerOfCamino2" type="application/rss+xml" /><item>
      <title>Tab Dragging</title>
      <link>http://summerofcamino.com/comments/tab_dragging/</link>
      <guid>http://summerofcamino.com/comments/tab_dragging/#When:16:20:00Z</guid>
      <author>Jeff Dlouhy</author>
      <description><![CDATA[<p><img src="http://summerofcamino.com/images/uploads/tabDragging.jpg" alt="image" width="450" height="225" />
<br />
I have been building off Desmond&#8217;s work from last year and trying to implement tab drag and drop a.k.a. <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=160720" title="Bug 160720">Bug 160720</a>. I have made some progress: it crashes a lot less and now shows the tab while dragging. I am now starting to take a stab at animating the tab movements, I&#8217;ll have more on that later on. I&#8217;m going to try to work on this as much as possible so that we can get it polished and tested for possible inclusion in Camino 1.6.
</p>
<p>
As for Tabsposé, it looks like it is going to be a Camino 2.0 feature. There are still some cool things I want to do with it and thanks to Stuart&#8217;s patch the thumbnailing is done at the Gecko level. That means fewer crashes!
</p>]]></description>
      <dc:subject />
      <dc:date>2007-10-11T16:20:00-05:00</dc:date>
    </item>

    <item>
      <title>Summer of Code Talk</title>
      <link>http://summerofcamino.com/comments/summer_of_code_talk/</link>
      <guid>http://summerofcamino.com/comments/summer_of_code_talk/#When:12:28:01Z</guid>
      <author>Jeff Dlouhy</author>
      <description><![CDATA[<p><img src="http://summerofcamino.com/images/uploads/socpres.png" alt="image" width="450" height="225" />
<br />
A few weeks ago I was asked to give a presentation for my school&#8217;s <a href="http://acm.ccs.neu.edu" title="ACM chapter">ACM chapter</a> on my Summer of Code experience. The speaker for that week cancelled at the last minute, so I cobbled this presentation up the night before. I talk about what it was like working on Camino specifically and then what its like working with SoC all together.
</p>
<p>
<span><a href="http://video.google.com/videoplay?docid=579035793742114520&amp;hl=en" title="Video">Google Video</a> | <a href="http://summerofcamino.com/images/uploads/SummerOfCamino.pdf" title="slides">Slides</a></span>
</p>]]></description>
      <dc:subject />
      <dc:date>2007-10-11T12:28:01-05:00</dc:date>
    </item>

    <item>
      <title>SoC Reflections</title>
      <link>http://summerofcamino.com/comments/soc_reflections/</link>
      <guid>http://summerofcamino.com/comments/soc_reflections/#When:04:16:00Z</guid>
      <author>Jeff Dlouhy</author>
      <description><![CDATA[<p><img src="http://summerofcamino.com/images/uploads/gsoclogo.jpg" alt="image" width="450" height="225" />
<br />
Summer of Code officially ended on August 20th, so I thought I would write a post that summarized my experiences with Camino and SoC. Better late then never, eh?
</p>
<p>
<b>The Mozilla Foundation</b>
</p>
<p>
My goal for the summer was to hack on Objective-C code. There are not many options out there for summer work as far as Cocoa goes, so I applied to Google for an internship as well as for Summer of Code. The first time I looked at the <a href="http://code.google.com/soc/2007/" title="mentoring organizations">mentoring organizations</a>, the only Cocoa related program I saw was <a href="http://www.adiumx.com/" title="Adium">Adium</a>.
</p>
<p>
I knew that having only one proposal did not have good odds at getting accepted, so I started to seek other organizations that might be Mac-related. There was <a href="http://code.google.com/soc/2007/videolan/about.html" title="VLC">VLC</a> which had a request out for someone to improve their Mac integration. That however required greater knowledge of C and video codecs than I possessed (and my beard is not quite long enough yet). So, luckily a few days before the deadline I put two and two together and remembered that Camino was a part of The Mozilla Foundation (insert stupid joke here). I checked their ideas for possible projects and was really excited about the Tabsposé request. I then wrote my proposal for Tabsposé as well as another one for Applescript (to better my chances) and then hit the submit button.
<br />

</p><p>
<b>Great Success</b>
</p>
<p>
A few days after my Google internship rejection, the GSoC results were posted. After some technical difficulties and false results, Google finally got the accepted students list posted and lucky for me, my name was on it.
</p>
<p>
As happy I was for getting accepted into SoC, I had mixed feelings. First, I would have to go home to New Jersey for the summer. Nothing against New Jersey, it was just that all of my close friends were either in Boston or somewhere else. Also I would miss the neat technology related events that go on in the city all the time. The other aspect that bothered me was that I would not be in a work setting interacting with other human beings.
</p>
<p>
<b>My Experiences</b>
</p>
<p>
As I stated above, not having actual human interaction while working can be a maddening experience. Personally I tend to have the most fun working when hacking away with fellow hackers in the room. That is not to say that SoC robs you of this experience, because location is arbitrary as long as you get your project completed. However, in my case most of my interaction was on IRC.
</p>
<p>
You can now put down the violin as I will now talk about the positive aspects of SoC. My favorite aspect of Summer of Code is the creative freedom you get with it. It’s probably not the case in all SoC projects, however I loved the fact that I had total control over this cool new feature. I saw no line between work and passion leading to many sleepless nights fueled by passion and Diet Coke. Many of my friends would complain about work and say how tired they were, but I got to work when I wanted, where I wanted, and how I wanted. Being able to sleep in every day is a luxury, one I will dearly miss.
</p>
<p>
My experiences with my fellow Camino developers could have not been better. They were very welcoming in the beginning and really made me feel at ease. I was lucky enough to meet many of them at the Camino Meet-up in June where I was able to associate a face-to-handle. My mentor Stuart Morgan is a brilliant programmer who was always there to help me when I was stuck on something or needed advice on a new feature. My programming skills have gotten a lot better thanks to the code review process and the perfection that The Camino Project demands.
</p>
<p>
<b>Daily Affirmation</b>
</p>
<p>
Overall, I must say that Summer of Code was a great experience. Knowing that my contribution will be used by thousands of users and be seen as a great new addition to Camino is totally worth it. I’ve no right to complain, all the Camino developers do all this great work for free and they deserve much credit as they can get. I was fortunate enough to live off Google payments to work on one of the most innovative web browsers out there.
</p>
<p>
I am still working on finishing Tabsposé and plan to stay on as a developer for Camino. There are a few features that I would like to possibly add to the browser and some bugs that need fix’n. I am most happy to have met and made friends with many of the Camino developers. They are a fun and very interesting bunch and I look forward to working with them in the future.
</p>]]></description>
      <dc:subject />
      <dc:date>2007-09-26T04:16:00-05:00</dc:date>
    </item>

    <item>
      <title>Pimp Your Toolbar</title>
      <link>http://summerofcamino.com/comments/pimp_your_toolbar/</link>
      <guid>http://summerofcamino.com/comments/pimp_your_toolbar/#When:00:05:00Z</guid>
      <author>Peter Jaros</author>
      <description><![CDATA[<p>Ever tried to customize your Camino toolbar and been&#8230;disappointed?&nbsp; You call this customization?&nbsp; There, what, about 20 items to choose from, and that&#8217;s it!&nbsp; Plus, look at these choices: Back, Forward, Refresh.&nbsp; I mean, they&#8217;re useful, sure, but where&#8217;s the excitement?&nbsp; Where&#8217;s the fun?</p>

<p>&#8220;I could think of <em>way</em> better toolbar items than this!&#8221;</p>

<p>Good news, my friend.&nbsp; If you can dream it, you can do it!&nbsp; (Well, almost.)  Presenting Script Toolbar Items.&nbsp; Just write an AppleScript&#8212;any AppleScript&#8212;give it an icon if you like, and put it in ~/Library/Scripts/Applications/Camino.&nbsp; Now try customizing your toolbar and&#8212;my gosh, it&#8217;s unbelievable, <em>it&#8217;s right in my toolbar!</em></p>

<p>
<div style="margin: 2ex 3em"><img src="http://summerofcamino.com/images/uploads/pimp_your_toolbar.png" /><br /><span style="font-size:smaller">&#8220;Hello, World&#8221; icon unwittingly provided by the fabulous iWoot app.</span></div>
</p>
<p>Anything you can do in an AppleScript, you can do from your toolbar.&nbsp; In fact, anything anyone else can do in an AppleScript, you can do from your toolbar.</p>

<p>Hang on, pardner, it&#8217;s not out yet.&nbsp; Script Toolbar Items should be landing in the near future, though.&nbsp; Look for it soon (ish) in nightlies, and eventually in Camino 1.6.</p>

<p>In the meantime, think about this: what do <em>you</em> want in your toolbar?</p>

]]></description>
      <dc:subject />
      <dc:date>2007-08-29T00:05:00-05:00</dc:date>
    </item>

    <item>
      <title>Clicks Land!</title>
      <link>http://summerofcamino.com/comments/clicks_land/</link>
      <guid>http://summerofcamino.com/comments/clicks_land/#When:14:29:01Z</guid>
      <author>Jeff Dlouhy</author>
      <description><![CDATA[<p><img src="http://summerofcamino.com/images/uploads/clickcreation.jpg" alt="image" width="450" height="225" />
<br />
A quick update on Tabsposé. You can now click through the site previews in Tabsposé. Try it out on the latest <a href="http://ftp.mozilla.org/pub/mozilla.org/camino/nightly/latest-trunk/" title="trunk build">trunk build</a>!
</p>]]></description>
      <dc:subject />
      <dc:date>2007-08-17T14:29:01-05:00</dc:date>
    </item>

    <item>
      <title>Back In The USA</title>
      <link>http://summerofcamino.com/comments/back_in_the_usa/</link>
      <guid>http://summerofcamino.com/comments/back_in_the_usa/#When:17:59:00Z</guid>
      <author>Jeff Dlouhy</author>
      <description><![CDATA[<p><img src="http://summerofcamino.com/images/uploads/NeXT.jpg" alt="image" width="450" height="225" />
<br />
I&#8217;m back from my 2 week jaunt in Europe. I had a great time and got to see a lot of <a href="http://www.flickr.com/photos/jdlouhy/sets/72157601237124338/" title="beautiful places">beautiful places</a>. The picture above is of me with <a href="http://en.wikipedia.org/wiki/Tim_Berners-Lee" title="Tim Berners-Lee's">Tim Berners-Lee&#8217;s</a> <a href="http://en.wikipedia.org/wiki/NeXTcube" title="NeXTcube">NeXTcube</a> at <a href="http://en.wikipedia.org/wiki/CERN" title="CERN">CERN</a> which acted as the first webserver, home of the <a href="http://en.wikipedia.org/wiki/WorldWideWeb" title="first web browser">first web browser</a>, and the <a href="http://en.wikipedia.org/wiki/Www" title="World Wide Web">World Wide Web</a>. Since I am now developing for a web browser I thought it was amazing to see the place where its ancestors came from.
</p>
<p>
Now that I am back look out for <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=390575" title="click handling">click handling</a> and <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=390576" title="titles">titles</a> landing sometime hopefully soon.
</p>]]></description>
      <dc:subject />
      <dc:date>2007-08-15T17:59:00-05:00</dc:date>
    </item>

    <item>
      <title>AppleScript Lands Too!</title>
      <link>http://summerofcamino.com/comments/applescript_lands_too/</link>
      <guid>http://summerofcamino.com/comments/applescript_lands_too/#When:01:15:00Z</guid>
      <author>Peter Jaros</author>
      <description><![CDATA[<p>The beginnings of the new AppleScript support has landed on trunk and branch!&nbsp; That means you&#8217;ll see it in all the nightly builds (<a href="http://ftp.mozilla.org/pub/mozilla.org/camino/nightly/latest-trunk/" title="Latest Trunk Nightly">trunk</a>, <a href="http://ftp.mozilla.org//pub/mozilla.org/camino/nightly/latest-1.6-M1.8/" title="Latest Branch Nightly">branch</a>).&nbsp; Grab one and open its dictionary in Script Editor.&nbsp; Anything that doesn&#8217;t have to do with bookmarks should be implemented and working.&nbsp; For instance, you can say:</p>

<pre><code>set website_listing to ""
tell application "Camino"
    repeat with i from 1 to (count browser windows)
        set website_listing to website_listing &amp; "Window " &amp; i ¬
            &amp; return
        repeat with each_tab in tabs of browser window i
            set website_listing to website_listing &amp; "    " &amp; ¬
                (URL of each_tab) &amp; return
        end repeat
    end repeat
end tell
get website_listing
</code></pre>
</p>
<p>and get something like this:</p>

<pre><code>Window 1
    <a href="http://developer.apple.com/reference/Cocoa/idxScripting-date.html">http://developer.apple.com/reference/Cocoa/idxScripting-date.html</a>
Window 2
    <a href="http://developer.apple.com/cocoa/applescriptforapps.html">http://developer.apple.com/cocoa/applescriptforapps.html</a>
    <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=385989">https://bugzilla.mozilla.org/show_bug.cgi?id=385989</a>
</code></pre>
</p>
<p>Not a <em>terribly</em> interesting example, but it shows off what you can do.&nbsp; Go ahead, be creative!&nbsp; See what cool uses you can come up with.&nbsp; And remember: bookmark support is <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=390846">coming soon</a>.</p>
<br />

]]></description>
      <dc:subject />
      <dc:date>2007-08-10T01:15:00-05:00</dc:date>
    </item>

    <item>
      <title>Clicks Cometh</title>
      <link>http://summerofcamino.com/comments/clicks_cometh/</link>
      <guid>http://summerofcamino.com/comments/clicks_cometh/#When:15:03:00Z</guid>
      <author>Jeff Dlouhy</author>
      <description><![CDATA[<p><img src="http://summerofcamino.com/images/uploads/clickr.jpg" alt="image" width="450" height="225" />
<br />
Hot off the heals of Tabsposé landing, I have a <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=390575" title="patch up">patch up</a> that will handle user clicks and switch tabs. Hopefully we&#8217;ll see this patch move quickly into the trunk so Tabsposé will actually be useful.
</p>
<p>
I&#8217;m also working on <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=390576" title="Bug 390576">Bug 390576</a> which will add titles under the thumbnails as shown in earlier screenshots.
</p>
<p>
Today I leave on vacation for Switzerland and France. I&#8217;m taking my work with me and hope to get features done in some beautiful locations <img src="http://summerofcamino.com/images/smileys/wink.gif" width="19" height="19" alt="wink" style="border:0;" /> . I just got to be extra careful about my <a href="http://www.tuaw.com/2007/08/01/insane-international-iphone-roaming-charges/" title="iPhone data plan">iPhone data plan</a>.
</p>]]></description>
      <dc:subject />
      <dc:date>2007-08-02T15:03:00-05:00</dc:date>
    </item>

    <item>
      <title>Tabsposé Lands!</title>
      <link>http://summerofcamino.com/comments/tabspose_lands/</link>
      <guid>http://summerofcamino.com/comments/tabspose_lands/#When:15:25:00Z</guid>
      <author>Jeff Dlouhy</author>
      <description><![CDATA[<p>After about a month of reviews, the first stage of Tabsposé has made it to the trunk. This means that you can start to play around with it in our <a href="http://ftp.mozilla.org/pub/mozilla.org/camino/nightly/latest-trunk/" title="nightly builds">nightly builds</a>. Right now the command is &#8216;ctrl + command + t.&#8217; Remember, this is nowhere near a final version of the feature or the command to start it. Today I will be submitting patches to handle clicks and the page title, so hold back the &#8220;why does ____ not work&#8221; comments for now.
</p>
<p>
In addition to the source landing, I now have my first Tabsposé bugs: <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=390406" title="Bug 390406">Bug 390406</a> &amp; <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=390401" title="Bug 390401">Bug 390401</a>.
</p>
<p>
Let me know what you think!
</p>]]></description>
      <dc:subject />
      <dc:date>2007-08-01T15:25:00-05:00</dc:date>
    </item>

    <item>
      <title>Bookmarks: Check (almost)</title>
      <link>http://summerofcamino.com/comments/bookmarks_check_almost/</link>
      <guid>http://summerofcamino.com/comments/bookmarks_check_almost/#When:11:47:01Z</guid>
      <author>Peter Jaros</author>
      <description><![CDATA[<p>Man, is this only my second post here?&nbsp; I&#8217;m not too good at this, am I?</p>

<p>Luckily, I&#8217;ve got nothing but good news to report.&nbsp; The bookmark code is now feature-complete!&nbsp; It&#8217;s also pretty much at zarro boogs.&nbsp; (Can you be <em>almost</em> at zarro boogs?).&nbsp; All that&#8217;s left is a little code clean up.&nbsp; About half the existing bookmark code was unused scripting support which I&#8217;ve partly used and partly overridden.&nbsp; I&#8217;m going to weed out what&#8217;s not being used and move what is being used into my <code>ScriptingSupport.mm</code> silo.&nbsp; I&#8217;m implementing scripting as a series of categories on various classes, which seems like the cleanest, most encapsulated way to do it.&nbsp; They all reside in one file, <code>ScriptingSupport.mm</code>.&nbsp; Someday that file may have to split, but at least the scripting support will remain separated from the ordinary implementation of the classes, which I think is important.</p>

<p>Nitty gritty under the fold:
</p><hr/>

<p>Here&#8217;s a little note, mostly for the sake of Googlers who come across it.&nbsp; The &#8220;<code>make</code>&#8221; command.&nbsp; Very useful, in theory.&nbsp; This is the command in AppleScript that lets you create a new object.&nbsp; Wanna know how it works?&nbsp; Say you&#8217;ve got a scripting class &#8220;<code>bookmark</code>&#8221; implemented in Objective-C by the class <code>Bookmark</code>.&nbsp; If you say &#8220;<code>make new bookmark</code>&#8221;, Cocoa Scripting turns to the app and says <code>[[Bookmark alloc] init]</code>.&nbsp; Now, if you&#8217;re not familiar with Objective-C, you might not realize what&#8217;s so odd here.&nbsp; What&#8217;s weird is that <em>lots of objects don&#8217;t use <code>-init</code></em>.&nbsp; Plenty of objects can&#8217;t be initialized without some parameters, something like <code>[[FancyClass alloc] initWithThis:foo that:bar theOtherThing:baz]</code>.&nbsp; <code>NSCreateCommand</code> (which implements &#8220;make&#8221;) doesn&#8217;t care about these initializers.&nbsp; It will blithely use plain ol&#8217; <code>-init</code>, and then set properties using <code>-setScriptingProperties:</code>.</p>

<p>How much do you think <code>BrowserWindow</code> loves getting the call <code>[[BrowserWindow alloc] init]</code>?&nbsp; Or better yet, the class that implements tabs, <code>BrowserWrapper</code>?</p>

<p>(Hint: Not a whole freakin&#8217; lot.)</p>

<p>The solution, it would seem, would be to wrap <code>BrowserWindow</code> and <code>BrowserWrapper</code> (what&#8217;s that, <code>BrowserWrapperWrapper</code>?&nbsp; <code>BrowserMetaWrapper?</code>) in classes that pass everything through, but can be created using <code>+alloc</code>/<code>-init</code>, and know how to do the right thing when they are.&nbsp; That, however, is a massive pain, and I&#8217;m not going to have it block landing what I&#8217;ve written.</p>

<p>So: bookmarks and bookmark folders can be &#8220;<code>make</code>&#8221;ed, windows and tabs can&#8217;t yet, but it&#8217;s a future possibility.&nbsp; Next up: Toolbar Items.&nbsp; I&#8217;ll post about it soon, so stay tuned.</p>
<br />

]]></description>
      <dc:subject />
      <dc:date>2007-07-19T11:47:01-05:00</dc:date>
    </item>

    
    </channel>
</rss>
